css/dist/metabox-primary-category-2390.css000064400000001302147206602470014343 0ustar00.wpseo-is-primary-term,.wpseo-primary-term>label{font-weight:600}.wpseo-non-primary-term>.wpseo-is-primary-term,.wpseo-primary-term>.wpseo-make-primary-term,.wpseo-term-unchecked>.wpseo-is-primary-term,.wpseo-term-unchecked>.wpseo-make-primary-term{display:none}.wpseo-is-primary-term,.wpseo-make-primary-term{float:right}.wpseo-non-primary-term:after,.wpseo-non-primary-term:before,.wpseo-primary-term:after,.wpseo-primary-term:before{content:"";display:table}.wpseo-non-primary-term:after,.wpseo-primary-term:after{clear:both}.wpseo-make-primary-term{background:none;border:none;color:#0073aa;cursor:pointer;margin:4px 0 0;padding:0;text-decoration:underline}.wpseo-make-primary-term:hover{color:#00a0d2}css/dist/modal-2390.css000064400000017563147206602470010524 0ustar00.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;left:0;position:fixed;right:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);left:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;right:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-right:16px;width:19px}.yoast-modal__menu{border-right:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-right:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-right:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;left:0;right:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-right:8px}.yoast .yoast-close{right:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-left:16px;margin-right:16px;padding-left:0;padding-right:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:left;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:right;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;left:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-right:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-right:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}css/dist/score_icon-2390-rtl.css000064400000000634147206602470012341 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 3px 0 10px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}css/dist/new-settings-2390-rtl.css000064400000020663147206602470012651 0ustar00body.seo_page_wpseo_page_settings{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}body.seo_page_wpseo_page_settings #wpcontent{padding-right:0!important}body.seo_page_wpseo_page_settings #wpfooter{padding-left:1rem}@media (min-width:768px){body.seo_page_wpseo_page_settings #wpfooter{padding-right:17rem;padding-left:2rem}}@media screen and (max-width:782px){body.seo_page_wpseo_page_settings .wp-responsive-open #wpbody{left:-190px}}body.seo_page_wpseo_page_settings #modal-search .yst-modal__close{margin-top:-.25rem}@media (min-width:783px) and (max-width:962px){body.seo_page_wpseo_page_settings.sticky-menu .yst-root .yst-notifications--bottom-left{right:calc(160px + 2rem)}}@media (min-width:783px) and (max-width:963px){body.seo_page_wpseo_page_settings.sticky-menu.auto-fold .yst-root .yst-notifications--bottom-left,body.seo_page_wpseo_page_settings.sticky-menu.folded .yst-root .yst-notifications--bottom-left{right:calc(32px + 2rem)}}@media (min-width:962px){body.seo_page_wpseo_page_settings.sticky-menu.folded .yst-root .yst-notifications--bottom-left{right:calc(32px + 2rem)}}@media (max-width:783px){body.seo_page_wpseo_page_settings:not(.sticky-menu) .wp-responsive-open .yst-root .yst-notifications--bottom-left{right:calc(190px + 2rem)}}body.seo_page_wpseo_page_settings .yst-root .yst-notifications{max-height:calc(100% - 4rem - 32px)}@media (max-width:782px){body.seo_page_wpseo_page_settings .yst-root .yst-notifications{max-height:calc(100% - 4rem - 48px)}}body.seo_page_wpseo_page_settings .yst-root .yst-notifications--bottom-left{z-index:9991}@media (min-width:783px){body.seo_page_wpseo_page_settings .yst-root .yst-notifications--bottom-left{right:calc(160px + 2rem)}}@media (min-width:601px) and (max-width:768px){body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__top{top:46px}}@media (min-width:783px){body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__top{display:none}}body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__dialog{z-index:99999}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar{position:relative}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar .emoji-select-popover{right:0;left:auto;z-index:20}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__editor,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__label{opacity:.5}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__button-insert,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__editor,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__label{cursor:not-allowed}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button{pointer-events:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__label{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:flex;font-size:.8125rem;font-weight:500;margin-bottom:.5rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__buttons{display:inline-flex;gap:.375rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1rem;margin-bottom:.5rem;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:disabled{cursor:not-allowed;opacity:.5;pointer-events:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;line-height:1.5rem;padding:.5rem .75rem;width:100%}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor:focus-within{--tw-border-opacity:0;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);padding-bottom:.25rem;padding-top:.25rem;width:14rem;z-index:20}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden]:focus{outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));cursor:pointer;display:block;font-size:.8125rem;padding:.5rem 1rem;-webkit-text-decoration-line:none;text-decoration-line:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div:hover,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div[aria-selected]{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--description .yst-replacevar__editor{min-height:5rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__mention{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;color:rgb(15 23 42/var(--tw-text-opacity));display:inline-block;font-size:.75rem;font-weight:500;line-height:1.25;margin-right:.125rem;margin-left:.125rem;padding:.125rem .5rem}body.seo_page_wpseo_page_settings.rtl .yst-root .yst-replacevar .emoji-select-popover{right:0;left:auto}css/dist/tooltips-2390-rtl.css000064400000007133147206602470012074 0ustar00.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{word-wrap:break-word;-webkit-font-smoothing:subpixel-antialiased;background:#000c;border-radius:3px;color:#fff;content:attr(aria-label);display:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;letter-spacing:normal;opacity:0;padding:6px 8px 5px;pointer-events:none;position:absolute;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;white-space:pre;z-index:1000000}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{border:5px solid #0000;color:#000c;content:"\00a0";display:none;height:0;opacity:0;pointer-events:none;position:absolute;width:0;z-index:1000001}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{animation-duration:.1s;animation-fill-mode:forwards;animation-name:yoast-tooltip-appear;animation-timing-function:ease-in;display:inline-block;text-decoration:none}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{animation:none;opacity:1}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{margin-top:5px;left:50%;top:100%}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{border-bottom-color:#000c;bottom:-5px;margin-left:-5px;left:50%;top:auto}.yoast-tooltip-se:after{right:50%;margin-right:-15px;left:auto}.yoast-tooltip-sw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{bottom:100%;margin-bottom:5px;left:50%}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{border-top-color:#000c;bottom:auto;margin-left:-5px;left:50%;top:-5px}.yoast-tooltip-ne:after{right:50%;margin-right:-15px;left:auto}.yoast-tooltip-nw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(-50%)}.yoast-tooltip-w:after{bottom:50%;margin-left:5px;left:100%;transform:translateY(50%)}.yoast-tooltip-w:before{border-right-color:#000c;bottom:50%;right:-5px;margin-top:-5px;top:50%}.yoast-tooltip-e:after{bottom:50%;right:100%;margin-right:5px;transform:translateY(50%)}.yoast-tooltip-e:before{border-left-color:#000c;bottom:50%;margin-top:-5px;left:-5px;top:50%}.yoast-tooltip-multiline:after{word-wrap:normal;border-collapse:initial;max-width:250px;white-space:pre-line;width:250px;width:max-content;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{right:50%;left:auto;transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w:after{margin-left:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}css/dist/edit-page-2390-rtl.css000064400000001043147206602470012050 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 3px 0 10px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}@media screen and (max-width:782px){.column-wpseo-focuskw,.column-wpseo-metadesc,.column-wpseo-score,.column-wpseo-title{display:none}}css/dist/structured-data-blocks-2390-rtl.css000064400000006672147206602470014614 0ustar00.schema-faq-section,.schema-how-to-step{border:1px solid #9197a240;list-style-type:none;margin:4px 0;padding:8px 32px 8px 4px;position:relative}.schema-faq-buttons,.schema-how-to-buttons{display:flex;justify-content:center}.schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:inline-flex;height:36px;width:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq .schema-faq-answer,.schema-faq .schema-faq-question,.schema-how-to .schema-how-to-description,.schema-how-to .schema-how-to-step-name,.schema-how-to .schema-how-to-step-text,.schema-how-to .schema-how-to-steps{line-height:inherit;margin:0}.schema-how-to .schema-how-to-steps{padding-top:0}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:inline-flex;text-align:left}.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{margin-right:-28px;text-align:left}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon{margin-left:4px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{right:4px;position:absolute;text-align:left;width:24px}.schema-how-to-duration{border:0;margin:0;padding:0}.schema-how-to-duration-flex-container{align-items:center;display:flex}.schema-how-to-duration-time-input{align-items:center;display:inline-flex;flex-wrap:nowrap}legend.schema-how-to-duration-legend{margin-left:4px}#schema-how-to-duration-days{margin-left:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{-moz-appearance:textfield;margin:0 2px;padding:6px 4px;text-align:center;width:40px}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-right:-8px;vertical-align:top}.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-how-to-description{margin:8px 0}body.is-dark-theme .schema-faq-section-mover button.components-button,body.is-dark-theme .schema-how-to-step-mover button.components-button,body.is-dark-theme button.components-button.schema-faq-add-question,body.is-dark-theme button.components-button.schema-faq-section-button,body.is-dark-theme button.components-button.schema-how-to-add-step,body.is-dark-theme button.components-button.schema-how-to-duration-button,body.is-dark-theme button.components-button.schema-how-to-step-button{color:#e8eaed}css/dist/support-2390-rtl.css000064400000000675147206602470011737 0ustar00.seo_page_wpseo_page_support{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}.seo_page_wpseo_page_support #wpcontent{padding-right:0!important}.seo_page_wpseo_page_support #wpfooter{padding-left:1rem}@media (min-width:768px){.seo_page_wpseo_page_support #wpfooter{padding-right:17rem;padding-left:2rem}}@media screen and (max-width:782px){.seo_page_wpseo_page_support .wp-responsive-open #wpbody{left:-190px}}css/dist/workouts-2390.css000064400000017601147206602470011316 0ustar00#wpseo-workouts-container-free h1,#wpseo-workouts-container-free h3{color:#a4286a;font-weight:500}#wpseo-workouts-container-free h3{font-size:18px;line-height:24px}.card.card-small h3{min-height:48px}#wpseo-workouts-container-free h2{font-size:12px;text-transform:uppercase}#wpseo-workouts-container-free #workouts-page-description{font-size:16px;max-width:600px}.workflow tr.cornerstone{font-weight:700}#wpseo-workouts-container-free hr{margin-bottom:24px;margin-top:8px}#wpseo-workouts-container-free progress{margin:16px 0 8px}#wpseo-workouts-container-free div.card{border-color:#0003;border-radius:8px;border-width:1px;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;max-width:720px;padding:24px;width:100%}#wpseo-workouts-container-free div.card>h2{margin:0}#wpseo-workouts-container-free div.card.card-small{display:flex;flex-direction:column;max-width:320px}#wpseo-workouts-container-free div.card.card-small svg{height:146px;width:204px}#wpseo-workouts-container-free div.card.card-small svg *{height:100%;width:100%}#wpseo-workouts-container-free div.card.card-small>span{margin-top:auto}#wpseo-workouts-container-free table button{margin:2px}.workflow{counter-reset:line-number;list-style:none;margin-left:48px}.workflow li li{counter-increment:none;line-height:19px;margin-bottom:8px}.workflow li.step{counter-increment:line-number;padding-bottom:16px;position:relative}.workflow .yoast-button.yoast-button--finished{opacity:.5}.workflow .finish-button-section .finish-button-saved{color:#6ea029;grid-column-end:3;grid-column-start:3;margin-left:10px;position:relative}.workflow .finish-button-section .finish-button-saved:before{background:var(--yoast-svg-icon-check);background-size:18px 13px;content:"";height:13px;left:-18px;position:absolute;top:2px;width:18px}.workflow li.step>.yoast-button.orphaned-summary{display:initial;margin:0}.yoast .yoast-button--arrow-down{display:inline-block;flex-shrink:0;height:16px;margin:0 -2px 0 6px;width:16px}.workflow>li.step:before{background:#a4286a;bottom:-20px;content:"";left:-33px;position:absolute;top:0;width:2px}.workflow .extra-list-content{position:relative}.workflow>li.step:last-of-type:before{display:none}.workflow>li.step:after{background:#fff;border:2px solid #a4286a;border-radius:100%;color:#a4286a;content:counter(line-number);display:block;height:28px;left:-48px;line-height:28px;position:absolute;text-align:center;top:-8px;width:28px}.workflow li.step.finished:after{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' fill='none' stroke='%23FFF' height='24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5 13 4 4L19 7'/%3E%3C/svg%3E") #a4286a;background-position:50%;background-repeat:no-repeat;background-size:20px 20px;content:""}.workflow li.step.finished.faded p,.workflow li.step.finished.faded table{opacity:.5}.workflow li.step img{max-width:100%}.workflow li.step img.workflow__image{max-height:100px;max-width:100px}.workflow li.step.yoast-fadeout:before{background:linear-gradient(180deg,#a4286a,#fff 75%);display:block}.workflow li.step #react-select-2-input{box-shadow:none!important}.workflows__index{display:flex;flex-wrap:wrap;gap:16px}.workflows__index .yoast-button{width:100%}table.yoast_help.yoast_link_suggestions thead td{padding:16px 8px}table.yoast_help.yoast_link_suggestions td{vertical-align:middle}table.yoast_help th.divider{text-align:center}.workflow table.yoast_help td{vertical-align:middle}.workflow table.yoast_help.yoast_link_suggestions td div{display:inline-block}.workflow table.yoast_help.yoast_link_suggestions td strong{display:inline-block;margin-right:8px}.components-modal__header{height:72px;padding:0 24px}.components-modal__header .components-modal__header-heading{color:#a4286a;font-size:20px;font-weight:400;line-height:1.2;margin:0}.components-modal__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.components-modal__content{padding:0 24px 24px}.components-modal__content input[type=text]{max-width:400px;width:100%}.components-modal__frame.yoast__workout{max-width:720px}.yoast__redirect-suggestions{line-height:2}.components-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#00000059;bottom:0;left:0;position:fixed;right:0;top:0;z-index:100000}@media (prefers-reduced-motion:reduce){.components-modal__screen-overlay{animation-delay:0s;animation-duration:1ms}}.components-modal__frame{background:#fff;border-radius:2px;bottom:0;box-shadow:0 10px 10px #00000040;box-sizing:border-box;left:0;margin:0;overflow:auto;position:absolute;right:0;top:0}@media (min-width:600px){.components-modal__frame{animation:components-modal__appear-animation .1s ease-out;animation-fill-mode:forwards;bottom:auto;left:50%;max-height:90%;max-width:calc(100% - 32px);min-width:360px;right:auto;top:50%;transform:translate(-50%,-50%)}}@media (min-width:600px) and (prefers-reduced-motion:reduce){.components-modal__frame{animation-delay:0s;animation-duration:1ms}}@keyframes components-modal__appear-animation{0%{margin-top:32px}to{margin-top:0}}.components-modal__header{align-items:center;background:#fff;border-bottom:1px solid #ddd;box-sizing:border-box;display:flex;flex-direction:row;height:60px;justify-content:space-between;margin:0 -32px 24px;padding:0 32px;position:relative;position:sticky;top:0;z-index:10}@supports (-ms-ime-align:auto){.components-modal__header{position:fixed;width:100%}}.components-modal__header .components-modal__header-heading{font-size:1rem;font-weight:600}.components-modal__header h1{line-height:1;margin:0}.components-modal__header .components-button{left:8px;position:relative}.components-modal__header-heading-container{align-items:center;display:flex;flex-direction:row;flex-grow:1;justify-content:left}.components-modal__header-icon-container{display:inline-block}.components-modal__header-icon-container svg{max-height:36px;max-width:36px;padding:8px}.components-modal__content{box-sizing:border-box;height:100%;padding:0 32px 24px}@supports (-ms-ime-align:auto){.components-modal__content{padding-top:60px}}.workflow li.step h4{font-size:14px;font-weight:600;margin:24px 0 0}.workflow .yoast-social-profiles-input-fields{margin:10px 0 20px}.workflow .tracking-radiobuttons{line-height:19px;margin:0 0 20px}.workflow .yoast-tracking{list-style-position:inside;list-style-type:disc;padding:inherit}.yoast-list--usp{margin-bottom:16px;padding-left:24px}.yoast-list--usp li{margin-bottom:16px;position:relative}.yoast-list--usp li:before{background:var(--yoast-svg-icon-check);background-size:18px 13px;content:"";height:13px;left:-24px;position:absolute;top:3px;width:18px}.workout-card-content-flex{display:flex}.card.card-small .yoast-button-upsell{box-shadow:inset 0 -2px 0 #0003;filter:none;font-family:inherit;min-height:40px}.card.card-small button{box-shadow:inset 0 -2px 0 #0000004d;filter:none;min-height:40px}.card.card-small button.yoast-button--secondary{box-shadow:inset 0 -2px 0 #0000001a}.workout-card-content-flex ul{margin-right:8px}.workout-card-content-flex img{max-width:120px}.workout-card-upsell-button{opacity:1}#wpseo-workouts-container-free div.card.card-small.card-disabled{background-color:#ffffff80}#wpseo-workouts-container-free div.card.card-small.card-disabled .workout-card-content-flex,#wpseo-workouts-container-free div.card.card-small.card-disabled .workout-card-progress,#wpseo-workouts-container-free div.card.card-small.card-disabled h2,#wpseo-workouts-container-free div.card.card-small.card-disabled h3{opacity:.5}.workflow__grid{display:grid;gap:8px;grid-template-columns:auto 100px}.workflow__grid>div:last-of-type{display:flex;flex-wrap:wrap;justify-content:flex-end}@media screen and (max-width:768px){#wpseo-workouts-container-free #workouts-page-description{max-width:320px}}css/dist/featured-image-2390-rtl.css000064400000000214147206602470013067 0ustar00#yst_opengraph_image_warning{margin-top:0}.yoast-opengraph-image-notice #set-post-thumbnail>img{box-shadow:0 0 0 2px #fff,0 0 0 5px #dc3232}css/dist/yoast-extensions-2390-rtl.css000064400000066347147206602470013567 0ustar00.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;right:0;position:fixed;left:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);right:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;left:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-left:16px;width:19px}.yoast-modal__menu{border-left:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-left:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-left:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;right:0;left:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-left:8px}.yoast .yoast-close{left:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-right:16px;margin-left:16px;padding-right:0;padding-left:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:right;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(-180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:left;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;right:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-left:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-left:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-list--usp{font-family:Arial,sans-serif;margin-bottom:2rem;padding:0}.yoast-list--usp li{list-style:none!important;padding-right:1.2533333333rem;position:relative}.yoast-list--usp li:before{color:#77b227;content:"\f00c\0020";font-family:FontAwesome,Open Sans,Arial,sans-serif;right:0;position:absolute;top:0}.yoast .h1,.yoast .h2,.yoast .h3,.yoast .h4,.yoast .h5,.yoast .h6,.yoast h1,.yoast h2,.yoast h3,.yoast h4,.yoast h5,.yoast h6{display:block;font-family:Arial,sans-serif;font-weight:300;margin-top:0}.yoast .h1,.yoast h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}@media only screen and (min-width:30rem){.yoast .h1,.yoast h1{font-size:2.75em}}.yoast .h2,.yoast h2{font-size:1.88em;line-height:2.5rem;margin-bottom:1.2rem}.yoast .h2.tight,.yoast h2.tight{margin-bottom:.6rem}.yoast .h3,.yoast h3{font-size:1.25em;line-height:1.88rem;margin-bottom:.8rem}.yoast .h3.tight,.yoast h3.tight{margin-bottom:.4rem}@media only screen and (min-width:30rem){.yoast .h3,.yoast h3{font-size:1.375em}}@media only screen and (min-width:50rem){.yoast .h3,.yoast h3{font-size:1.5em}}.yoast .h4,.yoast .h5,.yoast .h6,.yoast h4,.yoast h5,.yoast h6{font-size:1.13em;font-weight:400;line-height:1.88rem;margin-bottom:.2rem}.yoast-button{background-color:initial;background-color:#dc5c04;border:0;color:#dc5c04;cursor:pointer;display:inline-block;font-family:Arial,sans-serif;font-size:1.1em;padding:.345em 1em .345em 1.5em;position:relative;text-decoration:none;width:100%}@media only screen and (min-width:30rem){.yoast-button{margin-left:1.36rem;max-height:2.86rem;width:auto}.yoast-button:after{border-bottom:1.44rem solid #0000;border-right:1.43rem solid #dc5c04;border-left:0;border-top:1.43rem solid #0000;content:"";height:0;position:absolute;left:-1.36rem;top:0;width:0}.yoast-button.left{margin-right:1.36rem;margin-left:0}.yoast-button.left:after{content:none}.yoast-button.left:before{border-bottom:1.44rem solid #0000;border-right:0;border-left:1.43rem solid #dc5c04;border-top:1.43rem solid #0000;content:"";height:0;right:-1.36rem;position:absolute;top:0;width:0}}.yoast-button.alignleft{margin:1rem 0 0 2.5rem!important}.yoast-button .arrow{display:none}.yoast-button+.yoast-button{margin-right:1.88rem;margin-top:1em}.yoast-button--full{width:100%}.yoast-button--full:after{content:none}.yoast-button.default{background-color:#dc5c04;color:#fff}.yoast-button.default:after{border-right-color:#dc5c04}.yoast-button.default:before{border-left-color:#dc5c04}.yoast-button a:focus,.yoast-button:hover{background-color:#f58223;color:#fff;text-decoration:underline}.yoast-button a:focus:after,.yoast-button:hover:after{border-right-color:#f58223}.yoast-button a:focus:before,.yoast-button:hover:before{border-left-color:#f58223}.yoast-button.academy{background-color:#5d237a;color:#fff}.yoast-button.academy:after{border-right-color:#5d237a}.yoast-button.academy:before{border-left-color:#5d237a}@media only screen and (max-width:20rem){.yoast-button.academy{background-color:#5d237a}}.yoast-button.academy--secondary{background-color:#a4286a;color:#fff}.yoast-button.academy--secondary:after{border-right-color:#a4286a}.yoast-button.academy--secondary:before{border-left-color:#a4286a}@media only screen and (max-width:20rem){.yoast-button.academy--secondary{background-color:#a4286a}}.yoast-button.software{background-color:#0075b3;color:#fff}.yoast-button.software:after{border-right-color:#0075b3}.yoast-button.software:before{border-left-color:#0075b3}.yoast-button.review{background-color:#009288;color:#fff}.yoast-button.review:after{border-right-color:#009288}.yoast-button.review:before{border-left-color:#009288}.yoast-button.about{background-color:#d93f69;color:#fff}.yoast-button.about:after{border-right-color:#d93f69}.yoast-button.about:before{border-left-color:#d93f69}.yoast_academy .yoast-button{background-color:#d93f69;color:#fff}.yoast_academy .yoast-button:after{border-right-color:#d93f69}.yoast_academy .yoast-button:before{border-left-color:#d93f69}.yoast_academy .yoast-button a:focus,.yoast_academy .yoast-button:hover{background-color:#d42a59;color:#fff;text-decoration:underline}.yoast_academy .yoast-button a:focus:after,.yoast_academy .yoast-button:hover:after{border-right-color:#d42a59}.yoast_academy .yoast-button a:focus:before,.yoast_academy .yoast-button:hover:before{border-left-color:#d42a59}.yoast_academy .yoast-button.dimmed,body .yoast-button.dimmed{background-color:#dcdcdc;color:#646464}.yoast_academy .yoast-button.dimmed:after,body .yoast-button.dimmed:after{border-right-color:#dcdcdc}.yoast_academy .yoast-button.dimmed:before,body .yoast-button.dimmed:before{border-left-color:#dcdcdc}.yoast_academy .yoast-button.dimmed a:focus,.yoast_academy .yoast-button.dimmed:hover,body .yoast-button.dimmed a:focus,body .yoast-button.dimmed:hover{background-color:#cdcdcd;color:#646464;text-decoration:underline}.yoast_academy .yoast-button.dimmed a:focus:after,.yoast_academy .yoast-button.dimmed:hover:after,body .yoast-button.dimmed a:focus:after,body .yoast-button.dimmed:hover:after{border-right-color:#cdcdcd}.yoast_academy .yoast-button.dimmed a:focus:before,.yoast_academy .yoast-button.dimmed:hover:before,body .yoast-button.dimmed a:focus:before,body .yoast-button.dimmed:hover:before{border-left-color:#cdcdcd}.yoast-button--noarrow:after{content:none}.yoast-button--naked{background-color:initial;border:none;padding:0}.yoast-button--naked:after{content:none}.yoast-button i.fa{font-size:140%;margin:4px 0 0 10px}.yoast-promoblock{border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin-bottom:1.88rem;padding:16px}.yoast-promoblock p{color:#000}.yoast-promoblock p:last-of-type{margin-bottom:0}.yoast-promoblock i.blockicon{bottom:10px;font-size:2.25em;padding:0 .5em 0 0;position:absolute;left:10px}.yoast-promoblock a img{border:1px solid #dcdcdc}.yoast-promoblock p a{font-weight:600!important;text-decoration:underline}.yoast-promoblock form a{font-weight:400!important;text-decoration:none}.yoast-promoblock .h4,.yoast-promoblock h4{margin-bottom:.7rem}.yoast-promoblock.link{border-color:#dc5c04}.yoast-promoblock.link a,.yoast-promoblock.link a:hover{color:#dc5c04}.yoast-promoblock--white{border-color:#fff!important}.product .yoast-promoblock{overflow:hidden}.yoast-promoblock--hometitle{background-color:#d93f6940;border-color:#fff!important;display:flex;font-size:16px;font-size:1rem;height:11em;line-height:1;margin:1rem auto 2rem;max-width:16em}@media only screen and (max-width:30rem){.yoast-promoblock--hometitle:after{content:none!important}}.yoast-promoblock--imageholder{margin-bottom:0;padding:0}.yoast-promoblock--imageholdersmall{position:absolute}.yoast-promoblock--imageholdersmall:first-child{right:4rem}.yoast-promoblock--imageholdersmall:last-child{top:4rem}@media only screen and (max-width:50rem){.yoast-promoblock h2{margin-bottom:0}}a.promoblock{color:#000}a.promoblock,a.promoblock:hover{text-decoration:none}.promoblockimage__holder{height:295px;position:relative;width:240px}.yoast{color:#000;font-family:Open Sans,Arial,sans-serif;font-size:1rem;letter-spacing:.01em;line-height:1.88}.yoast *,.yoast :after,.yoast :before{box-sizing:border-box}.yoast-hr{border:0;margin:0;padding-bottom:1.88rem;position:relative}.yoast-list--usp li:before{background:var(--yoast-svg-icon-check) no-repeat;background-position:right .3em;background-size:contain;content:"";height:100%;width:1em}.yoast-button--purple{background-color:#5d237a}.yoast-button-go-to:after{border:none;content:" \00BB";height:auto;position:static;left:auto;top:auto;width:auto}.yoast-button--extension{color:#fff;padding-right:.8em;padding-left:.8em;text-transform:uppercase}.yoast-button--extension+.yoast-button--extension-activated,.yoast-button--extension+.yoast-button--extension-not-activated{margin-right:0}.yoast-button--extension-activated:hover,.yoast-button--extension-installed:hover,.yoast-button--extension-not-activated:hover{text-decoration:none}.yoast-button--extension-installed{margin-left:.2rem}.yoast-button--extension-installed,.yoast-button--extension-installed:hover{background-color:#008a00}.yoast-button--extension-not-activated,.yoast-button--extension-not-activated:hover{background-color:#dc3232}.yoast-button--extension-activated,.yoast-button--extension-activated:hover{background-color:#008a00}.yoast-button-upsell{margin-bottom:1em;width:100%}@media only screen and (min-width:30rem){.yoast-button-upsell{margin-left:1.36rem;width:auto}}.yoast-promo-extensions{display:flex;flex-wrap:wrap;margin-right:-24px}.yoast-promo-extensions>h2{margin-bottom:32px;margin-right:32px;width:100%}.yoast-promo-extension{background-color:#fff;display:flex;flex-direction:column;margin-right:32px;max-width:340px}.yoast-promo-extension:first-child{margin-right:0}.yoast-promo-extension img{float:left;height:100px;margin-bottom:.8rem;width:100px}@media screen and (max-width:900px){.yoast-promo-extension img{display:none}}.yoast-promo-extension .yoast-button-container{margin-top:auto}.yoast-promo-extension .yoast-button-container div.yoast-button--extension{cursor:default}.yoast-promo-extension .yoast-button{font-size:.9rem;max-height:none;width:100%}.yoast-promo-extension .yoast-button--installed{color:#fff}.yoast-promo-extension .yoast-button--extension{font-size:.9rem;margin-top:0;text-align:center}.yoast-promo-extension .yoast-button--extension-installed{margin:0 0 0 2%;width:48%}.yoast-promo-extension .yoast-button--extension-activated,.yoast-promo-extension .yoast-button--extension-not-activated{margin-right:0;margin-left:0;width:48%}.yoast-promo-extension .yoast-button-upsell{width:100%}.yoast-promo-extension h3{color:#a4286a}@media screen and (max-width:900px){.yoast-promo-extension{max-width:none;width:100%}}.yoast-seo-premium-extension-sale-badge{margin-top:-30px}.yoast-seo-premium-extension-sale-badge span{background:#1f2937;border-radius:14px;color:#fcd34d;font-size:14px;font-weight:600;padding:6px 12px}.yoast-seo-premium-extension{background:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin:2em .5em 1.5em;max-width:712px;padding:16px}.yoast-seo-premium-extension h2{color:#a61e69;display:flex;font-size:1.5rem;justify-content:space-between;margin-top:16px}.yoast-seo-premium-extension img{margin-right:1rem}@media screen and (max-width:900px){.yoast-seo-premium-extension{max-width:none;width:calc(100% - 8px)}.yoast-seo-premium-extension img{display:none}}.yoast-seo-premium-extension:after,.yoast-seo-premium-extension:before{content:"";display:table}.yoast-seo-premium-extension:after{clear:both}.yoast-seo-premium-benefits__item{font-size:.9rem;font-weight:400;line-height:24px;margin-bottom:8px}.yoast-seo-premium-benefits__item span{color:#404040}.yoast-seo-premium-benefits__title{font-size:.9rem;font-weight:700;line-height:24px}.yoast-seo-premium-benefits__description{font-size:.9rem;font-weight:400;line-height:24px}.yoast-link--license,.yoast-link--more-info{color:#a4286a;font-weight:600}.yoast-link--license{margin:1em 0 0}.yoast-promo-extension .yoast-link--license{display:block;margin:1em 0 0}.yoast-link--license:after{content:" \00BB"}.yoast-link--more-info{background:var(--yoast-svg-icon-info);background-position:100%;background-repeat:no-repeat;background-size:1em;padding-right:calc(1em + 5px)}.yoast-link--more-info:after{content:" \00BB"}.yoast-promo-extension .yoast-link--more-info{background-position:100%;display:block;margin:0}.yoast-heading-highlight{color:#a4286a;font-weight:600}.yoast-money-back-guarantee{font-size:1.1em;font-style:italic}.yoast-license-status-active{background:#008a00;color:#fff;padding:3px 6px}.yoast-license-status-inactive{background:#dc3232;color:#fff;padding:3px 6px}.yoast-promoblock.secondary.yoast-promo-extension .yoast-button-container .yoast-subscription-discount{color:#64748b;font-size:12px;margin-bottom:8px;margin-top:-8px;text-align:center}css/dist/toggle-switch-2390.css000064400000020734147206602470012202 0ustar00.switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{display:block;padding:0!important;position:relative}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light label,.switch-light-visual-label,.switch-light>span,.switch-toggle label,.switch-toggle>span{line-height:2;vertical-align:middle}.switch-light input{opacity:0;position:absolute;z-index:3}.switch-light input[type=checkbox].disabled,.switch-light input[type=checkbox].disabled:checked:before,.switch-light input[type=checkbox]:disabled,.switch-light input[type=checkbox]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{right:0}.switch-light strong{font-weight:inherit}.switch-light>span{min-height:2em;padding:0;position:relative;text-align:left}.switch-light span span{display:block;float:left;position:relative;text-align:center;-webkit-user-select:none;user-select:none;width:50%;z-index:2}.switch-light a{display:block;height:100%;padding:0;position:absolute;right:50%;top:0;width:50%;z-index:1}.switch-toggle input{left:0;opacity:0;position:absolute}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:left;margin:0;padding:0 .5em;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{height:100%;left:0;padding:0;position:absolute;top:0;width:10px;z-index:1}.switch-toggle .yoast-button-upsell{left:20px;position:relative}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{left:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{left:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{left:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{left:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{left:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{left:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{left:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{left:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{left:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{left:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{left:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{left:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{left:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{left:83%}.switch-candy a{box-shadow:0 1px 1px #0003,inset 0 1px 1px #ffffff73}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle{width:400px}.fieldset-switch-toggle label{float:none}.fieldset-switch-toggle .yoast-button-upsell{background-color:green;height:16px;overflow:hidden;width:20px}@media only screen{.fieldset-switch-toggle legend{box-sizing:border-box;float:left;font-weight:600;line-height:2;margin:8px 0;min-width:200px;padding-right:16px;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:left;min-width:0;padding-right:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 0 0 2px}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{background-color:#dcdcdc;border:1px solid #ccc;border-radius:.5em;box-shadow:inset 0 2px 4px #00000026;width:250px}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:left}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{background:#a4286a;border:1px solid #b5b5b5;border-radius:.5em}.switch-light.switch-yoast-seo input.disabled+span a,.switch-light.switch-yoast-seo input.disabled:checked+span a,.switch-light.switch-yoast-seo input:disabled+span a,.switch-light.switch-yoast-seo input:disabled:checked+span a,.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px #0073aacc!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{background:#a4286a;border:1px solid #b5b5b5}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;font-weight:inherit;text-shadow:none}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{left:0}.switch-light.switch-yoast-seo-reverse a{left:50%}.switch-light.switch-yoast-seo-reverse span span{float:right}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{cursor:pointer;margin-left:0}.switch-light.switch-yoast-seo input.disabled+span,.switch-light.switch-yoast-seo input:disabled+span,.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;height:1px;margin-bottom:-1px;overflow:hidden}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;font-weight:600;line-height:2;margin:8px 0}.switch-light-visual-label__strong{font-weight:600}.switch-container{clear:both;margin:0 0 .8em}.switch-container.premium-upsell .clear{display:none}.switch-container.premium-upsell{align-items:end;clear:both;display:grid;grid-template-columns:280px 1fr;margin:0 0 .8em}.switch-container.premium-upsell .yoast-help-panel{width:520px}@media screen and (max-width:600px){.switch-container.premium-upsell{clear:both;display:grid;grid-template-columns:1fr;margin:0 0 .8em}.switch-container.premium-upsell .yoast-help-panel{width:unset}}.switch-container.premium-upsell .yoast-button{clear:both;margin-top:8px;width:-moz-fit-content;width:fit-content}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}css/dist/ai-fix-assessments-2390.css000064400000000275147206602470013143 0ustar00.yst-fixes-button__lock-icon{background-color:#fde68a;border-radius:50%;height:14px;padding:1px 2px;position:absolute;right:-6px;top:-6px;width:14px}.ai-button:disabled{pointer-events:auto}css/dist/alerts-2390.css000064400000000761147206602470010712 0ustar00.yoast-alert{align-items:flex-start;border:1px solid #0003;display:flex;font-size:13px;line-height:1.5;margin:16px 0;padding:16px}.yoast-alert--error{background:#f9dcdc;color:#8f1919}.yoast-alert--info{background:#cce5ff;color:#00468f}.yoast-alert--success{background:#e2f2cc;color:#395315}.yoast-alert--warning{background:#fff3cd;color:#674e00}.yoast-alert__icon.yoast-alert__icon{display:block;height:16px;margin-right:8px;margin-top:.1rem;max-width:none;width:16px}.yoast-alert a{color:#004973}css/dist/filter-explanation-2390.css000064400000000107147206602470013217 0ustar00#posts-filter .wpseo-filter-explanation{clear:both;margin:10px 1px 5px}css/dist/black-friday-banner-2390-rtl.css000064400000001255147206602470014011 0ustar00.sidebar__sale_banner_container .sidebar__sale_banner{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));box-shadow:0 -1px 4px 0 #fcd34d,0 1px 4px 0 #fcd34d,0 -1px 0 0 #fcd34d,0 1px 0 0 #fcd34d;color:#fcd34d;font-size:1.125rem;font-weight:700;letter-spacing:.5px;line-height:30px;margin-bottom:10px;margin-right:-30px;margin-top:1.25rem;padding:.25rem 0;text-align:center;transform:rotate(5deg);width:calc(100% + 60px)}.sidebar__sale_banner_container .sidebar__sale_banner .banner_text{display:inline-block;margin:0 35px}.sidebar__sale_banner_container{margin-bottom:-25px;margin-right:-24px;margin-top:-25px;overflow:hidden;padding-bottom:10px;width:calc(100% + 48px)}css/dist/featured-image-2390.css000064400000000214147206602470012270 0ustar00#yst_opengraph_image_warning{margin-top:0}.yoast-opengraph-image-notice #set-post-thumbnail>img{box-shadow:0 0 0 2px #fff,0 0 0 5px #dc3232}css/dist/edit-page-2390.css000064400000001043147206602470011251 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 10px 0 3px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}@media screen and (max-width:782px){.column-wpseo-focuskw,.column-wpseo-metadesc,.column-wpseo-score,.column-wpseo-title{display:none}}css/dist/toggle-switch-2390-rtl.css000064400000020763147206602470013003 0ustar00.switch-light span span,.switch-toggle a{display:none}@media only screen{.switch-light,.switch-toggle{display:block;padding:0!important;position:relative}.switch-light:after,.switch-toggle:after{clear:both;content:"";display:table}.switch-light *,.switch-light :after,.switch-light :before,.switch-toggle *,.switch-toggle :after,.switch-toggle :before{box-sizing:border-box}.switch-light a,.switch-toggle a{display:block;transition:all .2s ease-out}.switch-light label,.switch-light-visual-label,.switch-light>span,.switch-toggle label,.switch-toggle>span{line-height:2;vertical-align:middle}.switch-light input{opacity:0;position:absolute;z-index:3}.switch-light input[type=checkbox].disabled,.switch-light input[type=checkbox].disabled:checked:before,.switch-light input[type=checkbox]:disabled,.switch-light input[type=checkbox]:disabled:checked:before{opacity:0}.switch-light input:checked~span a{left:0}.switch-light strong{font-weight:inherit}.switch-light>span{min-height:2em;padding:0;position:relative;text-align:right}.switch-light span span{display:block;float:right;position:relative;text-align:center;-webkit-user-select:none;user-select:none;width:50%;z-index:2}.switch-light a{display:block;height:100%;padding:0;position:absolute;left:50%;top:0;width:50%;z-index:1}.switch-toggle input{right:0;opacity:0;position:absolute}.switch-toggle input[type=radio].disabled,.switch-toggle input[type=radio].disabled:checked:before,.switch-toggle input[type=radio]:disabled,.switch-toggle input[type=radio]:disabled:checked:before{opacity:0}.switch-toggle input+label{float:right;margin:0;padding:0 .5em;text-align:center}.switch-toggle input:checked+label{position:relative;z-index:2}.switch-toggle a{height:100%;right:0;padding:0;position:absolute;top:0;width:10px;z-index:1}.switch-toggle .yoast-button-upsell{right:20px;position:relative}.switch-toggle label:nth-child(2):nth-last-child(4),.switch-toggle label:nth-child(2):nth-last-child(4)~a,.switch-toggle label:nth-child(2):nth-last-child(4)~label{width:50%}.switch-toggle label:nth-child(2):nth-last-child(4)~input:checked:nth-child(3)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(6),.switch-toggle label:nth-child(2):nth-last-child(6)~a,.switch-toggle label:nth-child(2):nth-last-child(6)~label{width:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(3)+label~a{right:33.33%}.switch-toggle label:nth-child(2):nth-last-child(6)~input:checked:nth-child(5)+label~a{right:66.66%}.switch-toggle label:nth-child(2):nth-last-child(8),.switch-toggle label:nth-child(2):nth-last-child(8)~a,.switch-toggle label:nth-child(2):nth-last-child(8)~label{width:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(3)+label~a{right:25%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(5)+label~a{right:50%}.switch-toggle label:nth-child(2):nth-last-child(8)~input:checked:nth-child(7)+label~a{right:75%}.switch-toggle label:nth-child(2):nth-last-child(10),.switch-toggle label:nth-child(2):nth-last-child(10)~a,.switch-toggle label:nth-child(2):nth-last-child(10)~label{width:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(3)+label~a{right:20%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(5)+label~a{right:40%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(7)+label~a{right:60%}.switch-toggle label:nth-child(2):nth-last-child(10)~input:checked:nth-child(9)+label~a{right:80%}.switch-toggle label:nth-child(2):nth-last-child(12),.switch-toggle label:nth-child(2):nth-last-child(12)~a,.switch-toggle label:nth-child(2):nth-last-child(12)~label{width:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(3)+label~a{right:16.6%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(5)+label~a{right:33.2%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(7)+label~a{right:49.8%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(9)+label~a{right:66.4%}.switch-toggle label:nth-child(2):nth-last-child(12)~input:checked:nth-child(11)+label~a{right:83%}.switch-candy a{box-shadow:0 1px 1px #0003,inset 0 1px 1px #ffffff73}}@media only screen and (-webkit-max-device-pixel-ratio:2) and (max-device-width:80em){.switch-light,.switch-toggle{-webkit-animation:webkitSiblingBugfix 1s infinite}}.fieldset-switch-toggle{width:400px}.fieldset-switch-toggle label{float:none}.fieldset-switch-toggle .yoast-button-upsell{background-color:green;height:16px;overflow:hidden;width:20px}@media only screen{.fieldset-switch-toggle legend{box-sizing:border-box;float:right;font-weight:600;line-height:2;margin:8px 0;min-width:200px;padding-left:16px;vertical-align:middle}.fieldset-switch-toggle .disabled-note{clear:both}.switch-container__has-help .switch-light-visual-label,.switch-container__has-help legend{float:right;min-width:0;padding-left:0}.switch-container__has-help .yoast_help.yoast-help-button{margin:8px 2px 0 0}.switch-light.switch-yoast-seo>span,.switch-toggle.switch-yoast-seo{background-color:#dcdcdc;border:1px solid #ccc;border-radius:.5em;box-shadow:inset 0 2px 4px #00000026;width:250px}.switch-light.switch-yoast-seo,.switch-toggle.switch-yoast-seo{clear:both;float:right}.switch-light.switch-yoast-seo>span{display:inline-block;overflow:visible}.switch-light.switch-yoast-seo a,.switch-toggle.switch-yoast-seo a{background:#a4286a;border:1px solid #b5b5b5;border-radius:.5em}.switch-light.switch-yoast-seo input.disabled+span a,.switch-light.switch-yoast-seo input.disabled:checked+span a,.switch-light.switch-yoast-seo input:disabled+span a,.switch-light.switch-yoast-seo input:disabled:checked+span a,.switch-toggle.switch-yoast-seo input.disabled+a,.switch-toggle.switch-yoast-seo input.disabled~a,.switch-toggle.switch-yoast-seo input:disabled+a,.switch-toggle.switch-yoast-seo input:disabled~a{background:#9b9b9b;border:0}.switch-light.switch-yoast-seo input:focus+label,.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus+label,.switch-toggle.switch-yoast-seo input:focus~span a{outline:none}.switch-light.switch-yoast-seo input:focus~span a,.switch-toggle.switch-yoast-seo input:focus~a{border-color:#5b9dd9!important;box-shadow:0 0 2px #0073aacc!important}.switch-light.switch-yoast-seo input:checked~span a,.switch-toggle.switch-yoast-seo input:checked~span a{background:#a4286a;border:1px solid #b5b5b5}.switch-light.switch-yoast-seo input:checked~span span:first-child,.switch-light.switch-yoast-seo span span,.switch-toggle.switch-yoast-seo label{color:#333;font-weight:inherit;text-shadow:none}.switch-candy.switch-yoast-seo input:checked+label,.switch-candy.switch-yoast-seo input:checked~span span:nth-child(2),.switch-candy.switch-yoast-seo input~span span:first-child{color:#fff;text-shadow:none}.switch-candy.switch-yoast-seo input+label:after{content:"";display:block;height:100%;right:0;position:absolute;top:0;width:100%;z-index:3}.switch-candy.switch-yoast-seo input:checked+label:after{content:none}.switch-light.switch-yoast-seo-reverse input:checked~span a{right:0}.switch-light.switch-yoast-seo-reverse a{right:50%}.switch-light.switch-yoast-seo-reverse span span{float:left}.switch-toggle.switch-yoast-seo label,label.switch-light.switch-yoast-seo{cursor:pointer;margin-right:0}.switch-light.switch-yoast-seo input.disabled+span,.switch-light.switch-yoast-seo input:disabled+span,.switch-toggle.switch-yoast-seo input.disabled+label,.switch-toggle.switch-yoast-seo input:disabled+label{cursor:not-allowed}.switch-yoast-seo .switch-yoast-seo-jaws-a11y{display:block;height:1px;margin-bottom:-1px;overflow:hidden}.switch-light.switch-yoast-seo label code,.switch-toggle.switch-yoast-seo label code{background-color:inherit;vertical-align:top}.switch-light-visual-label{display:block;font-weight:600;line-height:2;margin:8px 0}.switch-light-visual-label__strong{font-weight:600}.switch-container{clear:both;margin:0 0 .8em}.switch-container.premium-upsell .clear{display:none}.switch-container.premium-upsell{align-items:end;clear:both;display:grid;grid-template-columns:280px 1fr;margin:0 0 .8em}.switch-container.premium-upsell .yoast-help-panel{width:520px}@media screen and (max-width:600px){.switch-container.premium-upsell{clear:both;display:grid;grid-template-columns:1fr;margin:0 0 .8em}.switch-container.premium-upsell .yoast-help-panel{width:unset}}.switch-container.premium-upsell .yoast-button{clear:both;margin-top:8px;width:-moz-fit-content;width:fit-content}.switch-container+.switch-container{margin-top:8px}.switch-container+p{margin:0 0 16px}}css/dist/introductions-2390.css000064400000022654147206602470012331 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-color-default:#404040;--yoast-color-default-darker:#303030;--yoast-color-primary:#a4286a;--yoast-color-secondary:#f7f7f7;--yoast-color-white:#fff;--yoast-color-green:#6ea029;--yoast-color-primary-darker:#7b1e50;--yoast-color-primary-lighter:#f5d6e6;--yoast-color-secondary-darker:#d9d9d9;--yoast-color-button-upsell:#fec228;--yoast-color-button-upsell-hover:#f2ae01;--yoast-color-dark:#303030;--yoast-color-sale:#fec228;--yoast-color-sale-darker:#feb601;--yoast-color-border:#0003;--yoast-color-label:#303030;--yoast-color-label-help:#707070;--yoast-color-active:#6ea029;--yoast-color-inactive:#dc3232;--yoast-color-inactive-text:#707070;--yoast-color-inactive-grey:#9e9e9e;--yoast-color-inactive-grey-light:#f1f1f1;--yoast-color-active-light:#b6cf94;--yoast-transition-default:all 150ms ease-out;--yoast-color-link:#006dac;--yoast-color-border--default:#0003;--yoast-color-focus:0 0 0 2px #007fff,0 0 0 5px #bfdfff}.yst-root .yst-introduction-modal .yst-modal__close-button{--tw-text-opacity:1;background-color:initial;color:rgb(107 114 128/var(--tw-text-opacity))}.yst-root .yst-introduction-modal .yst-modal__close-button:focus{--tw-ring-offset-width:0px;outline:2px solid #0000;outline-offset:2px}.yst-root .yst-introduction-gradient{background:linear-gradient(180deg,#a61e6940 10%,#fff0 80%)}.yst-root .yst-introduction-modal-uppercase{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity));letter-spacing:.8px;text-transform:uppercase}.yst-root .yst-logo-icon{background-color:var(--yoast-color-primary);height:17px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:17px}css/dist/academy-2390-rtl.css000064400000000675147206602470011626 0ustar00.seo_page_wpseo_page_academy{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}.seo_page_wpseo_page_academy #wpcontent{padding-right:0!important}.seo_page_wpseo_page_academy #wpfooter{padding-left:1rem}@media (min-width:768px){.seo_page_wpseo_page_academy #wpfooter{padding-right:17rem;padding-left:2rem}}@media screen and (max-width:782px){.seo_page_wpseo_page_academy .wp-responsive-open #wpbody{left:-190px}}css/dist/alerts-2390-rtl.css000064400000000760147206602470011510 0ustar00.yoast-alert{align-items:flex-start;border:1px solid #0003;display:flex;font-size:13px;line-height:1.5;margin:16px 0;padding:16px}.yoast-alert--error{background:#f9dcdc;color:#8f1919}.yoast-alert--info{background:#cce5ff;color:#00468f}.yoast-alert--success{background:#e2f2cc;color:#395315}.yoast-alert--warning{background:#fff3cd;color:#674e00}.yoast-alert__icon.yoast-alert__icon{display:block;height:16px;margin-left:8px;margin-top:.1rem;max-width:none;width:16px}.yoast-alert a{color:#004973}css/dist/tailwind-2390.css000064400000410162147206602470011233 0ustar00.yst-root *,.yst-root :after,.yst-root :before{border:0 solid #e5e7eb;box-sizing:border-box}.yst-root :after,.yst-root :before{--tw-content:""}.yst-root{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;margin:0;tab-size:4}.yst-root hr{border-top-width:1px;color:inherit;height:0}.yst-root abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.yst-root h1,.yst-root h2,.yst-root h3,.yst-root h4,.yst-root h5,.yst-root h6{font-size:inherit;font-weight:inherit}.yst-root a{color:inherit;text-decoration:inherit}.yst-root b,.yst-root strong{font-weight:bolder}.yst-root code,.yst-root kbd,.yst-root pre,.yst-root samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.yst-root small{font-size:80%}.yst-root sub,.yst-root sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.yst-root sub{bottom:-.25em}.yst-root sup{top:-.5em}.yst-root table{border-collapse:collapse;border-color:inherit;text-indent:0}.yst-root button,.yst-root input,.yst-root optgroup,.yst-root select,.yst-root textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}.yst-root button,.yst-root select{text-transform:none}.yst-root [type=button],.yst-root [type=reset],.yst-root [type=submit],.yst-root button{-webkit-appearance:button;background-color:initial;background-image:none}.yst-root :-moz-focusring{outline:auto}.yst-root :-moz-ui-invalid{box-shadow:none}.yst-root progress{vertical-align:initial}.yst-root ::-webkit-inner-spin-button,.yst-root ::-webkit-outer-spin-button{height:auto}.yst-root [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.yst-root ::-webkit-search-decoration{-webkit-appearance:none}.yst-root ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.yst-root summary{display:list-item}.yst-root blockquote,.yst-root dd,.yst-root dl,.yst-root figure,.yst-root h1,.yst-root h2,.yst-root h3,.yst-root h4,.yst-root h5,.yst-root h6,.yst-root hr,.yst-root p,.yst-root pre{margin:0}.yst-root fieldset{margin:0;padding:0}.yst-root legend{padding:0}.yst-root menu,.yst-root ol,.yst-root ul{list-style:none;margin:0;padding:0}.yst-root textarea{resize:vertical}.yst-root input::placeholder,.yst-root textarea::placeholder{color:#6b7280;opacity:1}.yst-root [role=button],.yst-root button{cursor:pointer}.yst-root :disabled{cursor:default}.yst-root audio,.yst-root canvas,.yst-root embed,.yst-root iframe,.yst-root img,.yst-root object,.yst-root svg,.yst-root video{display:block;vertical-align:middle}.yst-root img,.yst-root video{height:auto;max-width:100%}.yst-root [type=date],.yst-root [type=datetime-local],.yst-root [type=email],.yst-root [type=month],.yst-root [type=number],.yst-root [type=password],.yst-root [type=search],.yst-root [type=tel],.yst-root [type=text],.yst-root [type=time],.yst-root [type=url],.yst-root [type=week]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root [type=date]:focus,.yst-root [type=datetime-local]:focus,.yst-root [type=email]:focus,.yst-root [type=month]:focus,.yst-root [type=number]:focus,.yst-root [type=password]:focus,.yst-root [type=search]:focus,.yst-root [type=tel]:focus,.yst-root [type=text]:focus,.yst-root [type=time]:focus,.yst-root [type=url]:focus,.yst-root [type=week]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=date]::placeholder,.yst-root [type=datetime-local]::placeholder,.yst-root [type=email]::placeholder,.yst-root [type=month]::placeholder,.yst-root [type=number]::placeholder,.yst-root [type=password]::placeholder,.yst-root [type=search]::placeholder,.yst-root [type=tel]::placeholder,.yst-root [type=text]::placeholder,.yst-root [type=time]::placeholder,.yst-root [type=url]::placeholder,.yst-root [type=week]::placeholder{color:#6b7280;opacity:1}.yst-root [type=date]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=datetime-local]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=email]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=month]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=number]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=password]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=search]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=tel]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=text]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=time]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=url]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=week]::-webkit-datetime-edit-fields-wrapper{padding:0}.yst-root [type=date]::-webkit-date-and-time-value,.yst-root [type=datetime-local]::-webkit-date-and-time-value,.yst-root [type=email]::-webkit-date-and-time-value,.yst-root [type=month]::-webkit-date-and-time-value,.yst-root [type=number]::-webkit-date-and-time-value,.yst-root [type=password]::-webkit-date-and-time-value,.yst-root [type=search]::-webkit-date-and-time-value,.yst-root [type=tel]::-webkit-date-and-time-value,.yst-root [type=text]::-webkit-date-and-time-value,.yst-root [type=time]::-webkit-date-and-time-value,.yst-root [type=url]::-webkit-date-and-time-value,.yst-root [type=week]::-webkit-date-and-time-value{min-height:1.5em}.yst-root [type=date]::-webkit-datetime-edit,.yst-root [type=date]::-webkit-datetime-edit-day-field,.yst-root [type=date]::-webkit-datetime-edit-hour-field,.yst-root [type=date]::-webkit-datetime-edit-meridiem-field,.yst-root [type=date]::-webkit-datetime-edit-millisecond-field,.yst-root [type=date]::-webkit-datetime-edit-minute-field,.yst-root [type=date]::-webkit-datetime-edit-month-field,.yst-root [type=date]::-webkit-datetime-edit-second-field,.yst-root [type=date]::-webkit-datetime-edit-year-field,.yst-root [type=datetime-local]::-webkit-datetime-edit,.yst-root [type=datetime-local]::-webkit-datetime-edit-day-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-hour-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-meridiem-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-millisecond-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-minute-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-month-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-second-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-year-field,.yst-root [type=email]::-webkit-datetime-edit,.yst-root [type=email]::-webkit-datetime-edit-day-field,.yst-root [type=email]::-webkit-datetime-edit-hour-field,.yst-root [type=email]::-webkit-datetime-edit-meridiem-field,.yst-root [type=email]::-webkit-datetime-edit-millisecond-field,.yst-root [type=email]::-webkit-datetime-edit-minute-field,.yst-root [type=email]::-webkit-datetime-edit-month-field,.yst-root [type=email]::-webkit-datetime-edit-second-field,.yst-root [type=email]::-webkit-datetime-edit-year-field,.yst-root [type=month]::-webkit-datetime-edit,.yst-root [type=month]::-webkit-datetime-edit-day-field,.yst-root [type=month]::-webkit-datetime-edit-hour-field,.yst-root [type=month]::-webkit-datetime-edit-meridiem-field,.yst-root [type=month]::-webkit-datetime-edit-millisecond-field,.yst-root [type=month]::-webkit-datetime-edit-minute-field,.yst-root [type=month]::-webkit-datetime-edit-month-field,.yst-root [type=month]::-webkit-datetime-edit-second-field,.yst-root [type=month]::-webkit-datetime-edit-year-field,.yst-root [type=number]::-webkit-datetime-edit,.yst-root [type=number]::-webkit-datetime-edit-day-field,.yst-root [type=number]::-webkit-datetime-edit-hour-field,.yst-root [type=number]::-webkit-datetime-edit-meridiem-field,.yst-root [type=number]::-webkit-datetime-edit-millisecond-field,.yst-root [type=number]::-webkit-datetime-edit-minute-field,.yst-root [type=number]::-webkit-datetime-edit-month-field,.yst-root [type=number]::-webkit-datetime-edit-second-field,.yst-root [type=number]::-webkit-datetime-edit-year-field,.yst-root [type=password]::-webkit-datetime-edit,.yst-root [type=password]::-webkit-datetime-edit-day-field,.yst-root [type=password]::-webkit-datetime-edit-hour-field,.yst-root [type=password]::-webkit-datetime-edit-meridiem-field,.yst-root [type=password]::-webkit-datetime-edit-millisecond-field,.yst-root [type=password]::-webkit-datetime-edit-minute-field,.yst-root [type=password]::-webkit-datetime-edit-month-field,.yst-root [type=password]::-webkit-datetime-edit-second-field,.yst-root [type=password]::-webkit-datetime-edit-year-field,.yst-root [type=search]::-webkit-datetime-edit,.yst-root [type=search]::-webkit-datetime-edit-day-field,.yst-root [type=search]::-webkit-datetime-edit-hour-field,.yst-root [type=search]::-webkit-datetime-edit-meridiem-field,.yst-root [type=search]::-webkit-datetime-edit-millisecond-field,.yst-root [type=search]::-webkit-datetime-edit-minute-field,.yst-root [type=search]::-webkit-datetime-edit-month-field,.yst-root [type=search]::-webkit-datetime-edit-second-field,.yst-root [type=search]::-webkit-datetime-edit-year-field,.yst-root [type=tel]::-webkit-datetime-edit,.yst-root [type=tel]::-webkit-datetime-edit-day-field,.yst-root [type=tel]::-webkit-datetime-edit-hour-field,.yst-root [type=tel]::-webkit-datetime-edit-meridiem-field,.yst-root [type=tel]::-webkit-datetime-edit-millisecond-field,.yst-root [type=tel]::-webkit-datetime-edit-minute-field,.yst-root [type=tel]::-webkit-datetime-edit-month-field,.yst-root [type=tel]::-webkit-datetime-edit-second-field,.yst-root [type=tel]::-webkit-datetime-edit-year-field,.yst-root [type=text]::-webkit-datetime-edit,.yst-root [type=text]::-webkit-datetime-edit-day-field,.yst-root [type=text]::-webkit-datetime-edit-hour-field,.yst-root [type=text]::-webkit-datetime-edit-meridiem-field,.yst-root [type=text]::-webkit-datetime-edit-millisecond-field,.yst-root [type=text]::-webkit-datetime-edit-minute-field,.yst-root [type=text]::-webkit-datetime-edit-month-field,.yst-root [type=text]::-webkit-datetime-edit-second-field,.yst-root [type=text]::-webkit-datetime-edit-year-field,.yst-root [type=time]::-webkit-datetime-edit,.yst-root [type=time]::-webkit-datetime-edit-day-field,.yst-root [type=time]::-webkit-datetime-edit-hour-field,.yst-root [type=time]::-webkit-datetime-edit-meridiem-field,.yst-root [type=time]::-webkit-datetime-edit-millisecond-field,.yst-root [type=time]::-webkit-datetime-edit-minute-field,.yst-root [type=time]::-webkit-datetime-edit-month-field,.yst-root [type=time]::-webkit-datetime-edit-second-field,.yst-root [type=time]::-webkit-datetime-edit-year-field,.yst-root [type=url]::-webkit-datetime-edit,.yst-root [type=url]::-webkit-datetime-edit-day-field,.yst-root [type=url]::-webkit-datetime-edit-hour-field,.yst-root [type=url]::-webkit-datetime-edit-meridiem-field,.yst-root [type=url]::-webkit-datetime-edit-millisecond-field,.yst-root [type=url]::-webkit-datetime-edit-minute-field,.yst-root [type=url]::-webkit-datetime-edit-month-field,.yst-root [type=url]::-webkit-datetime-edit-second-field,.yst-root [type=url]::-webkit-datetime-edit-year-field,.yst-root [type=week]::-webkit-datetime-edit,.yst-root [type=week]::-webkit-datetime-edit-day-field,.yst-root [type=week]::-webkit-datetime-edit-hour-field,.yst-root [type=week]::-webkit-datetime-edit-meridiem-field,.yst-root [type=week]::-webkit-datetime-edit-millisecond-field,.yst-root [type=week]::-webkit-datetime-edit-minute-field,.yst-root [type=week]::-webkit-datetime-edit-month-field,.yst-root [type=week]::-webkit-datetime-edit-second-field,.yst-root [type=week]::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}.yst-root textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root textarea::placeholder{color:#6b7280;opacity:1}.yst-root select{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root select:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.yst-root select[multiple]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root select[multiple]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=checkbox]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-radius:0;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}.yst-root [type=checkbox]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=checkbox]:checked,.yst-root [type=checkbox]:checked:focus,.yst-root [type=checkbox]:checked:hover,.yst-root [type=checkbox]:indeterminate{background-color:currentColor;border-color:#0000}.yst-root [type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=checkbox]:indeterminate:focus,.yst-root [type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}.yst-root [type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-radius:100%;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}.yst-root [type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=radio]:checked,.yst-root [type=radio]:checked:focus,.yst-root [type=radio]:checked:hover{background-color:currentColor;border-color:#0000}.yst-root{--tw-text-opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:rgb(71 85 105/var(--tw-text-opacity));font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.8125rem;font-weight:400;line-height:1.5}.yst-root a{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.yst-root a:visited{color:#a61e69}.yst-root a:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.yst-root a:hover:visited{color:#b94986}.yst-root a:focus{--tw-text-opacity:1;border-radius:.125rem;color:rgb(99 102 241/var(--tw-text-opacity));outline-color:#4f46e5;outline-offset:1px;outline-style:solid}.yst-root [type=date]::placeholder,.yst-root [type=datetime-local]::placeholder,.yst-root [type=email]::placeholder,.yst-root [type=month]::placeholder,.yst-root [type=number]::placeholder,.yst-root [type=password]::placeholder,.yst-root [type=search]::placeholder,.yst-root [type=tel]::placeholder,.yst-root [type=text]::placeholder,.yst-root [type=time]::placeholder,.yst-root [type=url]::placeholder,.yst-root [type=week]::placeholder,.yst-root textarea::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}.yst-root svg path{stroke-width:inherit}.yst-root .yst-radio__input,.yst-root a:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-radio__input{transition-property:none}.yst-root .yst-radio__input:checked:before{content:var(--tw-content);display:none}.yst-root .yst-modal{z-index:100000!important}.yst-root dd,.yst-root li{margin-bottom:0}.yst-root input[type=date],.yst-root input[type=datetime-local],.yst-root input[type=datetime],.yst-root input[type=email],.yst-root input[type=month],.yst-root input[type=number],.yst-root input[type=password],.yst-root input[type=search],.yst-root input[type=tel],.yst-root input[type=text],.yst-root input[type=time],.yst-root input[type=url],.yst-root input[type=week]{min-height:0}.yst-root input[type=checkbox]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);min-height:0;min-width:0;transition-property:none}.yst-root input[type=checkbox]:before{--tw-content:none;content:var(--tw-content)}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.yst-root .yst-alert{border-radius:.375rem;display:flex;gap:.75rem;padding:1rem}.yst-root .yst-alert--info{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.yst-root .yst-alert--info .yst-alert__message{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.yst-root .yst-alert--warning{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.yst-root .yst-alert--warning .yst-alert__message{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.yst-root .yst-alert--success{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.yst-root .yst-alert--success .yst-alert__message{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.yst-root .yst-alert--error{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.yst-root .yst-alert--error .yst-alert__message{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.yst-root .yst-alert__icon{flex-grow:0;flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-autocomplete{position:relative}.yst-root .yst-autocomplete--error .yst-autocomplete__button{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.yst-root .yst-autocomplete--error .yst-autocomplete__button:focus{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity));border-color:rgb(239 68 68/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete--error .yst-autocomplete__input::placeholder{--tw-placeholder-opacity:1;color:rgb(252 165 165/var(--tw-placeholder-opacity))}.yst-root .yst-autocomplete--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-autocomplete--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete--disabled .yst-autocomplete__input{cursor:not-allowed}.yst-root .yst-autocomplete--disabled .yst-autocomplete__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete--disabled .yst-autocomplete__button{cursor:not-allowed}.yst-root .yst-autocomplete--disabled .yst-autocomplete__button:focus-within{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));border-color:rgb(226 232 240/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__button{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;padding-left:.75rem;padding-right:.75rem;width:100%}.yst-root .yst-autocomplete__button:focus-within{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:1.25rem;pointer-events:none;position:absolute;right:.625rem;top:.6875rem;width:1.25rem}.yst-root .yst-autocomplete__input{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem 2.5rem .5rem 0;width:100%}.yst-root .yst-autocomplete__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete__options{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.8125rem;margin-top:.25rem;max-height:15rem;overflow:auto;position:absolute;width:100%;z-index:20}.yst-root .yst-autocomplete__options:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__option{--tw-text-opacity:1;align-items:center;color:rgb(51 65 85/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;padding:.5rem .75rem;position:relative;-webkit-user-select:none;user-select:none}.yst-root .yst-autocomplete__option--active{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yst-root .yst-autocomplete__option--selected{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-select__option-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yst-root .yst-autocomplete__option-check{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-badge{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(219 234 254/var(--tw-bg-opacity));border-radius:9999px;color:rgb(30 64 175/var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;line-height:1.25;padding:.125rem .5rem;vertical-align:middle;white-space:nowrap}.yst-root .yst-badge--info{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity));color:rgb(30 58 138/var(--tw-text-opacity))}.yst-root .yst-badge--upsell{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-badge--plain{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-badge--small{font-size:.675rem}.yst-root .yst-badge--large{font-size:1rem;padding-left:.75rem;padding-right:.75rem}.yst-root .yst-button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:#0000;align-items:center;border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;justify-content:center;line-height:1.25rem;padding:.5rem .75rem;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none}.yst-root .yst-button:focus{outline-color:#a61e69;outline-offset:2px;outline-style:solid;outline-width:2px}.yst-root a.yst-button:focus{border-radius:.375rem}.yst-root .yst-button--primary{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:#0000;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--primary:visited{color:#fff}.yst-root .yst-button--primary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(143 15 87/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--primary:hover:visited{color:#fff}.yst-root .yst-button--primary:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--secondary{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}.yst-root .yst-button--secondary:visited{color:#1e293b}.yst-root .yst-button--secondary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}.yst-root .yst-button--secondary:hover:visited{color:#1e293b}.yst-root .yst-button--secondary:focus{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--tertiary{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:initial;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-button--tertiary:visited{color:#83084e}.yst-root .yst-button--tertiary:hover{--tw-text-opacity:1;color:rgb(131 8 78/var(--tw-text-opacity))}.yst-root .yst-button--tertiary:hover:visited{color:#83084e}.yst-root .yst-button--tertiary:focus{--tw-text-opacity:1;color:rgb(131 8 78/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--error{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity));border-color:#0000;color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--error:visited{color:#fff}.yst-root .yst-button--error:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--error:hover:visited{color:#fff}.yst-root .yst-button--error:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));outline-color:#dc2626}.yst-root .yst-button--upsell{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity));border-color:#0000;color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-button--upsell:visited{color:#78350f}.yst-root .yst-button--upsell:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-button--upsell:hover:visited{color:#78350f}.yst-root .yst-button--upsell:focus{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity));outline-color:#fbbf24}.yst-root .yst-button--large{font-size:.875rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root .yst-button--extra-large{font-size:1rem;line-height:1.5rem;padding:.625rem .875rem}.yst-root .yst-button--small{font-size:.75rem;line-height:1rem;padding:.375rem .625rem}.yst-root .yst-button--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-button--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-checkbox{align-items:center;display:flex}.yst-root .yst-checkbox--disabled .yst-checkbox__input,.yst-root .yst-checkbox--disabled .yst-checkbox__label{cursor:not-allowed;opacity:.5}.yst-root .yst-checkbox__input{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.25rem;color:rgb(166 30 105/var(--tw-text-opacity));height:1rem;width:1rem}.yst-root .yst-checkbox__input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-checkbox__label{margin-left:.75rem}.yst-root .yst-code{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(15 23 42/var(--tw-text-opacity));display:inline-block;font-size:.75rem;line-height:1.25;margin:0;padding:.25rem}.yst-root .yst-code--block{display:block;margin-bottom:.5rem;margin-top:.5rem;max-width:100%;overflow-x:auto;padding:.25rem .5rem;white-space:nowrap}.yst-root .yst-file-input{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border:2px dashed rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;padding:1.25rem 1.5rem 1.5rem;text-align:center;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:100%}.yst-root .yst-file-input.yst-is-drag-over{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(250 243 247/var(--tw-bg-opacity));border-color:rgb(205 130 171/var(--tw-border-opacity))}.yst-root .yst-file-input.yst-is-drag-over .yst-file-input__content{pointer-events:none}.yst-root .yst-file-input.yst-is-drag-over .yst-file-input__icon{--tw-translate-y:-0.5rem;--tw-text-opacity:1;color:rgb(185 73 134/var(--tw-text-opacity));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-file-input.yst-is-disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-file-input.yst-is-disabled .yst-file-input__select-label{cursor:not-allowed}.yst-root .yst-file-input__content{align-items:center;display:inline-flex;flex-direction:column;max-width:20rem}.yst-root .yst-file-input__content>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-file-input__content{text-align:center}.yst-root .yst-file-input__icon{stroke-width:1;--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:3rem;margin-left:auto;margin-right:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:3rem}.yst-root .yst-file-input__icon>path{stroke-width:1}.yst-root .yst-file-input__input{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.yst-root .yst-file-input__input:focus+.yst-file-input__select-label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-file-input__labels{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:inline-block;font-weight:400}.yst-root .yst-file-input__select-label{border-radius:.375rem;font-weight:500}[dir=rtl] .yst-root .yst-file-input__labels{flex-direction:row-reverse}.yst-root .yst-label{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;font-weight:500}.yst-root .yst-link{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline}.yst-root .yst-link:visited{color:#a61e69}.yst-root .yst-link:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.yst-root .yst-link:hover:visited{color:#b94986}.yst-root .yst-link:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(99 102 241/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-link--primary{--tw-text-opacity:1;color:rgb(154 22 96/var(--tw-text-opacity))}.yst-root .yst-link--primary:focus,.yst-root .yst-link--primary:hover{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-link--primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(154 22 96/var(--tw-ring-opacity))}.yst-root .yst-link--error{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.yst-root .yst-link--error:focus,.yst-root .yst-link--error:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-link--error:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.yst-root .yst-paper{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:flex;flex-direction:column}.yst-root .yst-paper__header{border-bottom-width:1px;padding:2rem}.yst-root .yst-paper__content{flex-grow:1;padding:2rem}.yst-root .yst-progress-bar{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;display:block;overflow:hidden;width:100%}.yst-root .yst-progress-bar__progress{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));border-radius:9999px;display:block;height:.375rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.yst-root .yst-radio{align-items:center;display:flex}.yst-root .yst-radio--disabled .yst-radio__check,.yst-root .yst-radio--disabled .yst-radio__input,.yst-root .yst-radio--disabled .yst-radio__label{cursor:not-allowed;opacity:.5}.yst-root .yst-radio--disabled .yst-radio__check:focus,.yst-root .yst-radio--disabled .yst-radio__input:focus,.yst-root .yst-radio--disabled .yst-radio__label:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block{display:inline-flex}.yst-root .yst-radio--inline-block .yst-radio__input{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.yst-root .yst-radio--inline-block .yst-radio__input:checked+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:#0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__input:checked+.yst-radio__content .yst-radio__check{visibility:visible}.yst-root .yst-radio--inline-block .yst-radio__input:focus+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__input:checked:focus+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-offset-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__content{position:relative}.yst-root .yst-radio--inline-block .yst-radio__label{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.5rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:flex;font-size:1rem;height:3.5rem;justify-content:center;margin-left:0;width:3.5rem}.yst-root .yst-radio--inline-block .yst-radio__label:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.yst-root .yst-radio--inline-block .yst-radio__label:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-radio--inline-block .yst-radio__check{--tw-text-opacity:1;color:rgb(154 22 96/var(--tw-text-opacity));height:1.25rem;position:absolute;right:.125rem;top:.125rem;visibility:hidden;width:1.25rem}.yst-root .yst-radio__input{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(166 30 105/var(--tw-text-opacity));height:1rem;width:1rem}.yst-root .yst-radio__input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-radio__label{margin-left:.75rem}.yst-root .yst-select{position:relative}.yst-root .yst-select--disabled .yst-select__button,.yst-root .yst-select--disabled .yst-select__label{cursor:not-allowed;opacity:.5}.yst-root .yst-select__button{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;line-height:1.5rem;padding:.5rem .75rem;position:relative;text-align:left;width:100%}.yst-root .yst-select__button:focus{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-select__button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:1.25rem;pointer-events:none;position:absolute;right:.625rem;top:.625rem;width:1.25rem}.yst-root .yst-select__options{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.8125rem;margin-top:.25rem;max-height:15rem;overflow:auto;position:absolute;width:100%;z-index:10}.yst-root .yst-select__options:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-select__option{--tw-text-opacity:1;align-items:center;color:rgb(51 65 85/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;padding:.5rem .75rem;position:relative;-webkit-user-select:none;user-select:none}.yst-root .yst-select__option--active{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yst-root .yst-select__option--selected{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(154 22 96/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-select__button-label,.yst-root .yst-select__option-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yst-root .yst-select__option-check{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-skeleton-loader{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:.25rem;display:block;height:auto;overflow:hidden;position:relative;width:-moz-fit-content;width:fit-content}.yst-root .yst-skeleton-loader:after{--tw-translate-x:-100%;animation:wave 2.5s linear .5s infinite;background:linear-gradient(90deg,#0000,#00000012,#0000);bottom:0;content:"";left:0;position:absolute;right:0;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes wave{0%{transform:translateX(-100%)}50%,to{transform:translateX(100%)}}.yst-root .yst-table-wrapper{border-radius:.5rem}.yst-root .yst-table-header:first-child{border-top-left-radius:.5rem}.yst-root .yst-table-header:last-child{border-top-right-radius:.5rem}.yst-root .yst-table-row:last-of-type .yst-table-cell:first-child{border-bottom-left-radius:.5rem}.yst-root .yst-table-row:last-of-type .yst-table-cell:last-child{border-bottom-right-radius:.5rem}.yst-root .yst-tag-input{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(30 41 59/var(--tw-text-opacity));display:flex;flex-wrap:wrap;font-size:.8125rem;gap:.375rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root .yst-tag-input::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}.yst-root .yst-tag-input{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-tag-input,.yst-root .yst-tag-input:focus-within{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-tag-input--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-tag-input--disabled:focus-within{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(203 213 225/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input--disabled .yst-tag-input__tag{cursor:not-allowed}.yst-root .yst-tag-input--disabled .yst-tag-input__tag:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input--disabled .yst-tag-input__tag:focus,.yst-root .yst-tag-input--disabled .yst-tag-input__tag:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag{cursor:not-allowed}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input--disabled .yst-tag-input__input{cursor:not-allowed}.yst-root .yst-tag-input__tag{cursor:pointer;gap:.125rem;min-height:20px;padding-inline-end:.125rem}.yst-root .yst-tag-input__tag:hover{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input__tag:focus,.yst-root .yst-tag-input__tag:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input__remove-tag{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;color:rgb(148 163 184/var(--tw-text-opacity));display:inline-flex;flex-shrink:0;height:1rem;justify-content:center;width:1rem}.yst-root .yst-tag-input__remove-tag:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity));color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-tag-input__remove-tag:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input__input{border-style:none;display:inline-flex;flex:1 1 0%;font-size:.8125rem;margin:0;padding:0}.yst-root .yst-tag-input__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-text-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem .75rem;width:100%}.yst-root .yst-text-input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-text-input--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-text-input--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-text-input--read-only{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:rgb(248 250 252/var(--tw-bg-opacity));border-color:rgb(226 232 240/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(100 116 139/var(--tw-text-opacity));cursor:default}.yst-root .yst-textarea{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem .75rem;width:100%}.yst-root .yst-textarea:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-textarea--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-textarea--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-title{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity));font-weight:500;line-height:1.25}.yst-root .yst-title--1{font-size:1.5rem}.yst-root .yst-title--2{font-size:1.125rem}.yst-root .yst-title--3{font-size:.875rem}.yst-root .yst-title--4{font-size:1rem}.yst-root .yst-title--5{font-size:.8125rem}.yst-root .yst-toast{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);max-width:100%;overflow-y:auto;padding:1rem;pointer-events:auto;width:20rem;z-index:20}.yst-root .yst-toast--large{width:24rem}.yst-root .yst-toggle{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity));border-color:#0000;border-radius:9999px;border-width:2px;cursor:pointer;display:inline-flex;flex-shrink:0;height:1.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2.75rem}.yst-root .yst-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-toggle--checked{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity))}.yst-root .yst-toggle--checked .yst-toggle__handle{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-toggle--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-toggle--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-toggle__handle{--tw-translate-x:0px;--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:9999px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;height:1.25rem;justify-content:center;pointer-events:none;position:relative;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1.25rem}.yst-root .yst-toggle__icon{stroke:currentColor;stroke-width:2;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-grow:0;flex-shrink:0;height:.625rem;transition-duration:.1s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:.625rem}.yst-root .yst-toggle__icon--check{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-toggle__icon--x{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}[dir=rtl] .yst-root .yst-toggle--checked .yst-toggle__handle{--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity));border-radius:.5rem;color:rgb(255 255 255/var(--tw-text-opacity));display:inline-block;font-size:.75rem;max-width:24rem;padding:.5rem .625rem;position:absolute;white-space:normal;width:max-content;z-index:10}.yst-root .yst-tooltip--top{--tw-translate-x:-50%;--tw-translate-y:-100%;left:50%;margin-top:-.75rem;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--top:before{--tw-translate-x:-50%;--tw-translate-y:0px;--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-left-color:#0000;border-right-color:#0000;border-top-color:rgb(31 41 55/var(--tw-border-opacity));border-width:8px;content:var(--tw-content);position:absolute}.yst-root .yst-tooltip--bottom,.yst-root .yst-tooltip--top:before{left:50%;top:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--bottom{--tw-translate-x:-50%;--tw-translate-y:-0px;margin-top:.75rem}.yst-root .yst-tooltip--bottom:before{--tw-translate-x:-50%;--tw-border-opacity:1;--tw-content:"";border-bottom-color:rgb(31 41 55/var(--tw-border-opacity));border-left-color:#0000;border-right-color:#0000;border-top-color:#0000;border-width:8px;bottom:100%;content:var(--tw-content);left:50%;position:absolute;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--right{--tw-translate-x:-0px;left:100%;margin-left:.75rem}.yst-root .yst-tooltip--right,.yst-root .yst-tooltip--right:before{--tw-translate-y:-50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--right:before{--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-left-color:#0000;border-right-color:rgb(31 41 55/var(--tw-border-opacity));border-top-color:#0000;border-width:8px;content:var(--tw-content);position:absolute;right:100%}.yst-root .yst-tooltip--left{margin-right:.75rem;right:100%}.yst-root .yst-tooltip--left,.yst-root .yst-tooltip--left:before{--tw-translate-y:-50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--left:before{--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-left-color:rgb(31 41 55/var(--tw-border-opacity));border-right-color:#0000;border-top-color:#0000;border-width:8px;content:var(--tw-content);left:100%;position:absolute}.yst-root .yst-validation-icon{pointer-events:none}.yst-root .yst-validation-icon--success{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.yst-root .yst-validation-icon--info{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.yst-root .yst-validation-icon--warning{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.yst-root .yst-validation-icon--error{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-validation-input{position:relative}.yst-root .yst-validation-input--success .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity));padding-right:2.5rem}.yst-root .yst-validation-input--success .yst-validation-input__input:focus,.yst-root .yst-validation-input--success .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.yst-root .yst-validation-input--info .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity));padding-right:2.5rem}.yst-root .yst-validation-input--info .yst-validation-input__input:focus,.yst-root .yst-validation-input--info .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.yst-root .yst-validation-input--warning .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity));padding-right:2.5rem}.yst-root .yst-validation-input--warning .yst-validation-input__input:focus,.yst-root .yst-validation-input--warning .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.yst-root .yst-validation-input--error .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity));padding-right:2.5rem}.yst-root .yst-validation-input--error .yst-validation-input__input:focus,.yst-root .yst-validation-input--error .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.yst-root .yst-validation-input__input:focus,.yst-root .yst-validation-input__input:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-validation-input__icon{height:1.25rem;position:absolute;right:.625rem;top:.6875rem;width:1.25rem}.yst-root .yst-validation-message a{color:inherit;font-weight:500}.yst-root .yst-validation-message a:visited:hover{color:inherit}.yst-root .yst-validation-message a:focus{--tw-ring-color:currentColor}.yst-root .yst-validation-message--success{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.yst-root .yst-validation-message--info{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.yst-root .yst-validation-message--warning{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.yst-root .yst-validation-message--error{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__description,.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__label{opacity:.5}.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__label{cursor:not-allowed}.yst-root .yst-autocomplete-field__description,.yst-root .yst-autocomplete-field__validation{margin-top:.5rem}.yst-root .yst-card{display:flex;flex-direction:column;position:relative}.yst-root .yst-card>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-card{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);overflow:hidden;padding:1.5rem;transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yst-root .yst-card__header{--tw-bg-opacity:1;align-items:center;background-color:rgb(243 244 246/var(--tw-bg-opacity));display:flex;height:6rem;justify-content:center;margin-left:-1.5rem;margin-right:-1.5rem;margin-top:-1.5rem;padding:1.5rem;position:relative}.yst-root .yst-card__content{flex-grow:1}.yst-root .yst-card__footer{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity));border-top-width:1px;padding-top:1.5rem}.yst-root .yst-checkbox-group--disabled .yst-checkbox-group__description,.yst-root .yst-checkbox-group--disabled .yst-checkbox-group__label{cursor:not-allowed;opacity:.5}.yst-root .yst-checkbox-group__label{margin-bottom:.5rem}.yst-root .yst-checkbox-group__options{display:flex;flex-direction:column;gap:.75rem}.yst-root .yst-checkbox-group__description{margin-bottom:1rem;margin-top:-.5rem}.yst-root .yst-feature-upsell{position:relative}.yst-root .yst-feature-upsell--default{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.yst-root .yst-feature-upsell--card{padding:1.5rem}.yst-root .yst-file-import>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-file-import__feedback{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:1rem}.yst-root .yst-file-import__feedback-header{align-items:flex-start;display:flex}.yst-root .yst-file-import__feedback-header>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.yst-root .yst-file-import__feedback-figure{--tw-bg-opacity:1;align-items:center;background-color:rgb(243 229 237/var(--tw-bg-opacity));border-radius:9999px;display:flex;height:2rem;justify-content:center;width:2rem}.yst-root .yst-file-import__feedback-figure>svg{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity));height:1.25rem;width:1.25rem}.yst-root .yst-file-import__feedback-title{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:block;font-weight:500;margin-bottom:.125rem;overflow-wrap:break-word}.yst-root .yst-file-import__feedback-description{display:block;font-size:.75rem;font-weight:500}.yst-root .yst-file-import__abort-button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(241 245 249/var(--tw-bg-opacity));border-radius:9999px;color:rgb(100 116 139/var(--tw-text-opacity));display:inline-flex;flex-shrink:0;height:1.25rem;justify-content:center;width:1.25rem}.yst-root .yst-file-import__abort-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(71 85 105/var(--tw-text-opacity))}.yst-root .yst-file-import__abort-button:focus{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-file-import__abort-button>svg{height:.75rem;width:.75rem}.yst-root .yst-file-import__abort-button>svg>path{stroke-width:3}.yst-root .yst-modal{bottom:0;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:10}@media (min-width:640px){.yst-root .yst-modal{padding:2rem}}@media (min-width:768px){.yst-root .yst-modal{padding:5rem}}.yst-root .yst-modal__layout{display:flex;min-height:100%}.yst-root .yst-modal--center .yst-modal__layout{align-items:center;justify-content:center}.yst-root .yst-modal--top-center .yst-modal__layout{align-items:flex-start;justify-content:center}.yst-root .yst-modal__overlay{--tw-bg-opacity:0.75;background-color:rgb(100 116 139/var(--tw-bg-opacity));bottom:0;left:0;position:fixed;right:0;top:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yst-root .yst-modal__panel{--tw-bg-opacity:1;--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);max-width:36rem;overflow:hidden;padding:1.5rem;position:relative;width:100%}.yst-root .yst-modal__close{display:block;position:absolute;right:1rem;top:1rem}.yst-root .yst-modal__close-button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(148 163 184/var(--tw-text-opacity));position:relative;z-index:10}.yst-root .yst-modal__close-button:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-modal__close-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-modal__container{display:flex;flex-direction:column;max-height:calc(100vh - 2rem)}@media (min-width:640px){.yst-root .yst-modal__container{max-height:calc(100vh - 4rem)}}@media (min-width:768px){.yst-root .yst-modal__container{max-height:calc(100vh - 10rem)}}.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 5rem)}@media (min-width:640px){.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 7rem)}}@media (min-width:768px){.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 13rem)}}.yst-root .yst-modal__container-footer,.yst-root .yst-modal__container-header{flex-shrink:0}.yst-root .yst-modal__container-content{overflow:auto}.yst-root .yst-modal__panel .yst-modal__container-content{margin-left:-1.5rem;margin-right:-1.5rem;padding-left:1.5rem;padding-right:1.5rem}.yst-root .yst-notifications{display:flex;flex-direction:column;max-height:calc(100vh - 4rem);max-width:calc(100vw - 4rem);pointer-events:none;position:fixed;width:100%;z-index:20}.yst-root .yst-notifications>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-notifications--bottom-center{align-items:center;bottom:2rem}.yst-root .yst-notifications--bottom-left{bottom:2rem;left:2rem}.yst-root .yst-notifications--top-center{align-items:center;top:2rem}.yst-root .yst-notification--large{width:24rem}.yst-root .yst-notification__icon{height:1.25rem;width:1.25rem}.yst-root .yst-pagination{display:inline-flex;isolation:isolate}.yst-root .yst-pagination>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1px*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1px*var(--tw-space-x-reverse))}.yst-root .yst-pagination{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-pagination-display__text{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(100 116 139/var(--tw-text-opacity));font-weight:400;padding:.5rem .75rem}.yst-root .yst-pagination-display__current-text{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity));font-weight:600}.yst-root .yst-pagination-display__truncated{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));align-self:center;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(100 116 139/var(--tw-text-opacity));display:inline-flex;font-size:.8125rem;font-weight:600;padding:.5rem 1rem}.yst-root .yst-pagination__button{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(148 163 184/var(--tw-text-opacity));display:inline-flex;padding:.5rem;position:relative}.yst-root .yst-pagination__button:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.yst-root .yst-pagination__button:focus{outline-color:#a61e69;outline-offset:0;z-index:20}.yst-root .yst-pagination__button--active{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:rgb(166 30 105/var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(255 255 255/var(--tw-text-opacity));font-size:.8125rem;font-weight:600;z-index:10}.yst-root .yst-pagination__button--active:hover{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity))}.yst-root .yst-pagination__button--active:focus{z-index:20}.yst-root .yst-pagination__button--active:focus-visible{border-radius:.125rem;outline-color:#a61e69;outline-offset:2px;outline-style:solid;outline-width:2px}.yst-root .yst-pagination__button--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-pagination__button--disabled:hover{background-color:initial}.yst-root .yst-pagination__button--disabled:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-radio-group--inline-block .yst-radio-group__options{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.yst-root .yst-radio-group--disabled .yst-radio-group__description,.yst-root .yst-radio-group--disabled .yst-radio-group__label{opacity:.5}.yst-root .yst-radio-group--disabled .yst-radio-group__label{cursor:not-allowed}.yst-root .yst-radio-group__label{margin-bottom:.5rem}.yst-root .yst-radio-group__options{display:flex;flex-direction:column;gap:.5rem}.yst-root .yst-radio-group__description{margin-bottom:1rem;margin-top:-.5rem}.yst-root .yst-select-field--disabled .yst-select-field__description,.yst-root .yst-select-field--disabled .yst-select-field__label{cursor:not-allowed;opacity:.5}.yst-root .yst-select-field__options{display:flex;flex-direction:column;gap:.75rem}.yst-root .yst-select-field__description,.yst-root .yst-select-field__validation{margin-top:.5rem}.yst-root .yst-mobile-navigation__top{position:sticky;top:0;width:100%;z-index:50}.yst-root .yst-mobile-navigation__dialog{bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:50}.yst-root .yst-mobile-navigation__dialog,.yst-root .yst-sidebar-navigation__sidebar{--yst-menu-text-color:#1e293b}.yst-root .yst-sidebar-navigation__list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-sidebar-navigation__list--indented{--yst-menu-text-color:#475569;margin-left:2rem}.yst-root .yst-sidebar-navigation__item--active.yst-sidebar-navigation__collapsible-button,.yst-root .yst-sidebar-navigation__item--active.yst-sidebar-navigation__link{--tw-bg-opacity:1!important;--tw-text-opacity:1!important;background-color:rgb(226 232 240/var(--tw-bg-opacity))!important;color:rgb(15 23 42/var(--tw-text-opacity))!important}.yst-root .yst-sidebar-navigation__item--active .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__item{list-style-type:none}.yst-root .yst-sidebar-navigation__item>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-sidebar-navigation__item:first-child{margin-top:.125rem}.yst-root .yst-sidebar-navigation__collapsible~.yst-sidebar-navigation__collapsible{margin-top:.25rem}.yst-root .yst-sidebar-navigation__collapsible-button{align-items:center;border-radius:.375rem;color:var(--yst-menu-text-color);column-gap:.75rem;cursor:pointer;display:flex;font-size:.8125rem;font-weight:500;justify-content:center;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none;width:100%}.yst-root .yst-sidebar-navigation__collapsible-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__collapsible-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-sidebar-navigation__link{align-items:center;border-radius:.375rem;color:var(--yst-menu-text-color);display:flex;font-size:.8125rem;font-weight:500;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none}.yst-root .yst-sidebar-navigation__link:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root a.yst-sidebar-navigation__link:visited{color:var(--yst-menu-text-color)}.yst-root a.yst-sidebar-navigation__link:hover:visited{color:#0f172a}.yst-root a.yst-sidebar-navigation__link:focus{border-radius:.375rem;color:var(--yst-menu-text-color)}.yst-root .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));flex-shrink:0}.yst-group:hover .yst-root .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-tag-field--disabled .yst-tag-field__description,.yst-root .yst-tag-field--disabled .yst-tag-field__label{opacity:.5}.yst-root .yst-tag-field--disabled .yst-tag-field__label{cursor:not-allowed}.yst-root .yst-tag-field__description,.yst-root .yst-tag-field__validation{margin-top:.5rem}.yst-root .yst-text-field--disabled .yst-text-field__description,.yst-root .yst-text-field--disabled .yst-text-field__label{opacity:.5}.yst-root .yst-text-field--disabled .yst-text-field__label{cursor:not-allowed}.yst-root .yst-text-field--read-only .yst-text-field__label{cursor:default}.yst-root .yst-text-field__description,.yst-root .yst-text-field__validation{margin-top:.5rem}.yst-root .yst-textarea-field--disabled .yst-textarea-field__description,.yst-root .yst-textarea-field--disabled .yst-textarea-field__label{opacity:.5}.yst-root .yst-textarea-field--disabled .yst-textarea-field__label{cursor:not-allowed}.yst-root .yst-text-field--read-only .yst-textarea-field__label{cursor:default}.yst-root .yst-textarea-field__description,.yst-root .yst-textarea-field__validation{margin-top:.5rem}.yst-root .yst-toggle-field{display:flex;flex-direction:column;gap:.25rem}.yst-root .yst-toggle-field--disabled .yst-toggle-field__description,.yst-root .yst-toggle-field--disabled .yst-toggle-field__label-wrapper{opacity:.5}.yst-root .yst-toggle-field--disabled .yst-toggle-field__label,.yst-root .yst-toggle-field--disabled .yst-toggle-field__label-wrapper{cursor:not-allowed}.yst-root .yst-toggle-field__header{align-items:center;display:flex;flex-direction:row;gap:1.5rem;justify-content:space-between}.yst-root .yst-toggle-field__label-wrapper{align-items:center;display:flex;gap:.25rem}.yst-root .yst-toggle-field__description{margin-right:4.25rem}.yst-root .yst-difficulty--very-easy{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.yst-root .yst-difficulty--easy{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.yst-root .yst-difficulty--possible{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.yst-root .yst-difficulty--difficult{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.yst-root .yst-difficulty--hard{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.yst-root .yst-difficulty--very-hard{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.yst-root .yst-intent-badge{align-items:center;border-radius:.125rem;display:flex;font-size:.8125rem;font-weight:600;height:1.25rem;justify-content:center;position:relative;width:1.25rem}.yst-root .yst-intent-badge.yst-intent-badge--i{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity));color:rgb(30 58 138/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--n{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity));color:rgb(76 29 149/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--c{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--t{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity));color:rgb(20 83 45/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--secondary .yst-button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:.75rem;margin-left:-.25rem;margin-right:.375rem;width:.75rem}.yst-root .yst-table-button.yst-button--tertiary{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--tertiary:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--tertiary .yst-button-icon{height:.875rem;margin-left:-.25rem;margin-right:.375rem;width:.875rem}.yst-root .yst-success-message{--tw-text-opacity:1;align-items:center;color:rgb(71 85 105/var(--tw-text-opacity));display:flex;font-size:.75rem;gap:.25rem;justify-content:center;line-height:1.25rem;padding:.25rem .75rem;transition-duration:.3s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.yst-root .yst-success-message .yst-success-icon{height:1rem;width:1rem}.yst-root .yst-success-message.yst-success-message-add .yst-success-icon{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.yst-root .yst-success-message.yst-success-message-remove .yst-success-icon{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-sr-only{clip:rect(0,0,0,0)!important;border-width:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.yst-pointer-events-none{pointer-events:none!important}.yst-invisible{visibility:hidden!important}.yst-fixed{position:fixed!important}.yst-absolute{position:absolute!important}.yst-relative{position:relative!important}.yst-sticky{position:sticky!important}.yst-inset-0{bottom:0!important;top:0!important}.yst-inset-0,.yst-inset-x-0{left:0!important;right:0!important}.yst-inset-y-0{bottom:0!important;top:0!important}.yst--left-3{left:-.75rem!important}.yst-top-0{top:0!important}.yst-right-0{right:0!important}.yst-bottom-12{bottom:3rem!important}.yst-top-2{top:.5rem!important}.yst-right-2{right:.5rem!important}.yst-bottom-0{bottom:0!important}.yst-top-1\/2{top:50%!important}.yst--right-\[6\.5px\]{right:-6.5px!important}.yst--top-\[6\.5px\]{top:-6.5px!important}.yst-left-4{left:1rem!important}.yst--bottom-6{bottom:-1.5rem!important}.yst-top-8{top:2rem!important}.yst-top-16{top:4rem!important}.yst-top-3\.5{top:.875rem!important}.yst-top-3{top:.75rem!important}.yst-left-0{left:0!important}.yst-z-30{z-index:30!important}.yst-z-40{z-index:40!important}.yst-z-10{z-index:10!important}.yst-z-20{z-index:20!important}.yst-order-last{order:9999!important}.yst-col-span-1{grid-column:span 1/span 1!important}.yst--m-6{margin:-1.5rem!important}.yst-my-auto{margin-bottom:auto!important;margin-top:auto!important}.yst-mx-auto{margin-left:auto!important;margin-right:auto!important}.yst-my-4{margin-bottom:1rem!important;margin-top:1rem!important}.yst-my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.yst-my-6{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.yst-mx-\[calc\(50\%-50vw\)\]{margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important}.yst-my-12{margin-bottom:3rem!important;margin-top:3rem!important}.yst-my-3{margin-bottom:.75rem!important;margin-top:.75rem!important}.yst-my-8{margin-bottom:2rem!important;margin-top:2rem!important}.yst--mx-6{margin-left:-1.5rem!important;margin-right:-1.5rem!important}.yst-mx-1\.5{margin-left:.375rem!important;margin-right:.375rem!important}.yst-mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.yst-mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.yst-my-0{margin-bottom:0!important;margin-top:0!important}.yst-my-16{margin-bottom:4rem!important;margin-top:4rem!important}.yst--ml-1{margin-left:-.25rem!important}.yst-mt-6{margin-top:1.5rem!important}.yst-mt-1\.5{margin-top:.375rem!important}.yst-mt-1{margin-top:.25rem!important}.yst-ml-auto{margin-left:auto!important}.yst--mr-14{margin-right:-3.5rem!important}.yst-mb-2{margin-bottom:.5rem!important}.yst-mr-4{margin-right:1rem!important}.yst-mr-2{margin-right:.5rem!important}.yst-mb-px{margin-bottom:1px!important}.yst-ml-4{margin-left:1rem!important}.yst-mb-16{margin-bottom:4rem!important}.yst-mt-auto{margin-top:auto!important}.yst-ml-3{margin-left:.75rem!important}.yst-mr-1{margin-right:.25rem!important}.yst-mr-5{margin-right:1.25rem!important}.yst-mb-8{margin-bottom:2rem!important}.yst-mt-3{margin-top:.75rem!important}.yst-ml-1{margin-left:.25rem!important}.yst--mr-1{margin-right:-.25rem!important}.yst--mb-\[1em\]{margin-bottom:-1em!important}.yst-mt-2{margin-top:.5rem!important}.yst-mb-0{margin-bottom:0!important}.yst-mb-5{margin-bottom:1.25rem!important}.yst-mb-6{margin-bottom:1.5rem!important}.yst-mt-8{margin-top:2rem!important}.yst-mt-12{margin-top:3rem!important}.yst-mt-4{margin-top:1rem!important}.yst-mb-3{margin-bottom:.75rem!important}.yst-ml-1\.5{margin-left:.375rem!important}.yst-mr-6{margin-right:1.5rem!important}.yst--ml-px{margin-left:-1px!important}.yst-ml-12{margin-left:3rem!important}.yst--mt-6{margin-top:-1.5rem!important}.yst-mb-4{margin-bottom:1rem!important}.yst-ml-2{margin-left:.5rem!important}.yst-mr-3{margin-right:.75rem!important}.yst-mt-7{margin-top:1.75rem!important}.yst-mt-10{margin-top:2.5rem!important}.yst-mt-\[-2\.6rem\]{margin-top:-2.6rem!important}.yst-mt-\[18px\]{margin-top:18px!important}.yst-mb-1{margin-bottom:.25rem!important}.yst-mr-8{margin-right:2rem!important}.yst--mt-4{margin-top:-1rem!important}.yst-mb-24{margin-bottom:6rem!important}.yst-mt-\[27\.5px\]{margin-top:27.5px!important}.yst-mt-5{margin-top:1.25rem!important}.yst-mt-0{margin-top:0!important}.yst-block{display:block!important}.yst-inline-block{display:inline-block!important}.yst-flex{display:flex!important}.yst-inline-flex{display:inline-flex!important}.yst-table-cell{display:table-cell!important}.yst-table-row{display:table-row!important}.yst-grid{display:grid!important}.yst-hidden{display:none!important}.yst-h-5{height:1.25rem!important}.yst-h-6{height:1.5rem!important}.yst-h-4{height:1rem!important}.yst-h-12{height:3rem!important}.yst-h-0{height:0!important}.yst-h-full{height:100%!important}.yst-h-16{height:4rem!important}.yst-h-7{height:1.75rem!important}.yst-h-3{height:.75rem!important}.yst-h-8{height:2rem!important}.yst-h-\[90vh\]{height:90vh!important}.yst-h-4\/5{height:80%!important}.yst-h-20{height:5rem!important}.yst-h-\[120px\]{height:120px!important}.yst-h-auto{height:auto!important}.yst-h-9{height:2.25rem!important}.yst-h-2\.5{height:.625rem!important}.yst-h-2{height:.5rem!important}.yst-h-24{height:6rem!important}.yst-h-48{height:12rem!important}.yst-h-96{height:24rem!important}.yst-h-\[45px\]{height:45px!important}.yst-h-14{height:3.5rem!important}.yst-h-28{height:7rem!important}.yst-max-h-\[calc\(90vh-10rem\)\]{max-height:calc(90vh - 10rem)!important}.yst-max-h-60{max-height:15rem!important}.yst-min-h-\[24px\]{min-height:24px!important}.yst-min-h-full{min-height:100%!important}.yst-w-5{width:1.25rem!important}.yst-w-6{width:1.5rem!important}.yst-w-0{width:0!important}.yst-w-4{width:1rem!important}.yst-w-full{width:100%!important}.yst-w-12{width:3rem!important}.yst-w-2{width:.5rem!important}.yst-w-3{width:.75rem!important}.yst-w-8{width:2rem!important}.yst-w-56{width:14rem!important}.yst-w-44{width:11rem!important}.yst-w-14{width:3.5rem!important}.yst-w-16{width:4rem!important}.yst-w-10{width:2.5rem!important}.yst-w-48{width:12rem!important}.yst-w-\[350px\]{width:350px!important}.yst-w-20{width:5rem!important}.yst-w-\[150px\]{width:150px!important}.yst-w-40{width:10rem!important}.yst-w-2\.5{width:.625rem!important}.yst-w-0\.5{width:.125rem!important}.yst-w-96{width:24rem!important}.yst-w-3\/5{width:60%!important}.yst-w-24{width:6rem!important}.yst-min-w-full{min-width:100%!important}.yst-min-w-0{min-width:0!important}.yst-min-w-\[16rem\]{min-width:16rem!important}.yst-max-w-xs{max-width:20rem!important}.yst-max-w-sm{max-width:24rem!important}.yst-max-w-screen-sm{max-width:640px!important}.yst-max-w-6xl{max-width:72rem!important}.yst-max-w-lg{max-width:32rem!important}.yst-max-w-\[715px\]{max-width:715px!important}.yst-max-w-none{max-width:none!important}.yst-max-w-\[600px\]{max-width:600px!important}.yst-max-w-full{max-width:100%!important}.yst-max-w-5xl{max-width:64rem!important}.yst-max-w-2xl{max-width:42rem!important}.yst-max-w-\[500px\]{max-width:500px!important}.yst-flex-1{flex:1 1 0%!important}.yst-flex-none{flex:none!important}.yst-flex-shrink-0,.yst-shrink-0{flex-shrink:0!important}.yst-flex-grow,.yst-grow{flex-grow:1!important}.yst-origin-top{transform-origin:top!important}.yst-translate-y-4{--tw-translate-y:1rem!important}.yst-translate-y-0,.yst-translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-translate-y-0{--tw-translate-y:0px!important}.yst-translate-y-full{--tw-translate-y:100%!important}.yst--translate-y-full,.yst-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst--translate-y-full{--tw-translate-y:-100%!important}.yst-rotate-180{--tw-rotate:180deg!important}.yst-rotate-180,.yst-scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-scale-95{--tw-scale-x:.95!important;--tw-scale-y:.95!important}.yst-scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important}.yst-scale-100,.yst-scale-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-scale-y-0{--tw-scale-y:0!important}.yst-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@keyframes yst-spin{to{transform:rotate(1turn)}}.yst-animate-spin{animation:yst-spin 1s linear infinite!important}.yst-cursor-wait{cursor:wait!important}.yst-cursor-not-allowed{cursor:not-allowed!important}.yst-cursor-default{cursor:default!important}.yst-select-none{-webkit-user-select:none!important;user-select:none!important}.yst-scroll-pt-11{scroll-padding-top:2.75rem!important}.yst-scroll-pb-2{scroll-padding-bottom:.5rem!important}.yst-list-outside{list-style-position:outside!important}.yst-list-disc{list-style-type:disc!important}.yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.yst-flex-row{flex-direction:row!important}.yst-flex-col{flex-direction:column!important}.yst-flex-wrap{flex-wrap:wrap!important}.yst-content-between{align-content:space-between!important}.yst-items-start{align-items:flex-start!important}.yst-items-end{align-items:flex-end!important}.yst-items-center{align-items:center!important}.yst-justify-end{justify-content:flex-end!important}.yst-justify-center{justify-content:center!important}.yst-justify-between{justify-content:space-between!important}.yst-gap-2{gap:.5rem!important}.yst-gap-3{gap:.75rem!important}.yst-gap-8{gap:2rem!important}.yst-gap-6{gap:1.5rem!important}.yst-gap-1\.5{gap:.375rem!important}.yst-gap-1{gap:.25rem!important}.yst-gap-4{gap:1rem!important}.yst-gap-x-5{column-gap:1.25rem!important}.yst-gap-y-6{row-gap:1.5rem!important}.yst-gap-y-2{row-gap:.5rem!important}.yst-gap-x-6{column-gap:1.5rem!important}.yst-gap-x-4{column-gap:1rem!important}.yst-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)))!important;margin-right:calc(2rem*var(--tw-space-x-reverse))!important}.yst-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))!important;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(2rem*var(--tw-space-y-reverse))!important;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))!important;margin-right:calc(.5rem*var(--tw-space-x-reverse))!important}.yst-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.25rem*var(--tw-space-y-reverse))!important;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.75rem*var(--tw-space-y-reverse))!important;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))!important;margin-right:calc(.75rem*var(--tw-space-x-reverse))!important}.yst-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.5rem*var(--tw-space-y-reverse))!important;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(1rem*var(--tw-space-y-reverse))!important;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))!important}.yst-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0!important;border-bottom-width:calc(1px*var(--tw-divide-y-reverse))!important;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))!important}.yst-divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1!important;border-color:rgb(229 231 235/var(--tw-divide-opacity))!important}.yst-divide-slate-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1!important;border-color:rgb(203 213 225/var(--tw-divide-opacity))!important}.yst-self-start{align-self:flex-start!important}.yst-self-end{align-self:flex-end!important}.yst-self-center{align-self:center!important}.yst-overflow-auto{overflow:auto!important}.yst-overflow-hidden{overflow:hidden!important}.yst-overflow-y-auto{overflow-y:auto!important}.yst-overflow-x-scroll{overflow-x:scroll!important}.yst-truncate{overflow:hidden!important;white-space:nowrap!important}.yst-overflow-ellipsis,.yst-text-ellipsis,.yst-truncate{text-overflow:ellipsis!important}.yst-whitespace-nowrap{white-space:nowrap!important}.yst-whitespace-pre-line{white-space:pre-line!important}.yst-rounded-md{border-radius:.375rem!important}.yst-rounded-full{border-radius:9999px!important}.yst-rounded-lg{border-radius:.5rem!important}.yst-rounded-3xl{border-radius:1.5rem!important}.yst-rounded-none{border-radius:0!important}.yst-rounded-xl{border-radius:.75rem!important}.yst-rounded-l-md{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.yst-rounded-r-md{border-bottom-right-radius:.375rem!important;border-top-right-radius:.375rem!important}.yst-rounded-b-lg{border-bottom-left-radius:.5rem!important;border-bottom-right-radius:.5rem!important}.yst-rounded-t-lg{border-top-left-radius:.5rem!important;border-top-right-radius:.5rem!important}.yst-rounded-br-none{border-bottom-right-radius:0!important}.yst-border{border-width:1px!important}.yst-border-2{border-width:2px!important}.yst-border-0{border-width:0!important}.yst-border-y{border-bottom-width:1px!important;border-top-width:1px!important}.yst-border-x-0{border-left-width:0!important;border-right-width:0!important}.yst-border-l{border-left-width:1px!important}.yst-border-b{border-bottom-width:1px!important}.yst-border-r{border-right-width:1px!important}.yst-border-t{border-top-width:1px!important}.yst-border-solid{border-style:solid!important}.yst-border-dashed{border-style:dashed!important}.yst-border-none{border-style:none!important}.yst-border-slate-200{--tw-border-opacity:1!important;border-color:rgb(226 232 240/var(--tw-border-opacity))!important}.yst-border-transparent{border-color:#0000!important}.yst-border-amber-300{--tw-border-opacity:1!important;border-color:rgb(252 211 77/var(--tw-border-opacity))!important}.yst-border-slate-300{--tw-border-opacity:1!important;border-color:rgb(203 213 225/var(--tw-border-opacity))!important}.yst-border-primary-500{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.yst-border-slate-100{--tw-border-opacity:1!important;border-color:rgb(241 245 249/var(--tw-border-opacity))!important}.yst-border-white{--tw-border-opacity:1!important;border-color:rgb(255 255 255/var(--tw-border-opacity))!important}.yst-border-primary-300{--tw-border-opacity:1!important;border-color:rgb(205 130 171/var(--tw-border-opacity))!important}.yst-border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity))!important}.yst-border-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity))!important}.yst-border-emerald-600{--tw-border-opacity:1!important;border-color:rgb(5 150 105/var(--tw-border-opacity))!important}.yst-border-r-slate-200{--tw-border-opacity:1!important;border-right-color:rgb(226 232 240/var(--tw-border-opacity))!important}.yst-border-t-\[rgb\(0\,0\,0\,0\.2\)\]{border-top-color:#0003!important}.yst-bg-slate-600{--tw-bg-opacity:1!important;background-color:rgb(71 85 105/var(--tw-bg-opacity))!important}.yst-bg-slate-100{--tw-bg-opacity:1!important;background-color:rgb(241 245 249/var(--tw-bg-opacity))!important}.yst-bg-white{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.yst-bg-slate-50{--tw-bg-opacity:1!important;background-color:rgb(248 250 252/var(--tw-bg-opacity))!important}.yst-bg-transparent{background-color:initial!important}.yst-bg-green-100{--tw-bg-opacity:1!important;background-color:rgb(220 252 231/var(--tw-bg-opacity))!important}.yst-bg-primary-500{--tw-bg-opacity:1!important;background-color:rgb(166 30 105/var(--tw-bg-opacity))!important}.yst-bg-black{--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity))!important}.yst-bg-slate-200{--tw-bg-opacity:1!important;background-color:rgb(226 232 240/var(--tw-bg-opacity))!important}.yst-bg-slate-300{--tw-bg-opacity:1!important;background-color:rgb(203 213 225/var(--tw-bg-opacity))!important}.yst-bg-primary-600{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.yst-bg-red-100{--tw-bg-opacity:1!important;background-color:rgb(254 226 226/var(--tw-bg-opacity))!important}.yst-bg-blue-100{--tw-bg-opacity:1!important;background-color:rgb(219 234 254/var(--tw-bg-opacity))!important}.yst-bg-yellow-100{--tw-bg-opacity:1!important;background-color:rgb(254 249 195/var(--tw-bg-opacity))!important}.yst-bg-primary-200{--tw-bg-opacity:1!important;background-color:rgb(224 179 204/var(--tw-bg-opacity))!important}.yst-bg-opacity-75{--tw-bg-opacity:0.75!important}.yst-fill-sky-200{fill:#bae6fd!important}.yst-fill-blue-500{fill:#3b82f6!important}.yst-fill-red-500{fill:#ef4444!important}.yst-stroke-blue-500{stroke:#3b82f6!important}.yst-stroke-3{stroke-width:3px!important}.yst-stroke-1{stroke-width:1!important}.yst-object-contain{object-fit:contain!important}.yst-object-cover{object-fit:cover!important}.yst-object-center{object-position:center!important}.yst-p-1{padding:.25rem!important}.yst-p-6{padding:1.5rem!important}.yst-p-4{padding:1rem!important}.yst-p-8{padding:2rem!important}.yst-p-0{padding:0!important}.yst-p-3{padding:.75rem!important}.yst-p-2\.5{padding:.625rem!important}.yst-p-2{padding:.5rem!important}.yst-px-4{padding-left:1rem!important;padding-right:1rem!important}.yst-py-6{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.yst-px-2{padding-left:.5rem!important;padding-right:.5rem!important}.yst-px-3{padding-left:.75rem!important;padding-right:.75rem!important}.yst-py-4{padding-bottom:1rem!important;padding-top:1rem!important}.yst-px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.yst-py-3{padding-bottom:.75rem!important;padding-top:.75rem!important}.yst-px-0\.5{padding-left:.125rem!important;padding-right:.125rem!important}.yst-px-0{padding-left:0!important;padding-right:0!important}.yst-px-2\.5{padding-left:.625rem!important;padding-right:.625rem!important}.yst-py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.yst-px-\[3px\]{padding-left:3px!important;padding-right:3px!important}.yst-py-\[3px\]{padding-bottom:3px!important;padding-top:3px!important}.yst-px-8{padding-left:2rem!important;padding-right:2rem!important}.yst-py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.yst-py-12{padding-bottom:3rem!important;padding-top:3rem!important}.yst-py-1\.5{padding-bottom:.375rem!important;padding-top:.375rem!important}.yst-px-11{padding-left:2.75rem!important;padding-right:2.75rem!important}.yst-px-10{padding-left:2.5rem!important;padding-right:2.5rem!important}.yst-px-1\.5{padding-left:.375rem!important;padding-right:.375rem!important}.yst-px-1{padding-left:.25rem!important;padding-right:.25rem!important}.yst-pb-10{padding-bottom:2.5rem!important}.yst-pt-1{padding-top:.25rem!important}.yst-pt-4{padding-top:1rem!important}.yst-pb-4{padding-bottom:1rem!important}.yst-pr-4{padding-right:1rem!important}.yst-pl-6{padding-left:1.5rem!important}.yst-pt-2{padding-top:.5rem!important}.yst-pb-6{padding-bottom:1.5rem!important}.yst-pb-1{padding-bottom:.25rem!important}.yst-pb-8{padding-bottom:2rem!important}.yst-pl-\[29px\]{padding-left:29px!important}.yst-pt-6{padding-top:1.5rem!important}.yst-pl-2{padding-left:.5rem!important}.yst-pr-3{padding-right:.75rem!important}.yst-pb-2{padding-bottom:.5rem!important}.yst-pt-10{padding-top:2.5rem!important}.yst-pl-\[1em\]{padding-left:1em!important}.yst-pt-\[56\.25\%\]{padding-top:56.25%!important}.yst-pl-3{padding-left:.75rem!important}.yst-pr-2{padding-right:.5rem!important}.yst-pl-0{padding-left:0!important}.yst-pr-10{padding-right:2.5rem!important}.yst-pr-9{padding-right:2.25rem!important}.yst-text-left{text-align:left!important}.yst-text-center{text-align:center!important}.yst-text-right{text-align:right!important}.yst-align-middle{vertical-align:middle!important}.yst-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.yst-font-wp{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif!important}.yst-text-sm{font-size:.8125rem!important}.yst-text-xs{font-size:.75rem!important}.yst-text-4xl{font-size:2.25rem!important}.yst-text-2xl{font-size:1.5rem!important}.yst-text-base{font-size:1rem!important}.yst-text-tiny{font-size:.875rem!important}.yst-text-lg{font-size:1.125rem!important}.yst-text-xl{font-size:1.25rem!important}.yst-text-xxs{font-size:.675rem!important}.yst-font-semibold{font-weight:600!important}.yst-font-medium{font-weight:500!important}.yst-font-normal{font-weight:400!important}.yst-font-extrabold{font-weight:800!important}.yst-font-bold{font-weight:700!important}.yst-font-\[650\]{font-weight:650!important}.yst-font-light{font-weight:300!important}.yst-uppercase{text-transform:uppercase!important}.yst-italic{font-style:italic!important}.yst-leading-4{line-height:1rem!important}.yst-leading-10{line-height:2.5rem!important}.yst-leading-6{line-height:1.5rem!important}.yst-leading-8{line-height:2rem!important}.yst-leading-5{line-height:1.25rem!important}.yst-leading-\[normal\]{line-height:normal!important}.yst-leading-tight{line-height:1.25!important}.yst-tracking-tight{letter-spacing:-.025em!important}.yst-tracking-wide{letter-spacing:.025em!important}.yst-text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.yst-text-slate-500{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.yst-text-slate-400{--tw-text-opacity:1!important;color:rgb(148 163 184/var(--tw-text-opacity))!important}.yst-text-primary-500{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.yst-text-slate-900{--tw-text-opacity:1!important;color:rgb(15 23 42/var(--tw-text-opacity))!important}.yst-text-slate-800{--tw-text-opacity:1!important;color:rgb(30 41 59/var(--tw-text-opacity))!important}.yst-text-gray-900{--tw-text-opacity:1!important;color:rgb(17 24 39/var(--tw-text-opacity))!important}.yst-text-gray-500{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.yst-text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity))!important}.yst-text-\[\#555\]{--tw-text-opacity:1!important;color:rgb(85 85 85/var(--tw-text-opacity))!important}.yst-text-amber-300{--tw-text-opacity:1!important;color:rgb(252 211 77/var(--tw-text-opacity))!important}.yst-text-slate-600{--tw-text-opacity:1!important;color:rgb(71 85 105/var(--tw-text-opacity))!important}.yst-text-slate-700{--tw-text-opacity:1!important;color:rgb(51 65 85/var(--tw-text-opacity))!important}.yst-text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.yst-text-green-400{--tw-text-opacity:1!important;color:rgb(74 222 128/var(--tw-text-opacity))!important}.yst-text-\[\#111827\]{--tw-text-opacity:1!important;color:rgb(17 24 39/var(--tw-text-opacity))!important}.yst-text-yellow-900{--tw-text-opacity:1!important;color:rgb(113 63 18/var(--tw-text-opacity))!important}.yst-text-amber-900{--tw-text-opacity:1!important;color:rgb(120 53 15/var(--tw-text-opacity))!important}.yst-text-neutral-700{--tw-text-opacity:1!important;color:rgb(64 64 64/var(--tw-text-opacity))!important}.yst-text-blue-500{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity))!important}.yst-text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity))!important}.yst-text-blue-800{--tw-text-opacity:1!important;color:rgb(30 64 175/var(--tw-text-opacity))!important}.yst-text-yellow-500{--tw-text-opacity:1!important;color:rgb(234 179 8/var(--tw-text-opacity))!important}.yst-text-yellow-800{--tw-text-opacity:1!important;color:rgb(133 77 14/var(--tw-text-opacity))!important}.yst-text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.yst-text-emerald-600{--tw-text-opacity:1!important;color:rgb(5 150 105/var(--tw-text-opacity))!important}.yst-text-green-800{--tw-text-opacity:1!important;color:rgb(22 101 52/var(--tw-text-opacity))!important}.yst-text-red-900{--tw-text-opacity:1!important;color:rgb(127 29 29/var(--tw-text-opacity))!important}.yst-underline{-webkit-text-decoration-line:underline!important;text-decoration-line:underline!important}.yst-line-through{-webkit-text-decoration-line:line-through!important;text-decoration-line:line-through!important}.yst-no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.yst-subpixel-antialiased{-webkit-font-smoothing:auto!important;-moz-osx-font-smoothing:auto!important}.yst-placeholder-slate-500::placeholder{--tw-placeholder-opacity:1!important;color:rgb(100 116 139/var(--tw-placeholder-opacity))!important}.yst-opacity-0{opacity:0!important}.yst-opacity-100{opacity:1!important}.yst-opacity-25{opacity:.25!important}.yst-opacity-75{opacity:.75!important}.yst-opacity-50{opacity:.5!important}.yst-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)!important}.yst-shadow,.yst-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important}.yst-shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important}.yst-shadow-md,.yst-shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)!important}.yst-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.yst-shadow-none,.yst-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important}.yst-shadow-amber-700\/30{--tw-shadow-color:#b453094d!important;--tw-shadow:var(--tw-shadow-colored)!important}.yst-outline-none{outline:2px solid #0000!important;outline-offset:2px!important}.yst-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.yst-ring-gray-200{--tw-ring-opacity:1!important;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))!important}.yst-ring-black{--tw-ring-opacity:1!important;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))!important}.yst-ring-opacity-5{--tw-ring-opacity:0.05!important}.yst-ring-offset-2{--tw-ring-offset-width:2px!important}.yst-ring-offset-primary-500{--tw-ring-offset-color:#a61e69!important}.yst-drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px #00000012) drop-shadow(0 2px 2px #0000000f)!important}.yst-drop-shadow-md,.yst-grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.yst-grayscale{--tw-grayscale:grayscale(100%)!important}.yst-filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.yst-transition-opacity{transition-duration:.15s!important;transition-property:opacity!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition{transition-duration:.15s!important;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-all{transition-duration:.15s!important;transition-property:all!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-colors{transition-duration:.15s!important;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-transform{transition-duration:.15s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-\[width\]{transition-duration:.15s!important;transition-property:width!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-delay-200{transition-delay:.2s!important}.yst-delay-\[900ms\]{transition-delay:.9s!important}.yst-delay-100{transition-delay:.1s!important}.yst-duration-1000{transition-duration:1s!important}.yst-duration-200{transition-duration:.2s!important}.yst-duration-300{transition-duration:.3s!important}.yst-duration-100{transition-duration:.1s!important}.yst-duration-75{transition-duration:75ms!important}.yst-duration-150{transition-duration:.15s!important}.yst-duration-500{transition-duration:.5s!important}.yst-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)!important}.yst-ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)!important}.yst-ease-linear{transition-timing-function:linear!important}.yst-\@container{container-type:inline-size!important}.first\:yst-pt-0:first-child{padding-top:0!important}.last\:yst-border-b-0:last-child{border-bottom-width:0!important}.last\:yst-pb-0:last-child{padding-bottom:0!important}.odd\:yst-bg-white:nth-child(odd){--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.even\:yst-bg-slate-50:nth-child(2n){--tw-bg-opacity:1!important;background-color:rgb(248 250 252/var(--tw-bg-opacity))!important}.focus-within\:yst-border-primary-500:focus-within{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.focus-within\:yst-outline-none:focus-within{outline:2px solid #0000!important;outline-offset:2px!important}.focus-within\:yst-ring-1:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.focus-within\:yst-ring-primary-500:focus-within{--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important}.hover\:yst-bg-gray-50:hover{--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important}.hover\:yst-bg-\[\#f0f0f0\]:hover{--tw-bg-opacity:1!important;background-color:rgb(240 240 240/var(--tw-bg-opacity))!important}.hover\:yst-bg-white:hover{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.hover\:yst-bg-primary-600:hover{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.hover\:yst-text-slate-500:hover{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.hover\:yst-text-slate-800:hover{--tw-text-opacity:1!important;color:rgb(30 41 59/var(--tw-text-opacity))!important}.hover\:yst-text-white:hover{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.hover\:yst-text-primary-500:hover{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.hover\:yst-underline:hover{-webkit-text-decoration-line:underline!important;text-decoration-line:underline!important}.focus\:yst-border-primary-500:focus{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.focus\:yst-border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity))!important}.focus\:yst-border-emerald-600:focus{--tw-border-opacity:1!important;border-color:rgb(5 150 105/var(--tw-border-opacity))!important}.focus\:yst-bg-primary-600:focus{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.focus\:yst-text-white:focus{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.focus\:yst-text-primary-500:focus{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.focus\:yst-shadow-\[0_0_3px_rgba\(8\2c 74\2c 103\2c 0\.8\)\]:focus{--tw-shadow:0 0 3px #084a67cc!important;--tw-shadow-colored:0 0 3px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.focus\:yst-outline-none:focus{outline:2px solid #0000!important;outline-offset:2px!important}.focus\:yst-outline:focus{outline-style:solid!important}.focus\:yst-outline-\[1px\]:focus{outline-width:1px!important}.focus\:-yst-outline-offset-1:focus{outline-offset:-1px!important}.focus\:yst-outline-\[color\:\#0066cd\]:focus{outline-color:#0066cd!important}.focus\:yst-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important}.focus\:yst-ring-1:focus,.focus\:yst-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.focus\:yst-ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important}.focus\:yst-ring-inset:focus{--tw-ring-inset:inset!important}.focus\:yst-ring-primary-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important}.focus\:yst-ring-white:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))!important}.focus\:yst-ring-red-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))!important}.focus\:yst-ring-emerald-600:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))!important}.focus\:yst-ring-offset-2:focus{--tw-ring-offset-width:2px!important}.focus\:yst-ring-offset-primary-500:focus{--tw-ring-offset-color:#a61e69!important}.yst-group:hover .group-hover\:yst-bg-primary-500{--tw-bg-opacity:1!important;background-color:rgb(166 30 105/var(--tw-bg-opacity))!important}.yst-group:hover .group-hover\:yst-bg-primary-200{--tw-bg-opacity:1!important;background-color:rgb(224 179 204/var(--tw-bg-opacity))!important}.yst-group:hover .group-hover\:yst-text-slate-500{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.yst-group:hover .group-hover\:yst-text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.yst-group:hover .group-hover\:yst-text-primary-800{--tw-text-opacity:1!important;color:rgb(131 8 78/var(--tw-text-opacity))!important}@container (min-width: 32rem){.\@lg\:yst-flex-row{flex-direction:row!important}}@container (min-width: 48rem){.\@3xl\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}}[dir=rtl] .rtl\:yst-rotate-180{--tw-rotate:180deg!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@media not all and (min-width:640px){.max-sm\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}}@media (min-width:640px){.sm\:yst-mx-0{margin-left:0!important;margin-right:0!important}.sm\:yst-mb-0{margin-bottom:0!important}.sm\:yst-ml-3{margin-left:.75rem!important}.sm\:yst-mt-0{margin-top:0!important}.sm\:yst-ml-4{margin-left:1rem!important}.sm\:yst-flex{display:flex!important}.sm\:yst-h-10{height:2.5rem!important}.sm\:yst-w-auto{width:auto!important}.sm\:yst-w-10{width:2.5rem!important}.sm\:yst-translate-y-0{--tw-translate-y:0px!important}.sm\:yst-scale-95,.sm\:yst-translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.sm\:yst-scale-95{--tw-scale-x:.95!important;--tw-scale-y:.95!important}.sm\:yst-scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.sm\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sm\:yst-flex-row-reverse{flex-direction:row-reverse!important}.sm\:yst-items-start{align-items:flex-start!important}.sm\:yst-text-left{text-align:left!important}.sm\:yst-text-sm{font-size:.8125rem!important}}@media (min-width:768px){.md\:yst-absolute{position:absolute!important}.md\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.md\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:yst-flex-row{flex-direction:row!important}}@media (min-width:783px){.min-\[783px\]\:yst-block{display:block!important}.min-\[783px\]\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.min-\[783px\]\:yst-p-8{padding:2rem!important}}@media (min-width:1024px){.lg\:yst-left-44{left:11rem!important}.lg\:yst-col-span-2{grid-column:span 2/span 2!important}.lg\:yst-mt-0{margin-top:0!important}.lg\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.lg\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.lg\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:yst-gap-12{gap:3rem!important}}@media (min-width:1280px){.xl\:yst-fixed{position:fixed!important}.xl\:yst-right-8{right:2rem!important}.xl\:yst-col-span-2{grid-column:span 2/span 2!important}.xl\:yst-mb-0{margin-bottom:0!important}.xl\:yst-mt-0{margin-top:0!important}.xl\:yst-w-\[16rem\]{width:16rem!important}.xl\:yst-max-w-3xl{max-width:48rem!important}.xl\:yst-max-w-\[16rem\]{max-width:16rem!important}.xl\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.xl\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.xl\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.xl\:yst-flex-row{flex-direction:row!important}.xl\:yst-gap-12{gap:3rem!important}.xl\:yst-pr-\[17\.5rem\]{padding-right:17.5rem!important}}@media (min-width:1536px){.\32xl\:yst-col-span-2{grid-column:span 2/span 2!important}.\32xl\:yst-mt-0{margin-top:0!important}.\32xl\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.\32xl\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.\32xl\:yst-gap-12{gap:3rem!important}}@media (min-width:1800px){.min-\[1800px\]\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}}css/dist/notifications-2390.css000064400000026174147206602470012277 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute!important;width:1px}.yoast-notification{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 2px #0003;padding:0 12px}.yoast-container{background-color:#fdfdfd;border:1px solid #e5e5e5;box-shadow:0 1px 1px #0000000a;margin:20px 0 1px;max-width:1280px;padding:20px 20px 0;position:relative}.yoast-notifications>h2:first-child{font-size:23px;font-weight:400;line-height:29px;margin:0;padding:9px 0 4px}.yoast-notifications .yoast-container h3{background-color:#fdfdfd;border-bottom:1px solid #ccc;font-size:1.4em;margin:-20px -20px 0;padding:1em}.yoast-container .container{max-width:980px}.yoast-container .yoast-notification-holder{display:flex;position:relative}.dismiss .dashicons,.restore .dashicons{font-size:20px;height:20px;width:20px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-notifications .button.dismiss,.yoast-notifications .button.restore{background:#0000;border:none;border-radius:0;box-shadow:none;cursor:pointer;height:100%;line-height:inherit;outline:none;padding:0;position:absolute;right:0;width:52px}.yoast-notifications .button.dismiss:focus,.yoast-notifications .button.dismiss:hover,.yoast-notifications .button.restore:focus,.yoast-notifications .button.restore:hover{background:#0000}.yoast-notifications .button.dismiss:focus:before,.yoast-notifications .button.restore:focus:before{border-radius:50%;box-shadow:0 0 0 1px #007cba;content:"";display:block;height:32px;left:50%;outline:2px solid #0000;position:absolute;top:50%;transform:translate(-50%,-50%);width:32px}.yoast-container .separator{border-top:1px solid #ddd;margin-bottom:1em;margin-top:1em}.yoast-container .dashicons-yes{color:#77b227}.yoast-container-disabled{background-color:#e8e8e8b3;border-radius:4px;bottom:0;display:table-cell;left:0;position:absolute;right:0;top:0}.yoast-no-issues{color:#666;padding:1em 1em 1em 16px}.yoast-muted-title{font-style:italic;font-weight:600;overflow:hidden}.yoast-muted-title:after{border-top:1px solid #ddd;content:"";display:inline-block;height:.5em;margin-left:10px;margin-right:-100%;vertical-align:bottom;width:100%}.yoast-notifications-active .yoast-notification,.yoast-notifications-dismissed .yoast-notification{flex:1;padding-right:52px}.yoast-notifications-active .yoast-notification-holder{margin-bottom:20px}.yoast-notifications-dismissed.paper.tab-block{margin:20px 0}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container{padding:0}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container .yoast-notification-holder:nth-child(odd){background-color:#f7f7f7}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container .yoast-notification-holder:nth-child(odd) .yoast-notification{background-color:initial}.yoast-notifications-dismissed .yoast-svg-icon-eye{background:#0000 var(--yoast-svg-icon-eye) no-repeat 0 0;background-size:20px}#yoast-errors-header .dashicons{color:#dc3232}#yoast-errors-active .yoast-notification{border-left-color:#dc3232}#yoast-errors-dismissed .yoast-notification{border-left-color:#d93f69}#yoast-warnings-header .dashicons{color:#5d237a}#yoast-warnings-active .yoast-notification{border-left-color:#5d237a}#yoast-warnings-dismissed .yoast-notification{border-left-color:#0075b3}css/dist/yst_plugin_tools-2390.css000064400000060025147206602470013034 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.wpseo_content_wrapper{display:table;table-layout:fixed;width:100%}.wpseo_content_cell{display:table-cell;height:500px;margin:0;padding:0;vertical-align:top}#wpseo_content_top{width:100%}tr.yst_row{margin:5px 0 0;padding:5px 0 0}#sidebar-container{padding-left:20px;width:300px}tr.yst_row.even{background-color:#f6f6f6}.wpseo_content_wrapper label.select,.wpseo_content_wrapper label.textinput{word-wrap:break-word;float:left;margin:5px 0;width:200px}.wpseo_content_wrapper label.select.error,.wpseo_content_wrapper label.textinput.error{color:#dc3232;font-weight:700}.wpseo_content_wrapper .yoast-inline-label{display:inline-block;float:none;margin:0 0 8px}.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper select,.wpseo_content_wrapper textarea{width:400px}.wpseo_content_wrapper input.number{width:100px}.wpseo_content_wrapper input.large-text,.wpseo_content_wrapper textarea.large-text{width:99%}.wpseo_content_wrapper .select2-container,.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper select.select,.wpseo_content_wrapper textarea.textinput{margin:0 0 15px}.wpseo_content_wrapper input.textinput[aria-invalid=true]{background:#f9dcdc url(../../images/error-icon.svg) no-repeat calc(100% - 6px);background-size:12px;border:1px solid #dc3232;color:#000;padding-right:24px}.wpseo_content_wrapper input.textinput[aria-invalid=true][aria-describedby]{margin-bottom:.5rem}.wpseo_content_wrapper .yoast-input-validation__error-description{color:#8f1919;margin:0 0 1rem;padding-left:200px;width:400px}.wpseo_content_wrapper input.checkbox,.wpseo_content_wrapper input.checkbox.double,.wpseo_content_wrapper input.radio{margin:6px 10px 6px 0}.wpseo_content_wrapper .textinput.metadesc{height:50px}.wpseo_content_wrapper textarea.import{height:100px;width:500px}.wpseo_content_wrapper p.desc{margin:6px 0 10px;padding:0 0 8px 25px}.wpseo_content_wrapper div.desc.label,.wpseo_content_wrapper p.desc.label{margin:0 0 20px;padding:0 0 10px 200px}.wpseo_content_wrapper h4{clear:both;margin:1.2em 0 .5em}.wpseo_content_wrapper .postbox{margin:10px 10px 0 0}.wpseo_content_wrapper .postbox form{line-height:150%}.wpseo_content_wrapper .text{width:250px}.wpseo_content_wrapper .correct{background-color:green;color:#fff;padding:5px}.wpseo_content_wrapper .wrong{background-color:#dc3232;color:#fff;padding:5px}.wpseo_content_wrapper .wrong code{color:#000;padding:3px 8px}.wpseo_content_wrapper .button.fixit{float:right;margin:0 5px}.wpseo_content_wrapper .button.checkit{float:right;margin:0 5px;padding:5px 8px}.wpseo_content_wrapper .disabled-note{color:#888;margin:0 0 8px}.wpseo_content_wrapper #separator{margin:1em 0 0}.wpseo_content_wrapper #separator input.radio{height:1px;left:-9999em;position:absolute;width:1px}.wpseo_content_wrapper #separator input.radio+label{border:1px solid #ccc;cursor:pointer;float:left;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;margin:.5em 5px 0 0!important;padding:9px 6px;text-align:center;width:30px!important}.wpseo_content_wrapper #separator input.radio:checked+label{background-color:#fff;border:3px solid #a4286a;padding:7px 4px}.wpseo_content_wrapper #separator input.radio:focus+label{outline:2px solid #5b9dd9}.wpseo_content_wrapper .svg-container{text-align:center}.wpseo_content_wrapper .svg-container .dashicons{font-size:100px;height:100px;width:200px}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger{font-size:1.0625rem;padding:16px;width:100%}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger:focus{box-shadow:0 0 3px #084a67cc;outline:1px solid #0066cd;outline-offset:-1px}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger:active{box-shadow:none}.wpseo_content_wrapper .paper.tab-block h2.collapsible-header{margin:0!important;padding:0!important}.wpseo_content_wrapper .paper.tab-block.metabox button.toggleable-container-trigger{color:#555}.wpseo_content_wrapper .paper.tab-block.metabox.wpseotab{border:0;padding:0}.wpseo_content_wrapper .paper.tab-block .paper-container{padding:16px}.wpseo_content_wrapper .paper.tab-block.has-paper-container-no-top-padding .paper-container{padding-top:0}.wpseo_content_wrapper .paper.tab-block .paper-container:first-child{margin-top:0}.wpseo_content_wrapper .paper.tab-block .paper-title{padding:16px}.wpseo_content_wrapper .paper.tab-block .paper-title h2{margin:0}.wpseo_content_wrapper .paper.tab-block .tab-block:first-child{margin-top:0}.wpseo_content_wrapper .wpseo-collapsible-container{background-color:#fff;border-bottom:1px solid #e2e4e7;border-top:1px solid #e2e4e7;margin-top:-1px}.wpseo_content_wrapper .toggleable-container-trigger{background:none;border:0;cursor:pointer;padding:0;text-align:left;width:100%}.wpseo_content_wrapper .toggleable-container-icon{float:right;height:20px;position:relative;width:20px}.wpseo_content_wrapper .toggleable-container-trigger .toggleable-container-icon:after{content:"";display:block;left:-4px;padding:14px;position:absolute;top:-4px}.wpseo_content_wrapper .toggleable-container-hidden{display:none}.wpseo_content_wrapper h3{font-size:1.15em;margin:1em 0 .5em}.wpseo_content_wrapper h3.h2{font-size:1.3em}.wpseo_content_wrapper li,.wpseo_content_wrapper p{max-width:600px}.wpseo_content_wrapper .notice p,.yoast .search-box,.yoast-container .container,.yoast-notification p{max-width:none}table.wpseo th{text-align:left}#wpseo-tabs+.notice{margin-top:1.5em}.wpseo-variable-warning-element{border:1px solid #c62d2d!important}.wpseo-variable-warning{clear:both;color:#c62d2d;margin:5px 0 0;padding:5px}.wpseo-variable-warning code{color:#b02828}.wpseo-variable-warning a{color:#c62d2d}.wpseo_content_wrapper h1.wpseo-redirect-url-title{font-size:1.3em;margin:1em 0 .5em}table.yoast_help{border-collapse:collapse;width:100%}table.yoast_help,table.yoast_help td,table.yoast_help th{border:1px solid #ddd;color:#444}table.yoast_help td,table.yoast_help th{padding:5px 10px;text-align:left;vertical-align:top}table.yoast_help tr{background-color:#f1f1f1}table.yoast_help tr:nth-child(2n){background-color:#fbfbfe}table.yoast_help tr:hover{background-color:#ddd}table.yoast_help thead tr,table.yoast_help thead tr:hover{background-color:#fff}table.yoast_help .yoast-variable-name{font-weight:600;white-space:nowrap}table.yoast_help .yoast-variable-desc{min-width:300px}.yoast-notice-blocking-files code{color:#000;line-height:2}.yoast-notice-blocking-files .button{margin:.5em 0}.wpseo_content_wrapper .yoast-blocking-files-error p{max-width:none}.wpseotab{display:none}.wpseotab.active{display:block}.wpseotab p.expl{margin-left:6px}.wpseotab .tab-block{display:block;margin:30px 0}.wpseotab p.expl strong{font-size:115%}#wpseo-debug-info{background-color:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px #0000000a;clear:both;margin:20px 0 0;padding:20px 20px 0}#wpseo-debug-info h2{cursor:auto;margin:0}#wpseo-debug-info .wpseo-debug-heading{font-size:1em}#wpseo-debug-info .wpseo-debug{color:#c00;display:inline-block;padding-left:20px}input.wpseo-new-title,textarea.wpseo-new-metadesc{max-width:100%;width:100%}body.toplevel_page_wpseo_dashboard .wp-badge{background:#0000 url(../../packages/js/images/Yoast_SEO_Icon.svg) no-repeat 50% 10px;background-size:140px 140px;box-shadow:none}#wpseo_progressbar{border:1px solid #006691;height:25px}#wpseo_progressbar .ui-progressbar-value{background:#006691;height:25px}.wpseo-progressbar-wrapper{display:inline;width:100%}.wpseo-progressbar{border:1px solid #006691;display:block;height:25px;width:100%}.wpseo-progressbar .ui-progressbar-value{background:#006691;height:25px}.yoast-sidebar__title{border-bottom:1px solid #a4286a;box-sizing:border-box;color:#a4286a;line-height:19px;margin:5px 0;padding:10px 0;text-align:left;width:100%}.yoast-sidebar__product{background:#a61e69;border-radius:8px;color:#fff;margin-top:34px;padding:24px}.yoast-sidebar__product h2{color:#fff;font-size:22px;font-weight:700}.yoast-get-premium-title{line-height:27px;margin-bottom:12px;margin-top:0}.yoast-get-premium-title span{white-space:nowrap}.yoast-sidebar__product .product-image{margin:-50px auto 16px;max-height:75px;max-width:75px;position:relative;z-index:2}.yoast-sidebar__product .product-image img{border:1px solid #fff;border-radius:12px 12px 0 12px;overflow:hidden}.yoast-sidebar__product p{font-size:1rem;margin-bottom:12px;margin-top:0}.yoast-sidebar__product .yoast-price-micro-copy{font-size:12px;font-weight:300;line-height:20px;margin-bottom:16px;text-align:center}.yoast-sidebar__product .yoast-upsell-hr{border-color:#cd82ab;border-top:1px;margin-bottom:16px}.yoast-sidebar__product .plugin-buy-button .yoast-button-upsell{width:100%}.yoast-sidebar__product .review-container{margin-top:16px}.yoast-sidebar__product .review-container a{color:#fff;text-decoration:none}.yoast-sidebar__product .review-container a .claim{color:#fff;display:block;margin-bottom:12px}.yoast-sidebar__product .review-container .title{color:#fff;font-weight:500;margin-bottom:8px}.yoast-sidebar__product .review-container .title:hover{text-decoration:underline}.yoast-sidebar__product .review-container .rating{display:flex;gap:5px}.yoast-sidebar__product .review-container .rating img{max-height:22px;max-width:22px}.yoast-sidebar__product .review-container .rating .rating-text{font-size:16px;font-weight:600}.yoast-sidebar__product .sidebar__sale_banner_container{margin-left:-24px;margin-top:-40px;overflow-x:hidden;overflow-y:initial;width:calc(100% + 48px)}.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner{background:#000;box-shadow:0 -1px 4px 0 #fcd34d,0 1px 4px 0 #fcd34d,0 -1px 0 0 #fcd34d,0 1px 0 0 #fcd34d;color:#fcd34d;font-size:20px;font-weight:500;letter-spacing:.5px;line-height:30px;margin-bottom:20px;margin-left:-30px;margin-top:20px;padding:7px 0;text-align:center;transform:rotate(-5deg);width:calc(100% + 60px);z-index:1}.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner .banner_text{display:inline-block;margin:0 40px}.yoast-sidebar__product .sidebar__sale_text{border-top:1px solid #fff;font-style:italic;text-align:center}.yoast-sidebar__product .sidebar__sale_text p{font-size:12.5px;margin:12.5px 0}.yoast-sidebar__section{background-color:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin:10px 0 20px;padding:16px}.yoast-sidebar__section h2{color:#a4286a;margin-top:0}.yoast-sidebar__section a{color:#0085ba}.yoast-sidebar__section ul{position:relative}.yoast-sidebar__section li{list-style:none;margin-left:20px}.yoast-sidebar__section li:before{content:"+";font-weight:700;left:0;position:absolute}.yoast-sidebar__section div{margin:10px 0 20px;position:relative}.yoast-sidebar__section div img{float:right;height:70px;margin:0 0 0 10px;width:70px}.yoast-sidebar__section div img.alignleft{float:left;margin:0 10px 0 0}.yoast-sidebar__section div p{float:left;margin:0;width:100%}.yoast_premium_upsell{background-color:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin-top:2em;max-width:715px;overflow:hidden}.yoast_premium_upsell--container{padding:16px}.black-friday-container{background-color:#1f2937;border-bottom:2px solid #fcd34d;display:flex;padding:8px 16px}.black-friday-container span{color:#fcd34d;font-size:1.2rem;font-weight:600}.yoast_premium_upsell--header{color:#a4286a;font-size:1.7em;font-weight:700;margin-top:.3em}.yoast_premium_upsell--motivation{display:flex;flex-wrap:wrap}.yoast_premium_upsell--motivation li{flex:0 0 50%;list-style:none}.yoast_premium_upsell--argument{padding:0 8px 0 20px}.yoast_premium_upsell--argument:before{content:"+";font-weight:700;left:-16px;margin-right:-10px;position:relative;top:-1px}@media screen and (max-width:480px){.yoast_premium_upsell--motivation{display:block}}.yoast-variable-desc{min-width:300px}.yoast-table-scrollable,.yoast-table-scrollable td,.yoast-table-scrollable th{box-sizing:border-box}.yoast-table-scrollable__container.yoast-has-scroll{overflow:hidden;position:relative}.yoast-table-scrollable__container.yoast-has-scroll:after{border-radius:10px 0 0 10px/50% 0 0 50%;box-shadow:-5px 0 10px #00000040;content:"";height:calc(100% - 16px);left:100%;position:absolute;top:0;width:50px}.yoast-table-scrollable__container.yoast-has-scroll .yoast-table-scrollable__inner{overflow-x:scroll;padding-bottom:16px}.yoast-table-scrollable__hintwrapper{display:none}.yoast-table-scrollable__hintwrapper.yoast-has-scroll{display:block;margin:1em 0;text-align:center}.yoast-has-scroll .yoast-table-scrollable__hint{display:inline-block}.yoast-has-scroll .yoast-table-scrollable__hint:before{content:"\21c4";display:inline-block;font-size:20px;line-height:inherit;margin-right:10px;vertical-align:text-top}.yoast-styled-select{align-items:center;display:inline-flex;margin-bottom:1em;position:relative}.yoast-styled-select:after,.yoast-styled-select:before{bottom:0;content:"";pointer-events:none;position:absolute;top:0}.yoast-styled-select:before{right:0;width:28px}.yoast-styled-select:after{border-top:4px solid #0000;border-color:#555 #0000 #0000;border-style:solid;border-width:5px 4px 0;height:0;margin:auto;right:6px;width:0;z-index:1}.yoast-styled-select select{-webkit-appearance:none;appearance:none;background:#0000;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;color:#32373c;height:28px;line-height:1;margin:0;max-width:100%;padding:4px 32px 4px 8px}.yoast-styled-select select.error{border-color:#dc3232;border-width:2px}.wpseo_content_wrapper .yoast-styled-select select.select{margin:0}.yoast-styled-select select:focus{border-color:#5b9dd9}.yoast-styled-select select:-moz-focusring{color:#0000;text-shadow:0 0 0 #32373c}.yoast-styled-select select[disabled]{opacity:.75}.yoast-styled-select select::-ms-expand{display:none}@media screen and (max-width:1024px){.wpseo_content_cell,.wpseo_content_wrapper{display:block;height:auto}#wpseo_content_top{width:auto}#sidebar-container{display:flex;gap:.7rem;padding:0;width:auto}.yoast-sidebar__product .sidebar__sale_banner_container{overflow-y:hidden}#sidebar-container .yoast-sidebar__section{margin-top:5rem}.yoast-sidebar__product-list{border-bottom:1px solid #ddd;display:flex}.yoast-sidebar__product-list div p{word-wrap:break-word;width:calc(100% - 50px)}.yoast-sidebar__product-list .yoast-sidebar__section{border-bottom:none}.yoast-sidebar__product-list .yoast-sidebar__section:first-child{margin-right:40px}}@media screen and (max-width:782px){.wpseo_content_wrapper label.select,.wpseo_content_wrapper label.textinput{display:inline-block;float:none;width:auto}.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper textarea,.wpseo_content_wrapper textarea.textinput{display:block;width:100%}.wpseo_content_wrapper .select2-container,.wpseo_content_wrapper select,.wpseo_content_wrapper select.select{display:block;margin:0 0 5px;max-width:100%}.wpseo_content_wrapper div.desc.label,.wpseo_content_wrapper p.desc.label{padding-left:0}.wpseo_content_wrapper .textinput[aria-invalid=true][aria-describedby]+br{display:none}.wpseo_content_wrapper .yoast-input-validation__error-description{padding-left:0;width:auto}}@media screen and (max-width:600px){.yoast-sidebar__product-list{border-bottom:none;display:block}.yoast-sidebar__product-list .yoast-sidebar__section{border-bottom:1px solid #ddd}.yoast-sidebar__product-list .yoast-sidebar__section p{word-wrap:break-word;padding-left:50px;width:calc(100% - 50px)}}@media screen and (max-width:500px){.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner{transform:rotate(-4deg)}#sidebar-container{display:block}#sidebar-container .yoast-sidebar__section{margin-top:20px}body.toplevel_page_wpseo_dashboard .wp-badge{background-color:#a4286a;background-size:100px 100px;box-shadow:0 1px 3px #0003;padding-top:80px}}.wpseo-checkmark-ok-icon{background:var(--yoast-svg-icon-check-ok) no-repeat;background-size:18px;float:left;height:18px;margin-right:5px;vertical-align:top;width:18px}.yoast-settings-section:not(:last-child){margin-bottom:40px}.yoast-settings-section .yoast-field-group__title .yoast_help.yoast-help-link{margin:-6px 0 0 2px}#yoast-og-default-image-select .yoast-field-group__title{display:none}.yoast-settings-section.yoast-settings-section-disabled{border:1px solid #ccc;padding:16px;position:relative}.yoast-settings-section.yoast-settings-section-disabled>*{opacity:.5}.yoast-settings-section.yoast-settings-section-disabled .yoast-settings-section-upsell{align-items:center;bottom:0;display:flex;justify-content:center;left:0;opacity:1;position:absolute;right:0;top:0}@keyframes yoast-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}css/dist/workouts-2390-rtl.css000064400000017606147206602470012122 0ustar00#wpseo-workouts-container-free h1,#wpseo-workouts-container-free h3{color:#a4286a;font-weight:500}#wpseo-workouts-container-free h3{font-size:18px;line-height:24px}.card.card-small h3{min-height:48px}#wpseo-workouts-container-free h2{font-size:12px;text-transform:uppercase}#wpseo-workouts-container-free #workouts-page-description{font-size:16px;max-width:600px}.workflow tr.cornerstone{font-weight:700}#wpseo-workouts-container-free hr{margin-bottom:24px;margin-top:8px}#wpseo-workouts-container-free progress{margin:16px 0 8px}#wpseo-workouts-container-free div.card{border-color:#0003;border-radius:8px;border-width:1px;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;max-width:720px;padding:24px;width:100%}#wpseo-workouts-container-free div.card>h2{margin:0}#wpseo-workouts-container-free div.card.card-small{display:flex;flex-direction:column;max-width:320px}#wpseo-workouts-container-free div.card.card-small svg{height:146px;width:204px}#wpseo-workouts-container-free div.card.card-small svg *{height:100%;width:100%}#wpseo-workouts-container-free div.card.card-small>span{margin-top:auto}#wpseo-workouts-container-free table button{margin:2px}.workflow{counter-reset:line-number;list-style:none;margin-right:48px}.workflow li li{counter-increment:none;line-height:19px;margin-bottom:8px}.workflow li.step{counter-increment:line-number;padding-bottom:16px;position:relative}.workflow .yoast-button.yoast-button--finished{opacity:.5}.workflow .finish-button-section .finish-button-saved{color:#6ea029;grid-column-end:3;grid-column-start:3;margin-right:10px;position:relative}.workflow .finish-button-section .finish-button-saved:before{background:var(--yoast-svg-icon-check);background-size:18px 13px;content:"";height:13px;right:-18px;position:absolute;top:2px;width:18px}.workflow li.step>.yoast-button.orphaned-summary{display:initial;margin:0}.yoast .yoast-button--arrow-down{display:inline-block;flex-shrink:0;height:16px;margin:0 6px 0 -2px;width:16px}.workflow>li.step:before{background:#a4286a;bottom:-20px;content:"";right:-33px;position:absolute;top:0;width:2px}.workflow .extra-list-content{position:relative}.workflow>li.step:last-of-type:before{display:none}.workflow>li.step:after{background:#fff;border:2px solid #a4286a;border-radius:100%;color:#a4286a;content:counter(line-number);display:block;height:28px;right:-48px;line-height:28px;position:absolute;text-align:center;top:-8px;width:28px}.workflow li.step.finished:after{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' fill='none' stroke='%23FFF' height='24' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5 13 4 4L19 7'/%3E%3C/svg%3E") #a4286a;background-position:50%;background-repeat:no-repeat;background-size:20px 20px;content:""}.workflow li.step.finished.faded p,.workflow li.step.finished.faded table{opacity:.5}.workflow li.step img{max-width:100%}.workflow li.step img.workflow__image{max-height:100px;max-width:100px}.workflow li.step.yoast-fadeout:before{background:linear-gradient(-180deg,#a4286a,#fff 75%);display:block}.workflow li.step #react-select-2-input{box-shadow:none!important}.workflows__index{display:flex;flex-wrap:wrap;gap:16px}.workflows__index .yoast-button{width:100%}table.yoast_help.yoast_link_suggestions thead td{padding:16px 8px}table.yoast_help.yoast_link_suggestions td{vertical-align:middle}table.yoast_help th.divider{text-align:center}.workflow table.yoast_help td{vertical-align:middle}.workflow table.yoast_help.yoast_link_suggestions td div{display:inline-block}.workflow table.yoast_help.yoast_link_suggestions td strong{display:inline-block;margin-left:8px}.components-modal__header{height:72px;padding:0 24px}.components-modal__header .components-modal__header-heading{color:#a4286a;font-size:20px;font-weight:400;line-height:1.2;margin:0}.components-modal__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.components-modal__content{padding:0 24px 24px}.components-modal__content input[type=text]{max-width:400px;width:100%}.components-modal__frame.yoast__workout{max-width:720px}.yoast__redirect-suggestions{line-height:2}.components-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#00000059;bottom:0;right:0;position:fixed;left:0;top:0;z-index:100000}@media (prefers-reduced-motion:reduce){.components-modal__screen-overlay{animation-delay:0s;animation-duration:1ms}}.components-modal__frame{background:#fff;border-radius:2px;bottom:0;box-shadow:0 10px 10px #00000040;box-sizing:border-box;right:0;margin:0;overflow:auto;position:absolute;left:0;top:0}@media (min-width:600px){.components-modal__frame{animation:components-modal__appear-animation .1s ease-out;animation-fill-mode:forwards;bottom:auto;right:50%;max-height:90%;max-width:calc(100% - 32px);min-width:360px;left:auto;top:50%;transform:translate(50%,-50%)}}@media (min-width:600px) and (prefers-reduced-motion:reduce){.components-modal__frame{animation-delay:0s;animation-duration:1ms}}@keyframes components-modal__appear-animation{0%{margin-top:32px}to{margin-top:0}}.components-modal__header{align-items:center;background:#fff;border-bottom:1px solid #ddd;box-sizing:border-box;display:flex;flex-direction:row;height:60px;justify-content:space-between;margin:0 -32px 24px;padding:0 32px;position:relative;position:sticky;top:0;z-index:10}@supports (-ms-ime-align:auto){.components-modal__header{position:fixed;width:100%}}.components-modal__header .components-modal__header-heading{font-size:1rem;font-weight:600}.components-modal__header h1{line-height:1;margin:0}.components-modal__header .components-button{right:8px;position:relative}.components-modal__header-heading-container{align-items:center;display:flex;flex-direction:row;flex-grow:1;justify-content:left}.components-modal__header-icon-container{display:inline-block}.components-modal__header-icon-container svg{max-height:36px;max-width:36px;padding:8px}.components-modal__content{box-sizing:border-box;height:100%;padding:0 32px 24px}@supports (-ms-ime-align:auto){.components-modal__content{padding-top:60px}}.workflow li.step h4{font-size:14px;font-weight:600;margin:24px 0 0}.workflow .yoast-social-profiles-input-fields{margin:10px 0 20px}.workflow .tracking-radiobuttons{line-height:19px;margin:0 0 20px}.workflow .yoast-tracking{list-style-position:inside;list-style-type:disc;padding:inherit}.yoast-list--usp{margin-bottom:16px;padding-right:24px}.yoast-list--usp li{margin-bottom:16px;position:relative}.yoast-list--usp li:before{background:var(--yoast-svg-icon-check);background-size:18px 13px;content:"";height:13px;right:-24px;position:absolute;top:3px;width:18px}.workout-card-content-flex{display:flex}.card.card-small .yoast-button-upsell{box-shadow:inset 0 -2px 0 #0003;filter:none;font-family:inherit;min-height:40px}.card.card-small button{box-shadow:inset 0 -2px 0 #0000004d;filter:none;min-height:40px}.card.card-small button.yoast-button--secondary{box-shadow:inset 0 -2px 0 #0000001a}.workout-card-content-flex ul{margin-left:8px}.workout-card-content-flex img{max-width:120px}.workout-card-upsell-button{opacity:1}#wpseo-workouts-container-free div.card.card-small.card-disabled{background-color:#ffffff80}#wpseo-workouts-container-free div.card.card-small.card-disabled .workout-card-content-flex,#wpseo-workouts-container-free div.card.card-small.card-disabled .workout-card-progress,#wpseo-workouts-container-free div.card.card-small.card-disabled h2,#wpseo-workouts-container-free div.card.card-small.card-disabled h3{opacity:.5}.workflow__grid{display:grid;gap:8px;grid-template-columns:auto 100px}.workflow__grid>div:last-of-type{display:flex;flex-wrap:wrap;justify-content:flex-end}@media screen and (max-width:768px){#wpseo-workouts-container-free #workouts-page-description{max-width:320px}}css/dist/metabox-primary-category-2390-rtl.css000064400000001301147206602470015141 0ustar00.wpseo-is-primary-term,.wpseo-primary-term>label{font-weight:600}.wpseo-non-primary-term>.wpseo-is-primary-term,.wpseo-primary-term>.wpseo-make-primary-term,.wpseo-term-unchecked>.wpseo-is-primary-term,.wpseo-term-unchecked>.wpseo-make-primary-term{display:none}.wpseo-is-primary-term,.wpseo-make-primary-term{float:left}.wpseo-non-primary-term:after,.wpseo-non-primary-term:before,.wpseo-primary-term:after,.wpseo-primary-term:before{content:"";display:table}.wpseo-non-primary-term:after,.wpseo-primary-term:after{clear:both}.wpseo-make-primary-term{background:none;border:none;color:#0073aa;cursor:pointer;margin:4px 0 0;padding:0;text-decoration:underline}.wpseo-make-primary-term:hover{color:#00a0d2}css/dist/elementor-2390-rtl.css000064400000011303147206602470012203 0ustar00:root{--yoast-elementor-color-paragraph:#555d66}.yoast,.yoast h2,.yoast h3{font-family:var(--yoast-font-family)!important}.yoast h2{color:var(--yoast-color-dark);font-size:1.3em;font-weight:var(--yoast-font-weight-bold);margin-bottom:1em}.yoast input,.yoast input:focus,.yoast label,.yoast select:focus,.yoast select:not(:focus){background-color:#0000;border-color:var(--yoast-color-secondary-darker);color:var(--yoast-color-font-default)}.yoast label{color:var(--yoast-color-label)}.yoast input[disabled]{background-color:var(--yoast-color-inactive-grey-light)}.yoast.components-panel__body .yoast-title{font-weight:500}.yoast-field-group__title b{font-weight:var(--yoast-font-weight-bold)}.yoast h3 span>span{font-weight:400}.elementor-tab-control-yoast-seo-tab span:before,.yoast-element-menu-icon:before{background-color:currentColor;content:" ";height:16px;margin:0 auto;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:16px}.yoast-element-menu-icon{display:inline-flex}.yoast-element-menu-icon:before{height:19px;width:19px}.yoast-elementor-panel__fills{-webkit-font-smoothing:subpixel-antialiased;background-color:var(--yoast-color-white);color:var(--yoast-color-dark)}.yoast li,.yoast p,.yoast small{line-height:1.5;margin-bottom:6px}.yoast p,.yoast small,.yoast ul[role=list] li{color:var(--yoast-elementor-color-paragraph)}.button-link,.yoast a,.yoast a p,.yoast-elementor-panel__fills p a{color:var(--yoast-color-link);text-decoration:underline}.yoast a.dashicons{color:var(--yoast-color-inactive-text);height:24px;vertical-align:text-bottom;width:24px}.button-link{background:none;border:none;cursor:pointer;font-size:1em;line-height:1.5}.yoast .yoast-button-upsell,.yoast-elementor-panel__fills .UpsellLinkButton{color:var(--yoast-color-label);line-height:1.4em;text-decoration:none}.yoast-elementor-panel__fills h3>button{background:none;border:none;box-shadow:none}.yoast-gutenberg-modal .yoast-notice-container>hr{border-top-color:#ddd;border-top-style:solid}.yoast-gutenberg-modal input[type=radio]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:50%;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:0 0 0 8px;overflow:hidden;padding:2px;position:relative;transition:all .15s ease-out 0s;vertical-align:text-bottom;width:18px}.yoast-gutenberg-modal input[type=radio]:checked{background-color:inherit;border-color:var(--yoast-color-primary)}.yoast-gutenberg-modal input[type=radio]:checked:after{background:var(--yoast-color-primary);border-radius:50%;content:"";display:block;height:10px;right:3px;position:absolute;top:3px;width:10px}.yoast-post-settings-modal .yoast-notice-container{bottom:auto}.yoast-gutenberg-modal .components-popover.components-tooltip{right:unset!important;position:relative;left:40px;top:15px!important}.yoast div:focus,div.yoast:focus{outline:0}.yoast .button-link:focus,.yoast a:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#124964;outline:1px solid #0000}.yoast a.dashicons:focus{color:#1e8cbe}.yoast input[type=radio]:checked:focus{border-color:#fff;box-shadow:var(--yoast-color-focus)}.yoast .yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 #0003,0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#000}.yoast-elementor-introduction{background-color:#fff;box-shadow:var(--yoast-shadow-default);padding:20px;position:absolute!important;text-align:right;z-index:1}#yoast-introduction{border-radius:3px;right:41px!important;top:5px!important}#yoast-introduction-editor-v2{border:1px solid #000;border-radius:8px}.yoast-elementor-introduction:before{border:solid #0000;content:"";position:absolute}#yoast-introduction:before{border-bottom-color:#fff;border-width:7px 5px;right:-12px;top:8px;transform:rotate(90deg)}#yoast-introduction-editor-v2:before{border-bottom-color:#000;border-width:10px 8px;right:var(--yoast-elementor-introduction-arrow,28%);top:-20px}.yoast-elementor-introduction>div{color:var(--yoast-color-default)}.yoast-elementor-introduction>.dialog-header{font-weight:var(--yoast-font-weight-bold);line-height:1.3}.yoast-elementor-introduction>.dialog-message{margin-top:.5em}.yoast-elementor-introduction>.dialog-buttons-wrapper{display:flex;justify-content:flex-end;margin-top:12px}#yoast-introduction .dialog-button,#yoast-introduction-editor-v2 .dialog-button{background-color:var(--yoast-color-primary);font-size:12px;padding:7px 17px}@media(hover:hover){.button-link:hover,.yoast a:hover,.yoast a:hover p,.yoast-elementor-panel__fills p a:hover{color:var(--yoast-color-primary-darker)}.yoast a.dashicons:hover{color:var(--yoast-color-link)}.yoast .yoast-button-upsell:hover,.yoast-elementor-panel__fills .UpsellLinkButton:hover{color:var(--yoast-color-label)}}css/dist/icons-2390-rtl.css000064400000017426147206602470011340 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}css/dist/yst_plugin_tools-2390-rtl.css000064400000060051147206602470013632 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.wpseo_content_wrapper{display:table;table-layout:fixed;width:100%}.wpseo_content_cell{display:table-cell;height:500px;margin:0;padding:0;vertical-align:top}#wpseo_content_top{width:100%}tr.yst_row{margin:5px 0 0;padding:5px 0 0}#sidebar-container{padding-right:20px;width:300px}tr.yst_row.even{background-color:#f6f6f6}.wpseo_content_wrapper label.select,.wpseo_content_wrapper label.textinput{word-wrap:break-word;float:right;margin:5px 0;width:200px}.wpseo_content_wrapper label.select.error,.wpseo_content_wrapper label.textinput.error{color:#dc3232;font-weight:700}.wpseo_content_wrapper .yoast-inline-label{display:inline-block;float:none;margin:0 0 8px}.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper select,.wpseo_content_wrapper textarea{width:400px}.wpseo_content_wrapper input.number{width:100px}.wpseo_content_wrapper input.large-text,.wpseo_content_wrapper textarea.large-text{width:99%}.wpseo_content_wrapper .select2-container,.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper select.select,.wpseo_content_wrapper textarea.textinput{margin:0 0 15px}.wpseo_content_wrapper input.textinput[aria-invalid=true]{background:#f9dcdc url(../../images/error-icon.svg) no-repeat calc(100% - (100% - 6px));background-size:12px;border:1px solid #dc3232;color:#000;padding-left:24px}.wpseo_content_wrapper input.textinput[aria-invalid=true][aria-describedby]{margin-bottom:.5rem}.wpseo_content_wrapper .yoast-input-validation__error-description{color:#8f1919;margin:0 0 1rem;padding-right:200px;width:400px}.wpseo_content_wrapper input.checkbox,.wpseo_content_wrapper input.checkbox.double,.wpseo_content_wrapper input.radio{margin:6px 0 6px 10px}.wpseo_content_wrapper .textinput.metadesc{height:50px}.wpseo_content_wrapper textarea.import{height:100px;width:500px}.wpseo_content_wrapper p.desc{margin:6px 0 10px;padding:0 25px 8px 0}.wpseo_content_wrapper div.desc.label,.wpseo_content_wrapper p.desc.label{margin:0 0 20px;padding:0 200px 10px 0}.wpseo_content_wrapper h4{clear:both;margin:1.2em 0 .5em}.wpseo_content_wrapper .postbox{margin:10px 0 0 10px}.wpseo_content_wrapper .postbox form{line-height:150%}.wpseo_content_wrapper .text{width:250px}.wpseo_content_wrapper .correct{background-color:green;color:#fff;padding:5px}.wpseo_content_wrapper .wrong{background-color:#dc3232;color:#fff;padding:5px}.wpseo_content_wrapper .wrong code{color:#000;padding:3px 8px}.wpseo_content_wrapper .button.fixit{float:left;margin:0 5px}.wpseo_content_wrapper .button.checkit{float:left;margin:0 5px;padding:5px 8px}.wpseo_content_wrapper .disabled-note{color:#888;margin:0 0 8px}.wpseo_content_wrapper #separator{margin:1em 0 0}.wpseo_content_wrapper #separator input.radio{height:1px;right:-9999em;position:absolute;width:1px}.wpseo_content_wrapper #separator input.radio+label{border:1px solid #ccc;cursor:pointer;float:right;font-family:Arial,Helvetica,sans-serif!important;font-size:18px!important;line-height:24px;margin:.5em 0 0 5px!important;padding:9px 6px;text-align:center;width:30px!important}.wpseo_content_wrapper #separator input.radio:checked+label{background-color:#fff;border:3px solid #a4286a;padding:7px 4px}.wpseo_content_wrapper #separator input.radio:focus+label{outline:2px solid #5b9dd9}.wpseo_content_wrapper .svg-container{text-align:center}.wpseo_content_wrapper .svg-container .dashicons{font-size:100px;height:100px;width:200px}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger{font-size:1.0625rem;padding:16px;width:100%}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger:focus{box-shadow:0 0 3px #084a67cc;outline:1px solid #0066cd;outline-offset:-1px}.wpseo_content_wrapper .paper.tab-block button.toggleable-container-trigger:active{box-shadow:none}.wpseo_content_wrapper .paper.tab-block h2.collapsible-header{margin:0!important;padding:0!important}.wpseo_content_wrapper .paper.tab-block.metabox button.toggleable-container-trigger{color:#555}.wpseo_content_wrapper .paper.tab-block.metabox.wpseotab{border:0;padding:0}.wpseo_content_wrapper .paper.tab-block .paper-container{padding:16px}.wpseo_content_wrapper .paper.tab-block.has-paper-container-no-top-padding .paper-container{padding-top:0}.wpseo_content_wrapper .paper.tab-block .paper-container:first-child{margin-top:0}.wpseo_content_wrapper .paper.tab-block .paper-title{padding:16px}.wpseo_content_wrapper .paper.tab-block .paper-title h2{margin:0}.wpseo_content_wrapper .paper.tab-block .tab-block:first-child{margin-top:0}.wpseo_content_wrapper .wpseo-collapsible-container{background-color:#fff;border-bottom:1px solid #e2e4e7;border-top:1px solid #e2e4e7;margin-top:-1px}.wpseo_content_wrapper .toggleable-container-trigger{background:none;border:0;cursor:pointer;padding:0;text-align:right;width:100%}.wpseo_content_wrapper .toggleable-container-icon{float:left;height:20px;position:relative;width:20px}.wpseo_content_wrapper .toggleable-container-trigger .toggleable-container-icon:after{content:"";display:block;right:-4px;padding:14px;position:absolute;top:-4px}.wpseo_content_wrapper .toggleable-container-hidden{display:none}.wpseo_content_wrapper h3{font-size:1.15em;margin:1em 0 .5em}.wpseo_content_wrapper h3.h2{font-size:1.3em}.wpseo_content_wrapper li,.wpseo_content_wrapper p{max-width:600px}.wpseo_content_wrapper .notice p,.yoast .search-box,.yoast-container .container,.yoast-notification p{max-width:none}table.wpseo th{text-align:right}#wpseo-tabs+.notice{margin-top:1.5em}.wpseo-variable-warning-element{border:1px solid #c62d2d!important}.wpseo-variable-warning{clear:both;color:#c62d2d;margin:5px 0 0;padding:5px}.wpseo-variable-warning code{color:#b02828}.wpseo-variable-warning a{color:#c62d2d}.wpseo_content_wrapper h1.wpseo-redirect-url-title{font-size:1.3em;margin:1em 0 .5em}table.yoast_help{border-collapse:collapse;width:100%}table.yoast_help,table.yoast_help td,table.yoast_help th{border:1px solid #ddd;color:#444}table.yoast_help td,table.yoast_help th{padding:5px 10px;text-align:right;vertical-align:top}table.yoast_help tr{background-color:#f1f1f1}table.yoast_help tr:nth-child(2n){background-color:#fbfbfe}table.yoast_help tr:hover{background-color:#ddd}table.yoast_help thead tr,table.yoast_help thead tr:hover{background-color:#fff}table.yoast_help .yoast-variable-name{font-weight:600;white-space:nowrap}table.yoast_help .yoast-variable-desc{min-width:300px}.yoast-notice-blocking-files code{color:#000;line-height:2}.yoast-notice-blocking-files .button{margin:.5em 0}.wpseo_content_wrapper .yoast-blocking-files-error p{max-width:none}.wpseotab{display:none}.wpseotab.active{display:block}.wpseotab p.expl{margin-right:6px}.wpseotab .tab-block{display:block;margin:30px 0}.wpseotab p.expl strong{font-size:115%}#wpseo-debug-info{background-color:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px #0000000a;clear:both;margin:20px 0 0;padding:20px 20px 0}#wpseo-debug-info h2{cursor:auto;margin:0}#wpseo-debug-info .wpseo-debug-heading{font-size:1em}#wpseo-debug-info .wpseo-debug{color:#c00;display:inline-block;padding-right:20px}input.wpseo-new-title,textarea.wpseo-new-metadesc{max-width:100%;width:100%}body.toplevel_page_wpseo_dashboard .wp-badge{background:#0000 url(../../packages/js/images/Yoast_SEO_Icon.svg) no-repeat 50% 10px;background-size:140px 140px;box-shadow:none}#wpseo_progressbar{border:1px solid #006691;height:25px}#wpseo_progressbar .ui-progressbar-value{background:#006691;height:25px}.wpseo-progressbar-wrapper{display:inline;width:100%}.wpseo-progressbar{border:1px solid #006691;display:block;height:25px;width:100%}.wpseo-progressbar .ui-progressbar-value{background:#006691;height:25px}.yoast-sidebar__title{border-bottom:1px solid #a4286a;box-sizing:border-box;color:#a4286a;line-height:19px;margin:5px 0;padding:10px 0;text-align:right;width:100%}.yoast-sidebar__product{background:#a61e69;border-radius:8px;color:#fff;margin-top:34px;padding:24px}.yoast-sidebar__product h2{color:#fff;font-size:22px;font-weight:700}.yoast-get-premium-title{line-height:27px;margin-bottom:12px;margin-top:0}.yoast-get-premium-title span{white-space:nowrap}.yoast-sidebar__product .product-image{margin:-50px auto 16px;max-height:75px;max-width:75px;position:relative;z-index:2}.yoast-sidebar__product .product-image img{border:1px solid #fff;border-radius:12px 12px 12px 0;overflow:hidden}.yoast-sidebar__product p{font-size:1rem;margin-bottom:12px;margin-top:0}.yoast-sidebar__product .yoast-price-micro-copy{font-size:12px;font-weight:300;line-height:20px;margin-bottom:16px;text-align:center}.yoast-sidebar__product .yoast-upsell-hr{border-color:#cd82ab;border-top:1px;margin-bottom:16px}.yoast-sidebar__product .plugin-buy-button .yoast-button-upsell{width:100%}.yoast-sidebar__product .review-container{margin-top:16px}.yoast-sidebar__product .review-container a{color:#fff;text-decoration:none}.yoast-sidebar__product .review-container a .claim{color:#fff;display:block;margin-bottom:12px}.yoast-sidebar__product .review-container .title{color:#fff;font-weight:500;margin-bottom:8px}.yoast-sidebar__product .review-container .title:hover{text-decoration:underline}.yoast-sidebar__product .review-container .rating{display:flex;gap:5px}.yoast-sidebar__product .review-container .rating img{max-height:22px;max-width:22px}.yoast-sidebar__product .review-container .rating .rating-text{font-size:16px;font-weight:600}.yoast-sidebar__product .sidebar__sale_banner_container{margin-right:-24px;margin-top:-40px;overflow-x:hidden;overflow-y:initial;width:calc(100% + 48px)}.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner{background:#000;box-shadow:0 -1px 4px 0 #fcd34d,0 1px 4px 0 #fcd34d,0 -1px 0 0 #fcd34d,0 1px 0 0 #fcd34d;color:#fcd34d;font-size:20px;font-weight:500;letter-spacing:.5px;line-height:30px;margin-bottom:20px;margin-right:-30px;margin-top:20px;padding:7px 0;text-align:center;transform:rotate(5deg);width:calc(100% + 60px);z-index:1}.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner .banner_text{display:inline-block;margin:0 40px}.yoast-sidebar__product .sidebar__sale_text{border-top:1px solid #fff;font-style:italic;text-align:center}.yoast-sidebar__product .sidebar__sale_text p{font-size:12.5px;margin:12.5px 0}.yoast-sidebar__section{background-color:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin:10px 0 20px;padding:16px}.yoast-sidebar__section h2{color:#a4286a;margin-top:0}.yoast-sidebar__section a{color:#0085ba}.yoast-sidebar__section ul{position:relative}.yoast-sidebar__section li{list-style:none;margin-right:20px}.yoast-sidebar__section li:before{content:"+";font-weight:700;right:0;position:absolute}.yoast-sidebar__section div{margin:10px 0 20px;position:relative}.yoast-sidebar__section div img{float:left;height:70px;margin:0 10px 0 0;width:70px}.yoast-sidebar__section div img.alignleft{float:right;margin:0 0 0 10px}.yoast-sidebar__section div p{float:right;margin:0;width:100%}.yoast_premium_upsell{background-color:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin-top:2em;max-width:715px;overflow:hidden}.yoast_premium_upsell--container{padding:16px}.black-friday-container{background-color:#1f2937;border-bottom:2px solid #fcd34d;display:flex;padding:8px 16px}.black-friday-container span{color:#fcd34d;font-size:1.2rem;font-weight:600}.yoast_premium_upsell--header{color:#a4286a;font-size:1.7em;font-weight:700;margin-top:.3em}.yoast_premium_upsell--motivation{display:flex;flex-wrap:wrap}.yoast_premium_upsell--motivation li{flex:0 0 50%;list-style:none}.yoast_premium_upsell--argument{padding:0 20px 0 8px}.yoast_premium_upsell--argument:before{content:"+";font-weight:700;right:-16px;margin-left:-10px;position:relative;top:-1px}@media screen and (max-width:480px){.yoast_premium_upsell--motivation{display:block}}.yoast-variable-desc{min-width:300px}.yoast-table-scrollable,.yoast-table-scrollable td,.yoast-table-scrollable th{box-sizing:border-box}.yoast-table-scrollable__container.yoast-has-scroll{overflow:hidden;position:relative}.yoast-table-scrollable__container.yoast-has-scroll:after{border-radius:0 10px 10px 0/0 50% 50% 0;box-shadow:5px 0 10px #00000040;content:"";height:calc(100% - 16px);right:100%;position:absolute;top:0;width:50px}.yoast-table-scrollable__container.yoast-has-scroll .yoast-table-scrollable__inner{overflow-x:scroll;padding-bottom:16px}.yoast-table-scrollable__hintwrapper{display:none}.yoast-table-scrollable__hintwrapper.yoast-has-scroll{display:block;margin:1em 0;text-align:center}.yoast-has-scroll .yoast-table-scrollable__hint{display:inline-block}.yoast-has-scroll .yoast-table-scrollable__hint:before{content:"\21c4";display:inline-block;font-size:20px;line-height:inherit;margin-left:10px;vertical-align:text-top}.yoast-styled-select{align-items:center;display:inline-flex;margin-bottom:1em;position:relative}.yoast-styled-select:after,.yoast-styled-select:before{bottom:0;content:"";pointer-events:none;position:absolute;top:0}.yoast-styled-select:before{left:0;width:28px}.yoast-styled-select:after{border-top:4px solid #0000;border-color:#555 #0000 #0000;border-style:solid;border-width:5px 4px 0;height:0;margin:auto;left:6px;width:0;z-index:1}.yoast-styled-select select{-webkit-appearance:none;appearance:none;background:#0000;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;color:#32373c;height:28px;line-height:1;margin:0;max-width:100%;padding:4px 8px 4px 32px}.yoast-styled-select select.error{border-color:#dc3232;border-width:2px}.wpseo_content_wrapper .yoast-styled-select select.select{margin:0}.yoast-styled-select select:focus{border-color:#5b9dd9}.yoast-styled-select select:-moz-focusring{color:#0000;text-shadow:0 0 0 #32373c}.yoast-styled-select select[disabled]{opacity:.75}.yoast-styled-select select::-ms-expand{display:none}@media screen and (max-width:1024px){.wpseo_content_cell,.wpseo_content_wrapper{display:block;height:auto}#wpseo_content_top{width:auto}#sidebar-container{display:flex;gap:.7rem;padding:0;width:auto}.yoast-sidebar__product .sidebar__sale_banner_container{overflow-y:hidden}#sidebar-container .yoast-sidebar__section{margin-top:5rem}.yoast-sidebar__product-list{border-bottom:1px solid #ddd;display:flex}.yoast-sidebar__product-list div p{word-wrap:break-word;width:calc(100% - 50px)}.yoast-sidebar__product-list .yoast-sidebar__section{border-bottom:none}.yoast-sidebar__product-list .yoast-sidebar__section:first-child{margin-left:40px}}@media screen and (max-width:782px){.wpseo_content_wrapper label.select,.wpseo_content_wrapper label.textinput{display:inline-block;float:none;width:auto}.wpseo_content_wrapper input.textinput,.wpseo_content_wrapper textarea,.wpseo_content_wrapper textarea.textinput{display:block;width:100%}.wpseo_content_wrapper .select2-container,.wpseo_content_wrapper select,.wpseo_content_wrapper select.select{display:block;margin:0 0 5px;max-width:100%}.wpseo_content_wrapper div.desc.label,.wpseo_content_wrapper p.desc.label{padding-right:0}.wpseo_content_wrapper .textinput[aria-invalid=true][aria-describedby]+br{display:none}.wpseo_content_wrapper .yoast-input-validation__error-description{padding-right:0;width:auto}}@media screen and (max-width:600px){.yoast-sidebar__product-list{border-bottom:none;display:block}.yoast-sidebar__product-list .yoast-sidebar__section{border-bottom:1px solid #ddd}.yoast-sidebar__product-list .yoast-sidebar__section p{word-wrap:break-word;padding-right:50px;width:calc(100% - 50px)}}@media screen and (max-width:500px){.yoast-sidebar__product .sidebar__sale_banner_container .sidebar__sale_banner{transform:rotate(4deg)}#sidebar-container{display:block}#sidebar-container .yoast-sidebar__section{margin-top:20px}body.toplevel_page_wpseo_dashboard .wp-badge{background-color:#a4286a;background-size:100px 100px;box-shadow:0 1px 3px #0003;padding-top:80px}}.wpseo-checkmark-ok-icon{background:var(--yoast-svg-icon-check-ok) no-repeat;background-size:18px;float:right;height:18px;margin-left:5px;vertical-align:top;width:18px}.yoast-settings-section:not(:last-child){margin-bottom:40px}.yoast-settings-section .yoast-field-group__title .yoast_help.yoast-help-link{margin:-6px 2px 0 0}#yoast-og-default-image-select .yoast-field-group__title{display:none}.yoast-settings-section.yoast-settings-section-disabled{border:1px solid #ccc;padding:16px;position:relative}.yoast-settings-section.yoast-settings-section-disabled>*{opacity:.5}.yoast-settings-section.yoast-settings-section-disabled .yoast-settings-section-upsell{align-items:center;bottom:0;display:flex;justify-content:center;right:0;opacity:1;position:absolute;left:0;top:0}@keyframes yoast-spin{0%{transform:rotate(0deg)}to{transform:rotate(-1turn)}}css/dist/dashboard-2390-rtl.css000064400000001751147206602470012146 0ustar00#yoast-seo-dashboard-widget h3{font-weight:700}#yoast-seo-dashboard-widget .assessments,#yoast-seo-dashboard-widget .score-assessments{padding-right:0}#yoast-seo-dashboard-widget .wordpress-feed{border-top:1px solid #eee;margin:16px -12px 0;padding:12px 12px 0}#yoast-seo-dashboard-widget .wordpress-feed .wordpress-feed__post{margin-top:12px}#yoast-seo-dashboard-widget .wordpress-feed .wordpress-feed__footer{border-top:1px solid #eee;margin:0 -12px;padding:4px 12px 0}#yoast-seo-dashboard-widget:empty:before,#yoast-seo-wincher-dashboard-widget:empty:before{animation:rotate 2s linear infinite;background-image:url(../../packages/js/images/Yoast_SEO_Icon.svg);content:"";display:block;height:40px;margin:25px auto;width:40px}@keyframes rotate{0%{transform:perspective(120px) rotateX(0deg) rotateY(0deg);-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg)}to{transform:perspective(120px) rotateX(0deg) rotateY(-1turn);-webkit-transform:perspective(120px) rotateX(0deg) rotateY(-1turn)}}css/dist/yst_seo_score-2390-rtl.css000064400000000774147206602470013103 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 3px 0 10px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}.wpseo-score-title{font-weight:600}#taxonomy_overall{margin-right:87.5%;position:absolute;top:0}css/dist/adminbar-2390-rtl.css000064400000010147147206602470011773 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 3px 0 10px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}#wp-admin-bar-wpseo-menu .wpseo-score-icon{margin:10px 4px 0 0!important}#wp-admin-bar-wpseo-menu .wpseo-score-icon.adminbar-sub-menu-score{margin:11px 4px 0 0!important}#wp-admin-bar-wpseo-menu-default .ab-item{line-height:2.46153846!important}#wp-admin-bar-wpseo-menu .ab-submenu{margin-bottom:5px}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu #wp-admin-bar-wpseo-menu-default li#wp-admin-bar-wpseo-get-premium a{color:#fff!important;font-weight:700!important}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu #wp-admin-bar-wpseo-menu-default li#wp-admin-bar-wpseo-get-premium span{background:#1f2937;border:1px solid #fcd34d;border-radius:14px;color:#fcd34d;font-size:13px;font-weight:600;padding:1px 4px}#wpadminbar .yoast-menu-bf-sale-badge{text-wrap:nowrap;background-color:#1f2937;border:1px solid #fcd34d;border-radius:8px;color:#fcd34d;font-size:10px;font-weight:600;line-height:normal;margin-right:5px;padding:2px 8px}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu .wpseo-focus-keyword{display:inline-block!important;max-width:100px!important;overflow:hidden;text-overflow:ellipsis!important;vertical-align:bottom;white-space:nowrap}#wpadminbar .yoast-badge{border-radius:8px;display:inline-block;font-weight:600;line-height:1.6;margin-right:4px;padding:0 8px}#wpadminbar .yoast-beta-badge{background-color:#cce5ff;color:#004973}#wpadminbar .yoast-premium-badge{background-color:#fff3cd;color:#674e00}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{background-color:#a4286a;border-radius:10px 0 10px 10px;box-shadow:-1px 1px 1px 1px grey;color:#fff;right:0;padding:2px 12px;position:absolute;top:32px;white-space:nowrap}#wpadminbar .yoast-issue-added{display:none}#wpadminbar .yoast-issue-counter{background-color:#d63638;border-radius:9px;color:#fff;display:inline;padding:1px 6px 1px 7px!important}#wpadminbar .yoast-logo.svg{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHN0eWxlPSJmaWxsOiM4Mjg3OGMiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjAzLjYgMzk1YzYuOC0xNy40IDYuOC0zNi42IDAtNTRsLTc5LjQtMjA0aDcwLjlsNDcuNyAxNDkuNCA3NC44LTIwNy42SDExNi40Yy00MS44IDAtNzYgMzQuMi03NiA3NlYzNTdjMCA0MS44IDM0LjIgNzYgNzYgNzZIMTczYzE2LTguOSAyNC42LTIyLjcgMzAuNi0zOHpNNDcxLjYgMTU0LjhjMC00MS44LTM0LjItNzYtNzYtNzZoLTNMMjg1LjcgMzY1Yy05LjYgMjYuNy0xOS40IDQ5LjMtMzAuMyA2OGgyMTYuMlYxNTQuOHoiLz48cGF0aCBkPSJtMzM4IDEuMy05My4zIDI1OS4xLTQyLjEtMTMxLjloLTg5LjFsODMuOCAyMTUuMmM2IDE1LjUgNiAzMi41IDAgNDgtNy40IDE5LTE5IDM3LjMtNTMgNDEuOWwtNy4yIDF2NzZoOC4zYzgxLjcgMCAxMTguOS01Ny4yIDE0OS42LTE0Mi45TDQzMS42IDEuM0gzMzh6TTI3OS40IDM2MmMtMzIuOSA5Mi02Ny42IDEyOC43LTEyNS43IDEzMS44di00NWMzNy41LTcuNSA1MS4zLTMxIDU5LjEtNTEuMSA3LjUtMTkuMyA3LjUtNDAuNyAwLTYwbC03NS0xOTIuN2g1Mi44bDUzLjMgMTY2LjggMTA1LjktMjk0aDU4LjFMMjc5LjQgMzYyeiIvPjwvc3ZnPg==");background-position:100% 6px;background-repeat:no-repeat;background-size:20px;float:right;height:30px;width:26px}#wpadminbar #wp-admin-bar-wpseo-licenses .ab-item{color:#f18500}#wpadminbar .wpseo-no-adminbar-notifications{display:none}@media screen and (max-width:782px){#wp-admin-bar-wpseo-menu .wpseo-score-icon{margin:16px 2px 0 10px!important}#wpadminbar #wp-admin-bar-wpseo-menu{display:block;position:static}#wpadminbar .yoast-logo.svg{background-position:50% 8px;background-size:30px;height:46px;width:52px}#wpadminbar .yoast-logo+.yoast-issue-counter{margin-right:-5px;margin-left:10px}#wpadminbar .ab-sub-wrapper .yoast-issue-counter{position:relative;top:-5px;vertical-align:text-top}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{line-height:1.8;top:46px;white-space:normal}#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-kwresearch,#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-settings{display:none}}css/dist/first-time-configuration-2390.css000064400000005067147206602470014354 0ustar00#yoast-configuration .yst-input{--tw-bg-opacity:1!important;--tw-shadow:0 1px 2px 0 #0000000d!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important;border-radius:.375rem!important;border-width:1px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important;font-size:.8125rem!important;padding:.5rem .75rem!important}#yoast-configuration .yst-radio{align-items:center!important;display:flex!important}#yoast-configuration .yst-radio__input{--tw-border-opacity:1!important;--tw-text-opacity:1!important;--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;-webkit-appearance:none!important;appearance:none!important;border-color:rgb(209 213 219/var(--tw-border-opacity))!important;border-radius:9999px!important;border-width:1px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important;color:rgb(166 30 105/var(--tw-text-opacity))!important;height:1rem!important;margin:0!important;transition-property:none!important;width:1rem!important}#yoast-configuration .yst-radio__input:before{content:var(--tw-content)!important;display:none!important}#yoast-configuration .yst-radio__input:checked{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important;border-width:5px!important}#yoast-configuration .yst-radio__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important;--tw-ring-offset-width:2px!important;--tw-ring-offset-color:#fff!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;outline:2px solid #0000!important;outline-offset:2px!important}#yoast-configuration .yst-radio__label{--tw-text-opacity:1!important;color:rgb(55 65 81/var(--tw-text-opacity))!important;font-weight:500!important;margin-left:.75rem!important}#yoast-configuration .yst-radio-group__label{margin-bottom:.25rem!important}#yoast-configuration .yst-radio-group__options{display:flex!important;flex-direction:column!important;gap:.5rem!important}#yoast-configuration .yst-radio-group__description{margin-bottom:1rem!important}#yoast-configuration .yst-checkbox__input:before{--tw-content:none!important;content:var(--tw-content)!important}css/dist/general-page-2390.css000064400000017443147206602470011754 0ustar00body.toplevel_page_wpseo_dashboard .notice,body.toplevel_page_wpseo_dashboard .yoast-migrated-notice{display:none}body.toplevel_page_wpseo_dashboard .yoast-general-page-notices:last-child{margin-bottom:2rem}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice,body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard{--tw-border-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background:#fff;border-color:rgb(224 179 204/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.75rem}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:17px;margin-right:12px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:17px}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));position:relative}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss:before,body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-yoast img{display:none}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice a{font-weight:500}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard{margin-bottom:.8rem;margin-top:0}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%2394A3B8' class='yst-h-5 yst-w-5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M6 18 18 6M6 6l12 12'/%3E%3C/svg%3E");content:""}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss:hover:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%2364748b' class='yst-h-5 yst-w-5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M6 18 18 6M6 6l12 12'/%3E%3C/svg%3E");content:""}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard p{padding-left:1.8rem}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .yoast-icon{height:17px;margin-right:12px;width:17px}body.toplevel_page_wpseo_dashboard .yoast-notice-migrated-header{color:#1e293b;font-size:.8125rem;font-weight:500;line-height:19px}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard a{font-weight:500}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-yoast__container{padding:0}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss{padding:.75rem}body.toplevel_page_wpseo_dashboard .notice-yoast__header{margin-bottom:.25rem}body.toplevel_page_wpseo_dashboard{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}body.toplevel_page_wpseo_dashboard #wpcontent{padding-left:0!important}body.toplevel_page_wpseo_dashboard #wpfooter{padding-right:1rem}@media (min-width:768px){body.toplevel_page_wpseo_dashboard #wpfooter{padding-left:17rem;padding-right:2rem}}@media screen and (max-width:782px){body.toplevel_page_wpseo_dashboard .wp-responsive-open #wpbody{right:-190px}}body.toplevel_page_wpseo_dashboard #modal-search .yst-modal__close{margin-top:-.25rem}@media (min-width:783px) and (max-width:962px){body.toplevel_page_wpseo_dashboard.sticky-menu .yst-root .yst-notifications--bottom-left{left:calc(160px + 2rem)}}@media (min-width:783px) and (max-width:963px){body.toplevel_page_wpseo_dashboard.sticky-menu.auto-fold .yst-root .yst-notifications--bottom-left,body.toplevel_page_wpseo_dashboard.sticky-menu.folded .yst-root .yst-notifications--bottom-left{left:calc(32px + 2rem)}}@media (min-width:962px){body.toplevel_page_wpseo_dashboard.sticky-menu.folded .yst-root .yst-notifications--bottom-left{left:calc(32px + 2rem)}}@media (max-width:783px){body.toplevel_page_wpseo_dashboard:not(.sticky-menu) .wp-responsive-open .yst-root .yst-notifications--bottom-left{left:calc(190px + 2rem)}}@media (min-width:601px) and (max-width:768px){body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__top{top:46px}}@media (min-width:783px){body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__top{display:none}}body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__dialog{z-index:99999}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1.25rem;padding:.5rem .75rem;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:disabled{cursor:not-allowed;opacity:.5;pointer-events:none}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{font-size:.75rem;line-height:1rem;margin-bottom:unset;margin-top:.75rem;min-height:unset;padding:.375rem .625rem;vertical-align:unset;white-space:normal}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:visited{color:#a61e69}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:hover:visited{color:#b94986}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(99 102 241/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .ul-disc{list-style-type:disc;margin-left:.75rem;margin-top:.375rem;padding-left:.75rem}body.toplevel_page_wpseo_dashboard.rtl .yst-root .yst-replacevar .emoji-select-popover{left:0;right:auto}css/dist/admin-global-2390-rtl.css000064400000063252147206602470012551 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{word-wrap:break-word;-webkit-font-smoothing:subpixel-antialiased;background:#000c;border-radius:3px;color:#fff;content:attr(aria-label);display:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;letter-spacing:normal;opacity:0;padding:6px 8px 5px;pointer-events:none;position:absolute;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;white-space:pre;z-index:1000000}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{border:5px solid #0000;color:#000c;content:"\00a0";display:none;height:0;opacity:0;pointer-events:none;position:absolute;width:0;z-index:1000001}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{animation-duration:.1s;animation-fill-mode:forwards;animation-name:yoast-tooltip-appear;animation-timing-function:ease-in;display:inline-block;text-decoration:none}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{animation:none;opacity:1}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{margin-top:5px;left:50%;top:100%}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{border-bottom-color:#000c;bottom:-5px;margin-left:-5px;left:50%;top:auto}.yoast-tooltip-se:after{right:50%;margin-right:-15px;left:auto}.yoast-tooltip-sw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{bottom:100%;margin-bottom:5px;left:50%}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{border-top-color:#000c;bottom:auto;margin-left:-5px;left:50%;top:-5px}.yoast-tooltip-ne:after{right:50%;margin-right:-15px;left:auto}.yoast-tooltip-nw:after{margin-left:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(-50%)}.yoast-tooltip-w:after{bottom:50%;margin-left:5px;left:100%;transform:translateY(50%)}.yoast-tooltip-w:before{border-right-color:#000c;bottom:50%;right:-5px;margin-top:-5px;top:50%}.yoast-tooltip-e:after{bottom:50%;right:100%;margin-right:5px;transform:translateY(50%)}.yoast-tooltip-e:before{border-left-color:#000c;bottom:50%;margin-top:-5px;left:-5px;top:50%}.yoast-tooltip-multiline:after{word-wrap:normal;border-collapse:initial;max-width:250px;white-space:pre-line;width:250px;width:max-content;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{right:50%;left:auto;transform:translateX(50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{left:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w:after{margin-left:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.rtl .yst-icon-rtl{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.wpseo-premium-indicator{display:inline-block;height:1px;width:1px}#adminmenu .wpseo-premium-indicator{color:inherit;margin:-2px 2px -3px 0}.wpseo-premium-indicator svg{display:none;height:100%;width:auto}.yoast-measure{max-width:600px}.yoast-measure.padded{max-width:632px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{font-size:14px;font-weight:600;margin:0 0 0 10px}.wpseo-premium-popup-title{font-size:1.3em!important;font-weight:600!important;margin:1em 0!important;padding:0!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{height:auto;max-width:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.yoast-video-container iframe{height:100%;right:0;position:absolute;top:0;width:100%}.yoast-settings{margin-bottom:2em;padding-right:220px}.yoast-settings h2{margin-bottom:0;margin-right:-220px}.yoast-settings label{color:#23282d;display:inline-block;font-size:14px;font-weight:600;line-height:1.3;margin-right:-220px;margin-left:6px;padding-left:10px;padding-top:4px;vertical-align:top;width:200px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio,.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea{margin-bottom:.5em;margin-top:2em}.yoast-settings__textarea--medium{max-width:600px;width:100%}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{position:relative;top:1px;vertical-align:top}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 0 10px 4px}.yoast-settings__checkbox+label,.yoast-settings__radio+label{margin-right:0;margin-left:0;max-width:calc(100% - 25px);padding:0;width:auto}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{font-weight:400;margin-bottom:10px;margin-top:0}.yoast-settings legend{color:#23282d;font-size:14px;font-weight:600}.yoast-settings .description{font-size:14px;margin-top:0}td .wpseo-score-icon{background:#888;border-radius:50%;display:inline-block;height:12px;line-height:16px;margin-right:5px;margin-top:3px;width:12px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{padding:0;width:3em}.fixed th.column-wpseo-score-readability.sortable,.fixed th.column-wpseo-score-readability.sorted,.fixed th.column-wpseo-score.sortable,.fixed th.column-wpseo-score.sorted{width:3.5em}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score .yoast-tooltip,th.column-wpseo-score-readability .yoast-tooltip{display:inline-block;overflow:visible;padding:8px 0;vertical-align:middle}th.column-wpseo-score .yoast-tooltip,th.column-wpseo-score-readability .yoast-tooltip{padding:8px 11px}th.column-wpseo-score-readability.sortable .yoast-tooltip,th.column-wpseo-score-readability.sorted .yoast-tooltip,th.column-wpseo-score.sortable .yoast-tooltip,th.column-wpseo-score.sorted .yoast-tooltip{padding-left:0}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{color:#444;content:"";display:inline-block;height:20px;padding:0;text-decoration:none!important;vertical-align:top;width:20px}.manage-column .yoast-linked-to:before{background:#0000 url(../../images/link-out-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-linked-from:before{background:#0000 url(../../images/link-in-icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:#0000 url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 100% 0;background-size:20px}.manage-column .yoast-column-readability:before{background:#0000 url(../../images/readability-icon.svg) no-repeat 100% 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-right:0}.yoast-settings h2{margin-right:0}.yoast-settings label{margin-right:0;margin-left:0;padding:0;width:auto}.yoast .yoast-settings__radio,.yoast-settings__radio+label{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{box-sizing:border-box;display:block;line-height:1.5;margin-bottom:0;margin-top:0;max-width:none;padding:7px 10px;width:100%}.screen-reader-text.wpseo-score-text{-webkit-clip-path:none;clip-path:none;height:auto;margin:0;position:static!important;width:auto}}.react-tabs__tab-panel{margin:0 auto;max-width:900px}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{font-size:.9375rem;line-height:1.4;margin:0 auto 1.5em}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-right:1.5em}.yoast_help.yoast-help-button,.yoast_help.yoast-help-link{background:#0000;border:0;box-shadow:none;color:#72777c;cursor:pointer;height:20px;margin:0;outline:none;padding:0;position:relative;vertical-align:top;width:20px}.yoast-section .yoast_help.yoast-help-button{float:left}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-left:6px}.yoast_help .yoast-help-icon:before{content:"\f223";right:0;padding:4px;position:absolute;top:0}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover,.yoast_help.yoast-help-link:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before,.yoast_help.yoast-help-link:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc}.yoast-help-panel{clear:both;display:none;font-weight:400;max-width:30em!important;padding:0 0 1em;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description{margin-top:1em}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-notification .yoast-seo-icon{float:right;margin:20px 10px}.yoast-notification .yoast-seo-icon-wrap{margin:0 85px 0 0}.yoast-button-upsell{align-items:center;background-color:#fec228;border-radius:4px;box-shadow:inset 0 -4px 0 #0003;box-sizing:border-box;color:#000;display:inline-flex;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));font-family:Arial,sans-serif;font-size:16px;justify-content:center;line-height:1.5;min-height:48px;padding:8px 1em;text-decoration:none}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{background-color:#f2ae01;color:#000}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 #0003,0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc}.yoast-button-upsell:active{box-shadow:none;filter:none;transform:translateY(1px)}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{background:#0000 var(--yoast-svg-icon-caret-right) center no-repeat;flex-shrink:0;height:16px;margin:0 6px 0 -2px;width:8px}.rtl .yoast-button-upsell__caret{background-image:var(--yoast-svg-icon-caret-left)}body.folded .wpseo-admin-submit-fixed{right:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{right:0}}.wpseo-admin-submit{align-items:baseline;display:flex;justify-content:flex-start;margin:0;padding:16px 0;z-index:5}.wpseo-admin-submit.wpseo-admin-submit-fixed{background-color:#fff;bottom:0;box-shadow:0 1px 8px 1px #00000080;padding:16px;position:fixed;width:600px}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{right:0;width:782px}}.wpseo-admin-submit p.submit{margin:0;padding:0}.wpseo-admin-submit p.wpseo-message{color:#008a00;margin:0 0 0 16px;padding:0}.yoast-site-health__signature{color:#707070;display:flex;font-size:12px;line-height:20px;margin-top:2em}.yoast-site-health__inline-button.fetch-status,.yoast-site-health__signature-icon{margin-left:8px}#wpadminbar .yoast-badge,.yoast-badge{border-radius:8px;display:inline-block;font-weight:600;line-height:1.6;padding:0 8px}.yoast-badge{font-size:10px;min-height:16px}.yoast-badge--sale{background-color:#a4286a;border-radius:999px!important;color:#fff;font-size:12px!important;margin-top:-24px;position:absolute;left:30px;transform:rotate(-14deg)}@media (max-width:1024px){.yoast-badge--sale{display:inline-block;position:unset;vertical-align:top}}.yoast-badge__is-link:focus,.yoast-badge__is-link:hover{background-color:#004973;box-shadow:none;color:#fff;outline:none}#wpadminbar .yoast-badge,.wp-submenu .yoast-badge{font-size:9px;min-height:14px}.yoast-new-badge{background-color:#cce5ff;color:#004973}.yoast-premium-badge{background-color:#fff3cd;color:#674e00}.yoast-beta-badge{background-color:#cce5ff;color:#004973}.yoast-badge__is-link{text-decoration:none}.switch-container .yoast-badge{vertical-align:-1em}.switch-container legend .yoast-badge{vertical-align:0}.yoast_help+.yoast-badge{vertical-align:bottom}.yoast #crawl-settings fieldset[id$=_disabled],.yoast #crawl-settings p.disabled,.yoast label[for=clean_permalinks_extra_variables_free],.yoast label[for=search_character_limit_free],.yoast p.yoast-extra-variables-label-free{opacity:.5}.yoast #crawl-settings fieldset[id$=_disabled] .switch-toggle.switch-yoast-seo input:disabled~a{background:#a4286a;border:1px solid #b5b5b5}.yoast label[for^=search_character_limit]{font-weight:600;margin-bottom:10px!important;padding-right:2px;width:320px!important}.yoast input[id^=search_character_limit]{width:70px!important}.yoast label[for^=clean_permalinks_extra_variables]{font-weight:600;padding-right:2px;width:240px!important}.yoast input[id^=clean_permalinks_extra_variables]{width:358px!important}.yoast .yoast-crawl-single-setting{margin-top:18px}.yoast p[class*=yoast-extra-variables-label]{padding-right:243px!important}@media screen and (max-width:782px){.yoast p[class*=yoast-extra-variables-label]{margin-top:-20px!important;padding-right:0!important}}.yoast .yoast-crawl-settings-help{font-style:italic}.notice-yoast{background:#fff;border:1px solid #c3c4c7;border-right:4px solid var(--yoast-color-primary);box-shadow:0 1px 1px #0000000a;margin:20px 0 15px;padding:1px 12px}#black-friday-2023-product-editor-checklist .notice-yoast__container{padding:0 5px}.notice-yoast.is-dismissible{padding-left:38px;position:relative}.notice-yoast__container{padding:10px 0 5px}.notice-yoast__container,.notice-yoast__header{align-items:center;display:flex;flex-direction:row}.notice-yoast__header{box-sizing:border-box;justify-content:left;margin-bottom:8px;padding:0;width:100%}.notice-yoast__header .notice-yoast__header-heading{line-height:1.2;margin:0;padding:0}.notice-yoast__header h2.notice-yoast__header-heading{color:var(--yoast-color-primary);font-size:14px;font-weight:600;line-height:1;margin:0}.notice-yoast__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:14px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:14px}.notice-yoast__content{display:flex;padding:0}.notice-yoast .notice-yoast__container>svg{height:60px;line-height:1;margin-right:10px;width:auto}.notice-yoast img{height:60px;line-height:1;margin-bottom:5px;margin-right:16px;width:auto}.notice-yoast p{font-size:13px;font-weight:400;line-height:19px;max-width:600px}.notice-yoast .yoast-button--small{min-height:unset}.notice-yoast .notice-dismiss{background:none;border:none;color:#787c82;cursor:pointer;margin:0;padding:9px;position:absolute;left:1px;top:0}.notice-yoast .notice-dismiss:before{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:none;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;height:20px;text-align:center;width:20px}.notice-yoast .notice-dismiss:hover:before{color:#d63638}.yoast-notice-migrated-header{margin-top:10px}.privacy-settings .notice-yoast{margin:0 20px}.yoast .yoast-crawl-settings-explanation-free,.yoast .yoast-crawl-settings-help-free{opacity:.5}.yoast h3.yoast-crawl-settings,.yoast h3.yoast-crawl-settings-free{margin:2em 0 .5em}.yoast .yoast-crawl-settings-disabled,.yoast h3.yoast-crawl-settings-free{opacity:.5}.yoast .indexables-indexing-error p{margin-bottom:13px}.yoast .indexables-indexing-error strong{font-weight:500}.yoast .indexables-indexing-error summary{font-weight:700}.yoast-dashicons-notice{color:#dba617}#black-friday-2024-promotion-sidebar.notice-yoast{background:#fff;border-color:#fcd34d;border-radius:8px;border-width:2px;margin:20px 0 15px;padding:1px 12px}#black-friday-2024-promotion-sidebar .notice-yoast__header{margin-bottom:2px;padding-left:20px}#black-friday-2024-promotion-metabox.notice-yoast{background:#fff;border-color:#fcd34d;border-radius:8px;border-width:2px;margin:20px}#black-friday-2024-promotion-metabox h2.notice-yoast__header-heading{padding:0}#black-friday-2024-promotion-metabox .notice-yoast__container{padding-bottom:0}#black-friday-2024-promotion-metabox .notice-yoast__container p{display:inline}#black-friday-2024-promotion-metabox .notice-yoast__header{margin-bottom:8px}#black-friday-2024-promotion-metabox .notice-yoast__header a{font-weight:400;margin-right:13px}.yoast-bf-sale-badge{display:block;right:12px;position:absolute;top:-10px}.yoast-bf-sale-badge,.yoast-menu-bf-sale-badge{background-color:#1f2937;border-radius:8px;color:#fcd34d;font-size:10px;font-weight:600;line-height:normal;padding:2px 8px}.yoast-menu-bf-sale-badge{text-wrap:nowrap;border:1px solid #fcd34d;margin-right:5px}css/dist/elementor-2390.css000064400000011277147206602470011416 0ustar00:root{--yoast-elementor-color-paragraph:#555d66}.yoast,.yoast h2,.yoast h3{font-family:var(--yoast-font-family)!important}.yoast h2{color:var(--yoast-color-dark);font-size:1.3em;font-weight:var(--yoast-font-weight-bold);margin-bottom:1em}.yoast input,.yoast input:focus,.yoast label,.yoast select:focus,.yoast select:not(:focus){background-color:#0000;border-color:var(--yoast-color-secondary-darker);color:var(--yoast-color-font-default)}.yoast label{color:var(--yoast-color-label)}.yoast input[disabled]{background-color:var(--yoast-color-inactive-grey-light)}.yoast.components-panel__body .yoast-title{font-weight:500}.yoast-field-group__title b{font-weight:var(--yoast-font-weight-bold)}.yoast h3 span>span{font-weight:400}.elementor-tab-control-yoast-seo-tab span:before,.yoast-element-menu-icon:before{background-color:currentColor;content:" ";height:16px;margin:0 auto;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:16px}.yoast-element-menu-icon{display:inline-flex}.yoast-element-menu-icon:before{height:19px;width:19px}.yoast-elementor-panel__fills{-webkit-font-smoothing:subpixel-antialiased;background-color:var(--yoast-color-white);color:var(--yoast-color-dark)}.yoast li,.yoast p,.yoast small{line-height:1.5;margin-bottom:6px}.yoast p,.yoast small,.yoast ul[role=list] li{color:var(--yoast-elementor-color-paragraph)}.button-link,.yoast a,.yoast a p,.yoast-elementor-panel__fills p a{color:var(--yoast-color-link);text-decoration:underline}.yoast a.dashicons{color:var(--yoast-color-inactive-text);height:24px;vertical-align:text-bottom;width:24px}.button-link{background:none;border:none;cursor:pointer;font-size:1em;line-height:1.5}.yoast .yoast-button-upsell,.yoast-elementor-panel__fills .UpsellLinkButton{color:var(--yoast-color-label);line-height:1.4em;text-decoration:none}.yoast-elementor-panel__fills h3>button{background:none;border:none;box-shadow:none}.yoast-gutenberg-modal .yoast-notice-container>hr{border-top-color:#ddd;border-top-style:solid}.yoast-gutenberg-modal input[type=radio]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:50%;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:0 8px 0 0;overflow:hidden;padding:2px;position:relative;transition:all .15s ease-out 0s;vertical-align:text-bottom;width:18px}.yoast-gutenberg-modal input[type=radio]:checked{background-color:inherit;border-color:var(--yoast-color-primary)}.yoast-gutenberg-modal input[type=radio]:checked:after{background:var(--yoast-color-primary);border-radius:50%;content:"";display:block;height:10px;left:3px;position:absolute;top:3px;width:10px}.yoast-post-settings-modal .yoast-notice-container{bottom:auto}.yoast-gutenberg-modal .components-popover.components-tooltip{left:unset!important;position:relative;right:40px;top:15px!important}.yoast div:focus,div.yoast:focus{outline:0}.yoast .button-link:focus,.yoast a:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#124964;outline:1px solid #0000}.yoast a.dashicons:focus{color:#1e8cbe}.yoast input[type=radio]:checked:focus{border-color:#fff;box-shadow:var(--yoast-color-focus)}.yoast .yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 #0003,0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#000}.yoast-elementor-introduction{background-color:#fff;box-shadow:var(--yoast-shadow-default);padding:20px;position:absolute!important;text-align:left;z-index:1}#yoast-introduction{border-radius:3px;left:41px!important;top:5px!important}#yoast-introduction-editor-v2{border:1px solid #000;border-radius:8px}.yoast-elementor-introduction:before{border:solid #0000;content:"";position:absolute}#yoast-introduction:before{border-bottom-color:#fff;border-width:7px 5px;left:-12px;top:8px;transform:rotate(-90deg)}#yoast-introduction-editor-v2:before{border-bottom-color:#000;border-width:10px 8px;left:var(--yoast-elementor-introduction-arrow,28%);top:-20px}.yoast-elementor-introduction>div{color:var(--yoast-color-default)}.yoast-elementor-introduction>.dialog-header{font-weight:var(--yoast-font-weight-bold);line-height:1.3}.yoast-elementor-introduction>.dialog-message{margin-top:.5em}.yoast-elementor-introduction>.dialog-buttons-wrapper{display:flex;justify-content:flex-end;margin-top:12px}#yoast-introduction .dialog-button,#yoast-introduction-editor-v2 .dialog-button{background-color:var(--yoast-color-primary);font-size:12px;padding:7px 17px}@media(hover:hover){.button-link:hover,.yoast a:hover,.yoast a:hover p,.yoast-elementor-panel__fills p a:hover{color:var(--yoast-color-primary-darker)}.yoast a.dashicons:hover{color:var(--yoast-color-link)}.yoast .yoast-button-upsell:hover,.yoast-elementor-panel__fills .UpsellLinkButton:hover{color:var(--yoast-color-label)}}css/dist/monorepo-2390-rtl.css000064400000101505147206602470012053 0ustar00:root{--yoast-border-default:1px solid #0003;--yoast-color-default:#404040;--yoast-color-default-darker:#303030;--yoast-color-primary:#a4286a;--yoast-color-secondary:#f7f7f7;--yoast-color-white:#fff;--yoast-color-green:#6ea029;--yoast-color-primary-darker:#7b1e50;--yoast-color-primary-lighter:#f5d6e6;--yoast-color-secondary-darker:#d9d9d9;--yoast-color-button-upsell:#fec228;--yoast-color-button-upsell-hover:#f2ae01;--yoast-color-dark:#303030;--yoast-color-sale:#fec228;--yoast-color-sale-darker:#feb601;--yoast-color-border:#0003;--yoast-color-label:#303030;--yoast-color-label-help:#707070;--yoast-color-active:#6ea029;--yoast-color-inactive:#dc3232;--yoast-color-inactive-text:#707070;--yoast-color-inactive-grey:#9e9e9e;--yoast-color-inactive-grey-light:#f1f1f1;--yoast-color-active-light:#b6cf94;--yoast-transition-default:all 150ms ease-out;--yoast-color-link:#006dac;--yoast-color-border--default:#0003;--yoast-color-focus:0 0 0 2px #007fff,0 0 0 5px #bfdfff;--yoast-svg-icon-chevron-down:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-chevron-up:url('data:image/svg+xml;charset=utf-8,');--yoast-checkmark--white:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFF' viewBox='0 0 512 512'%3E%3Cpath d='m173.898 439.404-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001'/%3E%3C/svg%3E");--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23m-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23m640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 1792 1792'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' aria-hidden='true' viewBox='0 0 192 512'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960M944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34m848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136m0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136m1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5M384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136m1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5m0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5'/%3E%3C/svg%3E");--yoast-svg-icon-key:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-edit:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url('data:image/svg+xml;charset=utf-8,');--yoast-checkmark--green:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%236EA029' viewBox='0 0 512 512'%3E%3Cpath d='m173.898 439.404-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001'/%3E%3C/svg%3E");--yoast-exclamation-mark:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23DC3232' viewBox='0 0 512 512'%3E%3Cpath d='M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248m-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46m-43.673-165.346 7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654'/%3E%3C/svg%3E");--yoast-svg-icon-schema:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24m181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24m-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24M0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24m386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24m0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24M181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24'/%3E%3C/svg%3E");--yoast-svg-icon-schema-active:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' aria-hidden='true'%3E%3Cpath fill='D4444' d='M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24m181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24m-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24M0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24m386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24m0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24M181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24'/%3E%3C/svg%3E");--yoast-svg-icon-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='%23707070' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 16 4.586-4.586a2 2 0 0 1 2.828 0L16 16m-2-2 1.586-1.586a2 2 0 0 1 2.828 0L20 14m-6-6h.01M6 20h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2'/%3E%3C/svg%3E");--yoast-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--yoast-font-size-default:14px;--yoast-font-weight-default:400;--yoast-font-weight-bold:600;--yoast-color-font-default:#404040;--yoast-shadow-default:0px 3px 6px #00000026}.yoast-h1,.yoast-h2,.yoast-h3{color:var(--yoast-color-primary);font-weight:400;line-height:1.2;margin:0}.yoast-h1 a,.yoast-h2 a,.yoast-h3 a{color:var(--yoast-color-primary);text-decoration:none}.yoast-h1{font-size:24px}.yoast-h2{font-size:20px}.yoast-h3{font-size:16px}.yoast-paragraph{font-size:var(--yoast-font-size-default);margin-top:0}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);margin:-1px;padding:0}.screen-reader-text,.visually-hidden{height:1px;overflow:hidden;position:absolute;width:1px}.visually-hidden{clip:rect(1px,1px,1px,1px);word-wrap:normal;white-space:nowrap}@media (max-width:782px){.yoast-show-on-mobile{display:initial!important}}@media (min-width:782px){.yoast-hide-on-desktop{display:none}}.yoast-field-group__title-separator{display:flex;flex-wrap:wrap}.yoast-field-group__title-separator label{align-items:center;border:var(--yoast-border-default);box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;height:42px;justify-content:center;margin:0 0 6px 6px;width:42px}.yoast-field-group__title-separator input[type=radio]:checked+label{border:3px solid var(--yoast-color-primary)}.yoast .yoast-button{align-items:center;border:1px solid #0003;border-radius:4px;box-shadow:inset 0 -2px 0 #0000001a;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;line-height:1.2;padding:10px 12px 12px;position:relative;text-decoration:none;transition:background-color .15s ease-out 0s}.yoast .yoast-button:focus,.yoast-close:focus,.yoast-hide:focus,.yoast-remove:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast .yoast-button::-moz-focus-inner,.yoast-close::-moz-focus-inner,.yoast-hide::-moz-focus-inner,.yoast-remove::-moz-focus-inner{border:0}.yoast .yoast-button:not(:disabled):active{box-shadow:none;top:2px}.yoast .yoast-button:disabled{cursor:default;opacity:.5}.yoast .yoast-button--primary{background-color:var(--yoast-color-primary)}.yoast .yoast-button--primary,.yoast .yoast-button--primary:visited{border:1px solid #0003;color:var(--yoast-color-white)}.yoast .yoast-button--primary:active,.yoast .yoast-button--primary:not(:disabled):hover{background-color:var(--yoast-color-primary-darker);border:1px solid #0003;color:var(--yoast-color-white)}.yoast .yoast-button--primary:focus{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast .yoast-button--secondary{background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 #0000001a;color:var(--yoast-color-dark)}.yoast .yoast-button--secondary:visited{color:var(--yoast-color-dark)}.yoast .yoast-button--secondary:active,.yoast .yoast-button--secondary:not(:disabled):hover{background-color:var(--yoast-color-secondary-darker);border:1px solid #0003;color:var(--yoast-color-dark)}.yoast .yoast-button--buy{background-color:var(--yoast-color-sale)}.yoast .yoast-button--buy,.yoast .yoast-button--buy:visited{color:var(--yoast-color-dark)}.yoast .yoast-button--buy:active,.yoast .yoast-button--buy:not(:disabled):hover{background-color:var(--yoast-color-sale-darker);color:var(--yoast-color-dark)}.yoast .yoast-button--buy__caret{height:16px;margin:0 6px 0 -2px;-webkit-mask-image:var(--yoast-svg-icon-caret-right);mask-image:var(--yoast-svg-icon-caret-right);width:6px}.yoast .yoast-button--buy__caret,.yoast .yoast-button--edit{background-color:currentColor;display:inline-block;flex-shrink:0}.yoast .yoast-button--edit{height:18px;margin-left:8px;-webkit-mask-image:var(--yoast-svg-icon-edit);mask-image:var(--yoast-svg-icon-edit);width:20.25px}html[dir=rtl] .yoast .yoast-button--edit{margin-right:8px;margin-left:0}html[dir=rtl] .yoast .yoast-button--buy{flex-direction:row-reverse}.yoast .yoast-button--small{font-size:13px;padding:5px 8px 8px}.yoast .yoast-button--small .yoast-button--buy__caret{height:10px;width:4px}.yoast-hide,.yoast-remove{background-color:initial;border:none;color:#dc3232;cursor:pointer;font-size:14px;padding:0;text-decoration:underline}.yoast-hide{color:var(--yoast-color-link)}.yoast-field-group__upload .yoast-button{margin-left:24px}.yoast-close{align-items:center;background:none;border:none;box-shadow:none;cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;width:44px}.yoast-close svg{fill:var(--yoast-color-default);width:14px}@media screen and (max-width:782px){.yoast-close svg{width:10px}}.yoast-field-group__checkbox{align-items:center;display:flex}.yoast-field-group__checkbox:not(.yoast-field-group__checkbox--horizontal)+.yoast-field-group__checkbox{margin-top:4px}.yoast-field-group__checkbox label{cursor:pointer}.yoast-field-group__checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:2px;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:2px 0 0 8px;overflow:hidden;padding:2px;position:relative;transition:background-color .15s ease-out 0s;width:18px}.yoast-field-group__checkbox input[type=checkbox]:checked:focus,.yoast-field-group__checkbox input[type=checkbox]:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast label+input[type=checkbox]{margin-right:16px}.yoast-field-group__checkbox input[type=checkbox]:checked{background:var(--yoast-checkmark--white) var(--yoast-color-primary) no-repeat center /13px;border:1px solid var(--yoast-color-primary);box-shadow:none}.yoast-field-group__checkbox input[type=checkbox]:checked:before{content:""}.yoast-field-group{border:none;margin:0 0 24px;padding:0;position:relative}.yoast-field-group__title{align-items:center;color:var(--yoast-color-label);display:flex;font-size:var(--yoast-font-size-default);font-weight:var(--yoast-font-weight-bold);line-height:1.5;margin:0 0 8px;padding:0}.yoast-field-group__title.yoast-field-group__title--light{font-weight:var(--yoast-font-weight-default)}.yoast-field-group .field-group-description{margin:0 0 1em}.yoast-field-group__inline{align-items:center;display:flex}.yoast-field-group__inline .yoast-field-group__inputfield{margin-left:8px}.yoast-field-group__inline .yoast-button{flex-shrink:0}.yoast-field-group .components-form-token-field__label{display:none}@media screen and (max-width:782px){.yoast-field-group__inline{display:block}.yoast-field-group__inline .yoast-field-group__inputfield{margin-bottom:8px;margin-left:0}}.yoast-help{margin-right:4px}.yoast-help__icon svg{fill:var(--yoast-color-inactive-text);height:12px;transition:var(--yoast-transition-default);width:12px}.yoast-help:focus svg,.yoast-help:hover svg{fill:var(--yoast-color-link)}.yoast-data-model{list-style:none;padding:0}.yoast-data-model li{font-weight:var(--yoast-font-weight-bold);line-height:1.4;padding:0 8px;position:relative;z-index:2}.yoast-data-model span{float:left;font-weight:var(--yoast-font-weight-default)}.yoast-data-model li+li{margin-top:9px}.yoast-data-model li:after{background:#f5d6e6;content:"";height:20px;right:0;position:absolute;width:var(--yoast-width);z-index:-1}.yoast-image-select__preview{align-items:center;background-color:initial;border:1px solid #0003;display:flex;justify-content:center;max-height:200px;max-width:100%;min-height:165px;overflow:hidden;padding:0;width:300px}.yoast-image-select__preview--no-preview{background:var(--yoast-color-inactive-grey-light) var(--yoast-svg-icon-image) no-repeat center center /64px 64px}.yoast-image-select__preview.yoast-image-select__preview-has-warnings{margin-bottom:16px}.yoast-image-select__preview .yoast-image-select__preview--image{height:100%;max-width:100%;object-fit:contain}.yoast-image-select .yoast-field-group__inputfield{margin-bottom:1em}.yoast-image-select .yoast-button{margin-left:1.5em}.yoast-image-select{margin-bottom:1.7em;margin-top:1.7em}.yoast-image-select .yoast-image-select-buttons button{margin-top:1em}#organization-image-select .yoast-image-select{margin-top:0}:root{--yoast-color-placeholder:#707070}.yoast .yoast-field-group__inputfield,.yoast .yoast-field-group__textarea{background:var(--yoast-color-white);border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;box-sizing:border-box;font-size:var(--yoast-font-size-default);padding:8px;width:100%}.yoast .yoast-field-group__inputfield:focus,.yoast .yoast-field-group__textarea:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group__upload .yoast-field-group__inputfield{margin-bottom:8px}.yoast-field-group__inputfield{height:40px}.yoast-field-group__textarea{min-height:200px}.yoast input+.description,.yoast-field-group .description+.yoast-field-group__inputfield,.yoast-field-group .description+input,.yoast-field-group__inputfield+.description{margin-bottom:24px;margin-top:8px}.yoast .yoast-field-group__inputfield:disabled,.yoast .yoast-field-group__inputfield:read-only,.yoast .yoast-field-group__inputfield[aria-disabled=true]{background:var(--yoast-color-inactive-grey-light)}.yoast .duration-inputs__wrapper{display:flex;flex-direction:row}.yoast .duration-inputs__input-wrapper{display:flex;flex-direction:column}.yoast .duration-inputs__input{margin:0 0 0 8px;width:4em}::placeholder{color:var(--yoast-color-placeholder);opacity:1}.yoast-insights-row:not(:last-of-type){border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}.yoast-insights-row--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}@media(min-width:782px){.yoast-modal-content .yoast-insights-row{border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}}.yoast-insights-card__content{display:flex}.yoast-insights-card__score{flex-shrink:0;font-size:16px;margin-left:2em}.yoast-insights-card__amount{display:block;font-size:3.5em;line-height:1}.yoast-field-group__radiobutton{align-items:center;display:flex}.yoast-field-group__radiobutton--vertical:not(:last-of-type){margin-bottom:8px}.yoast-field-group__radiobutton label{cursor:pointer;margin-left:16px}.yoast-field-group__radiobutton input[type=radio]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:50%;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:0 0 0 8px;overflow:hidden;padding:2px;position:relative;transition:border-color .15s ease-out 0s;width:18px}.yoast-field-group__radiobutton input[type=radio]:checked:focus,.yoast-field-group__radiobutton input[type=radio]:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group__radiobutton input[type=radio]:checked{background-color:inherit;border-color:var(--yoast-color-primary)}.yoast-field-group__radiobutton input[type=radio]:checked:before{content:none}.yoast-field-group__radiobutton input[type=radio]:after{background-color:initial;border-radius:50%;content:"";display:block;height:10px;right:3px;position:absolute;top:3px;transition:background-color .15s ease-out 0s;width:10px}.yoast-field-group__radiobutton input[type=radio]:checked:after{background-color:var(--yoast-color-primary)}.yoast-field-group__select{align-items:center;cursor:pointer;display:flex}.yoast-select__indicator-separator{display:none}.yoast-select-container{background-color:#fff;border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;display:block;min-height:2.85em;padding:0;position:relative;width:100%}.yoast-select-container .yoast-select__control--is-focused{box-shadow:var(--yoast-color-focus);outline:none}.yoast-select-container .yoast-select__indicator>svg{color:#212121}.yoast-select-container .yoast-select__menu{margin:0;z-index:2}.yoast-select-container .yoast-select__multi-value__label{align-items:center;box-sizing:border-box;color:inherit;display:flex;font-size:14px;padding:0}.yoast-select-container .yoast-select__multi-value{background-color:var(--yoast-color-primary);border:0;border-radius:12px;color:var(--yoast-color-white);display:flex;flex-direction:row-reverse;font-weight:500;line-height:1.5;margin-bottom:3px;margin-left:8px;margin-top:3px;padding:1px 10px 2px}.yoast-select-container .yoast-select__menu-list{padding:0}.yoast-select-container .yoast-select__multi-value__remove{-webkit-box-align:center;align-items:center;border-radius:2px;box-sizing:border-box;display:flex;margin-left:6px;padding:2px 0 0}.yoast-select-container .yoast-select__multi-value__remove:hover{background-color:inherit;color:var(--yoast-color-white);cursor:pointer}.yoast-select-container .yoast-select__control{background-color:initial;border:none;border-radius:0}.yoast-select-container .yoast-select__option{box-sizing:border-box;color:inherit;cursor:default;display:block;padding:8px 12px;-webkit-user-select:none;user-select:none;width:100%}.yoast-select-container .yoast-select__option--is-focused{background-color:var(--yoast-color-primary-lighter);color:var(--yoast-color-font-default)}.yoast-select-container .yoast-select__option.yoast-select__option--is-selected{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast-select-container input[type=text]:focus{box-shadow:none}.yoast-field-group select,.yoast-field-group__select select{-webkit-appearance:none;-moz-appearance:none;background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,');background-position:left 15px center;background-repeat:no-repeat;background-size:13px auto;border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;display:block;font-size:var(--yoast-font-size-default);max-width:300px;min-height:2.85em;padding:5px 8px;position:relative;width:100%}.yoast-field-group .yoast-select__value-container{padding:0 8px!important}.yoast-field-group select:focus,.yoast-field-group__select select:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group select,.yoast-field-group__select select{line-height:1.9;padding-left:40px}.yoast-field-group select.yoast-select--inline{display:inline-block}.yoast-field-group--inline{display:inline-block;margin-left:8px;max-width:300px;width:100%}.yoast-star-rating{display:inline-block;height:12px;width:65px}.yoast-star-rating span{background-repeat:repeat-x;background-size:13px 12px;height:100%;width:100%}.yoast-star-rating__placeholder{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAmCAQAAAAYCMGrAAAA+klEQVR4AcWV4cbtMBBFF0MIVUopoVSrhDDv/3gf/RFRpzdNOty1HiBO99mzeYWgCMZMKCPGrCgrxiSUhCkDeukxJKCXAUMiehkxw6FZhxEzmp0x4kCzByYISqlYdal0supS6WrVpdLEK0YSamJiJOPY0c/uOG4s6CcXfuKJaJcRzyNCQJsNiF1sRTR1hP11NNJ8RCrONOPRf+r7J+TZgQ5CNfMOYvW/2YxDqzqA/57+gVY9eiakrnyZEGXDsaE3p/4JScwPX3rtnZATDxnPWT7X16XAHaH8HWNrlxJD9TyGti5tCM84zpZe+RxNjeX9tZqLaGoMxN/P/wHP5Vw+8ZxnEQAAAABJRU5ErkJggg==);display:inline-block;overflow:hidden;position:relative}.yoast-star-rating__fill{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAmBAMAAABALxQTAAAAFVBMVEVMaXH4twP4twP4twP4twP4twP4twP7w8S/AAAAB3RSTlMAFv5uPpvQloUsTQAAAMFJREFUeAGE0TEOgzAMQFEXoDNiYC6/wFxxAsTADDkB5f6HqNRENXUi8TYiRfnY8lNXkjBOkuBWSeAhsYJOYiW9xO4MEqshkTbCSyIH7GLdgFasHHgmwkikZQD6OROZRG4Hxju8o/TNhbNhCqkOxaZDVKdxNnq/EjUS/A2o0PuXpyVeb9bjDWY9QSWXDQfBbtbjtWY9bM4sqfx+5yYt8wNcAFEzrGGkk5668KsFrKewPtQ3aFqh8WOnYZ+lIBQkgykAWk8rlAqcHfQAAAAASUVORK5CYII=);display:block}.yoast-table{border:var(--yoast-border-default);border-bottom:0;border-spacing:0;color:var(--yoast-color-default);font-size:var(--yoast-font-size-default);line-height:1.2;width:100%}.yoast-table tbody tr:nth-child(odd){background-color:#f9f9f9}.yoast-table th{color:var(--yoast-color-dark);font-weight:var(--yoast-font-weight-bold);text-align:right;white-space:nowrap}.yoast-table td,.yoast-table th{border-bottom:var(--yoast-border-default);padding:18px 12px}.yoast-table td:first-child,.yoast-table th:first-child{padding-right:16px}.yoast-table td:last-child,.yoast-table th:last-child{padding-left:16px}td.yoast-table__button,td.yoast-table__image{padding:10px 18px 9px}.yoast-table.yoast-table--nobreak td,td.yoast-table--nobreak,tr.yoast-table--nobreak td{white-space:nowrap}th.yoast-table--primary{width:100%}td.yoast-table--nopadding{padding:0 12px}.yoast-badge{border-radius:8px;display:inline-block;font-size:10px;font-weight:600;line-height:1.6;min-height:16px;padding:0 8px}.yoast-badge__in-label{margin-right:8px;vertical-align:text-top}.yoast-new-badge{background-color:#cce5ff;color:#004973}.yoast-premium-badge{background-color:#fff3cd;color:#674e00}.yoast-beta-badge{background-color:#cce5ff;color:#004973;margin:0 0 0 2px}.yoast-feature{margin-left:150px;max-width:600px}.yoast-toggle__item{border-bottom:1px solid var(--yoast-color-border);display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:16px}.yoast-toggle__item-disabled{position:relative}.yoast-toggle__item-disabled .yoast-button.yoast-button--buy{right:100%;margin-right:32px;position:absolute;white-space:nowrap}.yoast-toggle__item-disabled .yoast-toggle,.yoast-toggle__item-disabled .yoast-toggle__item-title{opacity:.5}.yoast-toggle__item-title{align-items:center;display:flex;font-weight:700}input[type=checkbox].yoast-toggle__checkbox{-webkit-appearance:none;-moz-appearance:none;background-color:initial;border:0;box-shadow:none;height:23px;margin-right:8px;overflow:hidden;position:absolute;width:34px;z-index:1}input[type=checkbox].yoast-toggle__checkbox:checked:before{content:none}.yoast-toggle__switch{background-color:var(--yoast-color-inactive-grey);border-radius:8px;display:inline-block;height:14px;margin-right:8px;margin-left:8px;position:relative;width:34px}.yoast-toggle__checkbox:focus~.yoast-toggle__switch:before{box-shadow:var(--yoast-color-focus)}.yoast-toggle__switch:before{background-color:var(--yoast-color-inactive-grey-light);border:.5px solid #0000001a;border-radius:50%;box-shadow:0 1px 2px 0 #0006;box-sizing:border-box;content:"";height:20px;right:0;position:absolute;top:-3px;width:20px}.yoast-toggle,.yoast-toggle--inverse{align-items:center;display:grid;grid-template:1fr/repeat(3,auto);position:relative}.yoast-toggle--inverse>*,.yoast-toggle>*{grid-row:1}.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle--active{grid-column:1}.yoast-toggle__checkbox,.yoast-toggle__switch{grid-column:2}.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle--inactive{grid-column:3}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle__switch,.yoast-toggle--inverse .yoast-toggle__checkbox:not(:checked)~.yoast-toggle__switch{background-color:var(--yoast-color-active-light)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle__switch:before,.yoast-toggle--inverse .yoast-toggle__checkbox:not(:checked)~.yoast-toggle__switch:before{background-color:var(--yoast-color-active);right:auto;left:0}.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle__switch:before{right:0;left:auto}.yoast-toggle .yoast-toggle__checkbox~.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle__checkbox~.yoast-toggle--inactive{color:var(--yoast-color-default-darker)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle--inactive,.yoast-toggle .yoast-toggle__checkbox~.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle__checkbox~.yoast-toggle--active{color:var(--yoast-color-inactive-text)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle--active{color:var(--yoast-color-default-darker)}@media(max-width:400px){.yoast-feature{margin-left:0}.yoast-toggle__item-disabled{flex-wrap:wrap}.yoast-toggle__item-disabled .yoast-button.yoast-button--buy{margin-right:0;margin-top:8px;position:static}}css/dist/monorepo-2390.css000064400000101511147206602470011251 0ustar00:root{--yoast-border-default:1px solid #0003;--yoast-color-default:#404040;--yoast-color-default-darker:#303030;--yoast-color-primary:#a4286a;--yoast-color-secondary:#f7f7f7;--yoast-color-white:#fff;--yoast-color-green:#6ea029;--yoast-color-primary-darker:#7b1e50;--yoast-color-primary-lighter:#f5d6e6;--yoast-color-secondary-darker:#d9d9d9;--yoast-color-button-upsell:#fec228;--yoast-color-button-upsell-hover:#f2ae01;--yoast-color-dark:#303030;--yoast-color-sale:#fec228;--yoast-color-sale-darker:#feb601;--yoast-color-border:#0003;--yoast-color-label:#303030;--yoast-color-label-help:#707070;--yoast-color-active:#6ea029;--yoast-color-inactive:#dc3232;--yoast-color-inactive-text:#707070;--yoast-color-inactive-grey:#9e9e9e;--yoast-color-inactive-grey-light:#f1f1f1;--yoast-color-active-light:#b6cf94;--yoast-transition-default:all 150ms ease-out;--yoast-color-link:#006dac;--yoast-color-border--default:#0003;--yoast-color-focus:0 0 0 2px #007fff,0 0 0 5px #bfdfff;--yoast-svg-icon-chevron-down:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-chevron-up:url('data:image/svg+xml;charset=utf-8,');--yoast-checkmark--white:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23FFF' viewBox='0 0 512 512'%3E%3Cpath d='m173.898 439.404-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001'/%3E%3C/svg%3E");--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23m-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23m640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' viewBox='0 0 1792 1792'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' aria-hidden='true' viewBox='0 0 192 512'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960M944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34m848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136m0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136m1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5M384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136m1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5m0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5'/%3E%3C/svg%3E");--yoast-svg-icon-key:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-edit:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1792' height='1792' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218M1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url('data:image/svg+xml;charset=utf-8,');--yoast-checkmark--green:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%236EA029' viewBox='0 0 512 512'%3E%3Cpath d='m173.898 439.404-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001'/%3E%3C/svg%3E");--yoast-exclamation-mark:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23DC3232' viewBox='0 0 512 512'%3E%3Cpath d='M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248m-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46m-43.673-165.346 7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654'/%3E%3C/svg%3E");--yoast-svg-icon-schema:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24m181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24m-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24M0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24m386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24m0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24M181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24'/%3E%3C/svg%3E");--yoast-svg-icon-schema-active:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' aria-hidden='true'%3E%3Cpath fill='D4444' d='M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24m181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24m-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24m-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24M0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24m386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24m0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24M181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24'/%3E%3C/svg%3E");--yoast-svg-icon-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='%23707070' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 16 4.586-4.586a2 2 0 0 1 2.828 0L16 16m-2-2 1.586-1.586a2 2 0 0 1 2.828 0L20 14m-6-6h.01M6 20h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2'/%3E%3C/svg%3E");--yoast-font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;--yoast-font-size-default:14px;--yoast-font-weight-default:400;--yoast-font-weight-bold:600;--yoast-color-font-default:#404040;--yoast-shadow-default:0px 3px 6px #00000026}.yoast-h1,.yoast-h2,.yoast-h3{color:var(--yoast-color-primary);font-weight:400;line-height:1.2;margin:0}.yoast-h1 a,.yoast-h2 a,.yoast-h3 a{color:var(--yoast-color-primary);text-decoration:none}.yoast-h1{font-size:24px}.yoast-h2{font-size:20px}.yoast-h3{font-size:16px}.yoast-paragraph{font-size:var(--yoast-font-size-default);margin-top:0}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);margin:-1px;padding:0}.screen-reader-text,.visually-hidden{height:1px;overflow:hidden;position:absolute;width:1px}.visually-hidden{clip:rect(1px,1px,1px,1px);word-wrap:normal;white-space:nowrap}@media (max-width:782px){.yoast-show-on-mobile{display:initial!important}}@media (min-width:782px){.yoast-hide-on-desktop{display:none}}.yoast-field-group__title-separator{display:flex;flex-wrap:wrap}.yoast-field-group__title-separator label{align-items:center;border:var(--yoast-border-default);box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;height:42px;justify-content:center;margin:0 6px 6px 0;width:42px}.yoast-field-group__title-separator input[type=radio]:checked+label{border:3px solid var(--yoast-color-primary)}.yoast .yoast-button{align-items:center;border:1px solid #0003;border-radius:4px;box-shadow:inset 0 -2px 0 #0000001a;cursor:pointer;display:inline-flex;font-size:14px;justify-content:center;line-height:1.2;padding:10px 12px 12px;position:relative;text-decoration:none;transition:background-color .15s ease-out 0s}.yoast .yoast-button:focus,.yoast-close:focus,.yoast-hide:focus,.yoast-remove:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast .yoast-button::-moz-focus-inner,.yoast-close::-moz-focus-inner,.yoast-hide::-moz-focus-inner,.yoast-remove::-moz-focus-inner{border:0}.yoast .yoast-button:not(:disabled):active{box-shadow:none;top:2px}.yoast .yoast-button:disabled{cursor:default;opacity:.5}.yoast .yoast-button--primary{background-color:var(--yoast-color-primary)}.yoast .yoast-button--primary,.yoast .yoast-button--primary:visited{border:1px solid #0003;color:var(--yoast-color-white)}.yoast .yoast-button--primary:active,.yoast .yoast-button--primary:not(:disabled):hover{background-color:var(--yoast-color-primary-darker);border:1px solid #0003;color:var(--yoast-color-white)}.yoast .yoast-button--primary:focus{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast .yoast-button--secondary{background-color:var(--yoast-color-secondary);box-shadow:inset 0 -2px 0 #0000001a;color:var(--yoast-color-dark)}.yoast .yoast-button--secondary:visited{color:var(--yoast-color-dark)}.yoast .yoast-button--secondary:active,.yoast .yoast-button--secondary:not(:disabled):hover{background-color:var(--yoast-color-secondary-darker);border:1px solid #0003;color:var(--yoast-color-dark)}.yoast .yoast-button--buy{background-color:var(--yoast-color-sale)}.yoast .yoast-button--buy,.yoast .yoast-button--buy:visited{color:var(--yoast-color-dark)}.yoast .yoast-button--buy:active,.yoast .yoast-button--buy:not(:disabled):hover{background-color:var(--yoast-color-sale-darker);color:var(--yoast-color-dark)}.yoast .yoast-button--buy__caret{height:16px;margin:0 -2px 0 6px;-webkit-mask-image:var(--yoast-svg-icon-caret-right);mask-image:var(--yoast-svg-icon-caret-right);width:6px}.yoast .yoast-button--buy__caret,.yoast .yoast-button--edit{background-color:currentColor;display:inline-block;flex-shrink:0}.yoast .yoast-button--edit{height:18px;margin-right:8px;-webkit-mask-image:var(--yoast-svg-icon-edit);mask-image:var(--yoast-svg-icon-edit);width:20.25px}html[dir=rtl] .yoast .yoast-button--edit{margin-left:8px;margin-right:0}html[dir=rtl] .yoast .yoast-button--buy{flex-direction:row-reverse}.yoast .yoast-button--small{font-size:13px;padding:5px 8px 8px}.yoast .yoast-button--small .yoast-button--buy__caret{height:10px;width:4px}.yoast-hide,.yoast-remove{background-color:initial;border:none;color:#dc3232;cursor:pointer;font-size:14px;padding:0;text-decoration:underline}.yoast-hide{color:var(--yoast-color-link)}.yoast-field-group__upload .yoast-button{margin-right:24px}.yoast-close{align-items:center;background:none;border:none;box-shadow:none;cursor:pointer;display:flex;height:44px;justify-content:center;padding:0;width:44px}.yoast-close svg{fill:var(--yoast-color-default);width:14px}@media screen and (max-width:782px){.yoast-close svg{width:10px}}.yoast-field-group__checkbox{align-items:center;display:flex}.yoast-field-group__checkbox:not(.yoast-field-group__checkbox--horizontal)+.yoast-field-group__checkbox{margin-top:4px}.yoast-field-group__checkbox label{cursor:pointer}.yoast-field-group__checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:2px;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:2px 8px 0 0;overflow:hidden;padding:2px;position:relative;transition:background-color .15s ease-out 0s;width:18px}.yoast-field-group__checkbox input[type=checkbox]:checked:focus,.yoast-field-group__checkbox input[type=checkbox]:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast label+input[type=checkbox]{margin-left:16px}.yoast-field-group__checkbox input[type=checkbox]:checked{background:var(--yoast-checkmark--white) var(--yoast-color-primary) no-repeat center /13px;border:1px solid var(--yoast-color-primary);box-shadow:none}.yoast-field-group__checkbox input[type=checkbox]:checked:before{content:""}.yoast-field-group{border:none;margin:0 0 24px;padding:0;position:relative}.yoast-field-group__title{align-items:center;color:var(--yoast-color-label);display:flex;font-size:var(--yoast-font-size-default);font-weight:var(--yoast-font-weight-bold);line-height:1.5;margin:0 0 8px;padding:0}.yoast-field-group__title.yoast-field-group__title--light{font-weight:var(--yoast-font-weight-default)}.yoast-field-group .field-group-description{margin:0 0 1em}.yoast-field-group__inline{align-items:center;display:flex}.yoast-field-group__inline .yoast-field-group__inputfield{margin-right:8px}.yoast-field-group__inline .yoast-button{flex-shrink:0}.yoast-field-group .components-form-token-field__label{display:none}@media screen and (max-width:782px){.yoast-field-group__inline{display:block}.yoast-field-group__inline .yoast-field-group__inputfield{margin-bottom:8px;margin-right:0}}.yoast-help{margin-left:4px}.yoast-help__icon svg{fill:var(--yoast-color-inactive-text);height:12px;transition:var(--yoast-transition-default);width:12px}.yoast-help:focus svg,.yoast-help:hover svg{fill:var(--yoast-color-link)}.yoast-data-model{list-style:none;padding:0}.yoast-data-model li{font-weight:var(--yoast-font-weight-bold);line-height:1.4;padding:0 8px;position:relative;z-index:2}.yoast-data-model span{float:right;font-weight:var(--yoast-font-weight-default)}.yoast-data-model li+li{margin-top:9px}.yoast-data-model li:after{background:#f5d6e6;content:"";height:20px;left:0;position:absolute;width:var(--yoast-width);z-index:-1}.yoast-image-select__preview{align-items:center;background-color:initial;border:1px solid #0003;display:flex;justify-content:center;max-height:200px;max-width:100%;min-height:165px;overflow:hidden;padding:0;width:300px}.yoast-image-select__preview--no-preview{background:var(--yoast-color-inactive-grey-light) var(--yoast-svg-icon-image) no-repeat center center /64px 64px}.yoast-image-select__preview.yoast-image-select__preview-has-warnings{margin-bottom:16px}.yoast-image-select__preview .yoast-image-select__preview--image{height:100%;max-width:100%;object-fit:contain}.yoast-image-select .yoast-field-group__inputfield{margin-bottom:1em}.yoast-image-select .yoast-button{margin-right:1.5em}.yoast-image-select{margin-bottom:1.7em;margin-top:1.7em}.yoast-image-select .yoast-image-select-buttons button{margin-top:1em}#organization-image-select .yoast-image-select{margin-top:0}:root{--yoast-color-placeholder:#707070}.yoast .yoast-field-group__inputfield,.yoast .yoast-field-group__textarea{background:var(--yoast-color-white);border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;box-sizing:border-box;font-size:var(--yoast-font-size-default);padding:8px;width:100%}.yoast .yoast-field-group__inputfield:focus,.yoast .yoast-field-group__textarea:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group__upload .yoast-field-group__inputfield{margin-bottom:8px}.yoast-field-group__inputfield{height:40px}.yoast-field-group__textarea{min-height:200px}.yoast input+.description,.yoast-field-group .description+.yoast-field-group__inputfield,.yoast-field-group .description+input,.yoast-field-group__inputfield+.description{margin-bottom:24px;margin-top:8px}.yoast .yoast-field-group__inputfield:disabled,.yoast .yoast-field-group__inputfield:read-only,.yoast .yoast-field-group__inputfield[aria-disabled=true]{background:var(--yoast-color-inactive-grey-light)}.yoast .duration-inputs__wrapper{display:flex;flex-direction:row}.yoast .duration-inputs__input-wrapper{display:flex;flex-direction:column}.yoast .duration-inputs__input{margin:0 8px 0 0;width:4em}::placeholder{color:var(--yoast-color-placeholder);opacity:1}.yoast-insights-row:not(:last-of-type){border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}.yoast-insights-row--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}@media(min-width:782px){.yoast-modal-content .yoast-insights-row{border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}}.yoast-insights-card__content{display:flex}.yoast-insights-card__score{flex-shrink:0;font-size:16px;margin-right:2em}.yoast-insights-card__amount{display:block;font-size:3.5em;line-height:1}.yoast-field-group__radiobutton{align-items:center;display:flex}.yoast-field-group__radiobutton--vertical:not(:last-of-type){margin-bottom:8px}.yoast-field-group__radiobutton label{cursor:pointer;margin-right:16px}.yoast-field-group__radiobutton input[type=radio]{-webkit-appearance:none;-moz-appearance:none;border:var(--yoast-border-default);border-radius:50%;box-shadow:inset 0 2px 4px #0000001a;cursor:pointer;height:18px;margin:0 8px 0 0;overflow:hidden;padding:2px;position:relative;transition:border-color .15s ease-out 0s;width:18px}.yoast-field-group__radiobutton input[type=radio]:checked:focus,.yoast-field-group__radiobutton input[type=radio]:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group__radiobutton input[type=radio]:checked{background-color:inherit;border-color:var(--yoast-color-primary)}.yoast-field-group__radiobutton input[type=radio]:checked:before{content:none}.yoast-field-group__radiobutton input[type=radio]:after{background-color:initial;border-radius:50%;content:"";display:block;height:10px;left:3px;position:absolute;top:3px;transition:background-color .15s ease-out 0s;width:10px}.yoast-field-group__radiobutton input[type=radio]:checked:after{background-color:var(--yoast-color-primary)}.yoast-field-group__select{align-items:center;cursor:pointer;display:flex}.yoast-select__indicator-separator{display:none}.yoast-select-container{background-color:#fff;border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;display:block;min-height:2.85em;padding:0;position:relative;width:100%}.yoast-select-container .yoast-select__control--is-focused{box-shadow:var(--yoast-color-focus);outline:none}.yoast-select-container .yoast-select__indicator>svg{color:#212121}.yoast-select-container .yoast-select__menu{margin:0;z-index:2}.yoast-select-container .yoast-select__multi-value__label{align-items:center;box-sizing:border-box;color:inherit;display:flex;font-size:14px;padding:0}.yoast-select-container .yoast-select__multi-value{background-color:var(--yoast-color-primary);border:0;border-radius:12px;color:var(--yoast-color-white);display:flex;flex-direction:row-reverse;font-weight:500;line-height:1.5;margin-bottom:3px;margin-right:8px;margin-top:3px;padding:1px 10px 2px}.yoast-select-container .yoast-select__menu-list{padding:0}.yoast-select-container .yoast-select__multi-value__remove{-webkit-box-align:center;align-items:center;border-radius:2px;box-sizing:border-box;display:flex;margin-right:6px;padding:2px 0 0}.yoast-select-container .yoast-select__multi-value__remove:hover{background-color:inherit;color:var(--yoast-color-white);cursor:pointer}.yoast-select-container .yoast-select__control{background-color:initial;border:none;border-radius:0}.yoast-select-container .yoast-select__option{box-sizing:border-box;color:inherit;cursor:default;display:block;padding:8px 12px;-webkit-user-select:none;user-select:none;width:100%}.yoast-select-container .yoast-select__option--is-focused{background-color:var(--yoast-color-primary-lighter);color:var(--yoast-color-font-default)}.yoast-select-container .yoast-select__option.yoast-select__option--is-selected{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast-select-container input[type=text]:focus{box-shadow:none}.yoast-field-group select,.yoast-field-group__select select{-webkit-appearance:none;-moz-appearance:none;background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,');background-position:right 15px center;background-repeat:no-repeat;background-size:13px auto;border:var(--yoast-border-default);border-radius:0;box-shadow:inset 0 2px 4px #0000001a;display:block;font-size:var(--yoast-font-size-default);max-width:300px;min-height:2.85em;padding:5px 8px;position:relative;width:100%}.yoast-field-group .yoast-select__value-container{padding:0 8px!important}.yoast-field-group select:focus,.yoast-field-group__select select:focus{box-shadow:var(--yoast-color-focus);outline:none}.yoast-field-group select,.yoast-field-group__select select{line-height:1.9;padding-right:40px}.yoast-field-group select.yoast-select--inline{display:inline-block}.yoast-field-group--inline{display:inline-block;margin-right:8px;max-width:300px;width:100%}.yoast-star-rating{display:inline-block;height:12px;width:65px}.yoast-star-rating span{background-repeat:repeat-x;background-size:13px 12px;height:100%;width:100%}.yoast-star-rating__placeholder{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAmCAQAAAAYCMGrAAAA+klEQVR4AcWV4cbtMBBFF0MIVUopoVSrhDDv/3gf/RFRpzdNOty1HiBO99mzeYWgCMZMKCPGrCgrxiSUhCkDeukxJKCXAUMiehkxw6FZhxEzmp0x4kCzByYISqlYdal0supS6WrVpdLEK0YSamJiJOPY0c/uOG4s6CcXfuKJaJcRzyNCQJsNiF1sRTR1hP11NNJ8RCrONOPRf+r7J+TZgQ5CNfMOYvW/2YxDqzqA/57+gVY9eiakrnyZEGXDsaE3p/4JScwPX3rtnZATDxnPWT7X16XAHaH8HWNrlxJD9TyGti5tCM84zpZe+RxNjeX9tZqLaGoMxN/P/wHP5Vw+8ZxnEQAAAABJRU5ErkJggg==);display:inline-block;overflow:hidden;position:relative}.yoast-star-rating__fill{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAmBAMAAABALxQTAAAAFVBMVEVMaXH4twP4twP4twP4twP4twP4twP7w8S/AAAAB3RSTlMAFv5uPpvQloUsTQAAAMFJREFUeAGE0TEOgzAMQFEXoDNiYC6/wFxxAsTADDkB5f6HqNRENXUi8TYiRfnY8lNXkjBOkuBWSeAhsYJOYiW9xO4MEqshkTbCSyIH7GLdgFasHHgmwkikZQD6OROZRG4Hxju8o/TNhbNhCqkOxaZDVKdxNnq/EjUS/A2o0PuXpyVeb9bjDWY9QSWXDQfBbtbjtWY9bM4sqfx+5yYt8wNcAFEzrGGkk5668KsFrKewPtQ3aFqh8WOnYZ+lIBQkgykAWk8rlAqcHfQAAAAASUVORK5CYII=);display:block}.yoast-table{border:var(--yoast-border-default);border-bottom:0;border-spacing:0;color:var(--yoast-color-default);font-size:var(--yoast-font-size-default);line-height:1.2;width:100%}.yoast-table tbody tr:nth-child(odd){background-color:#f9f9f9}.yoast-table th{color:var(--yoast-color-dark);font-weight:var(--yoast-font-weight-bold);text-align:left;white-space:nowrap}.yoast-table td,.yoast-table th{border-bottom:var(--yoast-border-default);padding:18px 12px}.yoast-table td:first-child,.yoast-table th:first-child{padding-left:16px}.yoast-table td:last-child,.yoast-table th:last-child{padding-right:16px}td.yoast-table__button,td.yoast-table__image{padding:10px 18px 9px}.yoast-table.yoast-table--nobreak td,td.yoast-table--nobreak,tr.yoast-table--nobreak td{white-space:nowrap}th.yoast-table--primary{width:100%}td.yoast-table--nopadding{padding:0 12px}.yoast-badge{border-radius:8px;display:inline-block;font-size:10px;font-weight:600;line-height:1.6;min-height:16px;padding:0 8px}.yoast-badge__in-label{margin-left:8px;vertical-align:text-top}.yoast-new-badge{background-color:#cce5ff;color:#004973}.yoast-premium-badge{background-color:#fff3cd;color:#674e00}.yoast-beta-badge{background-color:#cce5ff;color:#004973;margin:0 2px 0 0}.yoast-feature{margin-right:150px;max-width:600px}.yoast-toggle__item{border-bottom:1px solid var(--yoast-color-border);display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:16px}.yoast-toggle__item-disabled{position:relative}.yoast-toggle__item-disabled .yoast-button.yoast-button--buy{left:100%;margin-left:32px;position:absolute;white-space:nowrap}.yoast-toggle__item-disabled .yoast-toggle,.yoast-toggle__item-disabled .yoast-toggle__item-title{opacity:.5}.yoast-toggle__item-title{align-items:center;display:flex;font-weight:700}input[type=checkbox].yoast-toggle__checkbox{-webkit-appearance:none;-moz-appearance:none;background-color:initial;border:0;box-shadow:none;height:23px;margin-left:8px;overflow:hidden;position:absolute;width:34px;z-index:1}input[type=checkbox].yoast-toggle__checkbox:checked:before{content:none}.yoast-toggle__switch{background-color:var(--yoast-color-inactive-grey);border-radius:8px;display:inline-block;height:14px;margin-left:8px;margin-right:8px;position:relative;width:34px}.yoast-toggle__checkbox:focus~.yoast-toggle__switch:before{box-shadow:var(--yoast-color-focus)}.yoast-toggle__switch:before{background-color:var(--yoast-color-inactive-grey-light);border:.5px solid #0000001a;border-radius:50%;box-shadow:0 1px 2px 0 #0006;box-sizing:border-box;content:"";height:20px;left:0;position:absolute;top:-3px;width:20px}.yoast-toggle,.yoast-toggle--inverse{align-items:center;display:grid;grid-template:1fr/repeat(3,auto);position:relative}.yoast-toggle--inverse>*,.yoast-toggle>*{grid-row:1}.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle--active{grid-column:1}.yoast-toggle__checkbox,.yoast-toggle__switch{grid-column:2}.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle--inactive{grid-column:3}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle__switch,.yoast-toggle--inverse .yoast-toggle__checkbox:not(:checked)~.yoast-toggle__switch{background-color:var(--yoast-color-active-light)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle__switch:before,.yoast-toggle--inverse .yoast-toggle__checkbox:not(:checked)~.yoast-toggle__switch:before{background-color:var(--yoast-color-active);left:auto;right:0}.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle__switch:before{left:0;right:auto}.yoast-toggle .yoast-toggle__checkbox~.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle__checkbox~.yoast-toggle--inactive{color:var(--yoast-color-default-darker)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle--inactive,.yoast-toggle .yoast-toggle__checkbox~.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle--inactive,.yoast-toggle--inverse .yoast-toggle__checkbox~.yoast-toggle--active{color:var(--yoast-color-inactive-text)}.yoast-toggle .yoast-toggle__checkbox:checked~.yoast-toggle--active,.yoast-toggle--inverse .yoast-toggle__checkbox:checked~.yoast-toggle--active{color:var(--yoast-color-default-darker)}@media(max-width:400px){.yoast-feature{margin-right:0}.yoast-toggle__item-disabled{flex-wrap:wrap}.yoast-toggle__item-disabled .yoast-button.yoast-button--buy{margin-left:0;margin-top:8px;position:static}}css/dist/inside-editor-2390.css000064400000000152147206602470012151 0ustar00.yoast-text-mark{background-color:#e1bee7}.yoast-text-mark__highlight{background-color:#4a148c;color:#fff}css/dist/wpseo-dismissible-2390.css000064400000001352147206602470013057 0ustar00.yoast-notice-dismiss:before{-webkit-font-smoothing:antialiased!important;speak:none;background:none;color:#b4b9be;content:"\f153";display:block!important;font:normal 16px/1 dashicons;height:20px;text-align:center;width:20px}.yoast-notice-dismiss{background:none;border:none;color:#b4b9be;cursor:pointer;margin:0;padding:9px;position:absolute;right:1px;top:0}.yoast-notice-dismiss:before{left:0;line-height:20px;position:relative;top:0}.yoast-notice-dismiss:active:before,.yoast-notice-dismiss:focus:before,.yoast-notice-dismiss:hover:before{color:#c00}.yoast-notice-dismiss:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#c00;outline:none}.yoast-notice.is-dismissible{position:relative}.yoast-notice-dismiss{text-decoration:none}css/dist/ai-generator-2390-rtl.css000064400000000652147206602470012573 0ustar00.yst-replacevar__use-ai-button-upsell{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default)}.yst-replacevar__use-ai-button-upsell:hover{background-color:#fff;border-color:var(--yoast-color-border--default);color:#000}css/dist/tooltips-2390.css000064400000007143147206602470011276 0ustar00.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{word-wrap:break-word;-webkit-font-smoothing:subpixel-antialiased;background:#000c;border-radius:3px;color:#fff;content:attr(aria-label);display:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;letter-spacing:normal;opacity:0;padding:6px 8px 5px;pointer-events:none;position:absolute;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;white-space:pre;z-index:1000000}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{border:5px solid #0000;color:#000c;content:"\00a0";display:none;height:0;opacity:0;pointer-events:none;position:absolute;width:0;z-index:1000001}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{animation-duration:.1s;animation-fill-mode:forwards;animation-name:yoast-tooltip-appear;animation-timing-function:ease-in;display:inline-block;text-decoration:none}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{animation:none;opacity:1}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{margin-top:5px;right:50%;top:100%}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{border-bottom-color:#000c;bottom:-5px;margin-right:-5px;right:50%;top:auto}.yoast-tooltip-se:after{left:50%;margin-left:-15px;right:auto}.yoast-tooltip-sw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{bottom:100%;margin-bottom:5px;right:50%}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{border-top-color:#000c;bottom:auto;margin-right:-5px;right:50%;top:-5px}.yoast-tooltip-ne:after{left:50%;margin-left:-15px;right:auto}.yoast-tooltip-nw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(50%)}.yoast-tooltip-w:after{bottom:50%;margin-right:5px;right:100%;transform:translateY(50%)}.yoast-tooltip-w:before{border-left-color:#000c;bottom:50%;left:-5px;margin-top:-5px;top:50%}.yoast-tooltip-e:after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.yoast-tooltip-e:before{border-right-color:#000c;bottom:50%;margin-top:-5px;right:-5px;top:50%}.yoast-tooltip-multiline:after{word-wrap:normal;border-collapse:initial;max-width:250px;white-space:pre-line;width:250px;width:max-content;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{left:50%;right:auto;transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w:after{margin-right:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}css/dist/tailwind-2390-rtl.css000064400000410162147206602470012032 0ustar00.yst-root *,.yst-root :after,.yst-root :before{border:0 solid #e5e7eb;box-sizing:border-box}.yst-root :after,.yst-root :before{--tw-content:""}.yst-root{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;margin:0;tab-size:4}.yst-root hr{border-top-width:1px;color:inherit;height:0}.yst-root abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.yst-root h1,.yst-root h2,.yst-root h3,.yst-root h4,.yst-root h5,.yst-root h6{font-size:inherit;font-weight:inherit}.yst-root a{color:inherit;text-decoration:inherit}.yst-root b,.yst-root strong{font-weight:bolder}.yst-root code,.yst-root kbd,.yst-root pre,.yst-root samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}.yst-root small{font-size:80%}.yst-root sub,.yst-root sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}.yst-root sub{bottom:-.25em}.yst-root sup{top:-.5em}.yst-root table{border-collapse:collapse;border-color:inherit;text-indent:0}.yst-root button,.yst-root input,.yst-root optgroup,.yst-root select,.yst-root textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}.yst-root button,.yst-root select{text-transform:none}.yst-root [type=button],.yst-root [type=reset],.yst-root [type=submit],.yst-root button{-webkit-appearance:button;background-color:initial;background-image:none}.yst-root :-moz-focusring{outline:auto}.yst-root :-moz-ui-invalid{box-shadow:none}.yst-root progress{vertical-align:initial}.yst-root ::-webkit-inner-spin-button,.yst-root ::-webkit-outer-spin-button{height:auto}.yst-root [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.yst-root ::-webkit-search-decoration{-webkit-appearance:none}.yst-root ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.yst-root summary{display:list-item}.yst-root blockquote,.yst-root dd,.yst-root dl,.yst-root figure,.yst-root h1,.yst-root h2,.yst-root h3,.yst-root h4,.yst-root h5,.yst-root h6,.yst-root hr,.yst-root p,.yst-root pre{margin:0}.yst-root fieldset{margin:0;padding:0}.yst-root legend{padding:0}.yst-root menu,.yst-root ol,.yst-root ul{list-style:none;margin:0;padding:0}.yst-root textarea{resize:vertical}.yst-root input::placeholder,.yst-root textarea::placeholder{color:#6b7280;opacity:1}.yst-root [role=button],.yst-root button{cursor:pointer}.yst-root :disabled{cursor:default}.yst-root audio,.yst-root canvas,.yst-root embed,.yst-root iframe,.yst-root img,.yst-root object,.yst-root svg,.yst-root video{display:block;vertical-align:middle}.yst-root img,.yst-root video{height:auto;max-width:100%}.yst-root [type=date],.yst-root [type=datetime-local],.yst-root [type=email],.yst-root [type=month],.yst-root [type=number],.yst-root [type=password],.yst-root [type=search],.yst-root [type=tel],.yst-root [type=text],.yst-root [type=time],.yst-root [type=url],.yst-root [type=week]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root [type=date]:focus,.yst-root [type=datetime-local]:focus,.yst-root [type=email]:focus,.yst-root [type=month]:focus,.yst-root [type=number]:focus,.yst-root [type=password]:focus,.yst-root [type=search]:focus,.yst-root [type=tel]:focus,.yst-root [type=text]:focus,.yst-root [type=time]:focus,.yst-root [type=url]:focus,.yst-root [type=week]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=date]::placeholder,.yst-root [type=datetime-local]::placeholder,.yst-root [type=email]::placeholder,.yst-root [type=month]::placeholder,.yst-root [type=number]::placeholder,.yst-root [type=password]::placeholder,.yst-root [type=search]::placeholder,.yst-root [type=tel]::placeholder,.yst-root [type=text]::placeholder,.yst-root [type=time]::placeholder,.yst-root [type=url]::placeholder,.yst-root [type=week]::placeholder{color:#6b7280;opacity:1}.yst-root [type=date]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=datetime-local]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=email]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=month]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=number]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=password]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=search]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=tel]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=text]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=time]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=url]::-webkit-datetime-edit-fields-wrapper,.yst-root [type=week]::-webkit-datetime-edit-fields-wrapper{padding:0}.yst-root [type=date]::-webkit-date-and-time-value,.yst-root [type=datetime-local]::-webkit-date-and-time-value,.yst-root [type=email]::-webkit-date-and-time-value,.yst-root [type=month]::-webkit-date-and-time-value,.yst-root [type=number]::-webkit-date-and-time-value,.yst-root [type=password]::-webkit-date-and-time-value,.yst-root [type=search]::-webkit-date-and-time-value,.yst-root [type=tel]::-webkit-date-and-time-value,.yst-root [type=text]::-webkit-date-and-time-value,.yst-root [type=time]::-webkit-date-and-time-value,.yst-root [type=url]::-webkit-date-and-time-value,.yst-root [type=week]::-webkit-date-and-time-value{min-height:1.5em}.yst-root [type=date]::-webkit-datetime-edit,.yst-root [type=date]::-webkit-datetime-edit-day-field,.yst-root [type=date]::-webkit-datetime-edit-hour-field,.yst-root [type=date]::-webkit-datetime-edit-meridiem-field,.yst-root [type=date]::-webkit-datetime-edit-millisecond-field,.yst-root [type=date]::-webkit-datetime-edit-minute-field,.yst-root [type=date]::-webkit-datetime-edit-month-field,.yst-root [type=date]::-webkit-datetime-edit-second-field,.yst-root [type=date]::-webkit-datetime-edit-year-field,.yst-root [type=datetime-local]::-webkit-datetime-edit,.yst-root [type=datetime-local]::-webkit-datetime-edit-day-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-hour-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-meridiem-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-millisecond-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-minute-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-month-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-second-field,.yst-root [type=datetime-local]::-webkit-datetime-edit-year-field,.yst-root [type=email]::-webkit-datetime-edit,.yst-root [type=email]::-webkit-datetime-edit-day-field,.yst-root [type=email]::-webkit-datetime-edit-hour-field,.yst-root [type=email]::-webkit-datetime-edit-meridiem-field,.yst-root [type=email]::-webkit-datetime-edit-millisecond-field,.yst-root [type=email]::-webkit-datetime-edit-minute-field,.yst-root [type=email]::-webkit-datetime-edit-month-field,.yst-root [type=email]::-webkit-datetime-edit-second-field,.yst-root [type=email]::-webkit-datetime-edit-year-field,.yst-root [type=month]::-webkit-datetime-edit,.yst-root [type=month]::-webkit-datetime-edit-day-field,.yst-root [type=month]::-webkit-datetime-edit-hour-field,.yst-root [type=month]::-webkit-datetime-edit-meridiem-field,.yst-root [type=month]::-webkit-datetime-edit-millisecond-field,.yst-root [type=month]::-webkit-datetime-edit-minute-field,.yst-root [type=month]::-webkit-datetime-edit-month-field,.yst-root [type=month]::-webkit-datetime-edit-second-field,.yst-root [type=month]::-webkit-datetime-edit-year-field,.yst-root [type=number]::-webkit-datetime-edit,.yst-root [type=number]::-webkit-datetime-edit-day-field,.yst-root [type=number]::-webkit-datetime-edit-hour-field,.yst-root [type=number]::-webkit-datetime-edit-meridiem-field,.yst-root [type=number]::-webkit-datetime-edit-millisecond-field,.yst-root [type=number]::-webkit-datetime-edit-minute-field,.yst-root [type=number]::-webkit-datetime-edit-month-field,.yst-root [type=number]::-webkit-datetime-edit-second-field,.yst-root [type=number]::-webkit-datetime-edit-year-field,.yst-root [type=password]::-webkit-datetime-edit,.yst-root [type=password]::-webkit-datetime-edit-day-field,.yst-root [type=password]::-webkit-datetime-edit-hour-field,.yst-root [type=password]::-webkit-datetime-edit-meridiem-field,.yst-root [type=password]::-webkit-datetime-edit-millisecond-field,.yst-root [type=password]::-webkit-datetime-edit-minute-field,.yst-root [type=password]::-webkit-datetime-edit-month-field,.yst-root [type=password]::-webkit-datetime-edit-second-field,.yst-root [type=password]::-webkit-datetime-edit-year-field,.yst-root [type=search]::-webkit-datetime-edit,.yst-root [type=search]::-webkit-datetime-edit-day-field,.yst-root [type=search]::-webkit-datetime-edit-hour-field,.yst-root [type=search]::-webkit-datetime-edit-meridiem-field,.yst-root [type=search]::-webkit-datetime-edit-millisecond-field,.yst-root [type=search]::-webkit-datetime-edit-minute-field,.yst-root [type=search]::-webkit-datetime-edit-month-field,.yst-root [type=search]::-webkit-datetime-edit-second-field,.yst-root [type=search]::-webkit-datetime-edit-year-field,.yst-root [type=tel]::-webkit-datetime-edit,.yst-root [type=tel]::-webkit-datetime-edit-day-field,.yst-root [type=tel]::-webkit-datetime-edit-hour-field,.yst-root [type=tel]::-webkit-datetime-edit-meridiem-field,.yst-root [type=tel]::-webkit-datetime-edit-millisecond-field,.yst-root [type=tel]::-webkit-datetime-edit-minute-field,.yst-root [type=tel]::-webkit-datetime-edit-month-field,.yst-root [type=tel]::-webkit-datetime-edit-second-field,.yst-root [type=tel]::-webkit-datetime-edit-year-field,.yst-root [type=text]::-webkit-datetime-edit,.yst-root [type=text]::-webkit-datetime-edit-day-field,.yst-root [type=text]::-webkit-datetime-edit-hour-field,.yst-root [type=text]::-webkit-datetime-edit-meridiem-field,.yst-root [type=text]::-webkit-datetime-edit-millisecond-field,.yst-root [type=text]::-webkit-datetime-edit-minute-field,.yst-root [type=text]::-webkit-datetime-edit-month-field,.yst-root [type=text]::-webkit-datetime-edit-second-field,.yst-root [type=text]::-webkit-datetime-edit-year-field,.yst-root [type=time]::-webkit-datetime-edit,.yst-root [type=time]::-webkit-datetime-edit-day-field,.yst-root [type=time]::-webkit-datetime-edit-hour-field,.yst-root [type=time]::-webkit-datetime-edit-meridiem-field,.yst-root [type=time]::-webkit-datetime-edit-millisecond-field,.yst-root [type=time]::-webkit-datetime-edit-minute-field,.yst-root [type=time]::-webkit-datetime-edit-month-field,.yst-root [type=time]::-webkit-datetime-edit-second-field,.yst-root [type=time]::-webkit-datetime-edit-year-field,.yst-root [type=url]::-webkit-datetime-edit,.yst-root [type=url]::-webkit-datetime-edit-day-field,.yst-root [type=url]::-webkit-datetime-edit-hour-field,.yst-root [type=url]::-webkit-datetime-edit-meridiem-field,.yst-root [type=url]::-webkit-datetime-edit-millisecond-field,.yst-root [type=url]::-webkit-datetime-edit-minute-field,.yst-root [type=url]::-webkit-datetime-edit-month-field,.yst-root [type=url]::-webkit-datetime-edit-second-field,.yst-root [type=url]::-webkit-datetime-edit-year-field,.yst-root [type=week]::-webkit-datetime-edit,.yst-root [type=week]::-webkit-datetime-edit-day-field,.yst-root [type=week]::-webkit-datetime-edit-hour-field,.yst-root [type=week]::-webkit-datetime-edit-meridiem-field,.yst-root [type=week]::-webkit-datetime-edit-millisecond-field,.yst-root [type=week]::-webkit-datetime-edit-minute-field,.yst-root [type=week]::-webkit-datetime-edit-month-field,.yst-root [type=week]::-webkit-datetime-edit-second-field,.yst-root [type=week]::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}.yst-root textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root textarea::placeholder{color:#6b7280;opacity:1}.yst-root select{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root select:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:left .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-left:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.yst-root select[multiple]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root select[multiple]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=checkbox]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-radius:0;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}.yst-root [type=checkbox]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=checkbox]:checked,.yst-root [type=checkbox]:checked:focus,.yst-root [type=checkbox]:checked:hover,.yst-root [type=checkbox]:indeterminate{background-color:currentColor;border-color:#0000}.yst-root [type=checkbox]:indeterminate{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=checkbox]:indeterminate:focus,.yst-root [type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}.yst-root [type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:#6b7280;border-radius:100%;border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1rem}.yst-root [type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000;outline-offset:2px}.yst-root [type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%}.yst-root [type=radio]:checked,.yst-root [type=radio]:checked:focus,.yst-root [type=radio]:checked:hover{background-color:currentColor;border-color:#0000}.yst-root{--tw-text-opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:rgb(71 85 105/var(--tw-text-opacity));font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:.8125rem;font-weight:400;line-height:1.5}.yst-root a{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));-webkit-text-decoration-line:underline;text-decoration-line:underline}.yst-root a:visited{color:#a61e69}.yst-root a:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.yst-root a:hover:visited{color:#b94986}.yst-root a:focus{--tw-text-opacity:1;border-radius:.125rem;color:rgb(99 102 241/var(--tw-text-opacity));outline-color:#4f46e5;outline-offset:1px;outline-style:solid}.yst-root [type=date]::placeholder,.yst-root [type=datetime-local]::placeholder,.yst-root [type=email]::placeholder,.yst-root [type=month]::placeholder,.yst-root [type=number]::placeholder,.yst-root [type=password]::placeholder,.yst-root [type=search]::placeholder,.yst-root [type=tel]::placeholder,.yst-root [type=text]::placeholder,.yst-root [type=time]::placeholder,.yst-root [type=url]::placeholder,.yst-root [type=week]::placeholder,.yst-root textarea::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}.yst-root svg path{stroke-width:inherit}.yst-root .yst-radio__input,.yst-root a:focus{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-radio__input{transition-property:none}.yst-root .yst-radio__input:checked:before{content:var(--tw-content);display:none}.yst-root .yst-modal{z-index:100000!important}.yst-root dd,.yst-root li{margin-bottom:0}.yst-root input[type=date],.yst-root input[type=datetime-local],.yst-root input[type=datetime],.yst-root input[type=email],.yst-root input[type=month],.yst-root input[type=number],.yst-root input[type=password],.yst-root input[type=search],.yst-root input[type=tel],.yst-root input[type=text],.yst-root input[type=time],.yst-root input[type=url],.yst-root input[type=week]{min-height:0}.yst-root input[type=checkbox]{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);min-height:0;min-width:0;transition-property:none}.yst-root input[type=checkbox]:before{--tw-content:none;content:var(--tw-content)}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.yst-root .yst-alert{border-radius:.375rem;display:flex;gap:.75rem;padding:1rem}.yst-root .yst-alert--info{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.yst-root .yst-alert--info .yst-alert__message{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.yst-root .yst-alert--warning{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.yst-root .yst-alert--warning .yst-alert__message{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity))}.yst-root .yst-alert--success{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.yst-root .yst-alert--success .yst-alert__message{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity))}.yst-root .yst-alert--error{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.yst-root .yst-alert--error .yst-alert__message{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity))}.yst-root .yst-alert__icon{flex-grow:0;flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-autocomplete{position:relative}.yst-root .yst-autocomplete--error .yst-autocomplete__button{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity))}.yst-root .yst-autocomplete--error .yst-autocomplete__button:focus{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity));border-color:rgb(239 68 68/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete--error .yst-autocomplete__input::placeholder{--tw-placeholder-opacity:1;color:rgb(252 165 165/var(--tw-placeholder-opacity))}.yst-root .yst-autocomplete--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-autocomplete--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete--disabled .yst-autocomplete__input{cursor:not-allowed}.yst-root .yst-autocomplete--disabled .yst-autocomplete__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete--disabled .yst-autocomplete__button{cursor:not-allowed}.yst-root .yst-autocomplete--disabled .yst-autocomplete__button:focus-within{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));border-color:rgb(226 232 240/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__button{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;padding-right:.75rem;padding-left:.75rem;width:100%}.yst-root .yst-autocomplete__button:focus-within{--tw-border-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:1.25rem;pointer-events:none;position:absolute;left:.625rem;top:.6875rem;width:1.25rem}.yst-root .yst-autocomplete__input{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem 0 .5rem 2.5rem;width:100%}.yst-root .yst-autocomplete__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-autocomplete__options{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.8125rem;margin-top:.25rem;max-height:15rem;overflow:auto;position:absolute;width:100%;z-index:20}.yst-root .yst-autocomplete__options:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-autocomplete__option{--tw-text-opacity:1;align-items:center;color:rgb(51 65 85/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;padding:.5rem .75rem;position:relative;-webkit-user-select:none;user-select:none}.yst-root .yst-autocomplete__option--active{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yst-root .yst-autocomplete__option--selected{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-select__option-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yst-root .yst-autocomplete__option-check{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-badge{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(219 234 254/var(--tw-bg-opacity));border-radius:9999px;color:rgb(30 64 175/var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;line-height:1.25;padding:.125rem .5rem;vertical-align:middle;white-space:nowrap}.yst-root .yst-badge--info{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity));color:rgb(30 58 138/var(--tw-text-opacity))}.yst-root .yst-badge--upsell{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-badge--plain{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-badge--small{font-size:.675rem}.yst-root .yst-badge--large{font-size:1rem;padding-right:.75rem;padding-left:.75rem}.yst-root .yst-button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:#0000;align-items:center;border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;justify-content:center;line-height:1.25rem;padding:.5rem .75rem;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none}.yst-root .yst-button:focus{outline-color:#a61e69;outline-offset:2px;outline-style:solid;outline-width:2px}.yst-root a.yst-button:focus{border-radius:.375rem}.yst-root .yst-button--primary{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:#0000;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--primary:visited{color:#fff}.yst-root .yst-button--primary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(143 15 87/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--primary:hover:visited{color:#fff}.yst-root .yst-button--primary:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--secondary{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}.yst-root .yst-button--secondary:visited{color:#1e293b}.yst-root .yst-button--secondary:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}.yst-root .yst-button--secondary:hover:visited{color:#1e293b}.yst-root .yst-button--secondary:focus{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--tertiary{--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:initial;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-button--tertiary:visited{color:#83084e}.yst-root .yst-button--tertiary:hover{--tw-text-opacity:1;color:rgb(131 8 78/var(--tw-text-opacity))}.yst-root .yst-button--tertiary:hover:visited{color:#83084e}.yst-root .yst-button--tertiary:focus{--tw-text-opacity:1;color:rgb(131 8 78/var(--tw-text-opacity));outline-color:#8f0f57}.yst-root .yst-button--error{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity));border-color:#0000;color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--error:visited{color:#fff}.yst-root .yst-button--error:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-button--error:hover:visited{color:#fff}.yst-root .yst-button--error:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));outline-color:#dc2626}.yst-root .yst-button--upsell{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(252 211 77/var(--tw-bg-opacity));border-color:#0000;color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-button--upsell:visited{color:#78350f}.yst-root .yst-button--upsell:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-button--upsell:hover:visited{color:#78350f}.yst-root .yst-button--upsell:focus{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity));outline-color:#fbbf24}.yst-root .yst-button--large{font-size:.875rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root .yst-button--extra-large{font-size:1rem;line-height:1.5rem;padding:.625rem .875rem}.yst-root .yst-button--small{font-size:.75rem;line-height:1rem;padding:.375rem .625rem}.yst-root .yst-button--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-button--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-checkbox{align-items:center;display:flex}.yst-root .yst-checkbox--disabled .yst-checkbox__input,.yst-root .yst-checkbox--disabled .yst-checkbox__label{cursor:not-allowed;opacity:.5}.yst-root .yst-checkbox__input{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.25rem;color:rgb(166 30 105/var(--tw-text-opacity));height:1rem;width:1rem}.yst-root .yst-checkbox__input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-checkbox__label{margin-right:.75rem}.yst-root .yst-code{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:.25rem;color:rgb(15 23 42/var(--tw-text-opacity));display:inline-block;font-size:.75rem;line-height:1.25;margin:0;padding:.25rem}.yst-root .yst-code--block{display:block;margin-bottom:.5rem;margin-top:.5rem;max-width:100%;overflow-x:auto;padding:.25rem .5rem;white-space:nowrap}.yst-root .yst-file-input{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border:2px dashed rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;padding:1.25rem 1.5rem 1.5rem;text-align:center;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:100%}.yst-root .yst-file-input.yst-is-drag-over{--tw-border-opacity:1;--tw-bg-opacity:1;background-color:rgb(250 243 247/var(--tw-bg-opacity));border-color:rgb(205 130 171/var(--tw-border-opacity))}.yst-root .yst-file-input.yst-is-drag-over .yst-file-input__content{pointer-events:none}.yst-root .yst-file-input.yst-is-drag-over .yst-file-input__icon{--tw-translate-y:-0.5rem;--tw-text-opacity:1;color:rgb(185 73 134/var(--tw-text-opacity));transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-file-input.yst-is-disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-file-input.yst-is-disabled .yst-file-input__select-label{cursor:not-allowed}.yst-root .yst-file-input__content{align-items:center;display:inline-flex;flex-direction:column;max-width:20rem}.yst-root .yst-file-input__content>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-file-input__content{text-align:center}.yst-root .yst-file-input__icon{stroke-width:1;--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:3rem;margin-right:auto;margin-left:auto;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:3rem}.yst-root .yst-file-input__icon>path{stroke-width:1}.yst-root .yst-file-input__input{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.yst-root .yst-file-input__input:focus+.yst-file-input__select-label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-file-input__labels{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:inline-block;font-weight:400}.yst-root .yst-file-input__select-label{border-radius:.375rem;font-weight:500}[dir=rtl] .yst-root .yst-file-input__labels{flex-direction:row-reverse}.yst-root .yst-label{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;font-weight:500}.yst-root .yst-link{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline}.yst-root .yst-link:visited{color:#a61e69}.yst-root .yst-link:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}.yst-root .yst-link:hover:visited{color:#b94986}.yst-root .yst-link:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(99 102 241/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-link--primary{--tw-text-opacity:1;color:rgb(154 22 96/var(--tw-text-opacity))}.yst-root .yst-link--primary:focus,.yst-root .yst-link--primary:hover{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-link--primary:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(154 22 96/var(--tw-ring-opacity))}.yst-root .yst-link--error{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.yst-root .yst-link--error:focus,.yst-root .yst-link--error:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-link--error:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(220 38 38/var(--tw-ring-opacity))}.yst-root .yst-paper{--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:flex;flex-direction:column}.yst-root .yst-paper__header{border-bottom-width:1px;padding:2rem}.yst-root .yst-paper__content{flex-grow:1;padding:2rem}.yst-root .yst-progress-bar{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;display:block;overflow:hidden;width:100%}.yst-root .yst-progress-bar__progress{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));border-radius:9999px;display:block;height:.375rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:linear}.yst-root .yst-radio{align-items:center;display:flex}.yst-root .yst-radio--disabled .yst-radio__check,.yst-root .yst-radio--disabled .yst-radio__input,.yst-root .yst-radio--disabled .yst-radio__label{cursor:not-allowed;opacity:.5}.yst-root .yst-radio--disabled .yst-radio__check:focus,.yst-root .yst-radio--disabled .yst-radio__input:focus,.yst-root .yst-radio--disabled .yst-radio__label:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block{display:inline-flex}.yst-root .yst-radio--inline-block .yst-radio__input{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.yst-root .yst-radio--inline-block .yst-radio__input:checked+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:#0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__input:checked+.yst-radio__content .yst-radio__check{visibility:visible}.yst-root .yst-radio--inline-block .yst-radio__input:focus+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__input:checked:focus+.yst-radio__content .yst-radio__label{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-offset-width:1px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-radio--inline-block .yst-radio__content{position:relative}.yst-root .yst-radio--inline-block .yst-radio__label{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.5rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:flex;font-size:1rem;height:3.5rem;justify-content:center;margin-right:0;width:3.5rem}.yst-root .yst-radio--inline-block .yst-radio__label:hover{--tw-border-opacity:1;border-color:rgb(148 163 184/var(--tw-border-opacity))}.yst-root .yst-radio--inline-block .yst-radio__label:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-radio--inline-block .yst-radio__check{--tw-text-opacity:1;color:rgb(154 22 96/var(--tw-text-opacity));height:1.25rem;position:absolute;left:.125rem;top:.125rem;visibility:hidden;width:1.25rem}.yst-root .yst-radio__input{--tw-border-opacity:1;--tw-text-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(166 30 105/var(--tw-text-opacity));height:1rem;width:1rem}.yst-root .yst-radio__input:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-radio__label{margin-right:.75rem}.yst-root .yst-select{position:relative}.yst-root .yst-select--disabled .yst-select__button,.yst-root .yst-select--disabled .yst-select__label{cursor:not-allowed;opacity:.5}.yst-root .yst-select__button{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;line-height:1.5rem;padding:.5rem .75rem;position:relative;text-align:right;width:100%}.yst-root .yst-select__button:focus{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-select__button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:1.25rem;pointer-events:none;position:absolute;left:.625rem;top:.625rem;width:1.25rem}.yst-root .yst-select__options{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.8125rem;margin-top:.25rem;max-height:15rem;overflow:auto;position:absolute;width:100%;z-index:10}.yst-root .yst-select__options:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-select__option{--tw-text-opacity:1;align-items:center;color:rgb(51 65 85/var(--tw-text-opacity));cursor:default;display:flex;justify-content:space-between;padding:.5rem .75rem;position:relative;-webkit-user-select:none;user-select:none}.yst-root .yst-select__option--active{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.yst-root .yst-select__option--selected{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(154 22 96/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.yst-root .yst-select__button-label,.yst-root .yst-select__option-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yst-root .yst-select__option-check{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-shrink:0;height:1.25rem;width:1.25rem}.yst-root .yst-skeleton-loader{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:.25rem;display:block;height:auto;overflow:hidden;position:relative;width:-moz-fit-content;width:fit-content}.yst-root .yst-skeleton-loader:after{--tw-translate-x:-100%;animation:wave 2.5s linear .5s infinite;background:linear-gradient(-90deg,#0000,#00000012,#0000);bottom:0;content:"";right:0;position:absolute;left:0;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes wave{0%{transform:translateX(100%)}50%,to{transform:translateX(-100%)}}.yst-root .yst-table-wrapper{border-radius:.5rem}.yst-root .yst-table-header:first-child{border-top-right-radius:.5rem}.yst-root .yst-table-header:last-child{border-top-left-radius:.5rem}.yst-root .yst-table-row:last-of-type .yst-table-cell:first-child{border-bottom-right-radius:.5rem}.yst-root .yst-table-row:last-of-type .yst-table-cell:last-child{border-bottom-left-radius:.5rem}.yst-root .yst-tag-input{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(30 41 59/var(--tw-text-opacity));display:flex;flex-wrap:wrap;font-size:.8125rem;gap:.375rem;line-height:1.5rem;padding:.5rem .75rem}.yst-root .yst-tag-input::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}.yst-root .yst-tag-input{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-tag-input,.yst-root .yst-tag-input:focus-within{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))}.yst-root .yst-tag-input--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-tag-input--disabled:focus-within{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:rgb(203 213 225/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input--disabled .yst-tag-input__tag{cursor:not-allowed}.yst-root .yst-tag-input--disabled .yst-tag-input__tag:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input--disabled .yst-tag-input__tag:focus,.yst-root .yst-tag-input--disabled .yst-tag-input__tag:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag{cursor:not-allowed}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.yst-root .yst-tag-input--disabled .yst-tag-input__remove-tag:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input--disabled .yst-tag-input__input{cursor:not-allowed}.yst-root .yst-tag-input__tag{cursor:pointer;gap:.125rem;min-height:20px;padding-inline-end:.125rem}.yst-root .yst-tag-input__tag:hover{--tw-border-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-tag-input__tag:focus,.yst-root .yst-tag-input__tag:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input__remove-tag{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;color:rgb(148 163 184/var(--tw-text-opacity));display:inline-flex;flex-shrink:0;height:1rem;justify-content:center;width:1rem}.yst-root .yst-tag-input__remove-tag:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity));color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-tag-input__remove-tag:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-tag-input__input{border-style:none;display:inline-flex;flex:1 1 0%;font-size:.8125rem;margin:0;padding:0}.yst-root .yst-tag-input__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-text-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem .75rem;width:100%}.yst-root .yst-text-input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-text-input--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-text-input--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-text-input--read-only{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;background-color:rgb(248 250 252/var(--tw-bg-opacity));border-color:rgb(226 232 240/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:rgb(100 116 139/var(--tw-text-opacity));cursor:default}.yst-root .yst-textarea{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-width:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;padding:.5rem .75rem;width:100%}.yst-root .yst-textarea:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-textarea--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-textarea--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-title{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity));font-weight:500;line-height:1.25}.yst-root .yst-title--1{font-size:1.5rem}.yst-root .yst-title--2{font-size:1.125rem}.yst-root .yst-title--3{font-size:.875rem}.yst-root .yst-title--4{font-size:1rem}.yst-root .yst-title--5{font-size:.8125rem}.yst-root .yst-toast{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);max-width:100%;overflow-y:auto;padding:1rem;pointer-events:auto;width:20rem;z-index:20}.yst-root .yst-toast--large{width:24rem}.yst-root .yst-toggle{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity));border-color:#0000;border-radius:9999px;border-width:2px;cursor:pointer;display:inline-flex;flex-shrink:0;height:1.5rem;position:relative;transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2.75rem}.yst-root .yst-toggle:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-toggle--checked{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity))}.yst-root .yst-toggle--checked .yst-toggle__handle{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-toggle--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-toggle--disabled:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-toggle__handle{--tw-translate-x:0px;--tw-bg-opacity:1;--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);align-items:center;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:9999px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:flex;height:1.25rem;justify-content:center;pointer-events:none;position:relative;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-duration:.2s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1.25rem}.yst-root .yst-toggle__icon{stroke:currentColor;stroke-width:2;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity));flex-grow:0;flex-shrink:0;height:.625rem;transition-duration:.1s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1);width:.625rem}.yst-root .yst-toggle__icon--check{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity))}.yst-root .yst-toggle__icon--x{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}[dir=rtl] .yst-root .yst-toggle--checked .yst-toggle__handle{--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity));border-radius:.5rem;color:rgb(255 255 255/var(--tw-text-opacity));display:inline-block;font-size:.75rem;max-width:24rem;padding:.5rem .625rem;position:absolute;white-space:normal;width:max-content;z-index:10}.yst-root .yst-tooltip--top{--tw-translate-x:-50%;--tw-translate-y:-100%;right:50%;margin-top:-.75rem;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--top:before{--tw-translate-x:-50%;--tw-translate-y:0px;--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-right-color:#0000;border-left-color:#0000;border-top-color:rgb(31 41 55/var(--tw-border-opacity));border-width:8px;content:var(--tw-content);position:absolute}.yst-root .yst-tooltip--bottom,.yst-root .yst-tooltip--top:before{right:50%;top:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--bottom{--tw-translate-x:-50%;--tw-translate-y:-0px;margin-top:.75rem}.yst-root .yst-tooltip--bottom:before{--tw-translate-x:-50%;--tw-border-opacity:1;--tw-content:"";border-bottom-color:rgb(31 41 55/var(--tw-border-opacity));border-right-color:#0000;border-left-color:#0000;border-top-color:#0000;border-width:8px;bottom:100%;content:var(--tw-content);right:50%;position:absolute;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--right{--tw-translate-x:-0px;right:100%;margin-right:.75rem}.yst-root .yst-tooltip--right,.yst-root .yst-tooltip--right:before{--tw-translate-y:-50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--right:before{--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-right-color:#0000;border-left-color:rgb(31 41 55/var(--tw-border-opacity));border-top-color:#0000;border-width:8px;content:var(--tw-content);position:absolute;left:100%}.yst-root .yst-tooltip--left{margin-left:.75rem;left:100%}.yst-root .yst-tooltip--left,.yst-root .yst-tooltip--left:before{--tw-translate-y:-50%;top:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.yst-root .yst-tooltip--left:before{--tw-border-opacity:1;--tw-content:"";border-bottom-color:#0000;border-right-color:rgb(31 41 55/var(--tw-border-opacity));border-left-color:#0000;border-top-color:#0000;border-width:8px;content:var(--tw-content);right:100%;position:absolute}.yst-root .yst-validation-icon{pointer-events:none}.yst-root .yst-validation-icon--success{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.yst-root .yst-validation-icon--info{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.yst-root .yst-validation-icon--warning{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity))}.yst-root .yst-validation-icon--error{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-validation-input{position:relative}.yst-root .yst-validation-input--success .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(134 239 172/var(--tw-ring-opacity));padding-left:2.5rem}.yst-root .yst-validation-input--success .yst-validation-input__input:focus,.yst-root .yst-validation-input--success .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity))}.yst-root .yst-validation-input--info .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253/var(--tw-ring-opacity));padding-left:2.5rem}.yst-root .yst-validation-input--info .yst-validation-input__input:focus,.yst-root .yst-validation-input--info .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.yst-root .yst-validation-input--warning .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity));padding-left:2.5rem}.yst-root .yst-validation-input--warning .yst-validation-input__input:focus,.yst-root .yst-validation-input--warning .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(245 158 11/var(--tw-ring-opacity))}.yst-root .yst-validation-input--error .yst-validation-input__input{--tw-ring-opacity:1;--tw-ring-color:rgb(252 165 165/var(--tw-ring-opacity));padding-left:2.5rem}.yst-root .yst-validation-input--error .yst-validation-input__input:focus,.yst-root .yst-validation-input--error .yst-validation-input__input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))}.yst-root .yst-validation-input__input:focus,.yst-root .yst-validation-input__input:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.yst-root .yst-validation-input__icon{height:1.25rem;position:absolute;left:.625rem;top:.6875rem;width:1.25rem}.yst-root .yst-validation-message a{color:inherit;font-weight:500}.yst-root .yst-validation-message a:visited:hover{color:inherit}.yst-root .yst-validation-message a:focus{--tw-ring-color:currentColor}.yst-root .yst-validation-message--success{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.yst-root .yst-validation-message--info{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.yst-root .yst-validation-message--warning{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity))}.yst-root .yst-validation-message--error{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__description,.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__label{opacity:.5}.yst-root .yst-autocomplete-field--disabled .yst-autocomplete-field__label{cursor:not-allowed}.yst-root .yst-autocomplete-field__description,.yst-root .yst-autocomplete-field__validation{margin-top:.5rem}.yst-root .yst-card{display:flex;flex-direction:column;position:relative}.yst-root .yst-card>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-card{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);overflow:hidden;padding:1.5rem;transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yst-root .yst-card__header{--tw-bg-opacity:1;align-items:center;background-color:rgb(243 244 246/var(--tw-bg-opacity));display:flex;height:6rem;justify-content:center;margin-right:-1.5rem;margin-left:-1.5rem;margin-top:-1.5rem;padding:1.5rem;position:relative}.yst-root .yst-card__content{flex-grow:1}.yst-root .yst-card__footer{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity));border-top-width:1px;padding-top:1.5rem}.yst-root .yst-checkbox-group--disabled .yst-checkbox-group__description,.yst-root .yst-checkbox-group--disabled .yst-checkbox-group__label{cursor:not-allowed;opacity:.5}.yst-root .yst-checkbox-group__label{margin-bottom:.5rem}.yst-root .yst-checkbox-group__options{display:flex;flex-direction:column;gap:.75rem}.yst-root .yst-checkbox-group__description{margin-bottom:1rem;margin-top:-.5rem}.yst-root .yst-feature-upsell{position:relative}.yst-root .yst-feature-upsell--default{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.yst-root .yst-feature-upsell--card{padding:1.5rem}.yst-root .yst-file-import>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-file-import__feedback{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:1rem}.yst-root .yst-file-import__feedback-header{align-items:flex-start;display:flex}.yst-root .yst-file-import__feedback-header>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-left:calc(1rem*var(--tw-space-x-reverse))}.yst-root .yst-file-import__feedback-figure{--tw-bg-opacity:1;align-items:center;background-color:rgb(243 229 237/var(--tw-bg-opacity));border-radius:9999px;display:flex;height:2rem;justify-content:center;width:2rem}.yst-root .yst-file-import__feedback-figure>svg{--tw-text-opacity:1;color:rgb(166 30 105/var(--tw-text-opacity));height:1.25rem;width:1.25rem}.yst-root .yst-file-import__feedback-title{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:block;font-weight:500;margin-bottom:.125rem;overflow-wrap:break-word}.yst-root .yst-file-import__feedback-description{display:block;font-size:.75rem;font-weight:500}.yst-root .yst-file-import__abort-button{--tw-bg-opacity:1;--tw-text-opacity:1;align-items:center;background-color:rgb(241 245 249/var(--tw-bg-opacity));border-radius:9999px;color:rgb(100 116 139/var(--tw-text-opacity));display:inline-flex;flex-shrink:0;height:1.25rem;justify-content:center;width:1.25rem}.yst-root .yst-file-import__abort-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(71 85 105/var(--tw-text-opacity))}.yst-root .yst-file-import__abort-button:focus{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}.yst-root .yst-file-import__abort-button>svg{height:.75rem;width:.75rem}.yst-root .yst-file-import__abort-button>svg>path{stroke-width:3}.yst-root .yst-modal{bottom:0;right:0;padding:1rem;position:fixed;left:0;top:0;z-index:10}@media (min-width:640px){.yst-root .yst-modal{padding:2rem}}@media (min-width:768px){.yst-root .yst-modal{padding:5rem}}.yst-root .yst-modal__layout{display:flex;min-height:100%}.yst-root .yst-modal--center .yst-modal__layout{align-items:center;justify-content:center}.yst-root .yst-modal--top-center .yst-modal__layout{align-items:flex-start;justify-content:center}.yst-root .yst-modal__overlay{--tw-bg-opacity:0.75;background-color:rgb(100 116 139/var(--tw-bg-opacity));bottom:0;right:0;position:fixed;left:0;top:0;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.yst-root .yst-modal__panel{--tw-bg-opacity:1;--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);max-width:36rem;overflow:hidden;padding:1.5rem;position:relative;width:100%}.yst-root .yst-modal__close{display:block;position:absolute;left:1rem;top:1rem}.yst-root .yst-modal__close-button{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;color:rgb(148 163 184/var(--tw-text-opacity));position:relative;z-index:10}.yst-root .yst-modal__close-button:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-modal__close-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-modal__container{display:flex;flex-direction:column;max-height:calc(100vh - 2rem)}@media (min-width:640px){.yst-root .yst-modal__container{max-height:calc(100vh - 4rem)}}@media (min-width:768px){.yst-root .yst-modal__container{max-height:calc(100vh - 10rem)}}.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 5rem)}@media (min-width:640px){.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 7rem)}}@media (min-width:768px){.yst-root .yst-modal__panel .yst-modal__container{max-height:calc(100vh - 13rem)}}.yst-root .yst-modal__container-footer,.yst-root .yst-modal__container-header{flex-shrink:0}.yst-root .yst-modal__container-content{overflow:auto}.yst-root .yst-modal__panel .yst-modal__container-content{margin-right:-1.5rem;margin-left:-1.5rem;padding-right:1.5rem;padding-left:1.5rem}.yst-root .yst-notifications{display:flex;flex-direction:column;max-height:calc(100vh - 4rem);max-width:calc(100vw - 4rem);pointer-events:none;position:fixed;width:100%;z-index:20}.yst-root .yst-notifications>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-notifications--bottom-center{align-items:center;bottom:2rem}.yst-root .yst-notifications--bottom-left{bottom:2rem;right:2rem}.yst-root .yst-notifications--top-center{align-items:center;top:2rem}.yst-root .yst-notification--large{width:24rem}.yst-root .yst-notification__icon{height:1.25rem;width:1.25rem}.yst-root .yst-pagination{display:inline-flex;isolation:isolate}.yst-root .yst-pagination>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px*(1 - var(--tw-space-x-reverse)));margin-left:calc(-1px*var(--tw-space-x-reverse))}.yst-root .yst-pagination{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.yst-root .yst-pagination-display__text{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(100 116 139/var(--tw-text-opacity));font-weight:400;padding:.5rem .75rem}.yst-root .yst-pagination-display__current-text{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity));font-weight:600}.yst-root .yst-pagination-display__truncated{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity));align-self:center;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(100 116 139/var(--tw-text-opacity));display:inline-flex;font-size:.8125rem;font-weight:600;padding:.5rem 1rem}.yst-root .yst-pagination__button{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-opacity:1;--tw-ring-color:rgb(203 213 225/var(--tw-ring-opacity));align-items:center;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(148 163 184/var(--tw-text-opacity));display:inline-flex;padding:.5rem;position:relative}.yst-root .yst-pagination__button:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.yst-root .yst-pagination__button:focus{outline-color:#a61e69;outline-offset:0;z-index:20}.yst-root .yst-pagination__button--active{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);background-color:rgb(166 30 105/var(--tw-bg-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(255 255 255/var(--tw-text-opacity));font-size:.8125rem;font-weight:600;z-index:10}.yst-root .yst-pagination__button--active:hover{--tw-bg-opacity:1;background-color:rgb(166 30 105/var(--tw-bg-opacity))}.yst-root .yst-pagination__button--active:focus{z-index:20}.yst-root .yst-pagination__button--active:focus-visible{border-radius:.125rem;outline-color:#a61e69;outline-offset:2px;outline-style:solid;outline-width:2px}.yst-root .yst-pagination__button--disabled{cursor:not-allowed;opacity:.5}.yst-root .yst-pagination__button--disabled:hover{background-color:initial}.yst-root .yst-pagination__button--disabled:focus{outline:2px solid #0000;outline-offset:2px}.yst-root .yst-radio-group--inline-block .yst-radio-group__options{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.yst-root .yst-radio-group--disabled .yst-radio-group__description,.yst-root .yst-radio-group--disabled .yst-radio-group__label{opacity:.5}.yst-root .yst-radio-group--disabled .yst-radio-group__label{cursor:not-allowed}.yst-root .yst-radio-group__label{margin-bottom:.5rem}.yst-root .yst-radio-group__options{display:flex;flex-direction:column;gap:.5rem}.yst-root .yst-radio-group__description{margin-bottom:1rem;margin-top:-.5rem}.yst-root .yst-select-field--disabled .yst-select-field__description,.yst-root .yst-select-field--disabled .yst-select-field__label{cursor:not-allowed;opacity:.5}.yst-root .yst-select-field__options{display:flex;flex-direction:column;gap:.75rem}.yst-root .yst-select-field__description,.yst-root .yst-select-field__validation{margin-top:.5rem}.yst-root .yst-mobile-navigation__top{position:sticky;top:0;width:100%;z-index:50}.yst-root .yst-mobile-navigation__dialog{bottom:0;display:flex;right:0;position:fixed;left:0;top:0;z-index:50}.yst-root .yst-mobile-navigation__dialog,.yst-root .yst-sidebar-navigation__sidebar{--yst-menu-text-color:#1e293b}.yst-root .yst-sidebar-navigation__list>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-sidebar-navigation__list--indented{--yst-menu-text-color:#475569;margin-right:2rem}.yst-root .yst-sidebar-navigation__item--active.yst-sidebar-navigation__collapsible-button,.yst-root .yst-sidebar-navigation__item--active.yst-sidebar-navigation__link{--tw-bg-opacity:1!important;--tw-text-opacity:1!important;background-color:rgb(226 232 240/var(--tw-bg-opacity))!important;color:rgb(15 23 42/var(--tw-text-opacity))!important}.yst-root .yst-sidebar-navigation__item--active .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__item{list-style-type:none}.yst-root .yst-sidebar-navigation__item>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.125rem*var(--tw-space-y-reverse));margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)))}.yst-root .yst-sidebar-navigation__item:first-child{margin-top:.125rem}.yst-root .yst-sidebar-navigation__collapsible~.yst-sidebar-navigation__collapsible{margin-top:.25rem}.yst-root .yst-sidebar-navigation__collapsible-button{align-items:center;border-radius:.375rem;color:var(--yst-menu-text-color);column-gap:.75rem;cursor:pointer;display:flex;font-size:.8125rem;font-weight:500;justify-content:center;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none;width:100%}.yst-root .yst-sidebar-navigation__collapsible-button:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__collapsible-button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root .yst-sidebar-navigation__link{align-items:center;border-radius:.375rem;color:var(--yst-menu-text-color);display:flex;font-size:.8125rem;font-weight:500;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none}.yst-root .yst-sidebar-navigation__link:hover{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}.yst-root .yst-sidebar-navigation__link:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}.yst-root a.yst-sidebar-navigation__link:visited{color:var(--yst-menu-text-color)}.yst-root a.yst-sidebar-navigation__link:hover:visited{color:#0f172a}.yst-root a.yst-sidebar-navigation__link:focus{border-radius:.375rem;color:var(--yst-menu-text-color)}.yst-root .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));flex-shrink:0}.yst-group:hover .yst-root .yst-sidebar-navigation__icon{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.yst-root .yst-tag-field--disabled .yst-tag-field__description,.yst-root .yst-tag-field--disabled .yst-tag-field__label{opacity:.5}.yst-root .yst-tag-field--disabled .yst-tag-field__label{cursor:not-allowed}.yst-root .yst-tag-field__description,.yst-root .yst-tag-field__validation{margin-top:.5rem}.yst-root .yst-text-field--disabled .yst-text-field__description,.yst-root .yst-text-field--disabled .yst-text-field__label{opacity:.5}.yst-root .yst-text-field--disabled .yst-text-field__label{cursor:not-allowed}.yst-root .yst-text-field--read-only .yst-text-field__label{cursor:default}.yst-root .yst-text-field__description,.yst-root .yst-text-field__validation{margin-top:.5rem}.yst-root .yst-textarea-field--disabled .yst-textarea-field__description,.yst-root .yst-textarea-field--disabled .yst-textarea-field__label{opacity:.5}.yst-root .yst-textarea-field--disabled .yst-textarea-field__label{cursor:not-allowed}.yst-root .yst-text-field--read-only .yst-textarea-field__label{cursor:default}.yst-root .yst-textarea-field__description,.yst-root .yst-textarea-field__validation{margin-top:.5rem}.yst-root .yst-toggle-field{display:flex;flex-direction:column;gap:.25rem}.yst-root .yst-toggle-field--disabled .yst-toggle-field__description,.yst-root .yst-toggle-field--disabled .yst-toggle-field__label-wrapper{opacity:.5}.yst-root .yst-toggle-field--disabled .yst-toggle-field__label,.yst-root .yst-toggle-field--disabled .yst-toggle-field__label-wrapper{cursor:not-allowed}.yst-root .yst-toggle-field__header{align-items:center;display:flex;flex-direction:row;gap:1.5rem;justify-content:space-between}.yst-root .yst-toggle-field__label-wrapper{align-items:center;display:flex;gap:.25rem}.yst-root .yst-toggle-field__description{margin-left:4.25rem}.yst-root .yst-difficulty--very-easy{--tw-bg-opacity:1;background-color:rgb(110 231 183/var(--tw-bg-opacity))}.yst-root .yst-difficulty--easy{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity))}.yst-root .yst-difficulty--possible{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity))}.yst-root .yst-difficulty--difficult{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.yst-root .yst-difficulty--hard{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity))}.yst-root .yst-difficulty--very-hard{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity))}.yst-root .yst-intent-badge{align-items:center;border-radius:.125rem;display:flex;font-size:.8125rem;font-weight:600;height:1.25rem;justify-content:center;position:relative;width:1.25rem}.yst-root .yst-intent-badge.yst-intent-badge--i{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity));color:rgb(30 58 138/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--n{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(221 214 254/var(--tw-bg-opacity));color:rgb(76 29 149/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--c{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity));color:rgb(120 53 15/var(--tw-text-opacity))}.yst-root .yst-intent-badge.yst-intent-badge--t{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(187 247 208/var(--tw-bg-opacity));color:rgb(20 83 45/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--secondary .yst-button-icon{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));height:.75rem;margin-right:-.25rem;margin-left:.375rem;width:.75rem}.yst-root .yst-table-button.yst-button--tertiary{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--tertiary:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.yst-root .yst-table-button.yst-button--tertiary .yst-button-icon{height:.875rem;margin-right:-.25rem;margin-left:.375rem;width:.875rem}.yst-root .yst-success-message{--tw-text-opacity:1;align-items:center;color:rgb(71 85 105/var(--tw-text-opacity));display:flex;font-size:.75rem;gap:.25rem;justify-content:center;line-height:1.25rem;padding:.25rem .75rem;transition-duration:.3s;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.yst-root .yst-success-message .yst-success-icon{height:1rem;width:1rem}.yst-root .yst-success-message.yst-success-message-add .yst-success-icon{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity))}.yst-root .yst-success-message.yst-success-message-remove .yst-success-icon{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.yst-sr-only{clip:rect(0,0,0,0)!important;border-width:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.yst-pointer-events-none{pointer-events:none!important}.yst-invisible{visibility:hidden!important}.yst-fixed{position:fixed!important}.yst-absolute{position:absolute!important}.yst-relative{position:relative!important}.yst-sticky{position:sticky!important}.yst-inset-0{bottom:0!important;top:0!important}.yst-inset-0,.yst-inset-x-0{right:0!important;left:0!important}.yst-inset-y-0{bottom:0!important;top:0!important}.yst--left-3{right:-.75rem!important}.yst-top-0{top:0!important}.yst-right-0{left:0!important}.yst-bottom-12{bottom:3rem!important}.yst-top-2{top:.5rem!important}.yst-right-2{left:.5rem!important}.yst-bottom-0{bottom:0!important}.yst-top-1\/2{top:50%!important}.yst--right-\[6\.5px\]{left:-6.5px!important}.yst--top-\[6\.5px\]{top:-6.5px!important}.yst-left-4{right:1rem!important}.yst--bottom-6{bottom:-1.5rem!important}.yst-top-8{top:2rem!important}.yst-top-16{top:4rem!important}.yst-top-3\.5{top:.875rem!important}.yst-top-3{top:.75rem!important}.yst-left-0{right:0!important}.yst-z-30{z-index:30!important}.yst-z-40{z-index:40!important}.yst-z-10{z-index:10!important}.yst-z-20{z-index:20!important}.yst-order-last{order:9999!important}.yst-col-span-1{grid-column:span 1/span 1!important}.yst--m-6{margin:-1.5rem!important}.yst-my-auto{margin-bottom:auto!important;margin-top:auto!important}.yst-mx-auto{margin-right:auto!important;margin-left:auto!important}.yst-my-4{margin-bottom:1rem!important;margin-top:1rem!important}.yst-my-2{margin-bottom:.5rem!important;margin-top:.5rem!important}.yst-my-6{margin-bottom:1.5rem!important;margin-top:1.5rem!important}.yst-mx-\[calc\(50\%-50vw\)\]{margin-right:calc(50% - 50vw)!important;margin-left:calc(50% - 50vw)!important}.yst-my-12{margin-bottom:3rem!important;margin-top:3rem!important}.yst-my-3{margin-bottom:.75rem!important;margin-top:.75rem!important}.yst-my-8{margin-bottom:2rem!important;margin-top:2rem!important}.yst--mx-6{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.yst-mx-1\.5{margin-right:.375rem!important;margin-left:.375rem!important}.yst-mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.yst-mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.yst-my-0{margin-bottom:0!important;margin-top:0!important}.yst-my-16{margin-bottom:4rem!important;margin-top:4rem!important}.yst--ml-1{margin-right:-.25rem!important}.yst-mt-6{margin-top:1.5rem!important}.yst-mt-1\.5{margin-top:.375rem!important}.yst-mt-1{margin-top:.25rem!important}.yst-ml-auto{margin-right:auto!important}.yst--mr-14{margin-left:-3.5rem!important}.yst-mb-2{margin-bottom:.5rem!important}.yst-mr-4{margin-left:1rem!important}.yst-mr-2{margin-left:.5rem!important}.yst-mb-px{margin-bottom:1px!important}.yst-ml-4{margin-right:1rem!important}.yst-mb-16{margin-bottom:4rem!important}.yst-mt-auto{margin-top:auto!important}.yst-ml-3{margin-right:.75rem!important}.yst-mr-1{margin-left:.25rem!important}.yst-mr-5{margin-left:1.25rem!important}.yst-mb-8{margin-bottom:2rem!important}.yst-mt-3{margin-top:.75rem!important}.yst-ml-1{margin-right:.25rem!important}.yst--mr-1{margin-left:-.25rem!important}.yst--mb-\[1em\]{margin-bottom:-1em!important}.yst-mt-2{margin-top:.5rem!important}.yst-mb-0{margin-bottom:0!important}.yst-mb-5{margin-bottom:1.25rem!important}.yst-mb-6{margin-bottom:1.5rem!important}.yst-mt-8{margin-top:2rem!important}.yst-mt-12{margin-top:3rem!important}.yst-mt-4{margin-top:1rem!important}.yst-mb-3{margin-bottom:.75rem!important}.yst-ml-1\.5{margin-right:.375rem!important}.yst-mr-6{margin-left:1.5rem!important}.yst--ml-px{margin-right:-1px!important}.yst-ml-12{margin-right:3rem!important}.yst--mt-6{margin-top:-1.5rem!important}.yst-mb-4{margin-bottom:1rem!important}.yst-ml-2{margin-right:.5rem!important}.yst-mr-3{margin-left:.75rem!important}.yst-mt-7{margin-top:1.75rem!important}.yst-mt-10{margin-top:2.5rem!important}.yst-mt-\[-2\.6rem\]{margin-top:-2.6rem!important}.yst-mt-\[18px\]{margin-top:18px!important}.yst-mb-1{margin-bottom:.25rem!important}.yst-mr-8{margin-left:2rem!important}.yst--mt-4{margin-top:-1rem!important}.yst-mb-24{margin-bottom:6rem!important}.yst-mt-\[27\.5px\]{margin-top:27.5px!important}.yst-mt-5{margin-top:1.25rem!important}.yst-mt-0{margin-top:0!important}.yst-block{display:block!important}.yst-inline-block{display:inline-block!important}.yst-flex{display:flex!important}.yst-inline-flex{display:inline-flex!important}.yst-table-cell{display:table-cell!important}.yst-table-row{display:table-row!important}.yst-grid{display:grid!important}.yst-hidden{display:none!important}.yst-h-5{height:1.25rem!important}.yst-h-6{height:1.5rem!important}.yst-h-4{height:1rem!important}.yst-h-12{height:3rem!important}.yst-h-0{height:0!important}.yst-h-full{height:100%!important}.yst-h-16{height:4rem!important}.yst-h-7{height:1.75rem!important}.yst-h-3{height:.75rem!important}.yst-h-8{height:2rem!important}.yst-h-\[90vh\]{height:90vh!important}.yst-h-4\/5{height:80%!important}.yst-h-20{height:5rem!important}.yst-h-\[120px\]{height:120px!important}.yst-h-auto{height:auto!important}.yst-h-9{height:2.25rem!important}.yst-h-2\.5{height:.625rem!important}.yst-h-2{height:.5rem!important}.yst-h-24{height:6rem!important}.yst-h-48{height:12rem!important}.yst-h-96{height:24rem!important}.yst-h-\[45px\]{height:45px!important}.yst-h-14{height:3.5rem!important}.yst-h-28{height:7rem!important}.yst-max-h-\[calc\(90vh-10rem\)\]{max-height:calc(90vh - 10rem)!important}.yst-max-h-60{max-height:15rem!important}.yst-min-h-\[24px\]{min-height:24px!important}.yst-min-h-full{min-height:100%!important}.yst-w-5{width:1.25rem!important}.yst-w-6{width:1.5rem!important}.yst-w-0{width:0!important}.yst-w-4{width:1rem!important}.yst-w-full{width:100%!important}.yst-w-12{width:3rem!important}.yst-w-2{width:.5rem!important}.yst-w-3{width:.75rem!important}.yst-w-8{width:2rem!important}.yst-w-56{width:14rem!important}.yst-w-44{width:11rem!important}.yst-w-14{width:3.5rem!important}.yst-w-16{width:4rem!important}.yst-w-10{width:2.5rem!important}.yst-w-48{width:12rem!important}.yst-w-\[350px\]{width:350px!important}.yst-w-20{width:5rem!important}.yst-w-\[150px\]{width:150px!important}.yst-w-40{width:10rem!important}.yst-w-2\.5{width:.625rem!important}.yst-w-0\.5{width:.125rem!important}.yst-w-96{width:24rem!important}.yst-w-3\/5{width:60%!important}.yst-w-24{width:6rem!important}.yst-min-w-full{min-width:100%!important}.yst-min-w-0{min-width:0!important}.yst-min-w-\[16rem\]{min-width:16rem!important}.yst-max-w-xs{max-width:20rem!important}.yst-max-w-sm{max-width:24rem!important}.yst-max-w-screen-sm{max-width:640px!important}.yst-max-w-6xl{max-width:72rem!important}.yst-max-w-lg{max-width:32rem!important}.yst-max-w-\[715px\]{max-width:715px!important}.yst-max-w-none{max-width:none!important}.yst-max-w-\[600px\]{max-width:600px!important}.yst-max-w-full{max-width:100%!important}.yst-max-w-5xl{max-width:64rem!important}.yst-max-w-2xl{max-width:42rem!important}.yst-max-w-\[500px\]{max-width:500px!important}.yst-flex-1{flex:1 1 0%!important}.yst-flex-none{flex:none!important}.yst-flex-shrink-0,.yst-shrink-0{flex-shrink:0!important}.yst-flex-grow,.yst-grow{flex-grow:1!important}.yst-origin-top{transform-origin:top!important}.yst-translate-y-4{--tw-translate-y:1rem!important}.yst-translate-y-0,.yst-translate-y-4{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-translate-y-0{--tw-translate-y:0px!important}.yst-translate-y-full{--tw-translate-y:100%!important}.yst--translate-y-full,.yst-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst--translate-y-full{--tw-translate-y:-100%!important}.yst-rotate-180{--tw-rotate:180deg!important}.yst-rotate-180,.yst-scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-scale-95{--tw-scale-x:.95!important;--tw-scale-y:.95!important}.yst-scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important}.yst-scale-100,.yst-scale-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.yst-scale-y-0{--tw-scale-y:0!important}.yst-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@keyframes yst-spin{to{transform:rotate(-1turn)}}.yst-animate-spin{animation:yst-spin 1s linear infinite!important}.yst-cursor-wait{cursor:wait!important}.yst-cursor-not-allowed{cursor:not-allowed!important}.yst-cursor-default{cursor:default!important}.yst-select-none{-webkit-user-select:none!important;user-select:none!important}.yst-scroll-pt-11{scroll-padding-top:2.75rem!important}.yst-scroll-pb-2{scroll-padding-bottom:.5rem!important}.yst-list-outside{list-style-position:outside!important}.yst-list-disc{list-style-type:disc!important}.yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.yst-flex-row{flex-direction:row!important}.yst-flex-col{flex-direction:column!important}.yst-flex-wrap{flex-wrap:wrap!important}.yst-content-between{align-content:space-between!important}.yst-items-start{align-items:flex-start!important}.yst-items-end{align-items:flex-end!important}.yst-items-center{align-items:center!important}.yst-justify-end{justify-content:flex-end!important}.yst-justify-center{justify-content:center!important}.yst-justify-between{justify-content:space-between!important}.yst-gap-2{gap:.5rem!important}.yst-gap-3{gap:.75rem!important}.yst-gap-8{gap:2rem!important}.yst-gap-6{gap:1.5rem!important}.yst-gap-1\.5{gap:.375rem!important}.yst-gap-1{gap:.25rem!important}.yst-gap-4{gap:1rem!important}.yst-gap-x-5{column-gap:1.25rem!important}.yst-gap-y-6{row-gap:1.5rem!important}.yst-gap-y-2{row-gap:.5rem!important}.yst-gap-x-6{column-gap:1.5rem!important}.yst-gap-x-4{column-gap:1rem!important}.yst-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-right:calc(2rem*(1 - var(--tw-space-x-reverse)))!important;margin-left:calc(2rem*var(--tw-space-x-reverse))!important}.yst-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))!important;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(2rem*var(--tw-space-y-reverse))!important;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-right:calc(.5rem*(1 - var(--tw-space-x-reverse)))!important;margin-left:calc(.5rem*var(--tw-space-x-reverse))!important}.yst-space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.25rem*var(--tw-space-y-reverse))!important;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.75rem*var(--tw-space-y-reverse))!important;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0!important;margin-right:calc(.75rem*(1 - var(--tw-space-x-reverse)))!important;margin-left:calc(.75rem*var(--tw-space-x-reverse))!important}.yst-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(.5rem*var(--tw-space-y-reverse))!important;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))!important}.yst-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0!important;margin-bottom:calc(1rem*var(--tw-space-y-reverse))!important;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))!important}.yst-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0!important;border-bottom-width:calc(1px*var(--tw-divide-y-reverse))!important;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))!important}.yst-divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1!important;border-color:rgb(229 231 235/var(--tw-divide-opacity))!important}.yst-divide-slate-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1!important;border-color:rgb(203 213 225/var(--tw-divide-opacity))!important}.yst-self-start{align-self:flex-start!important}.yst-self-end{align-self:flex-end!important}.yst-self-center{align-self:center!important}.yst-overflow-auto{overflow:auto!important}.yst-overflow-hidden{overflow:hidden!important}.yst-overflow-y-auto{overflow-y:auto!important}.yst-overflow-x-scroll{overflow-x:scroll!important}.yst-truncate{overflow:hidden!important;white-space:nowrap!important}.yst-overflow-ellipsis,.yst-text-ellipsis,.yst-truncate{text-overflow:ellipsis!important}.yst-whitespace-nowrap{white-space:nowrap!important}.yst-whitespace-pre-line{white-space:pre-line!important}.yst-rounded-md{border-radius:.375rem!important}.yst-rounded-full{border-radius:9999px!important}.yst-rounded-lg{border-radius:.5rem!important}.yst-rounded-3xl{border-radius:1.5rem!important}.yst-rounded-none{border-radius:0!important}.yst-rounded-xl{border-radius:.75rem!important}.yst-rounded-l-md{border-bottom-right-radius:.375rem!important;border-top-right-radius:.375rem!important}.yst-rounded-r-md{border-bottom-left-radius:.375rem!important;border-top-left-radius:.375rem!important}.yst-rounded-b-lg{border-bottom-right-radius:.5rem!important;border-bottom-left-radius:.5rem!important}.yst-rounded-t-lg{border-top-right-radius:.5rem!important;border-top-left-radius:.5rem!important}.yst-rounded-br-none{border-bottom-left-radius:0!important}.yst-border{border-width:1px!important}.yst-border-2{border-width:2px!important}.yst-border-0{border-width:0!important}.yst-border-y{border-bottom-width:1px!important;border-top-width:1px!important}.yst-border-x-0{border-right-width:0!important;border-left-width:0!important}.yst-border-l{border-right-width:1px!important}.yst-border-b{border-bottom-width:1px!important}.yst-border-r{border-left-width:1px!important}.yst-border-t{border-top-width:1px!important}.yst-border-solid{border-style:solid!important}.yst-border-dashed{border-style:dashed!important}.yst-border-none{border-style:none!important}.yst-border-slate-200{--tw-border-opacity:1!important;border-color:rgb(226 232 240/var(--tw-border-opacity))!important}.yst-border-transparent{border-color:#0000!important}.yst-border-amber-300{--tw-border-opacity:1!important;border-color:rgb(252 211 77/var(--tw-border-opacity))!important}.yst-border-slate-300{--tw-border-opacity:1!important;border-color:rgb(203 213 225/var(--tw-border-opacity))!important}.yst-border-primary-500{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.yst-border-slate-100{--tw-border-opacity:1!important;border-color:rgb(241 245 249/var(--tw-border-opacity))!important}.yst-border-white{--tw-border-opacity:1!important;border-color:rgb(255 255 255/var(--tw-border-opacity))!important}.yst-border-primary-300{--tw-border-opacity:1!important;border-color:rgb(205 130 171/var(--tw-border-opacity))!important}.yst-border-red-300{--tw-border-opacity:1!important;border-color:rgb(252 165 165/var(--tw-border-opacity))!important}.yst-border-red-500{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity))!important}.yst-border-emerald-600{--tw-border-opacity:1!important;border-color:rgb(5 150 105/var(--tw-border-opacity))!important}.yst-border-r-slate-200{--tw-border-opacity:1!important;border-left-color:rgb(226 232 240/var(--tw-border-opacity))!important}.yst-border-t-\[rgb\(0\,0\,0\,0\.2\)\]{border-top-color:#0003!important}.yst-bg-slate-600{--tw-bg-opacity:1!important;background-color:rgb(71 85 105/var(--tw-bg-opacity))!important}.yst-bg-slate-100{--tw-bg-opacity:1!important;background-color:rgb(241 245 249/var(--tw-bg-opacity))!important}.yst-bg-white{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.yst-bg-slate-50{--tw-bg-opacity:1!important;background-color:rgb(248 250 252/var(--tw-bg-opacity))!important}.yst-bg-transparent{background-color:initial!important}.yst-bg-green-100{--tw-bg-opacity:1!important;background-color:rgb(220 252 231/var(--tw-bg-opacity))!important}.yst-bg-primary-500{--tw-bg-opacity:1!important;background-color:rgb(166 30 105/var(--tw-bg-opacity))!important}.yst-bg-black{--tw-bg-opacity:1!important;background-color:rgb(0 0 0/var(--tw-bg-opacity))!important}.yst-bg-slate-200{--tw-bg-opacity:1!important;background-color:rgb(226 232 240/var(--tw-bg-opacity))!important}.yst-bg-slate-300{--tw-bg-opacity:1!important;background-color:rgb(203 213 225/var(--tw-bg-opacity))!important}.yst-bg-primary-600{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.yst-bg-red-100{--tw-bg-opacity:1!important;background-color:rgb(254 226 226/var(--tw-bg-opacity))!important}.yst-bg-blue-100{--tw-bg-opacity:1!important;background-color:rgb(219 234 254/var(--tw-bg-opacity))!important}.yst-bg-yellow-100{--tw-bg-opacity:1!important;background-color:rgb(254 249 195/var(--tw-bg-opacity))!important}.yst-bg-primary-200{--tw-bg-opacity:1!important;background-color:rgb(224 179 204/var(--tw-bg-opacity))!important}.yst-bg-opacity-75{--tw-bg-opacity:0.75!important}.yst-fill-sky-200{fill:#bae6fd!important}.yst-fill-blue-500{fill:#3b82f6!important}.yst-fill-red-500{fill:#ef4444!important}.yst-stroke-blue-500{stroke:#3b82f6!important}.yst-stroke-3{stroke-width:3px!important}.yst-stroke-1{stroke-width:1!important}.yst-object-contain{object-fit:contain!important}.yst-object-cover{object-fit:cover!important}.yst-object-center{object-position:center!important}.yst-p-1{padding:.25rem!important}.yst-p-6{padding:1.5rem!important}.yst-p-4{padding:1rem!important}.yst-p-8{padding:2rem!important}.yst-p-0{padding:0!important}.yst-p-3{padding:.75rem!important}.yst-p-2\.5{padding:.625rem!important}.yst-p-2{padding:.5rem!important}.yst-px-4{padding-right:1rem!important;padding-left:1rem!important}.yst-py-6{padding-bottom:1.5rem!important;padding-top:1.5rem!important}.yst-px-2{padding-right:.5rem!important;padding-left:.5rem!important}.yst-px-3{padding-right:.75rem!important;padding-left:.75rem!important}.yst-py-4{padding-bottom:1rem!important;padding-top:1rem!important}.yst-px-6{padding-right:1.5rem!important;padding-left:1.5rem!important}.yst-py-3{padding-bottom:.75rem!important;padding-top:.75rem!important}.yst-px-0\.5{padding-right:.125rem!important;padding-left:.125rem!important}.yst-px-0{padding-right:0!important;padding-left:0!important}.yst-px-2\.5{padding-right:.625rem!important;padding-left:.625rem!important}.yst-py-1{padding-bottom:.25rem!important;padding-top:.25rem!important}.yst-px-\[3px\]{padding-right:3px!important;padding-left:3px!important}.yst-py-\[3px\]{padding-bottom:3px!important;padding-top:3px!important}.yst-px-8{padding-right:2rem!important;padding-left:2rem!important}.yst-py-2{padding-bottom:.5rem!important;padding-top:.5rem!important}.yst-py-12{padding-bottom:3rem!important;padding-top:3rem!important}.yst-py-1\.5{padding-bottom:.375rem!important;padding-top:.375rem!important}.yst-px-11{padding-right:2.75rem!important;padding-left:2.75rem!important}.yst-px-10{padding-right:2.5rem!important;padding-left:2.5rem!important}.yst-px-1\.5{padding-right:.375rem!important;padding-left:.375rem!important}.yst-px-1{padding-right:.25rem!important;padding-left:.25rem!important}.yst-pb-10{padding-bottom:2.5rem!important}.yst-pt-1{padding-top:.25rem!important}.yst-pt-4{padding-top:1rem!important}.yst-pb-4{padding-bottom:1rem!important}.yst-pr-4{padding-left:1rem!important}.yst-pl-6{padding-right:1.5rem!important}.yst-pt-2{padding-top:.5rem!important}.yst-pb-6{padding-bottom:1.5rem!important}.yst-pb-1{padding-bottom:.25rem!important}.yst-pb-8{padding-bottom:2rem!important}.yst-pl-\[29px\]{padding-right:29px!important}.yst-pt-6{padding-top:1.5rem!important}.yst-pl-2{padding-right:.5rem!important}.yst-pr-3{padding-left:.75rem!important}.yst-pb-2{padding-bottom:.5rem!important}.yst-pt-10{padding-top:2.5rem!important}.yst-pl-\[1em\]{padding-right:1em!important}.yst-pt-\[56\.25\%\]{padding-top:56.25%!important}.yst-pl-3{padding-right:.75rem!important}.yst-pr-2{padding-left:.5rem!important}.yst-pl-0{padding-right:0!important}.yst-pr-10{padding-left:2.5rem!important}.yst-pr-9{padding-left:2.25rem!important}.yst-text-left{text-align:right!important}.yst-text-center{text-align:center!important}.yst-text-right{text-align:left!important}.yst-align-middle{vertical-align:middle!important}.yst-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.yst-font-wp{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif!important}.yst-text-sm{font-size:.8125rem!important}.yst-text-xs{font-size:.75rem!important}.yst-text-4xl{font-size:2.25rem!important}.yst-text-2xl{font-size:1.5rem!important}.yst-text-base{font-size:1rem!important}.yst-text-tiny{font-size:.875rem!important}.yst-text-lg{font-size:1.125rem!important}.yst-text-xl{font-size:1.25rem!important}.yst-text-xxs{font-size:.675rem!important}.yst-font-semibold{font-weight:600!important}.yst-font-medium{font-weight:500!important}.yst-font-normal{font-weight:400!important}.yst-font-extrabold{font-weight:800!important}.yst-font-bold{font-weight:700!important}.yst-font-\[650\]{font-weight:650!important}.yst-font-light{font-weight:300!important}.yst-uppercase{text-transform:uppercase!important}.yst-italic{font-style:italic!important}.yst-leading-4{line-height:1rem!important}.yst-leading-10{line-height:2.5rem!important}.yst-leading-6{line-height:1.5rem!important}.yst-leading-8{line-height:2rem!important}.yst-leading-5{line-height:1.25rem!important}.yst-leading-\[normal\]{line-height:normal!important}.yst-leading-tight{line-height:1.25!important}.yst-tracking-tight{letter-spacing:-.025em!important}.yst-tracking-wide{letter-spacing:.025em!important}.yst-text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.yst-text-slate-500{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.yst-text-slate-400{--tw-text-opacity:1!important;color:rgb(148 163 184/var(--tw-text-opacity))!important}.yst-text-primary-500{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.yst-text-slate-900{--tw-text-opacity:1!important;color:rgb(15 23 42/var(--tw-text-opacity))!important}.yst-text-slate-800{--tw-text-opacity:1!important;color:rgb(30 41 59/var(--tw-text-opacity))!important}.yst-text-gray-900{--tw-text-opacity:1!important;color:rgb(17 24 39/var(--tw-text-opacity))!important}.yst-text-gray-500{--tw-text-opacity:1!important;color:rgb(107 114 128/var(--tw-text-opacity))!important}.yst-text-green-600{--tw-text-opacity:1!important;color:rgb(22 163 74/var(--tw-text-opacity))!important}.yst-text-\[\#555\]{--tw-text-opacity:1!important;color:rgb(85 85 85/var(--tw-text-opacity))!important}.yst-text-amber-300{--tw-text-opacity:1!important;color:rgb(252 211 77/var(--tw-text-opacity))!important}.yst-text-slate-600{--tw-text-opacity:1!important;color:rgb(71 85 105/var(--tw-text-opacity))!important}.yst-text-slate-700{--tw-text-opacity:1!important;color:rgb(51 65 85/var(--tw-text-opacity))!important}.yst-text-red-500{--tw-text-opacity:1!important;color:rgb(239 68 68/var(--tw-text-opacity))!important}.yst-text-green-400{--tw-text-opacity:1!important;color:rgb(74 222 128/var(--tw-text-opacity))!important}.yst-text-\[\#111827\]{--tw-text-opacity:1!important;color:rgb(17 24 39/var(--tw-text-opacity))!important}.yst-text-yellow-900{--tw-text-opacity:1!important;color:rgb(113 63 18/var(--tw-text-opacity))!important}.yst-text-amber-900{--tw-text-opacity:1!important;color:rgb(120 53 15/var(--tw-text-opacity))!important}.yst-text-neutral-700{--tw-text-opacity:1!important;color:rgb(64 64 64/var(--tw-text-opacity))!important}.yst-text-blue-500{--tw-text-opacity:1!important;color:rgb(59 130 246/var(--tw-text-opacity))!important}.yst-text-red-600{--tw-text-opacity:1!important;color:rgb(220 38 38/var(--tw-text-opacity))!important}.yst-text-blue-800{--tw-text-opacity:1!important;color:rgb(30 64 175/var(--tw-text-opacity))!important}.yst-text-yellow-500{--tw-text-opacity:1!important;color:rgb(234 179 8/var(--tw-text-opacity))!important}.yst-text-yellow-800{--tw-text-opacity:1!important;color:rgb(133 77 14/var(--tw-text-opacity))!important}.yst-text-red-800{--tw-text-opacity:1!important;color:rgb(153 27 27/var(--tw-text-opacity))!important}.yst-text-emerald-600{--tw-text-opacity:1!important;color:rgb(5 150 105/var(--tw-text-opacity))!important}.yst-text-green-800{--tw-text-opacity:1!important;color:rgb(22 101 52/var(--tw-text-opacity))!important}.yst-text-red-900{--tw-text-opacity:1!important;color:rgb(127 29 29/var(--tw-text-opacity))!important}.yst-underline{-webkit-text-decoration-line:underline!important;text-decoration-line:underline!important}.yst-line-through{-webkit-text-decoration-line:line-through!important;text-decoration-line:line-through!important}.yst-no-underline{-webkit-text-decoration-line:none!important;text-decoration-line:none!important}.yst-subpixel-antialiased{-webkit-font-smoothing:auto!important;-moz-osx-font-smoothing:auto!important}.yst-placeholder-slate-500::placeholder{--tw-placeholder-opacity:1!important;color:rgb(100 116 139/var(--tw-placeholder-opacity))!important}.yst-opacity-0{opacity:0!important}.yst-opacity-100{opacity:1!important}.yst-opacity-25{opacity:.25!important}.yst-opacity-75{opacity:.75!important}.yst-opacity-50{opacity:.5!important}.yst-shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a!important;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)!important}.yst-shadow,.yst-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a!important;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)!important}.yst-shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a!important;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)!important}.yst-shadow-md,.yst-shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a!important;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)!important}.yst-shadow-none{--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important}.yst-shadow-none,.yst-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.yst-shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important}.yst-shadow-amber-700\/30{--tw-shadow-color:#b453094d!important;--tw-shadow:var(--tw-shadow-colored)!important}.yst-outline-none{outline:2px solid #0000!important;outline-offset:2px!important}.yst-ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.yst-ring-gray-200{--tw-ring-opacity:1!important;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))!important}.yst-ring-black{--tw-ring-opacity:1!important;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity))!important}.yst-ring-opacity-5{--tw-ring-opacity:0.05!important}.yst-ring-offset-2{--tw-ring-offset-width:2px!important}.yst-ring-offset-primary-500{--tw-ring-offset-color:#a61e69!important}.yst-drop-shadow-md{--tw-drop-shadow:drop-shadow(0 4px 3px #00000012) drop-shadow(0 2px 2px #0000000f)!important}.yst-drop-shadow-md,.yst-grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.yst-grayscale{--tw-grayscale:grayscale(100%)!important}.yst-filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.yst-transition-opacity{transition-duration:.15s!important;transition-property:opacity!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition{transition-duration:.15s!important;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-all{transition-duration:.15s!important;transition-property:all!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-colors{transition-duration:.15s!important;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-transform{transition-duration:.15s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-transition-\[width\]{transition-duration:.15s!important;transition-property:width!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-delay-200{transition-delay:.2s!important}.yst-delay-\[900ms\]{transition-delay:.9s!important}.yst-delay-100{transition-delay:.1s!important}.yst-duration-1000{transition-duration:1s!important}.yst-duration-200{transition-duration:.2s!important}.yst-duration-300{transition-duration:.3s!important}.yst-duration-100{transition-duration:.1s!important}.yst-duration-75{transition-duration:75ms!important}.yst-duration-150{transition-duration:.15s!important}.yst-duration-500{transition-duration:.5s!important}.yst-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.yst-ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)!important}.yst-ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)!important}.yst-ease-linear{transition-timing-function:linear!important}.yst-\@container{container-type:inline-size!important}.first\:yst-pt-0:first-child{padding-top:0!important}.last\:yst-border-b-0:last-child{border-bottom-width:0!important}.last\:yst-pb-0:last-child{padding-bottom:0!important}.odd\:yst-bg-white:nth-child(odd){--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.even\:yst-bg-slate-50:nth-child(2n){--tw-bg-opacity:1!important;background-color:rgb(248 250 252/var(--tw-bg-opacity))!important}.focus-within\:yst-border-primary-500:focus-within{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.focus-within\:yst-outline-none:focus-within{outline:2px solid #0000!important;outline-offset:2px!important}.focus-within\:yst-ring-1:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.focus-within\:yst-ring-primary-500:focus-within{--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important}.hover\:yst-bg-gray-50:hover{--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important}.hover\:yst-bg-\[\#f0f0f0\]:hover{--tw-bg-opacity:1!important;background-color:rgb(240 240 240/var(--tw-bg-opacity))!important}.hover\:yst-bg-white:hover{--tw-bg-opacity:1!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important}.hover\:yst-bg-primary-600:hover{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.hover\:yst-text-slate-500:hover{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.hover\:yst-text-slate-800:hover{--tw-text-opacity:1!important;color:rgb(30 41 59/var(--tw-text-opacity))!important}.hover\:yst-text-white:hover{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.hover\:yst-text-primary-500:hover{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.hover\:yst-underline:hover{-webkit-text-decoration-line:underline!important;text-decoration-line:underline!important}.focus\:yst-border-primary-500:focus{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important}.focus\:yst-border-red-500:focus{--tw-border-opacity:1!important;border-color:rgb(239 68 68/var(--tw-border-opacity))!important}.focus\:yst-border-emerald-600:focus{--tw-border-opacity:1!important;border-color:rgb(5 150 105/var(--tw-border-opacity))!important}.focus\:yst-bg-primary-600:focus{--tw-bg-opacity:1!important;background-color:rgb(154 22 96/var(--tw-bg-opacity))!important}.focus\:yst-text-white:focus{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.focus\:yst-text-primary-500:focus{--tw-text-opacity:1!important;color:rgb(166 30 105/var(--tw-text-opacity))!important}.focus\:yst-shadow-\[0_0_3px_rgba\(8\2c 74\2c 103\2c 0\.8\)\]:focus{--tw-shadow:0 0 3px #084a67cc!important;--tw-shadow-colored:0 0 3px var(--tw-shadow-color)!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important}.focus\:yst-outline-none:focus{outline:2px solid #0000!important;outline-offset:2px!important}.focus\:yst-outline:focus{outline-style:solid!important}.focus\:yst-outline-\[1px\]:focus{outline-width:1px!important}.focus\:-yst-outline-offset-1:focus{outline-offset:-1px!important}.focus\:yst-outline-\[color\:\#0066cd\]:focus{outline-color:#0066cd!important}.focus\:yst-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important}.focus\:yst-ring-1:focus,.focus\:yst-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.focus\:yst-ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important}.focus\:yst-ring-inset:focus{--tw-ring-inset:inset!important}.focus\:yst-ring-primary-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important}.focus\:yst-ring-white:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))!important}.focus\:yst-ring-red-500:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity))!important}.focus\:yst-ring-emerald-600:focus{--tw-ring-opacity:1!important;--tw-ring-color:rgb(5 150 105/var(--tw-ring-opacity))!important}.focus\:yst-ring-offset-2:focus{--tw-ring-offset-width:2px!important}.focus\:yst-ring-offset-primary-500:focus{--tw-ring-offset-color:#a61e69!important}.yst-group:hover .group-hover\:yst-bg-primary-500{--tw-bg-opacity:1!important;background-color:rgb(166 30 105/var(--tw-bg-opacity))!important}.yst-group:hover .group-hover\:yst-bg-primary-200{--tw-bg-opacity:1!important;background-color:rgb(224 179 204/var(--tw-bg-opacity))!important}.yst-group:hover .group-hover\:yst-text-slate-500{--tw-text-opacity:1!important;color:rgb(100 116 139/var(--tw-text-opacity))!important}.yst-group:hover .group-hover\:yst-text-white{--tw-text-opacity:1!important;color:rgb(255 255 255/var(--tw-text-opacity))!important}.yst-group:hover .group-hover\:yst-text-primary-800{--tw-text-opacity:1!important;color:rgb(131 8 78/var(--tw-text-opacity))!important}@container (min-width: 32rem){.\@lg\:yst-flex-row{flex-direction:row!important}}@container (min-width: 48rem){.\@3xl\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}}[dir=rtl] .rtl\:yst-rotate-180{--tw-rotate:180deg!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@media not all and (min-width:640px){.max-sm\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}}@media (min-width:640px){.sm\:yst-mx-0{margin-right:0!important;margin-left:0!important}.sm\:yst-mb-0{margin-bottom:0!important}.sm\:yst-ml-3{margin-right:.75rem!important}.sm\:yst-mt-0{margin-top:0!important}.sm\:yst-ml-4{margin-right:1rem!important}.sm\:yst-flex{display:flex!important}.sm\:yst-h-10{height:2.5rem!important}.sm\:yst-w-auto{width:auto!important}.sm\:yst-w-10{width:2.5rem!important}.sm\:yst-translate-y-0{--tw-translate-y:0px!important}.sm\:yst-scale-95,.sm\:yst-translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.sm\:yst-scale-95{--tw-scale-x:.95!important;--tw-scale-y:.95!important}.sm\:yst-scale-100{--tw-scale-x:1!important;--tw-scale-y:1!important;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.sm\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sm\:yst-flex-row-reverse{flex-direction:row-reverse!important}.sm\:yst-items-start{align-items:flex-start!important}.sm\:yst-text-left{text-align:right!important}.sm\:yst-text-sm{font-size:.8125rem!important}}@media (min-width:768px){.md\:yst-absolute{position:absolute!important}.md\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.md\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.md\:yst-flex-row{flex-direction:row!important}}@media (min-width:783px){.min-\[783px\]\:yst-block{display:block!important}.min-\[783px\]\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.min-\[783px\]\:yst-p-8{padding:2rem!important}}@media (min-width:1024px){.lg\:yst-left-44{right:11rem!important}.lg\:yst-col-span-2{grid-column:span 2/span 2!important}.lg\:yst-mt-0{margin-top:0!important}.lg\:yst-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))!important}.lg\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.lg\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.lg\:yst-gap-12{gap:3rem!important}}@media (min-width:1280px){.xl\:yst-fixed{position:fixed!important}.xl\:yst-right-8{left:2rem!important}.xl\:yst-col-span-2{grid-column:span 2/span 2!important}.xl\:yst-mb-0{margin-bottom:0!important}.xl\:yst-mt-0{margin-top:0!important}.xl\:yst-w-\[16rem\]{width:16rem!important}.xl\:yst-max-w-3xl{max-width:48rem!important}.xl\:yst-max-w-\[16rem\]{max-width:16rem!important}.xl\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.xl\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.xl\:yst-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))!important}.xl\:yst-flex-row{flex-direction:row!important}.xl\:yst-gap-12{gap:3rem!important}.xl\:yst-pr-\[17\.5rem\]{padding-left:17.5rem!important}}@media (min-width:1536px){.\32xl\:yst-col-span-2{grid-column:span 2/span 2!important}.\32xl\:yst-mt-0{margin-top:0!important}.\32xl\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}.\32xl\:yst-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))!important}.\32xl\:yst-gap-12{gap:3rem!important}}@media (min-width:1800px){.min-\[1800px\]\:yst-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))!important}}css/dist/new-settings-2390.css000064400000020657147206602470012055 0ustar00body.seo_page_wpseo_page_settings{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}body.seo_page_wpseo_page_settings #wpcontent{padding-left:0!important}body.seo_page_wpseo_page_settings #wpfooter{padding-right:1rem}@media (min-width:768px){body.seo_page_wpseo_page_settings #wpfooter{padding-left:17rem;padding-right:2rem}}@media screen and (max-width:782px){body.seo_page_wpseo_page_settings .wp-responsive-open #wpbody{right:-190px}}body.seo_page_wpseo_page_settings #modal-search .yst-modal__close{margin-top:-.25rem}@media (min-width:783px) and (max-width:962px){body.seo_page_wpseo_page_settings.sticky-menu .yst-root .yst-notifications--bottom-left{left:calc(160px + 2rem)}}@media (min-width:783px) and (max-width:963px){body.seo_page_wpseo_page_settings.sticky-menu.auto-fold .yst-root .yst-notifications--bottom-left,body.seo_page_wpseo_page_settings.sticky-menu.folded .yst-root .yst-notifications--bottom-left{left:calc(32px + 2rem)}}@media (min-width:962px){body.seo_page_wpseo_page_settings.sticky-menu.folded .yst-root .yst-notifications--bottom-left{left:calc(32px + 2rem)}}@media (max-width:783px){body.seo_page_wpseo_page_settings:not(.sticky-menu) .wp-responsive-open .yst-root .yst-notifications--bottom-left{left:calc(190px + 2rem)}}body.seo_page_wpseo_page_settings .yst-root .yst-notifications{max-height:calc(100% - 4rem - 32px)}@media (max-width:782px){body.seo_page_wpseo_page_settings .yst-root .yst-notifications{max-height:calc(100% - 4rem - 48px)}}body.seo_page_wpseo_page_settings .yst-root .yst-notifications--bottom-left{z-index:9991}@media (min-width:783px){body.seo_page_wpseo_page_settings .yst-root .yst-notifications--bottom-left{left:calc(160px + 2rem)}}@media (min-width:601px) and (max-width:768px){body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__top{top:46px}}@media (min-width:783px){body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__top{display:none}}body.seo_page_wpseo_page_settings .yst-root .yst-mobile-navigation__dialog{z-index:99999}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar{position:relative}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar .emoji-select-popover{left:0;right:auto;z-index:20}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__editor,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__label{opacity:.5}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__button-insert,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__editor,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .yst-replacevar__label{cursor:not-allowed}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--disabled .emoji-select-button{pointer-events:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__label{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));display:flex;font-size:.8125rem;font-weight:500;margin-bottom:.5rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__buttons{display:inline-flex;gap:.375rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1rem;margin-bottom:.5rem;padding:.5rem .75rem;-webkit-text-decoration-line:none;text-decoration-line:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:disabled{cursor:not-allowed;opacity:.5;pointer-events:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__button-insert:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;color:rgb(30 41 59/var(--tw-text-opacity));font-size:.8125rem;line-height:1.5rem;padding:.5rem .75rem;width:100%}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor:focus-within{--tw-border-opacity:0;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));border-color:rgb(166 30 105/var(--tw-border-opacity));box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity));--tw-ring-opacity:0.05;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);padding-bottom:.25rem;padding-top:.25rem;width:14rem;z-index:20}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden]:focus{outline:2px solid #0000;outline-offset:2px}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity));cursor:pointer;display:block;font-size:.8125rem;padding:.5rem 1rem;-webkit-text-decoration-line:none;text-decoration-line:none}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div:hover,body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__editor [data-popper-reference-hidden] div>div[aria-selected]{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));color:rgb(15 23 42/var(--tw-text-opacity))}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar--description .yst-replacevar__editor{min-height:5rem}body.seo_page_wpseo_page_settings .yst-root .yst-replacevar__mention{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity));border-radius:9999px;color:rgb(15 23 42/var(--tw-text-opacity));display:inline-block;font-size:.75rem;font-weight:500;line-height:1.25;margin-left:.125rem;margin-right:.125rem;padding:.125rem .5rem}body.seo_page_wpseo_page_settings.rtl .yst-root .yst-replacevar .emoji-select-popover{left:0;right:auto}css/dist/metabox-2390.css000064400000077104147206602470011064 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;left:0;position:fixed;right:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);left:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;right:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-right:16px;width:19px}.yoast-modal__menu{border-right:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-right:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-right:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;left:0;right:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-right:8px}.yoast .yoast-close{right:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-left:16px;margin-right:16px;padding-left:0;padding-right:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:left;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:right;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;left:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-right:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-right:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}.m6zwb4v,.m6zwb4v:visited{background:#e6f3ff;border-radius:2px;color:#575f67;cursor:pointer;display:inline-block;padding-left:2px;padding-right:2px;-webkit-text-decoration:none;text-decoration:none}.m6zwb4v:focus,.m6zwb4v:hover{background:#edf5fd;color:#677584;outline:0}.m6zwb4v:active{background:#455261;color:#222}.mnw6qvm{background:#fff;border:1px solid #eee;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;max-width:440px;min-width:220px;padding-bottom:8px;padding-top:8px;position:absolute;transform:scale(0);z-index:2}.m1ymsnxd{opacity:0;transition:opacity .25s cubic-bezier(.3,1.2,.2,1)}.m126ak5t{opacity:1}.mtiwdxc{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.mtiwdxc:active{background-color:#cce7ff}.myz2dw1{background-color:#e6f3ff;padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.myz2dw1:active{background-color:#cce7ff}.mpqdcgq{font-size:.9em;margin-bottom:.2em;margin-left:8px;max-width:368px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m1mfvffo,.mpqdcgq{display:inline-block}.m1mfvffo{border-radius:12px;height:24px;width:24px} /*!rtl:begin:ignore*/.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-root{position:relative}.DraftEditor-editorContainer{background-color:#fff0;border-left:.1px solid #0000;position:relative;z-index:1}.public-DraftEditor-block{position:relative}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;width:100%;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.DraftEditorPlaceholder-hidden{display:none}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1,lower-alpha) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2,lower-roman) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4,lower-alpha) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4} /*!rtl:end:ignore*/#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}.DraftEditor-root [data-block]{margin:0}#edittag>#wp-description-wrap{display:none}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}.wpseo-meta-section,.wpseo-meta-section-react{border:1px solid #0003;display:none;height:auto;max-width:600px;min-height:100%;vertical-align:top;width:100%}.wpseo-meta-section-react.active,.wpseo-meta-section.active{background:#fff;position:relative;z-index:12}.wpseo-meta-section.active{display:inline-block}.wpseo-meta-section-react.active{display:block;margin-bottom:10px}.wpseo-meta-section-content{padding:16px}.wpseo-metabox-content{max-width:800px;padding-top:16px}.edit-post-meta-boxes-area__container .wpseo-metabox .postbox-header{border-bottom:1px solid #ddd}.edit-post-meta-boxes-area__container .wpseo-metabox .inside{background-color:#f1f5f9}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-metabox-content{max-width:none;padding:32px 8px 8px}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-meta-section,.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-metabox-menu{margin:0 auto}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-meta-section.active{display:block}.wpseo-metabox-menu{max-width:600px;padding:0}.wpseo-metabox-menu ul{align-items:flex-end;display:flex;flex-wrap:wrap;flex-flow:wrap-reverse;margin:0 1px 0 0;padding:0 0 0 16px}.wpseo-metabox-menu ul li:first-child{z-index:10}.wpseo-metabox-menu ul li:nth-child(2){z-index:9}.wpseo-metabox-menu ul li:nth-child(3){z-index:8}.wpseo-metabox-menu ul li:nth-child(4){z-index:7}.wpseo-metabox-menu ul li:nth-child(5){z-index:6}.wpseo-metabox-menu ul li:nth-child(6){z-index:5}.wpseo-metabox-menu ul li{background-color:#f8f8f8;box-shadow:0 0 4px 0 #0000001a;height:32px;margin-bottom:-1px;margin-left:-1px;position:relative;text-align:center}.wpseo-metabox-menu ul li a{align-items:center;border:1px solid #0003;border-bottom:2px #0000;color:#0073aa;display:flex}.wpseo-metabox-menu ul li a:focus{box-shadow:inherit}.wpseo-metabox-menu ul li .yst-traffic-light{height:20px;margin-left:4px;margin-right:10px;width:auto}.wpseo-metabox-menu ul li span.dashicons{margin-right:8px}.wpseo-metabox-menu ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-menu ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-menu ul li.active{background-color:#fff;border-bottom:2px #0000;box-shadow:none;height:36px;margin-top:-4px;z-index:13}.wpseo-metabox-menu ul li.active a{color:#444;height:36px}.wpseo-metabox-menu ul li.active span.wpseo-buy-premium{border-color:#a4286a;color:#a4286a}.wpseo-metabox-menu ul li.active span.wpseo-buy-premium:hover{border-color:#832055;color:#832055}.wpseo-metabox-menu a{height:32px;padding:0 8px;text-decoration:none}.wpseotab{background-color:#fdfdfd;border:1px solid #ddd;display:none;padding:16px}.wpseotab .wpseo-cornerstone-checkbox{margin-right:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-sidebar .dashicons{font-size:30px;height:30px;width:30px}#wpseo_meta .inside{margin:0}#wpseo_meta .inside:after{clear:both;content:"";display:table}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseo-form input,.wpseo-form label,.wpseo-form p.error-message,.wpseo-form textarea{max-width:600px}.wpseo-form fieldset{padding-top:5px}.wpseo-form legend{font-weight:600}.wpseo-form label{display:block;font-weight:600}.wpseo-form input[type=checkbox]+label,.wpseo-form input[type=radio]+label{display:inline-block;font-weight:400}.wpseo-form fieldset,.wpseo-form label{margin-bottom:.5em;margin-top:2em}.wpseo-form input[type=checkbox],.wpseo-form input[type=checkbox]+label{font-size:1em;margin-bottom:0;margin-top:2em}.wpseo-form fieldset:first-child,.wpseo-form input[type=checkbox]:first-child,.wpseo-form input[type=checkbox]:first-child+label,.wpseo-form label:first-child{margin-top:10px}.wpseo-form input[type=radio]{margin-top:0}.wpseo-form input[type=radio]+label{margin:0 1em 0 0}.wpseo-form p.error-message{margin:.5em 0}.wpseo-form select[multiple]{margin-top:0}.yoast-metabox__description{margin:.5em 0;max-width:600px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{background-color:#ffffe0;padding:2px 5px}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{list-style-type:disc;margin:0 0 0 20px}.wpseo_hidden{display:none}.wpseo_msg{background-color:#ffffe0;border:1px solid #e6db55;margin:5px 0 10px;padding:0 5px}.snippet-editor__button.snippet-editor__edit-button:focus{background-color:#fafafa;border-color:#5b9dd9;box-shadow:0 0 3px #0073aacc;color:#23282d;outline:none}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:left;max-width:none;width:100%}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}#wpseotab .ui-widget-content .ui-state-hover{background:#f1f1f1;border:1px solid #dfdfdf;color:#333}.yst-traffic-light{height:30px;margin:0 0 0 5px;width:19px}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}.yoast-seo-score .yoast-logo.svg{background:var(--yoast-svg-icon-yoast) no-repeat;background-size:18px;flex-shrink:0;float:left;height:18px;margin-right:7px;width:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:var(--yoast-svg-icon-yoast-good)}.yoast-seo-score .yoast-logo.svg.ok{background-image:var(--yoast-svg-icon-yoast-ok)}.yoast-seo-score .yoast-logo.svg.bad{background-image:var(--yoast-svg-icon-yoast-bad)}.yoast-seo-score .yoast-logo.svg.na,.yoast-seo-score .yoast-logo.svg.noindex{background-image:var(--yoast-svg-icon-yoast)}.term-php .wpseo-taxonomy-metabox-postbox>h2{border-bottom:1px solid #eee;font-size:14px;line-height:1.4;margin:0;padding:8px 12px}#TB_window #TB_ajaxContent p{margin:5px 0 0;padding:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li:before{content:"+";font-weight:700;margin:0 10px 0 0}.yoast-section__heading-icon-list{background-image:var(--yoast-svg-icon-list)}.yoast-section__heading-icon-key{background-image:var(--yoast-svg-icon-key)}.yoast-section__heading-icon-edit{background-image:var(--yoast-svg-icon-edit)}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{background:#f1f1f1;border-left-color:#a4286a;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;height:20px;margin-right:5px;padding:0;width:20px}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}.wpseo-score-icon-container{align-items:center;display:flex;height:20px;justify-content:center;margin-right:8px;width:20px}.yoast-seo-sidebar-panel .yoast-analysis-check{display:flex}.yoast-seo-sidebar-panel .yoast-analysis-check svg{margin-right:5px;margin-top:6px}.yoast-seo-sidebar-panel .yoast-analysis-check span{line-height:1.5;margin-top:3px}.yoast-seo-sidebar-panel div{line-height:2}.yoast-seo-sidebar-panel div svg{vertical-align:middle}ul.yoast-seo-social-share-buttons li{display:inline-block;margin-right:24px}ul.yoast-seo-social-share-buttons li .x-share svg{fill:#000;height:30px;width:30px}ul.yoast-seo-social-share-buttons svg{height:32px;margin-bottom:8px;width:32px}ul.yoast-seo-social-share-buttons a{align-items:center;display:flex;flex-direction:column}.yoast-field-group.yoast-wincher-post-publish{margin-bottom:10px}.edit-post-pinned-plugins button.components-button:not(.is-compact)[aria-label="Yoast SEO Premium"]>svg,.edit-post-pinned-plugins button.components-button:not(.is-compact)[aria-label="Yoast SEO"]>svg,div.interface-pinned-items button.components-button:not(.is-compact)[aria-label="Yoast SEO Premium"]>svg,div.interface-pinned-items button.components-button:not(.is-compact)[aria-label="Yoast SEO"]>svg{height:28px;max-height:28px;max-width:28px;width:28px}div.interface-pinned-items button.components-button.is-pressed[aria-label="Yoast SEO Premium"]>svg path,div.interface-pinned-items button.components-button.is-pressed[aria-label="Yoast SEO"]>svg path{fill:#fff}.wpseo-schema-icon{align-items:center;background-image:var(--yoast-svg-icon-schema);background-size:cover;display:flex;height:16px;justify-content:center;margin-right:8px;width:16px}.wpseo-metabox-menu ul li.active a .wpseo-schema-icon{background-image:var(--yoast-svg-icon-schema-active)}.yoast-icon-span svg{fill:inherit;margin-right:8px}.yoast.components-panel__body{border-top:0}.components-button>.yoast-title-container{flex-grow:1;line-height:normal;overflow-x:hidden}.yoast-title-container>.yoast-subtitle,.yoast-title-container>.yoast-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yoast-title-container>.yoast-subtitle{font-size:.8125rem;font-weight:300;margin-top:2px}.yoast.components-panel__body .yoast-chevron{background-color:#1e1e1e;display:inline-block;height:24px;-webkit-mask-image:var(--yoast-svg-icon-chevron-down);mask-image:var(--yoast-svg-icon-chevron-down);-webkit-mask-size:100% 100%;mask-size:100% 100%;width:24px}.yoast.components-panel__body.is-opened .yoast-chevron{-webkit-mask-image:var(--yoast-svg-icon-chevron-up);mask-image:var(--yoast-svg-icon-chevron-up)}.yoast .components-panel__body-toggle{padding-right:16px}.yoast .components-form-token-field__remove-token.components-button,.yoast .components-form-token-field__token-text{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast .yoast-insights{color:#404040}.yoast .yoast-insights .yoast-field-group__title>b{color:var(--yoast-color-primary);font-size:16px;font-weight:var(--yoast-font-weight-default);line-height:1.2em}.yoast .yoast-insights-card__score{color:var(--yoast-color-primary);margin-block:0}.yoast .yoast-insights-card__description{line-height:1.4em}.yoast .yoast-prominent-words p,.yoast .yoast-prominent-words ul,.yoast .yoast-text-formality p{margin-block:1.2em}.yoast #wpseo-metabox-root .yoast-prominent-words{border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}.yoast .yoast-insights .yoast-data-model--upsell li{color:#bbb}.yoast .yoast-insights .yoast-data-model--upsell li:after{background:#fdf4f8}css/dist/yst_seo_score-2390.css000064400000000773147206602470012303 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 10px 0 3px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}.wpseo-score-title{font-weight:600}#taxonomy_overall{margin-left:87.5%;position:absolute;top:0}css/dist/structured-data-blocks-2390.css000064400000006675147206602470014020 0ustar00.schema-faq-section,.schema-how-to-step{border:1px solid #9197a240;list-style-type:none;margin:4px 0;padding:8px 4px 8px 32px;position:relative}.schema-faq-buttons,.schema-how-to-buttons{display:flex;justify-content:center}.schema-faq-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-buttons button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section-mover,.schema-how-to-step-mover{display:inline-block}.schema-faq-section-mover .editor-block-mover__control,.schema-how-to-step-mover .editor-block-mover__control{display:inline-flex;height:36px;width:36px}.schema-faq-question,.schema-how-to-step-name{font-weight:600}.schema-faq .schema-faq-answer,.schema-faq .schema-faq-question,.schema-how-to .schema-how-to-description,.schema-how-to .schema-how-to-step-name,.schema-how-to .schema-how-to-step-text,.schema-how-to .schema-how-to-steps{line-height:inherit;margin:0}.schema-how-to .schema-how-to-steps{padding-top:0}.schema-faq-section-button-container,.schema-how-to-step-button-container{display:inline-flex;text-align:right}.schema-faq-section-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover,.schema-how-to-step-button-container button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-faq-section-controls-container,.schema-how-to-step-controls-container{margin-left:-28px;text-align:right}.schema-faq-section-controls-container .dashicons-arrow-up-alt2,.schema-how-to-step-controls-container .dashicons-arrow-up-alt2{position:relative;top:-1px}.faq-section-add-media .dashicon,.how-to-step-add-media .dashicon,.schema-faq-add-question .dashicon,.schema-how-to-add-step .dashicon,.schema-how-to-duration-button .dashicon{margin-right:4px}.schema-how-to{padding-top:4px}.schema-how-to-step-number{left:4px;position:absolute;text-align:right;width:24px}.schema-how-to-duration{border:0;margin:0;padding:0}.schema-how-to-duration-flex-container{align-items:center;display:flex}.schema-how-to-duration-time-input{align-items:center;display:inline-flex;flex-wrap:nowrap}legend.schema-how-to-duration-legend{margin-right:4px}#schema-how-to-duration-days{margin-right:8px}.schema-how-to-duration .schema-how-to-duration-input[type=number]{-moz-appearance:textfield;margin:0 2px;padding:6px 4px;text-align:center;width:40px}.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-inner-spin-button,.schema-how-to-duration .schema-how-to-duration-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.schema-how-to-duration-button.components-icon-button{margin-left:-8px;vertical-align:top}.schema-how-to-duration-button.components-icon-button:not(:disabled):not([aria-disabled=true]):not(.is-default):hover{box-shadow:none;color:#007cba}.schema-how-to-description{margin:8px 0}body.is-dark-theme .schema-faq-section-mover button.components-button,body.is-dark-theme .schema-how-to-step-mover button.components-button,body.is-dark-theme button.components-button.schema-faq-add-question,body.is-dark-theme button.components-button.schema-faq-section-button,body.is-dark-theme button.components-button.schema-how-to-add-step,body.is-dark-theme button.components-button.schema-how-to-duration-button,body.is-dark-theme button.components-button.schema-how-to-step-button{color:#e8eaed}css/dist/inside-editor-2390-rtl.css000064400000000152147206602470012750 0ustar00.yoast-text-mark{background-color:#e1bee7}.yoast-text-mark__highlight{background-color:#4a148c;color:#fff}css/dist/metabox-2390-rtl.css000064400000077016147206602470011665 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;right:0;position:fixed;left:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);right:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;left:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-left:16px;width:19px}.yoast-modal__menu{border-left:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-left:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-left:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;right:0;left:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-left:8px}.yoast .yoast-close{left:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-right:16px;margin-left:16px;padding-right:0;padding-left:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:right;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(-180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:left;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;right:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-left:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-left:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}.m6zwb4v,.m6zwb4v:visited{background:#e6f3ff;border-radius:2px;color:#575f67;cursor:pointer;display:inline-block;padding-right:2px;padding-left:2px;-webkit-text-decoration:none;text-decoration:none}.m6zwb4v:focus,.m6zwb4v:hover{background:#edf5fd;color:#677584;outline:0}.m6zwb4v:active{background:#455261;color:#222}.mnw6qvm{background:#fff;border:1px solid #eee;border-radius:2px;box-shadow:0 4px 30px 0 #dcdcdc;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;max-width:440px;min-width:220px;padding-bottom:8px;padding-top:8px;position:absolute;transform:scale(0);z-index:2}.m1ymsnxd{opacity:0;transition:opacity .25s cubic-bezier(.3,1.2,.2,1)}.m126ak5t{opacity:1}.mtiwdxc{padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.mtiwdxc:active{background-color:#cce7ff}.myz2dw1{background-color:#e6f3ff;padding:7px 10px 3px;transition:background-color .4s cubic-bezier(.27,1.27,.48,.56)}.myz2dw1:active{background-color:#cce7ff}.mpqdcgq{font-size:.9em;margin-bottom:.2em;margin-right:8px;max-width:368px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m1mfvffo,.mpqdcgq{display:inline-block}.m1mfvffo{border-radius:12px;height:24px;width:24px}.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-root{position:relative}.DraftEditor-editorContainer{background-color:#fff0;border-left:.1px solid #0000;position:relative;z-index:1}.public-DraftEditor-block{position:relative}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;width:100%;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.DraftEditorPlaceholder-hidden{display:none}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1,lower-alpha) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2,lower-roman) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4,lower-alpha) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}#wpseo_meta{box-sizing:border-box}#wpseo_meta *,#wpseo_meta :after,#wpseo_meta :before{box-sizing:inherit}.DraftEditor-root [data-block]{margin:0}#edittag>#wp-description-wrap{display:none}#wp-description-wrap .wp-editor-area{border:0}.term-description-wrap td>textarea#description{min-height:530px}.wpseo-meta-section,.wpseo-meta-section-react{border:1px solid #0003;display:none;height:auto;max-width:600px;min-height:100%;vertical-align:top;width:100%}.wpseo-meta-section-react.active,.wpseo-meta-section.active{background:#fff;position:relative;z-index:12}.wpseo-meta-section.active{display:inline-block}.wpseo-meta-section-react.active{display:block;margin-bottom:10px}.wpseo-meta-section-content{padding:16px}.wpseo-metabox-content{max-width:800px;padding-top:16px}.edit-post-meta-boxes-area__container .wpseo-metabox .postbox-header{border-bottom:1px solid #ddd}.edit-post-meta-boxes-area__container .wpseo-metabox .inside{background-color:#f1f5f9}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-metabox-content{max-width:none;padding:32px 8px 8px}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-meta-section,.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-metabox-menu{margin:0 auto}.edit-post-meta-boxes-area__container .wpseo-metabox .wpseo-meta-section.active{display:block}.wpseo-metabox-menu{max-width:600px;padding:0}.wpseo-metabox-menu ul{align-items:flex-end;display:flex;flex-wrap:wrap;flex-flow:wrap-reverse;margin:0 0 0 1px;padding:0 16px 0 0}.wpseo-metabox-menu ul li:first-child{z-index:10}.wpseo-metabox-menu ul li:nth-child(2){z-index:9}.wpseo-metabox-menu ul li:nth-child(3){z-index:8}.wpseo-metabox-menu ul li:nth-child(4){z-index:7}.wpseo-metabox-menu ul li:nth-child(5){z-index:6}.wpseo-metabox-menu ul li:nth-child(6){z-index:5}.wpseo-metabox-menu ul li{background-color:#f8f8f8;box-shadow:0 0 4px 0 #0000001a;height:32px;margin-bottom:-1px;margin-right:-1px;position:relative;text-align:center}.wpseo-metabox-menu ul li a{align-items:center;border:1px solid #0003;border-bottom:2px #0000;color:#0073aa;display:flex}.wpseo-metabox-menu ul li a:focus{box-shadow:inherit}.wpseo-metabox-menu ul li .yst-traffic-light{height:20px;margin-right:4px;margin-left:10px;width:auto}.wpseo-metabox-menu ul li span.dashicons{margin-left:8px}.wpseo-metabox-menu ul li span.wpseo-buy-premium{color:#a4286a}.wpseo-metabox-menu ul li span.wpseo-buy-premium:hover{color:#832055}.wpseo-metabox-menu ul li.active{background-color:#fff;border-bottom:2px #0000;box-shadow:none;height:36px;margin-top:-4px;z-index:13}.wpseo-metabox-menu ul li.active a{color:#444;height:36px}.wpseo-metabox-menu ul li.active span.wpseo-buy-premium{border-color:#a4286a;color:#a4286a}.wpseo-metabox-menu ul li.active span.wpseo-buy-premium:hover{border-color:#832055;color:#832055}.wpseo-metabox-menu a{height:32px;padding:0 8px;text-decoration:none}.wpseotab{background-color:#fdfdfd;border:1px solid #ddd;display:none;padding:16px}.wpseotab .wpseo-cornerstone-checkbox{margin-left:.5em}.wpseotab.content{padding:20px 15px}.wpseotab.active{display:block}.wpseo-metabox-sidebar .dashicons{font-size:30px;height:30px;width:30px}#wpseo_meta .inside{margin:0}#wpseo_meta .inside:after{clear:both;content:"";display:table}#wpseo_meta .postbox .inside .wpseotab{font-size:13px!important}.wpseo-form input,.wpseo-form label,.wpseo-form p.error-message,.wpseo-form textarea{max-width:600px}.wpseo-form fieldset{padding-top:5px}.wpseo-form legend{font-weight:600}.wpseo-form label{display:block;font-weight:600}.wpseo-form input[type=checkbox]+label,.wpseo-form input[type=radio]+label{display:inline-block;font-weight:400}.wpseo-form fieldset,.wpseo-form label{margin-bottom:.5em;margin-top:2em}.wpseo-form input[type=checkbox],.wpseo-form input[type=checkbox]+label{font-size:1em;margin-bottom:0;margin-top:2em}.wpseo-form fieldset:first-child,.wpseo-form input[type=checkbox]:first-child,.wpseo-form input[type=checkbox]:first-child+label,.wpseo-form label:first-child{margin-top:10px}.wpseo-form input[type=radio]{margin-top:0}.wpseo-form input[type=radio]+label{margin:0 0 0 1em}.wpseo-form p.error-message{margin:.5em 0}.wpseo-form select[multiple]{margin-top:0}.yoast-metabox__description{margin:.5em 0;max-width:600px}.good,.warn,.wrong{font-weight:600}.good{color:green}.warn{color:maroon}.wrong{color:#dc3232}#current_seo_title span{background-color:#ffffe0;padding:2px 5px}#focuskwresults ul{margin:0}#focuskwresults li,#focuskwresults p{font-size:13px}#focuskwresults li{list-style-type:disc;margin:0 20px 0 0}.wpseo_hidden{display:none}.wpseo_msg{background-color:#ffffe0;border:1px solid #e6db55;margin:5px 0 10px;padding:0 5px}.snippet-editor__button.snippet-editor__edit-button:focus{background-color:#fafafa;border-color:#5b9dd9;box-shadow:0 0 3px #0073aacc;color:#23282d;outline:none}.wpseo-admin-page .subsubsub li{display:inline;max-width:none}.yoast-seo-help-container{float:right;max-width:none;width:100%}.yoast-seo-help-container .yoast-help-panel{margin:.5em 0!important}.wpseo_content_wrapper p.search-box{margin:10px 0 5px}#wpseotab .ui-widget-content .ui-state-hover{background:#f1f1f1;border:1px solid #dfdfdf;color:#333}.yst-traffic-light{height:30px;margin:0 5px 0 0;width:19px}.yst-traffic-light .traffic-light-color{display:none}.yst-traffic-light.bad .traffic-light-red,.yst-traffic-light.good .traffic-light-green,.yst-traffic-light.init .traffic-light-init,.yst-traffic-light.na .traffic-light-empty,.yst-traffic-light.ok .traffic-light-orange{display:inline}.yoast-seo-score .yoast-logo.svg{background:var(--yoast-svg-icon-yoast) no-repeat;background-size:18px;flex-shrink:0;float:right;height:18px;margin-left:7px;width:18px}.yoast-seo-score .yoast-logo.svg.good{background-image:var(--yoast-svg-icon-yoast-good)}.yoast-seo-score .yoast-logo.svg.ok{background-image:var(--yoast-svg-icon-yoast-ok)}.yoast-seo-score .yoast-logo.svg.bad{background-image:var(--yoast-svg-icon-yoast-bad)}.yoast-seo-score .yoast-logo.svg.na,.yoast-seo-score .yoast-logo.svg.noindex{background-image:var(--yoast-svg-icon-yoast)}.term-php .wpseo-taxonomy-metabox-postbox>h2{border-bottom:1px solid #eee;font-size:14px;line-height:1.4;margin:0;padding:8px 12px}#TB_window #TB_ajaxContent p{margin:5px 0 0;padding:5px 0 0}#TB_window #TB_ajaxContent ul{margin:5px 0 10px}#TB_window #TB_ajaxContent li{list-style:none;margin:5px 0 0}#TB_window #TB_ajaxContent li:before{content:"+";font-weight:700;margin:0 0 0 10px}.yoast-section__heading-icon-list{background-image:var(--yoast-svg-icon-list)}.yoast-section__heading-icon-key{background-image:var(--yoast-svg-icon-key)}.yoast-section__heading-icon-edit{background-image:var(--yoast-svg-icon-edit)}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.screen-reader-text.wpseo-generic-tab-textual-score,.screen-reader-text.wpseo-keyword-tab-textual-score{display:block}.yoast-notice-go-premium{background:#f1f1f1;border-right-color:#a4286a;margin:0}.editor-styles-wrapper mark.annotation-text-yoast{background-color:#e1bee7}@media screen and (max-width:782px){.wpseo-metabox-buy-premium .wpseo-buy-premium{display:inline-block;height:20px;margin-left:5px;padding:0;width:20px}.yoast-help-panel{max-width:none!important}#wpseo-crawl-issues-table-form .subsubsub{float:none;max-width:calc(100vw - 20px)}#wpseo-crawl-issues-table-form .yoast-help-button{margin-top:3px}.wpseotab select[multiple]{height:auto!important}}@media screen and (max-width:600px){.wpseotab.content{padding:16px 0}}.wpseo-score-icon-container{align-items:center;display:flex;height:20px;justify-content:center;margin-left:8px;width:20px}.yoast-seo-sidebar-panel .yoast-analysis-check{display:flex}.yoast-seo-sidebar-panel .yoast-analysis-check svg{margin-left:5px;margin-top:6px}.yoast-seo-sidebar-panel .yoast-analysis-check span{line-height:1.5;margin-top:3px}.yoast-seo-sidebar-panel div{line-height:2}.yoast-seo-sidebar-panel div svg{vertical-align:middle}ul.yoast-seo-social-share-buttons li{display:inline-block;margin-left:24px}ul.yoast-seo-social-share-buttons li .x-share svg{fill:#000;height:30px;width:30px}ul.yoast-seo-social-share-buttons svg{height:32px;margin-bottom:8px;width:32px}ul.yoast-seo-social-share-buttons a{align-items:center;display:flex;flex-direction:column}.yoast-field-group.yoast-wincher-post-publish{margin-bottom:10px}.edit-post-pinned-plugins button.components-button:not(.is-compact)[aria-label="Yoast SEO Premium"]>svg,.edit-post-pinned-plugins button.components-button:not(.is-compact)[aria-label="Yoast SEO"]>svg,div.interface-pinned-items button.components-button:not(.is-compact)[aria-label="Yoast SEO Premium"]>svg,div.interface-pinned-items button.components-button:not(.is-compact)[aria-label="Yoast SEO"]>svg{height:28px;max-height:28px;max-width:28px;width:28px}div.interface-pinned-items button.components-button.is-pressed[aria-label="Yoast SEO Premium"]>svg path,div.interface-pinned-items button.components-button.is-pressed[aria-label="Yoast SEO"]>svg path{fill:#fff}.wpseo-schema-icon{align-items:center;background-image:var(--yoast-svg-icon-schema);background-size:cover;display:flex;height:16px;justify-content:center;margin-left:8px;width:16px}.wpseo-metabox-menu ul li.active a .wpseo-schema-icon{background-image:var(--yoast-svg-icon-schema-active)}.yoast-icon-span svg{fill:inherit;margin-left:8px}.yoast.components-panel__body{border-top:0}.components-button>.yoast-title-container{flex-grow:1;line-height:normal;overflow-x:hidden}.yoast-title-container>.yoast-subtitle,.yoast-title-container>.yoast-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.yoast-title-container>.yoast-subtitle{font-size:.8125rem;font-weight:300;margin-top:2px}.yoast.components-panel__body .yoast-chevron{background-color:#1e1e1e;display:inline-block;height:24px;-webkit-mask-image:var(--yoast-svg-icon-chevron-down);mask-image:var(--yoast-svg-icon-chevron-down);-webkit-mask-size:100% 100%;mask-size:100% 100%;width:24px}.yoast.components-panel__body.is-opened .yoast-chevron{-webkit-mask-image:var(--yoast-svg-icon-chevron-up);mask-image:var(--yoast-svg-icon-chevron-up)}.yoast .components-panel__body-toggle{padding-left:16px}.yoast .components-form-token-field__remove-token.components-button,.yoast .components-form-token-field__token-text{background-color:var(--yoast-color-primary);color:var(--yoast-color-white)}.yoast .yoast-insights{color:#404040}.yoast .yoast-insights .yoast-field-group__title>b{color:var(--yoast-color-primary);font-size:16px;font-weight:var(--yoast-font-weight-default);line-height:1.2em}.yoast .yoast-insights-card__score{color:var(--yoast-color-primary);margin-block:0}.yoast .yoast-insights-card__description{line-height:1.4em}.yoast .yoast-prominent-words p,.yoast .yoast-prominent-words ul,.yoast .yoast-text-formality p{margin-block:1.2em}.yoast #wpseo-metabox-root .yoast-prominent-words{border-bottom:1px solid #0000001a;margin-bottom:24px;padding-bottom:24px}.yoast .yoast-insights .yoast-data-model--upsell li{color:#bbb}.yoast .yoast-insights .yoast-data-model--upsell li:after{background:#fdf4f8}css/dist/support-2390.css000064400000000676147206602470011141 0ustar00.seo_page_wpseo_page_support{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}.seo_page_wpseo_page_support #wpcontent{padding-left:0!important}.seo_page_wpseo_page_support #wpfooter{padding-right:1rem}@media (min-width:768px){.seo_page_wpseo_page_support #wpfooter{padding-left:17rem;padding-right:2rem}}@media screen and (max-width:782px){.seo_page_wpseo_page_support .wp-responsive-open #wpbody{right:-190px}}css/dist/introductions-2390-rtl.css000064400000022655147206602470013131 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-color-default:#404040;--yoast-color-default-darker:#303030;--yoast-color-primary:#a4286a;--yoast-color-secondary:#f7f7f7;--yoast-color-white:#fff;--yoast-color-green:#6ea029;--yoast-color-primary-darker:#7b1e50;--yoast-color-primary-lighter:#f5d6e6;--yoast-color-secondary-darker:#d9d9d9;--yoast-color-button-upsell:#fec228;--yoast-color-button-upsell-hover:#f2ae01;--yoast-color-dark:#303030;--yoast-color-sale:#fec228;--yoast-color-sale-darker:#feb601;--yoast-color-border:#0003;--yoast-color-label:#303030;--yoast-color-label-help:#707070;--yoast-color-active:#6ea029;--yoast-color-inactive:#dc3232;--yoast-color-inactive-text:#707070;--yoast-color-inactive-grey:#9e9e9e;--yoast-color-inactive-grey-light:#f1f1f1;--yoast-color-active-light:#b6cf94;--yoast-transition-default:all 150ms ease-out;--yoast-color-link:#006dac;--yoast-color-border--default:#0003;--yoast-color-focus:0 0 0 2px #007fff,0 0 0 5px #bfdfff}.yst-root .yst-introduction-modal .yst-modal__close-button{--tw-text-opacity:1;background-color:initial;color:rgb(107 114 128/var(--tw-text-opacity))}.yst-root .yst-introduction-modal .yst-modal__close-button:focus{--tw-ring-offset-width:0px;outline:2px solid #0000;outline-offset:2px}.yst-root .yst-introduction-gradient{background:linear-gradient(-180deg,#a61e6940 10%,#fff0 80%)}.yst-root .yst-introduction-modal-uppercase{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity));letter-spacing:.8px;text-transform:uppercase}.yst-root .yst-logo-icon{background-color:var(--yoast-color-primary);height:17px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:17px}css/dist/dashboard-2390.css000064400000001746147206602470011353 0ustar00#yoast-seo-dashboard-widget h3{font-weight:700}#yoast-seo-dashboard-widget .assessments,#yoast-seo-dashboard-widget .score-assessments{padding-left:0}#yoast-seo-dashboard-widget .wordpress-feed{border-top:1px solid #eee;margin:16px -12px 0;padding:12px 12px 0}#yoast-seo-dashboard-widget .wordpress-feed .wordpress-feed__post{margin-top:12px}#yoast-seo-dashboard-widget .wordpress-feed .wordpress-feed__footer{border-top:1px solid #eee;margin:0 -12px;padding:4px 12px 0}#yoast-seo-dashboard-widget:empty:before,#yoast-seo-wincher-dashboard-widget:empty:before{animation:rotate 2s linear infinite;background-image:url(../../packages/js/images/Yoast_SEO_Icon.svg);content:"";display:block;height:40px;margin:25px auto;width:40px}@keyframes rotate{0%{transform:perspective(120px) rotateX(0deg) rotateY(0deg);-webkit-transform:perspective(120px) rotateX(0deg) rotateY(0deg)}to{transform:perspective(120px) rotateX(0deg) rotateY(1turn);-webkit-transform:perspective(120px) rotateX(0deg) rotateY(1turn)}}css/dist/modal-2390-rtl.css000064400000017554147206602470011323 0ustar00.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;right:0;position:fixed;left:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);right:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-left:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;left:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-left:16px;width:19px}.yoast-modal__menu{border-left:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-left:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-left:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;right:0;left:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-left:8px}.yoast .yoast-close{left:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-right:16px;margin-left:16px;padding-right:0;padding-left:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:right;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(-180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:left;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;right:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-left:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-left:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}css/dist/adminbar-2390.css000064400000010137147206602470011173 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 10px 0 3px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}#wp-admin-bar-wpseo-menu .wpseo-score-icon{margin:10px 0 0 4px!important}#wp-admin-bar-wpseo-menu .wpseo-score-icon.adminbar-sub-menu-score{margin:11px 0 0 4px!important}#wp-admin-bar-wpseo-menu-default .ab-item{line-height:2.46153846!important}#wp-admin-bar-wpseo-menu .ab-submenu{margin-bottom:5px}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu #wp-admin-bar-wpseo-menu-default li#wp-admin-bar-wpseo-get-premium a{color:#fff!important;font-weight:700!important}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu #wp-admin-bar-wpseo-menu-default li#wp-admin-bar-wpseo-get-premium span{background:#1f2937;border:1px solid #fcd34d;border-radius:14px;color:#fcd34d;font-size:13px;font-weight:600;padding:1px 4px}#wpadminbar .yoast-menu-bf-sale-badge{text-wrap:nowrap;background-color:#1f2937;border:1px solid #fcd34d;border-radius:8px;color:#fcd34d;font-size:10px;font-weight:600;line-height:normal;margin-left:5px;padding:2px 8px}#wpadminbar .quicklinks #wp-admin-bar-wpseo-menu .wpseo-focus-keyword{display:inline-block!important;max-width:100px!important;overflow:hidden;text-overflow:ellipsis!important;vertical-align:bottom;white-space:nowrap}#wpadminbar .yoast-badge{border-radius:8px;display:inline-block;font-weight:600;line-height:1.6;margin-left:4px;padding:0 8px}#wpadminbar .yoast-beta-badge{background-color:#cce5ff;color:#004973}#wpadminbar .yoast-premium-badge{background-color:#fff3cd;color:#674e00}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{background-color:#a4286a;border-radius:0 10px 10px 10px;box-shadow:1px 1px 1px 1px grey;color:#fff;left:0;padding:2px 12px;position:absolute;top:32px;white-space:nowrap}#wpadminbar .yoast-issue-added{display:none}#wpadminbar .yoast-issue-counter{background-color:#d63638;border-radius:9px;color:#fff;display:inline;padding:1px 7px 1px 6px!important}#wpadminbar .yoast-logo.svg{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbDpzcGFjZT0icHJlc2VydmUiIHN0eWxlPSJmaWxsOiM4Mjg3OGMiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBkPSJNMjAzLjYgMzk1YzYuOC0xNy40IDYuOC0zNi42IDAtNTRsLTc5LjQtMjA0aDcwLjlsNDcuNyAxNDkuNCA3NC44LTIwNy42SDExNi40Yy00MS44IDAtNzYgMzQuMi03NiA3NlYzNTdjMCA0MS44IDM0LjIgNzYgNzYgNzZIMTczYzE2LTguOSAyNC42LTIyLjcgMzAuNi0zOHpNNDcxLjYgMTU0LjhjMC00MS44LTM0LjItNzYtNzYtNzZoLTNMMjg1LjcgMzY1Yy05LjYgMjYuNy0xOS40IDQ5LjMtMzAuMyA2OGgyMTYuMlYxNTQuOHoiLz48cGF0aCBkPSJtMzM4IDEuMy05My4zIDI1OS4xLTQyLjEtMTMxLjloLTg5LjFsODMuOCAyMTUuMmM2IDE1LjUgNiAzMi41IDAgNDgtNy40IDE5LTE5IDM3LjMtNTMgNDEuOWwtNy4yIDF2NzZoOC4zYzgxLjcgMCAxMTguOS01Ny4yIDE0OS42LTE0Mi45TDQzMS42IDEuM0gzMzh6TTI3OS40IDM2MmMtMzIuOSA5Mi02Ny42IDEyOC43LTEyNS43IDEzMS44di00NWMzNy41LTcuNSA1MS4zLTMxIDU5LjEtNTEuMSA3LjUtMTkuMyA3LjUtNDAuNyAwLTYwbC03NS0xOTIuN2g1Mi44bDUzLjMgMTY2LjggMTA1LjktMjk0aDU4LjFMMjc5LjQgMzYyeiIvPjwvc3ZnPg==");background-position:0 6px;background-repeat:no-repeat;background-size:20px;float:left;height:30px;width:26px}#wpadminbar #wp-admin-bar-wpseo-licenses .ab-item{color:#f18500}#wpadminbar .wpseo-no-adminbar-notifications{display:none}@media screen and (max-width:782px){#wp-admin-bar-wpseo-menu .wpseo-score-icon{margin:16px 10px 0 2px!important}#wpadminbar #wp-admin-bar-wpseo-menu{display:block;position:static}#wpadminbar .yoast-logo.svg{background-position:50% 8px;background-size:30px;height:46px;width:52px}#wpadminbar .yoast-logo+.yoast-issue-counter{margin-left:-5px;margin-right:10px}#wpadminbar .ab-sub-wrapper .yoast-issue-counter{position:relative;top:-5px;vertical-align:text-top}#wpadminbar .yoast-issue-added,#wpadminbar .yoast-issue-added:hover{line-height:1.8;top:46px;white-space:normal}#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-kwresearch,#wp-admin-bar-wpseo-menu.menupop .ab-sub-wrapper #wp-admin-bar-wpseo-settings{display:none}}css/dist/wpseo-dismissible-2390-rtl.css000064400000001352147206602470013656 0ustar00.yoast-notice-dismiss:before{-webkit-font-smoothing:antialiased!important;speak:none;background:none;color:#b4b9be;content:"\f153";display:block!important;font:normal 16px/1 dashicons;height:20px;text-align:center;width:20px}.yoast-notice-dismiss{background:none;border:none;color:#b4b9be;cursor:pointer;margin:0;padding:9px;position:absolute;left:1px;top:0}.yoast-notice-dismiss:before{right:0;line-height:20px;position:relative;top:0}.yoast-notice-dismiss:active:before,.yoast-notice-dismiss:focus:before,.yoast-notice-dismiss:hover:before{color:#c00}.yoast-notice-dismiss:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc;color:#c00;outline:none}.yoast-notice.is-dismissible{position:relative}.yoast-notice-dismiss{text-decoration:none}css/dist/notifications-2390-rtl.css000064400000026202147206602470013066 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.screen-reader-text{clip:rect(1px,1px,1px,1px);word-wrap:normal!important;border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute!important;width:1px}.yoast-notification{background:#fff;border-right:4px solid #fff;box-shadow:0 1px 2px #0003;padding:0 12px}.yoast-container{background-color:#fdfdfd;border:1px solid #e5e5e5;box-shadow:0 1px 1px #0000000a;margin:20px 0 1px;max-width:1280px;padding:20px 20px 0;position:relative}.yoast-notifications>h2:first-child{font-size:23px;font-weight:400;line-height:29px;margin:0;padding:9px 0 4px}.yoast-notifications .yoast-container h3{background-color:#fdfdfd;border-bottom:1px solid #ccc;font-size:1.4em;margin:-20px -20px 0;padding:1em}.yoast-container .container{max-width:980px}.yoast-container .yoast-notification-holder{display:flex;position:relative}.dismiss .dashicons,.restore .dashicons{font-size:20px;height:20px;width:20px}.yoast-bottom-spacing{margin-bottom:20px}.yoast-notifications .button.dismiss,.yoast-notifications .button.restore{background:#0000;border:none;border-radius:0;box-shadow:none;cursor:pointer;height:100%;line-height:inherit;outline:none;padding:0;position:absolute;left:0;width:52px}.yoast-notifications .button.dismiss:focus,.yoast-notifications .button.dismiss:hover,.yoast-notifications .button.restore:focus,.yoast-notifications .button.restore:hover{background:#0000}.yoast-notifications .button.dismiss:focus:before,.yoast-notifications .button.restore:focus:before{border-radius:50%;box-shadow:0 0 0 1px #007cba;content:"";display:block;height:32px;right:50%;outline:2px solid #0000;position:absolute;top:50%;transform:translate(50%,-50%);width:32px}.yoast-container .separator{border-top:1px solid #ddd;margin-bottom:1em;margin-top:1em}.yoast-container .dashicons-yes{color:#77b227}.yoast-container-disabled{background-color:#e8e8e8b3;border-radius:4px;bottom:0;display:table-cell;right:0;position:absolute;left:0;top:0}.yoast-no-issues{color:#666;padding:1em 16px 1em 1em}.yoast-muted-title{font-style:italic;font-weight:600;overflow:hidden}.yoast-muted-title:after{border-top:1px solid #ddd;content:"";display:inline-block;height:.5em;margin-right:10px;margin-left:-100%;vertical-align:bottom;width:100%}.yoast-notifications-active .yoast-notification,.yoast-notifications-dismissed .yoast-notification{flex:1;padding-left:52px}.yoast-notifications-active .yoast-notification-holder{margin-bottom:20px}.yoast-notifications-dismissed.paper.tab-block{margin:20px 0}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container{padding:0}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container .yoast-notification-holder:nth-child(odd){background-color:#f7f7f7}.yoast-notifications-dismissed.paper.tab-block .paper-container.toggleable-container .yoast-notification-holder:nth-child(odd) .yoast-notification{background-color:initial}.yoast-notifications-dismissed .yoast-svg-icon-eye{background:#0000 var(--yoast-svg-icon-eye) no-repeat 100% 0;background-size:20px}#yoast-errors-header .dashicons{color:#dc3232}#yoast-errors-active .yoast-notification{border-right-color:#dc3232}#yoast-errors-dismissed .yoast-notification{border-right-color:#d93f69}#yoast-warnings-header .dashicons{color:#5d237a}#yoast-warnings-active .yoast-notification{border-right-color:#5d237a}#yoast-warnings-dismissed .yoast-notification{border-right-color:#0075b3}css/dist/first-time-configuration-2390-rtl.css000064400000005070147206602470015145 0ustar00#yoast-configuration .yst-input{--tw-bg-opacity:1!important;--tw-shadow:0 1px 2px 0 #0000000d!important;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)!important;background-color:rgb(255 255 255/var(--tw-bg-opacity))!important;border-radius:.375rem!important;border-width:1px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important;font-size:.8125rem!important;padding:.5rem .75rem!important}#yoast-configuration .yst-radio{align-items:center!important;display:flex!important}#yoast-configuration .yst-radio__input{--tw-border-opacity:1!important;--tw-text-opacity:1!important;--tw-shadow:0 0 #0000!important;--tw-shadow-colored:0 0 #0000!important;-webkit-appearance:none!important;appearance:none!important;border-color:rgb(209 213 219/var(--tw-border-opacity))!important;border-radius:9999px!important;border-width:1px!important;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)!important;color:rgb(166 30 105/var(--tw-text-opacity))!important;height:1rem!important;margin:0!important;transition-property:none!important;width:1rem!important}#yoast-configuration .yst-radio__input:before{content:var(--tw-content)!important;display:none!important}#yoast-configuration .yst-radio__input:checked{--tw-border-opacity:1!important;border-color:rgb(166 30 105/var(--tw-border-opacity))!important;border-width:5px!important}#yoast-configuration .yst-radio__input:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)!important;--tw-ring-opacity:1!important;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity))!important;--tw-ring-offset-width:2px!important;--tw-ring-offset-color:#fff!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important;outline:2px solid #0000!important;outline-offset:2px!important}#yoast-configuration .yst-radio__label{--tw-text-opacity:1!important;color:rgb(55 65 81/var(--tw-text-opacity))!important;font-weight:500!important;margin-right:.75rem!important}#yoast-configuration .yst-radio-group__label{margin-bottom:.25rem!important}#yoast-configuration .yst-radio-group__options{display:flex!important;flex-direction:column!important;gap:.5rem!important}#yoast-configuration .yst-radio-group__description{margin-bottom:1rem!important}#yoast-configuration .yst-checkbox__input:before{--tw-content:none!important;content:var(--tw-content)!important}css/dist/general-page-2390-rtl.css000064400000017447147206602470012557 0ustar00body.toplevel_page_wpseo_dashboard .notice,body.toplevel_page_wpseo_dashboard .yoast-migrated-notice{display:none}body.toplevel_page_wpseo_dashboard .yoast-general-page-notices:last-child{margin-bottom:2rem}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice,body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard{--tw-border-opacity:1;--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background:#fff;border-color:rgb(224 179 204/var(--tw-border-opacity));border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);padding:.75rem}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:17px;margin-left:12px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:17px}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity));position:relative}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss:hover{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-dismiss:before,body.toplevel_page_wpseo_dashboard .yoast-general-page-notice .notice-yoast img{display:none}body.toplevel_page_wpseo_dashboard .yoast-general-page-notice a{font-weight:500}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard{margin-bottom:.8rem;margin-top:0}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%2394A3B8' class='yst-h-5 yst-w-5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M6 18 18 6M6 6l12 12'/%3E%3C/svg%3E");content:""}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss:hover:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%2364748b' class='yst-h-5 yst-w-5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M6 18 18 6M6 6l12 12'/%3E%3C/svg%3E");content:""}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard p{padding-right:1.8rem}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .yoast-icon{height:17px;margin-left:12px;width:17px}body.toplevel_page_wpseo_dashboard .yoast-notice-migrated-header{color:#1e293b;font-size:.8125rem;font-weight:500;line-height:19px}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard a{font-weight:500}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-yoast__container{padding:0}body.toplevel_page_wpseo_dashboard .yoast-webinar-dashboard .notice-dismiss{padding:.75rem}body.toplevel_page_wpseo_dashboard .notice-yoast__header{margin-bottom:.25rem}body.toplevel_page_wpseo_dashboard{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}body.toplevel_page_wpseo_dashboard #wpcontent{padding-right:0!important}body.toplevel_page_wpseo_dashboard #wpfooter{padding-left:1rem}@media (min-width:768px){body.toplevel_page_wpseo_dashboard #wpfooter{padding-right:17rem;padding-left:2rem}}@media screen and (max-width:782px){body.toplevel_page_wpseo_dashboard .wp-responsive-open #wpbody{left:-190px}}body.toplevel_page_wpseo_dashboard #modal-search .yst-modal__close{margin-top:-.25rem}@media (min-width:783px) and (max-width:962px){body.toplevel_page_wpseo_dashboard.sticky-menu .yst-root .yst-notifications--bottom-left{right:calc(160px + 2rem)}}@media (min-width:783px) and (max-width:963px){body.toplevel_page_wpseo_dashboard.sticky-menu.auto-fold .yst-root .yst-notifications--bottom-left,body.toplevel_page_wpseo_dashboard.sticky-menu.folded .yst-root .yst-notifications--bottom-left{right:calc(32px + 2rem)}}@media (min-width:962px){body.toplevel_page_wpseo_dashboard.sticky-menu.folded .yst-root .yst-notifications--bottom-left{right:calc(32px + 2rem)}}@media (max-width:783px){body.toplevel_page_wpseo_dashboard:not(.sticky-menu) .wp-responsive-open .yst-root .yst-notifications--bottom-left{right:calc(190px + 2rem)}}@media (min-width:601px) and (max-width:768px){body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__top{top:46px}}@media (min-width:783px){body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__top{display:none}}body.toplevel_page_wpseo_dashboard .yst-root .yst-mobile-navigation__dialog{z-index:99999}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);align-items:center;border-radius:.375rem;border-width:1px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;line-height:1.25rem;padding:.5rem .75rem;text-align:center;-webkit-text-decoration-line:none;text-decoration-line:none}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(166 30 105/var(--tw-ring-opacity));--tw-ring-offset-width:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:2px solid #0000;outline-offset:2px}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:disabled{cursor:not-allowed;opacity:.5;pointer-events:none}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{--tw-border-opacity:1;--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));border-color:rgb(203 213 225/var(--tw-border-opacity));color:rgb(30 41 59/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button{font-size:.75rem;line-height:1rem;margin-bottom:unset;margin-top:.75rem;min-height:unset;padding:.375rem .625rem;vertical-align:unset;white-space:normal}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity));cursor:pointer;-webkit-text-decoration-line:underline;text-decoration-line:underline}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:visited{color:#a61e69}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:hover{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity))}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:hover:visited{color:#b94986}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .button-link:focus{--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgb(79 70 229/var(--tw-ring-opacity));--tw-ring-offset-width:1px;--tw-ring-offset-color:#0000;border-radius:.125rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgb(99 102 241/var(--tw-text-opacity));outline:2px solid #0000;outline-offset:2px}body.toplevel_page_wpseo_dashboard .yst-root .yst-paper .ul-disc{list-style-type:disc;margin-right:.75rem;margin-top:.375rem;padding-right:.75rem}body.toplevel_page_wpseo_dashboard.rtl .yst-root .yst-replacevar .emoji-select-popover{right:0;left:auto}css/dist/score_icon-2390.css000064400000000634147206602470011542 0ustar00.wpseo-score-icon{background:#888;border-radius:50%!important;display:inline-block!important;height:12px!important;margin:3px 10px 0 3px;vertical-align:top;width:12px!important}.wpseo-score-icon.good{background-color:#7ad03a}.wpseo-score-icon.ok{background-color:#ee7c1b}.wpseo-score-icon.bad{background-color:#dc3232}.wpseo-score-icon.na{background-color:#888}.wpseo-score-icon.noindex{background-color:#1e8cbe}css/dist/academy-2390.css000064400000000676147206602470011030 0ustar00.seo_page_wpseo_page_academy{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));z-index:-1}.seo_page_wpseo_page_academy #wpcontent{padding-left:0!important}.seo_page_wpseo_page_academy #wpfooter{padding-right:1rem}@media (min-width:768px){.seo_page_wpseo_page_academy #wpfooter{padding-left:17rem;padding-right:2rem}}@media screen and (max-width:782px){.seo_page_wpseo_page_academy .wp-responsive-open #wpbody{right:-190px}}css/dist/ai-generator-2390.css000064400000000652147206602470011774 0ustar00.yst-replacevar__use-ai-button-upsell{align-items:center;background-color:#f7f7f7;border:1px solid #dbdbdb;border-radius:4px;box-shadow:inset 0 -2px 0 0 #0000001a;box-sizing:border-box;color:#303030;cursor:pointer;display:flex;min-height:32px;padding:0 .5em;transition:var(--yoast-transition-default)}.yst-replacevar__use-ai-button-upsell:hover{background-color:#fff;border-color:var(--yoast-color-border--default);color:#000}css/dist/black-friday-banner-2390.css000064400000001254147206602470013211 0ustar00.sidebar__sale_banner_container .sidebar__sale_banner{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity));box-shadow:0 -1px 4px 0 #fcd34d,0 1px 4px 0 #fcd34d,0 -1px 0 0 #fcd34d,0 1px 0 0 #fcd34d;color:#fcd34d;font-size:1.125rem;font-weight:700;letter-spacing:.5px;line-height:30px;margin-bottom:10px;margin-left:-30px;margin-top:1.25rem;padding:.25rem 0;text-align:center;transform:rotate(-5deg);width:calc(100% + 60px)}.sidebar__sale_banner_container .sidebar__sale_banner .banner_text{display:inline-block;margin:0 35px}.sidebar__sale_banner_container{margin-bottom:-25px;margin-left:-24px;margin-top:-25px;overflow:hidden;padding-bottom:10px;width:calc(100% + 48px)}css/dist/admin-global-2390.css000064400000063231147206602470011747 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-tooltip{position:relative}button.yoast-tooltip{overflow:visible}.yoast-tooltip:after{word-wrap:break-word;-webkit-font-smoothing:subpixel-antialiased;background:#000c;border-radius:3px;color:#fff;content:attr(aria-label);display:none;font:normal normal 11px/1.45454545 Helvetica,arial,nimbussansl,liberationsans,freesans,clean,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;letter-spacing:normal;opacity:0;padding:6px 8px 5px;pointer-events:none;position:absolute;text-align:center;text-decoration:none;text-shadow:none;text-transform:none;white-space:pre;z-index:1000000}.yoast-tooltip-alt:after{content:attr(data-label)}.yoast-tooltip:before{border:5px solid #0000;color:#000c;content:"\00a0";display:none;height:0;opacity:0;pointer-events:none;position:absolute;width:0;z-index:1000001}@keyframes yoast-tooltip-appear{0%{opacity:0}to{opacity:1}}.yoast-tooltip:active:after,.yoast-tooltip:active:before,.yoast-tooltip:focus:after,.yoast-tooltip:focus:before,.yoast-tooltip:hover:after,.yoast-tooltip:hover:before{animation-duration:.1s;animation-fill-mode:forwards;animation-name:yoast-tooltip-appear;animation-timing-function:ease-in;display:inline-block;text-decoration:none}.yoast-tooltip-no-delay:active:after,.yoast-tooltip-no-delay:active:before,.yoast-tooltip-no-delay:focus:after,.yoast-tooltip-no-delay:focus:before,.yoast-tooltip-no-delay:hover:after,.yoast-tooltip-no-delay:hover:before{animation:none;opacity:1}.yoast-tooltip-multiline:active:after,.yoast-tooltip-multiline:focus:after,.yoast-tooltip-multiline:hover:after{display:table-cell}.yoast-tooltip-s:after,.yoast-tooltip-se:after,.yoast-tooltip-sw:after{margin-top:5px;right:50%;top:100%}.yoast-tooltip-s:before,.yoast-tooltip-se:before,.yoast-tooltip-sw:before{border-bottom-color:#000c;bottom:-5px;margin-right:-5px;right:50%;top:auto}.yoast-tooltip-se:after{left:50%;margin-left:-15px;right:auto}.yoast-tooltip-sw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-ne:after,.yoast-tooltip-nw:after{bottom:100%;margin-bottom:5px;right:50%}.yoast-tooltip-n:before,.yoast-tooltip-ne:before,.yoast-tooltip-nw:before{border-top-color:#000c;bottom:auto;margin-right:-5px;right:50%;top:-5px}.yoast-tooltip-ne:after{left:50%;margin-left:-15px;right:auto}.yoast-tooltip-nw:after{margin-right:-15px}.yoast-tooltip-n:after,.yoast-tooltip-s:after{transform:translateX(50%)}.yoast-tooltip-w:after{bottom:50%;margin-right:5px;right:100%;transform:translateY(50%)}.yoast-tooltip-w:before{border-left-color:#000c;bottom:50%;left:-5px;margin-top:-5px;top:50%}.yoast-tooltip-e:after{bottom:50%;left:100%;margin-left:5px;transform:translateY(50%)}.yoast-tooltip-e:before{border-right-color:#000c;bottom:50%;margin-top:-5px;right:-5px;top:50%}.yoast-tooltip-multiline:after{word-wrap:normal;border-collapse:initial;max-width:250px;white-space:pre-line;width:250px;width:max-content;word-break:break-word}.yoast-tooltip-multiline.yoast-tooltip-n:after,.yoast-tooltip-multiline.yoast-tooltip-s:after{left:50%;right:auto;transform:translateX(-50%)}.yoast-tooltip-multiline.yoast-tooltip-e:after,.yoast-tooltip-multiline.yoast-tooltip-w:after{right:100%}@media screen and (min-width:0\0){.yoast-tooltip-multiline:after{width:250px}}.yoast-tooltip-sticky:after,.yoast-tooltip-sticky:before{display:inline-block}.yoast-tooltip-sticky.yoast-tooltip-multiline:after{display:table-cell}@media only screen and (-moz-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.yoast-tooltip-w:after{margin-right:4.5px}}.yoast-tooltip.yoast-tooltip-hidden:after,.yoast-tooltip.yoast-tooltip-hidden:before{display:none}.rtl .yst-icon-rtl{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.wpseo-premium-indicator{display:inline-block;height:1px;width:1px}#adminmenu .wpseo-premium-indicator{color:inherit;margin:-2px 0 -3px 2px}.wpseo-premium-indicator svg{display:none;height:100%;width:auto}.yoast-measure{max-width:600px}.yoast-measure.padded{max-width:632px}#TB_window .wpseo_content_wrapper p{font-size:14px;font-style:normal}#TB_window .wpseo_content_wrapper label{font-size:14px;font-weight:600;margin:0 10px 0 0}.wpseo-premium-popup-title{font-size:1.3em!important;font-weight:600!important;margin:1em 0!important;padding:0!important}.wpseo-premium-popup-icon{margin:10px}.edit-tags-php .column-description img{height:auto;max-width:100%}.yoast-label-strong{font-weight:600}.yoast-video-container-max-width{max-width:560px}.yoast-video-container{height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.yoast-video-container iframe{height:100%;left:0;position:absolute;top:0;width:100%}.yoast-settings{margin-bottom:2em;padding-left:220px}.yoast-settings h2{margin-bottom:0;margin-left:-220px}.yoast-settings label{color:#23282d;display:inline-block;font-size:14px;font-weight:600;line-height:1.3;margin-left:-220px;margin-right:6px;padding-right:10px;padding-top:4px;vertical-align:top;width:200px}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio,.yoast-settings fieldset,.yoast-settings input[type=text],.yoast-settings label,.yoast-settings select,.yoast-settings textarea{margin-bottom:.5em;margin-top:2em}.yoast-settings__textarea--medium{max-width:600px;width:100%}.yoast .yoast-settings__checkbox,.yoast .yoast-settings__radio{position:relative;top:1px;vertical-align:top}.yoast-settings__group--checkbox,.yoast-settings__group--radio{padding-top:1em}.yoast-settings__group--checkbox .yoast-settings__checkbox,.yoast-settings__group--radio .yoast-settings__radio{margin:0 4px 10px 0}.yoast-settings__checkbox+label,.yoast-settings__radio+label{margin-left:0;margin-right:0;max-width:calc(100% - 25px);padding:0;width:auto}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{font-weight:400;margin-bottom:10px;margin-top:0}.yoast-settings legend{color:#23282d;font-size:14px;font-weight:600}.yoast-settings .description{font-size:14px;margin-top:0}td .wpseo-score-icon{background:#888;border-radius:50%;display:inline-block;height:12px;line-height:16px;margin-left:5px;margin-top:3px;width:12px}.fixed th.column-wpseo-linked,.fixed th.column-wpseo-links,.fixed th.column-wpseo-score,.fixed th.column-wpseo-score-readability{padding:0;width:3em}.fixed th.column-wpseo-score-readability.sortable,.fixed th.column-wpseo-score-readability.sorted,.fixed th.column-wpseo-score.sortable,.fixed th.column-wpseo-score.sorted{width:3.5em}th.column-wpseo-linked a,th.column-wpseo-links a,th.column-wpseo-score .yoast-tooltip,th.column-wpseo-score-readability .yoast-tooltip{display:inline-block;overflow:visible;padding:8px 0;vertical-align:middle}th.column-wpseo-score .yoast-tooltip,th.column-wpseo-score-readability .yoast-tooltip{padding:8px 11px}th.column-wpseo-score-readability.sortable .yoast-tooltip,th.column-wpseo-score-readability.sorted .yoast-tooltip,th.column-wpseo-score.sortable .yoast-tooltip,th.column-wpseo-score.sorted .yoast-tooltip{padding-right:0}.column-wpseo-links .yoast-tooltip-multiline:after{max-width:160px}.column-wpseo-linked .yoast-tooltip-multiline:after{max-width:170px}.yoast-column-header-has-tooltip{position:relative}.manage-column .yoast-column-header-has-tooltip:before{color:#444;content:"";display:inline-block;height:20px;padding:0;text-decoration:none!important;vertical-align:top;width:20px}.manage-column .yoast-linked-to:before{background:#0000 url(../../images/link-out-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-linked-from:before{background:#0000 url(../../images/link-in-icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-seo-score:before{background:#0000 url(../../images/Yoast_SEO_negative_icon.svg) no-repeat 0 0;background-size:20px}.manage-column .yoast-column-readability:before{background:#0000 url(../../images/readability-icon.svg) no-repeat 0 0;background-size:20px}td.column-wpseo-linked,td.column-wpseo-links{word-wrap:normal}@media screen and (max-width:782px){.yoast-settings{padding-left:0}.yoast-settings h2{margin-left:0}.yoast-settings label{margin-left:0;margin-right:0;padding:0;width:auto}.yoast .yoast-settings__radio,.yoast-settings__radio+label{margin-bottom:1em}.yoast-settings__checkbox+label,.yoast-settings__radio+label{max-width:calc(100% - 35px);padding-top:8px}.yoast-settings__group--checkbox .yoast-settings__checkbox+label,.yoast-settings__group--radio .yoast-settings__radio+label{padding-top:4px}.yoast-settings input[type=text],.yoast-settings select,.yoast-settings textarea{box-sizing:border-box;display:block;line-height:1.5;margin-bottom:0;margin-top:0;max-width:none;padding:7px 10px;width:100%}.screen-reader-text.wpseo-score-text{-webkit-clip-path:none;clip-path:none;height:auto;margin:0;position:static!important;width:auto}}.react-tabs__tab-panel{margin:0 auto;max-width:900px}.react-tabs__tab-panel li{max-width:none!important}.contact-premium-support{text-align:center}.contact-premium-support__content{font-size:.9375rem;line-height:1.4;margin:0 auto 1.5em}.contact-premium-support__content:nth-child(2){max-width:610px}.contact-premium-support__content:nth-child(3){max-width:560px}.contact-premium-support .contact-premium-support__button{margin-bottom:48px}.wpseo-premium-description{margin-top:.5em}.wpseo-premium-advantages-list{list-style:disc;padding-left:1.5em}.yoast_help.yoast-help-button,.yoast_help.yoast-help-link{background:#0000;border:0;box-shadow:none;color:#72777c;cursor:pointer;height:20px;margin:0;outline:none;padding:0;position:relative;vertical-align:top;width:20px}.yoast-section .yoast_help.yoast-help-button{float:right}.help-button-inline .yoast_help.yoast-help-button{margin-top:-4px}.yoast-section .yoast_help.yoast-help-button{margin-top:-44px}.wpseo-admin-page .yoast_help.yoast-help-button{margin-right:6px}.yoast_help .yoast-help-icon:before{content:"\f223";left:0;padding:4px;position:absolute;top:0}.yoast_help.yoast-help-button:focus,.yoast_help.yoast-help-button:hover,.yoast_help.yoast-help-link:hover{color:#0073aa}.assessment-results__mark:focus,.yoast_help.yoast-help-button:focus .yoast-help-icon:before,.yoast_help.yoast-help-link:focus .yoast-help-icon:before{border-radius:100%;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc}.yoast-help-panel{clear:both;display:none;font-weight:400;max-width:30em!important;padding:0 0 1em;white-space:normal}.wpseo-admin-page .yoast-help-panel{max-width:600px!important}.copy-home-meta-description{margin-top:1em}.copy-home-meta-description .yoast-help-panel{max-width:400px!important}.yoast-modal_is-open{overflow:hidden}.yoast-notification .yoast-seo-icon{float:left;margin:20px 10px}.yoast-notification .yoast-seo-icon-wrap{margin:0 0 0 85px}.yoast-button-upsell{align-items:center;background-color:#fec228;border-radius:4px;box-shadow:inset 0 -4px 0 #0003;box-sizing:border-box;color:#000;display:inline-flex;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));font-family:Arial,sans-serif;font-size:16px;justify-content:center;line-height:1.5;min-height:48px;padding:8px 1em;text-decoration:none}.yoast-button-upsell:active,.yoast-button-upsell:focus,.yoast-button-upsell:hover{background-color:#f2ae01;color:#000}.yoast-button-upsell:focus{box-shadow:inset 0 -4px 0 #0003,0 0 0 1px #5b9dd9,0 0 2px 1px #1e8cbecc}.yoast-button-upsell:active{box-shadow:none;filter:none;transform:translateY(1px)}.yoast-button-upsell#wpseo-premium-button{color:#000}.yoast-button-upsell__caret{background:#0000 var(--yoast-svg-icon-caret-right) center no-repeat;flex-shrink:0;height:16px;margin:0 -2px 0 6px;width:8px}.rtl .yoast-button-upsell__caret{background-image:var(--yoast-svg-icon-caret-left)}body.folded .wpseo-admin-submit-fixed{left:36px}@media screen and (max-width:782px){body.folded .wpseo-admin-submit-fixed{left:0}}.wpseo-admin-submit{align-items:baseline;display:flex;justify-content:flex-start;margin:0;padding:16px 0;z-index:5}.wpseo-admin-submit.wpseo-admin-submit-fixed{background-color:#fff;bottom:0;box-shadow:0 1px 8px 1px #00000080;padding:16px;position:fixed;width:600px}@media screen and (max-width:782px){.wpseo-admin-submit.wpseo-admin-submit-fixed{left:0;width:782px}}.wpseo-admin-submit p.submit{margin:0;padding:0}.wpseo-admin-submit p.wpseo-message{color:#008a00;margin:0 16px 0 0;padding:0}.yoast-site-health__signature{color:#707070;display:flex;font-size:12px;line-height:20px;margin-top:2em}.yoast-site-health__inline-button.fetch-status,.yoast-site-health__signature-icon{margin-right:8px}#wpadminbar .yoast-badge,.yoast-badge{border-radius:8px;display:inline-block;font-weight:600;line-height:1.6;padding:0 8px}.yoast-badge{font-size:10px;min-height:16px}.yoast-badge--sale{background-color:#a4286a;border-radius:999px!important;color:#fff;font-size:12px!important;margin-top:-24px;position:absolute;right:30px;transform:rotate(14deg)}@media (max-width:1024px){.yoast-badge--sale{display:inline-block;position:unset;vertical-align:top}}.yoast-badge__is-link:focus,.yoast-badge__is-link:hover{background-color:#004973;box-shadow:none;color:#fff;outline:none}#wpadminbar .yoast-badge,.wp-submenu .yoast-badge{font-size:9px;min-height:14px}.yoast-new-badge{background-color:#cce5ff;color:#004973}.yoast-premium-badge{background-color:#fff3cd;color:#674e00}.yoast-beta-badge{background-color:#cce5ff;color:#004973}.yoast-badge__is-link{text-decoration:none}.switch-container .yoast-badge{vertical-align:-1em}.switch-container legend .yoast-badge{vertical-align:0}.yoast_help+.yoast-badge{vertical-align:bottom}.yoast #crawl-settings fieldset[id$=_disabled],.yoast #crawl-settings p.disabled,.yoast label[for=clean_permalinks_extra_variables_free],.yoast label[for=search_character_limit_free],.yoast p.yoast-extra-variables-label-free{opacity:.5}.yoast #crawl-settings fieldset[id$=_disabled] .switch-toggle.switch-yoast-seo input:disabled~a{background:#a4286a;border:1px solid #b5b5b5}.yoast label[for^=search_character_limit]{font-weight:600;margin-bottom:10px!important;padding-left:2px;width:320px!important}.yoast input[id^=search_character_limit]{width:70px!important}.yoast label[for^=clean_permalinks_extra_variables]{font-weight:600;padding-left:2px;width:240px!important}.yoast input[id^=clean_permalinks_extra_variables]{width:358px!important}.yoast .yoast-crawl-single-setting{margin-top:18px}.yoast p[class*=yoast-extra-variables-label]{padding-left:243px!important}@media screen and (max-width:782px){.yoast p[class*=yoast-extra-variables-label]{margin-top:-20px!important;padding-left:0!important}}.yoast .yoast-crawl-settings-help{font-style:italic}.notice-yoast{background:#fff;border:1px solid #c3c4c7;border-left:4px solid var(--yoast-color-primary);box-shadow:0 1px 1px #0000000a;margin:20px 0 15px;padding:1px 12px}#black-friday-2023-product-editor-checklist .notice-yoast__container{padding:0 5px}.notice-yoast.is-dismissible{padding-right:38px;position:relative}.notice-yoast__container{padding:10px 0 5px}.notice-yoast__container,.notice-yoast__header{align-items:center;display:flex;flex-direction:row}.notice-yoast__header{box-sizing:border-box;justify-content:left;margin-bottom:8px;padding:0;width:100%}.notice-yoast__header .notice-yoast__header-heading{line-height:1.2;margin:0;padding:0}.notice-yoast__header h2.notice-yoast__header-heading{color:var(--yoast-color-primary);font-size:14px;font-weight:600;line-height:1;margin:0}.notice-yoast__header .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:14px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:14px}.notice-yoast__content{display:flex;padding:0}.notice-yoast .notice-yoast__container>svg{height:60px;line-height:1;margin-left:10px;width:auto}.notice-yoast img{height:60px;line-height:1;margin-bottom:5px;margin-left:16px;width:auto}.notice-yoast p{font-size:13px;font-weight:400;line-height:19px;max-width:600px}.notice-yoast .yoast-button--small{min-height:unset}.notice-yoast .notice-dismiss{background:none;border:none;color:#787c82;cursor:pointer;margin:0;padding:9px;position:absolute;right:1px;top:0}.notice-yoast .notice-dismiss:before{speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:none;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;height:20px;text-align:center;width:20px}.notice-yoast .notice-dismiss:hover:before{color:#d63638}.yoast-notice-migrated-header{margin-top:10px}.privacy-settings .notice-yoast{margin:0 20px}.yoast .yoast-crawl-settings-explanation-free,.yoast .yoast-crawl-settings-help-free{opacity:.5}.yoast h3.yoast-crawl-settings,.yoast h3.yoast-crawl-settings-free{margin:2em 0 .5em}.yoast .yoast-crawl-settings-disabled,.yoast h3.yoast-crawl-settings-free{opacity:.5}.yoast .indexables-indexing-error p{margin-bottom:13px}.yoast .indexables-indexing-error strong{font-weight:500}.yoast .indexables-indexing-error summary{font-weight:700}.yoast-dashicons-notice{color:#dba617}#black-friday-2024-promotion-sidebar.notice-yoast{background:#fff;border-color:#fcd34d;border-radius:8px;border-width:2px;margin:20px 0 15px;padding:1px 12px}#black-friday-2024-promotion-sidebar .notice-yoast__header{margin-bottom:2px;padding-right:20px}#black-friday-2024-promotion-metabox.notice-yoast{background:#fff;border-color:#fcd34d;border-radius:8px;border-width:2px;margin:20px}#black-friday-2024-promotion-metabox h2.notice-yoast__header-heading{padding:0}#black-friday-2024-promotion-metabox .notice-yoast__container{padding-bottom:0}#black-friday-2024-promotion-metabox .notice-yoast__container p{display:inline}#black-friday-2024-promotion-metabox .notice-yoast__header{margin-bottom:8px}#black-friday-2024-promotion-metabox .notice-yoast__header a{font-weight:400;margin-left:13px}.yoast-bf-sale-badge{display:block;left:12px;position:absolute;top:-10px}.yoast-bf-sale-badge,.yoast-menu-bf-sale-badge{background-color:#1f2937;border-radius:8px;color:#fcd34d;font-size:10px;font-weight:600;line-height:normal;padding:2px 8px}.yoast-menu-bf-sale-badge{text-wrap:nowrap;border:1px solid #fcd34d;margin-left:5px}css/dist/ai-fix-assessments-2390-rtl.css000064400000000274147206602470013741 0ustar00.yst-fixes-button__lock-icon{background-color:#fde68a;border-radius:50%;height:14px;padding:1px 2px;position:absolute;left:-6px;top:-6px;width:14px}.ai-button:disabled{pointer-events:auto}css/dist/icons-2390.css000064400000017426147206602470010541 0ustar00:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}css/dist/yoast-extensions-2390.css000064400000066342147206602470012763 0ustar00.yoast-modal__screen-overlay{animation:edit-post__fade-in-animation .2s ease-out 0s;animation-fill-mode:forwards;background-color:#a4286a99;bottom:0;left:0;position:fixed;right:0;top:0;z-index:100000}.yoast-modal{background:#fff;bottom:48px;display:flex;flex-direction:column;height:calc(100% - 96px);left:calc(50% - 440px);max-width:880px;overflow:hidden;position:fixed;top:48px;width:100%}.yoast-gutenberg-modal .yoast-icon{background-color:var(--yoast-color-primary);display:inline-block;height:20px;margin-right:8px;mask-image:var(--yoast-svg-icon-yoast);-webkit-mask-image:var(--yoast-svg-icon-yoast);mask-size:100% 100%;-webkit-mask-size:100% 100%;width:20px}.yoast-tabs .yoast-modal__content{display:grid;grid-template-areas:"heading heading" "menu content" "menu footer";grid-template-columns:280px 1fr;grid-template-rows:72px 1fr 88px}.yoast-modal__heading{align-items:center;background:var(--yoast-color-white);border-bottom:var(--yoast-border-default);box-sizing:border-box;display:flex;grid-area:heading;min-height:72px;padding:0 24px}.yoast-modal__heading .yoast-close{position:absolute;right:16px}.yoast-gutenberg-modal__box.components-modal__frame{box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@media (min-width:600px){.yoast-gutenberg-modal__box.components-modal__frame{border-radius:8px;max-height:calc(100% - 48px)}}.yoast-gutenberg-modal__no-padding .components-modal__content{padding:0}.yoast-gutenberg-modal .components-modal__header-heading,.yoast-modal__heading h1{color:var(--yoast-color-primary);font-size:20px;font-weight:400;line-height:1.2;margin:0}.yoast-gutenberg-modal .components-modal__content .components-modal__header{border-bottom:1px solid #e2e8f0!important}.yoast-gutenberg-modal .components-modal__icon-container{display:inline-flex}.yoast-gutenberg-modal .components-modal__icon-container svg,.yoast-modal__heading-icon{fill:var(--yoast-color-primary);flex-shrink:0;height:20px;margin-right:16px;width:19px}.yoast-modal__menu{border-right:var(--yoast-border-default);grid-area:menu;overflow-y:auto}.yoast-modal__menu ul{list-style:none;margin:0;padding:0}.yoast-modal__menu li{border-bottom:var(--yoast-border-default);color:var(--yoast-color-default);cursor:pointer;display:block;font-size:16px;padding:12px 16px 11px;text-decoration:none}.yoast-modal__menu li:hover{background-color:#edd4e1}.yoast-modal__menu li.yoast-tabs__tab--selected{background-color:var(--yoast-color-primary);border-bottom:var(--yoast-border-default);color:#fff}.yoast-modal__content,.yoast-modal__section{display:flex;flex-direction:column;flex-grow:1;grid-area:content;overflow-y:auto;position:relative}.yoast-modal__section *{max-width:600px}.yoast-modal__section-header{background:var(--yoast-color-white);padding:24px 24px 0;position:sticky;top:0;z-index:10}.yoast-modal__section .yoast-h2{border-bottom:var(--yoast-border-default);padding-bottom:24px}.yoast-modal__footer{align-items:center;align-self:flex-end;background:var(--yoast-color-white);border-top:var(--yoast-border-default);bottom:0;box-sizing:border-box;display:flex;grid-area:footer;justify-content:flex-end;margin:0 24px;min-height:88px;padding:0;position:sticky;width:calc(100% - 48px);z-index:10}.yoast-modal__settings-saved{align-items:center;display:inline-flex;margin-right:16px;position:relative}.yoast-modal__settings-saved:before{background:var(--yoast-checkmark--green) no-repeat center;content:"";display:inline-block;height:13px;margin-right:8px;width:14px}.yoast-modal__footer .yoast-button{display:block}.yoast-modal__section-content{flex-grow:1;padding:24px}@media screen and (max-width:880px){.yoast-modal{bottom:0;height:auto;left:0;right:0;top:0}}@media screen and (max-width:782px){.yoast-modal{overflow-y:initial}.yoast-modal.yoast-modal-collapsible{padding-bottom:72px}.yoast-tabs .yoast-modal__content{grid-template-rows:48px 1fr 72px}.yoast-modal__heading{min-height:48px;padding:0 16px;position:fixed;top:0;width:100%;z-index:11}.yoast-modal__heading h1{font-size:var(--yoast-font-size-default)}.yoast-close svg{width:10px}.yoast-modal__heading-icon{height:15px;margin-right:8px}.yoast .yoast-close{right:3px}.yoast-modal__heading .yoast-h2{font-size:var(--yoast-font-size-default)}.yoast-modal__section{flex-grow:0;overflow:initial}.yoast-modal__section-content{margin:0 16px;padding:24px 0}.yoast-modal__section:first-of-type{margin-top:48px}.yoast-modal__section:last-of-type{margin-bottom:72px}.yoast-modal__section-header{margin:0;padding:0;position:sticky;top:48px}.yoast-modal__section-open .yoast-modal__section-header{margin-left:16px;margin-right:16px;padding-left:0;padding-right:0}.yoast-modal__section-open{border-bottom:var(--yoast-border-default)}.yoast-modal__footer{margin:0;min-height:72px;padding:0 16px;position:fixed;width:100%;z-index:11}.yoast-modal-collapsible .yoast-modal__footer{min-height:72px}.yoast-modal-collapsible .yoast-modal__section-content{border-bottom:var(--yoast-border-default);margin:0;padding:24px 16px}.yoast-collapsible__hidden{display:none}.yoast-collapsible__trigger{background:#fff;border:none;border-bottom:var(--yoast-border-default);color:var(--yoast-color-primary);cursor:pointer;font-size:var(--yoast-font-size-default);justify-content:space-between;padding:16px;text-align:left;width:100%}.yoast-collapsible__trigger[aria-expanded=true] .yoast-collapsible__icon{transform:rotate(180deg)}.yoast-collapsible__trigger[aria-expanded=true]{margin:0 16px;padding:16px 0;width:calc(100% - 32px)}.yoast-collapsible__icon{background-color:var(--yoast-color-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='%23404040'%3E%3Cpath d='M1.4 0 6 4.6 10.6 0 12 1.4 6 7.5 0 1.4z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:10px auto;border:none;display:block;float:right;height:19px;width:19px}.yoast-collapsible-block{margin-top:48px;width:100%}.yoast-collapsible-block+.yoast-collapsible-block{margin-top:0}}.yoast-post-settings-modal{height:100%;max-height:calc(100% - 96px);max-width:calc(100% - 96px);overflow:hidden;width:880px}.yoast-modal-content{padding:16px}@media (min-width:782px){.yoast-modal-content--columns{grid-gap:24px;display:grid;grid-template-columns:1fr 1fr}}.yoast-post-settings-modal__button-container{border-bottom:1px solid #0003;display:flex;flex-direction:column;padding:16px}.yoast-post-settings-modal .components-modal__content{display:flex;flex-direction:column;padding:0}.yoast-post-settings-modal .components-modal__header{border-bottom:var(--yoast-border-default);flex-shrink:0;margin:0}.yoast-post-settings-modal .yoast-notice-container{bottom:0;left:0;margin-top:auto;position:sticky;width:100%;z-index:1}.yoast-post-settings-modal .components-modal__content>div:not([class]):not([class=""]){display:flex;flex-direction:column;overflow:hidden}.yoast-post-settings-modal .yoast-notice-container>hr{margin-bottom:0;margin-top:-1px}.yoast-post-settings-modal .yoast-content-container{flex-grow:1;overflow-y:auto}.yoast-post-settings-modal .yoast-button-container{display:flex;flex-direction:row;justify-content:flex-end;margin:0;padding:24px}.yoast-post-settings-modal .yoast-button-container p{align-self:center;color:var(--yoast-color-label-help);padding-right:24px}.yoast-post-settings-modal .yoast-button-container button{align-self:center;flex-shrink:0;max-height:45px}@media only screen and (max-width:600px){.yoast-post-settings-modal{max-height:100%;max-width:100%}.yoast-post-settings-modal .yoast-button-container{justify-content:space-between;padding:16px}.yoast-post-settings-modal .yoast-button-container p{padding-right:0}}.yoast-related-keyphrases-modal,.yoast-wincher-seo-performance-modal{max-width:712px}.yoast-wincher-seo-performance-modal__content{padding:25px 32px 32px}#yoast-get-related-keyphrases-metabox,#yoast-get-related-keyphrases-sidebar{margin-top:8px}.yoast-gutenberg-modal .yoast-related-keyphrases-modal__content{min-height:66vh;position:relative}.yoast-related-keyphrases-modal__chart{display:block}:root{--yoast-svg-icon-info:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23A4286A' d='M1152 1376v-160q0-14-9-23t-23-9h-96V672q0-14-9-23t-23-9H672q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896V320q0-14-9-23t-23-9H800q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z'/%3E%3C/svg%3E");--yoast-svg-icon-check:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1792 1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-check-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%2377B227' d='M1671 566q0 40-28 68l-724 724-136 136q-28 28-68 28t-68-28l-136-136-362-362q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 295 656-657q28-28 68-28t68 28l136 136q28 28 28 68z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-right:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662Z'/%3E%3C/svg%3E");--yoast-svg-icon-caret-left:url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 192 512' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z'/%3E%3C/svg%3E");--yoast-svg-icon-eye:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5T896 1280t-316.5-131.5T448 832q0-121 61-225-229 117-381 353 133 205 333.5 326.5T896 1408t434.5-121.5T1664 960zM944 576q0-20-14-34t-34-14q-125 0-214.5 89.5T592 832q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5T896 1536t-499.5-139T20 1029Q0 994 0 960t20-69q140-229 376.5-368T896 384t499.5 139T1772 891q20 35 20 69z'/%3E%3C/svg%3E");--yoast-svg-icon-list:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56T0 896t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1504v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zM384 384q0 80-56 136t-136 56-136-56T0 384t56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992V800q0-13 9.5-22.5T544 768h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5T1760 512H544q-13 0-22.5-9.5T512 480V288q0-13 9.5-22.5T544 256h1216q13 0 22.5 9.5t9.5 22.5z'/%3E%3C/svg%3E");--yoast-svg-icon-key:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='M832 512q0-80-56-136t-136-56-136 56-56 136q0 42 19 83-41-19-83-19-80 0-136 56t-56 136 56 136 136 56 136-56 56-136q0-42-19-83 41 19 83 19 80 0 136-56t56-136zm851 704q0 17-49 66t-66 49q-9 0-28.5-16t-36.5-33-38.5-40-24.5-26l-96 96 220 220q28 28 28 68 0 42-39 81t-81 39q-40 0-68-28l-671-671q-176 131-365 131-163 0-265.5-102.5T0 784q0-160 95-313t248-248 313-95q163 0 265.5 102.5T1024 496q0 189-131 365l355 355 96-96q-3-3-26-24.5t-40-38.5-33-36.5-16-28.5q0-17 49-66t66-49q13 0 23 10 6 6 46 44.5t82 79.5 86.5 86 73 78 28.5 41z'/%3E%3C/svg%3E");--yoast-svg-icon-edit:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23555' d='m491 1536 91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192 416 416-832 832H128v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z'/%3E%3C/svg%3E");--yoast-svg-icon-lock:url('data:image/svg+xml;charset=utf-8,');--yoast-svg-icon-yoast:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23999' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-good:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%237ad03a' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-ok:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23ee7c1b' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-bad:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%23dc3232' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E");--yoast-svg-icon-yoast-noindex:url("data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath fill='%231e8cbe' d='M403 218h691l-26 72H403q-110 0-188.5 79T136 558v771q0 95 60.5 169.5T350 1592q23 5 98 5v72h-45q-140 0-239.5-100T64 1329V558q0-140 99.5-240T403 218zM1254 0h247l-482 1294q-23 61-40.5 103.5t-45 98-54 93.5-64.5 78.5-79.5 65-95.5 41-116 18.5v-195q163-26 220-182 20-52 20-105 0-54-20-106L459 471h228l187 585zm474 558v1111H933q37-55 45-73h678V558q0-85-49.5-155T1477 304l25-67q101 34 163.5 123.5T1728 558z'/%3E%3C/svg%3E")}.yoast-list--usp{font-family:Arial,sans-serif;margin-bottom:2rem;padding:0}.yoast-list--usp li{list-style:none!important;padding-left:1.2533333333rem;position:relative}.yoast-list--usp li:before{color:#77b227;content:"\f00c\0020";font-family:FontAwesome,Open Sans,Arial,sans-serif;left:0;position:absolute;top:0}.yoast .h1,.yoast .h2,.yoast .h3,.yoast .h4,.yoast .h5,.yoast .h6,.yoast h1,.yoast h2,.yoast h3,.yoast h4,.yoast h5,.yoast h6{display:block;font-family:Arial,sans-serif;font-weight:300;margin-top:0}.yoast .h1,.yoast h1{font-size:2.5em;letter-spacing:normal;line-height:3.68rem;margin-bottom:1.35rem}@media only screen and (min-width:30rem){.yoast .h1,.yoast h1{font-size:2.75em}}.yoast .h2,.yoast h2{font-size:1.88em;line-height:2.5rem;margin-bottom:1.2rem}.yoast .h2.tight,.yoast h2.tight{margin-bottom:.6rem}.yoast .h3,.yoast h3{font-size:1.25em;line-height:1.88rem;margin-bottom:.8rem}.yoast .h3.tight,.yoast h3.tight{margin-bottom:.4rem}@media only screen and (min-width:30rem){.yoast .h3,.yoast h3{font-size:1.375em}}@media only screen and (min-width:50rem){.yoast .h3,.yoast h3{font-size:1.5em}}.yoast .h4,.yoast .h5,.yoast .h6,.yoast h4,.yoast h5,.yoast h6{font-size:1.13em;font-weight:400;line-height:1.88rem;margin-bottom:.2rem}.yoast-button{background-color:initial;background-color:#dc5c04;border:0;color:#dc5c04;cursor:pointer;display:inline-block;font-family:Arial,sans-serif;font-size:1.1em;padding:.345em 1.5em .345em 1em;position:relative;text-decoration:none;width:100%}@media only screen and (min-width:30rem){.yoast-button{margin-right:1.36rem;max-height:2.86rem;width:auto}.yoast-button:after{border-bottom:1.44rem solid #0000;border-left:1.43rem solid #dc5c04;border-right:0;border-top:1.43rem solid #0000;content:"";height:0;position:absolute;right:-1.36rem;top:0;width:0}.yoast-button.left{margin-left:1.36rem;margin-right:0}.yoast-button.left:after{content:none}.yoast-button.left:before{border-bottom:1.44rem solid #0000;border-left:0;border-right:1.43rem solid #dc5c04;border-top:1.43rem solid #0000;content:"";height:0;left:-1.36rem;position:absolute;top:0;width:0}}.yoast-button.alignleft{margin:1rem 2.5rem 0 0!important}.yoast-button .arrow{display:none}.yoast-button+.yoast-button{margin-left:1.88rem;margin-top:1em}.yoast-button--full{width:100%}.yoast-button--full:after{content:none}.yoast-button.default{background-color:#dc5c04;color:#fff}.yoast-button.default:after{border-left-color:#dc5c04}.yoast-button.default:before{border-right-color:#dc5c04}.yoast-button a:focus,.yoast-button:hover{background-color:#f58223;color:#fff;text-decoration:underline}.yoast-button a:focus:after,.yoast-button:hover:after{border-left-color:#f58223}.yoast-button a:focus:before,.yoast-button:hover:before{border-right-color:#f58223}.yoast-button.academy{background-color:#5d237a;color:#fff}.yoast-button.academy:after{border-left-color:#5d237a}.yoast-button.academy:before{border-right-color:#5d237a}@media only screen and (max-width:20rem){.yoast-button.academy{background-color:#5d237a}}.yoast-button.academy--secondary{background-color:#a4286a;color:#fff}.yoast-button.academy--secondary:after{border-left-color:#a4286a}.yoast-button.academy--secondary:before{border-right-color:#a4286a}@media only screen and (max-width:20rem){.yoast-button.academy--secondary{background-color:#a4286a}}.yoast-button.software{background-color:#0075b3;color:#fff}.yoast-button.software:after{border-left-color:#0075b3}.yoast-button.software:before{border-right-color:#0075b3}.yoast-button.review{background-color:#009288;color:#fff}.yoast-button.review:after{border-left-color:#009288}.yoast-button.review:before{border-right-color:#009288}.yoast-button.about{background-color:#d93f69;color:#fff}.yoast-button.about:after{border-left-color:#d93f69}.yoast-button.about:before{border-right-color:#d93f69}.yoast_academy .yoast-button{background-color:#d93f69;color:#fff}.yoast_academy .yoast-button:after{border-left-color:#d93f69}.yoast_academy .yoast-button:before{border-right-color:#d93f69}.yoast_academy .yoast-button a:focus,.yoast_academy .yoast-button:hover{background-color:#d42a59;color:#fff;text-decoration:underline}.yoast_academy .yoast-button a:focus:after,.yoast_academy .yoast-button:hover:after{border-left-color:#d42a59}.yoast_academy .yoast-button a:focus:before,.yoast_academy .yoast-button:hover:before{border-right-color:#d42a59}.yoast_academy .yoast-button.dimmed,body .yoast-button.dimmed{background-color:#dcdcdc;color:#646464}.yoast_academy .yoast-button.dimmed:after,body .yoast-button.dimmed:after{border-left-color:#dcdcdc}.yoast_academy .yoast-button.dimmed:before,body .yoast-button.dimmed:before{border-right-color:#dcdcdc}.yoast_academy .yoast-button.dimmed a:focus,.yoast_academy .yoast-button.dimmed:hover,body .yoast-button.dimmed a:focus,body .yoast-button.dimmed:hover{background-color:#cdcdcd;color:#646464;text-decoration:underline}.yoast_academy .yoast-button.dimmed a:focus:after,.yoast_academy .yoast-button.dimmed:hover:after,body .yoast-button.dimmed a:focus:after,body .yoast-button.dimmed:hover:after{border-left-color:#cdcdcd}.yoast_academy .yoast-button.dimmed a:focus:before,.yoast_academy .yoast-button.dimmed:hover:before,body .yoast-button.dimmed a:focus:before,body .yoast-button.dimmed:hover:before{border-right-color:#cdcdcd}.yoast-button--noarrow:after{content:none}.yoast-button--naked{background-color:initial;border:none;padding:0}.yoast-button--naked:after{content:none}.yoast-button i.fa{font-size:140%;margin:4px 10px 0 0}.yoast-promoblock{border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin-bottom:1.88rem;padding:16px}.yoast-promoblock p{color:#000}.yoast-promoblock p:last-of-type{margin-bottom:0}.yoast-promoblock i.blockicon{bottom:10px;font-size:2.25em;padding:0 0 0 .5em;position:absolute;right:10px}.yoast-promoblock a img{border:1px solid #dcdcdc}.yoast-promoblock p a{font-weight:600!important;text-decoration:underline}.yoast-promoblock form a{font-weight:400!important;text-decoration:none}.yoast-promoblock .h4,.yoast-promoblock h4{margin-bottom:.7rem}.yoast-promoblock.link{border-color:#dc5c04}.yoast-promoblock.link a,.yoast-promoblock.link a:hover{color:#dc5c04}.yoast-promoblock--white{border-color:#fff!important}.product .yoast-promoblock{overflow:hidden}.yoast-promoblock--hometitle{background-color:#d93f6940;border-color:#fff!important;display:flex;font-size:16px;font-size:1rem;height:11em;line-height:1;margin:1rem auto 2rem;max-width:16em}@media only screen and (max-width:30rem){.yoast-promoblock--hometitle:after{content:none!important}}.yoast-promoblock--imageholder{margin-bottom:0;padding:0}.yoast-promoblock--imageholdersmall{position:absolute}.yoast-promoblock--imageholdersmall:first-child{left:4rem}.yoast-promoblock--imageholdersmall:last-child{top:4rem}@media only screen and (max-width:50rem){.yoast-promoblock h2{margin-bottom:0}}a.promoblock{color:#000}a.promoblock,a.promoblock:hover{text-decoration:none}.promoblockimage__holder{height:295px;position:relative;width:240px}.yoast{color:#000;font-family:Open Sans,Arial,sans-serif;font-size:1rem;letter-spacing:.01em;line-height:1.88}.yoast *,.yoast :after,.yoast :before{box-sizing:border-box}.yoast-hr{border:0;margin:0;padding-bottom:1.88rem;position:relative}.yoast-list--usp li:before{background:var(--yoast-svg-icon-check) no-repeat;background-position:left .3em;background-size:contain;content:"";height:100%;width:1em}.yoast-button--purple{background-color:#5d237a}.yoast-button-go-to:after{border:none;content:" \00BB";height:auto;position:static;right:auto;top:auto;width:auto}.yoast-button--extension{color:#fff;padding-left:.8em;padding-right:.8em;text-transform:uppercase}.yoast-button--extension+.yoast-button--extension-activated,.yoast-button--extension+.yoast-button--extension-not-activated{margin-left:0}.yoast-button--extension-activated:hover,.yoast-button--extension-installed:hover,.yoast-button--extension-not-activated:hover{text-decoration:none}.yoast-button--extension-installed{margin-right:.2rem}.yoast-button--extension-installed,.yoast-button--extension-installed:hover{background-color:#008a00}.yoast-button--extension-not-activated,.yoast-button--extension-not-activated:hover{background-color:#dc3232}.yoast-button--extension-activated,.yoast-button--extension-activated:hover{background-color:#008a00}.yoast-button-upsell{margin-bottom:1em;width:100%}@media only screen and (min-width:30rem){.yoast-button-upsell{margin-right:1.36rem;width:auto}}.yoast-promo-extensions{display:flex;flex-wrap:wrap;margin-left:-24px}.yoast-promo-extensions>h2{margin-bottom:32px;margin-left:32px;width:100%}.yoast-promo-extension{background-color:#fff;display:flex;flex-direction:column;margin-left:32px;max-width:340px}.yoast-promo-extension:first-child{margin-left:0}.yoast-promo-extension img{float:right;height:100px;margin-bottom:.8rem;width:100px}@media screen and (max-width:900px){.yoast-promo-extension img{display:none}}.yoast-promo-extension .yoast-button-container{margin-top:auto}.yoast-promo-extension .yoast-button-container div.yoast-button--extension{cursor:default}.yoast-promo-extension .yoast-button{font-size:.9rem;max-height:none;width:100%}.yoast-promo-extension .yoast-button--installed{color:#fff}.yoast-promo-extension .yoast-button--extension{font-size:.9rem;margin-top:0;text-align:center}.yoast-promo-extension .yoast-button--extension-installed{margin:0 2% 0 0;width:48%}.yoast-promo-extension .yoast-button--extension-activated,.yoast-promo-extension .yoast-button--extension-not-activated{margin-left:0;margin-right:0;width:48%}.yoast-promo-extension .yoast-button-upsell{width:100%}.yoast-promo-extension h3{color:#a4286a}@media screen and (max-width:900px){.yoast-promo-extension{max-width:none;width:100%}}.yoast-seo-premium-extension-sale-badge{margin-top:-30px}.yoast-seo-premium-extension-sale-badge span{background:#1f2937;border-radius:14px;color:#fcd34d;font-size:14px;font-weight:600;padding:6px 12px}.yoast-seo-premium-extension{background:#fff;border:1px solid #dcdcdc;box-shadow:0 1px 6px 0 #0000004d;margin:2em .5em 1.5em;max-width:712px;padding:16px}.yoast-seo-premium-extension h2{color:#a61e69;display:flex;font-size:1.5rem;justify-content:space-between;margin-top:16px}.yoast-seo-premium-extension img{margin-left:1rem}@media screen and (max-width:900px){.yoast-seo-premium-extension{max-width:none;width:calc(100% - 8px)}.yoast-seo-premium-extension img{display:none}}.yoast-seo-premium-extension:after,.yoast-seo-premium-extension:before{content:"";display:table}.yoast-seo-premium-extension:after{clear:both}.yoast-seo-premium-benefits__item{font-size:.9rem;font-weight:400;line-height:24px;margin-bottom:8px}.yoast-seo-premium-benefits__item span{color:#404040}.yoast-seo-premium-benefits__title{font-size:.9rem;font-weight:700;line-height:24px}.yoast-seo-premium-benefits__description{font-size:.9rem;font-weight:400;line-height:24px}.yoast-link--license,.yoast-link--more-info{color:#a4286a;font-weight:600}.yoast-link--license{margin:1em 0 0}.yoast-promo-extension .yoast-link--license{display:block;margin:1em 0 0}.yoast-link--license:after{content:" \00BB"}.yoast-link--more-info{background:var(--yoast-svg-icon-info);background-position:0;background-repeat:no-repeat;background-size:1em;padding-left:calc(1em + 5px)}.yoast-link--more-info:after{content:" \00BB"}.yoast-promo-extension .yoast-link--more-info{background-position:0;display:block;margin:0}.yoast-heading-highlight{color:#a4286a;font-weight:600}.yoast-money-back-guarantee{font-size:1.1em;font-style:italic}.yoast-license-status-active{background:#008a00;color:#fff;padding:3px 6px}.yoast-license-status-inactive{background:#dc3232;color:#fff;padding:3px 6px}.yoast-promoblock.secondary.yoast-promo-extension .yoast-button-container .yoast-subscription-discount{color:#64748b;font-size:12px;margin-bottom:8px;margin-top:-8px;text-align:center}css/dist/filter-explanation-2390-rtl.css000064400000000107147206602470014016 0ustar00#posts-filter .wpseo-filter-explanation{clear:both;margin:10px 1px 5px}css/main-sitemap.xsl000064400000010113147206602470010454 0ustar00 XML Sitemap

XML Sitemap

Generated by Yoast SEO, this is an XML Sitemap, meant for consumption by search engines.
You can find more information about XML sitemaps on sitemaps.org.

This XML Sitemap Index file contains sitemaps.

Sitemap Last Modified

This XML Sitemap contains URLs.

URL Images Last Mod.
wpml-config.xml000064400000004123147206602470007520 0ustar00 _yoast_wpseo_title _yoast_wpseo_bctitle _yoast_wpseo_metadesc _yoast_wpseo_focuskw _yoast_wpseo_meta-robots-noindex _yoast_wpseo_meta-robots-nofollow _yoast_wpseo_meta-robots-adv _yoast_wpseo_canonical _yoast_wpseo_redirect _yoast_wpseo_opengraph-description index.php000064400000000046147206602470006374 0ustar00 ABSPATH . 'wp-admin/includes/class-wp-list-table.php', 'walker_category' => ABSPATH . 'wp-includes/category-template.php', ]; } $cn = strtolower( $class_name ); if ( ! class_exists( $class_name ) && isset( $classes[ $cn ] ) ) { require_once $classes[ $cn ]; } } $yoast_autoload_file = WPSEO_PATH . 'vendor/autoload.php'; if ( is_readable( $yoast_autoload_file ) ) { $yoast_autoloader = require $yoast_autoload_file; } elseif ( ! class_exists( 'WPSEO_Options' ) ) { // Still checking since might be site-level autoload R. add_action( 'admin_init', 'yoast_wpseo_missing_autoload', 1 ); return; } /** * Include the file from the `symfony/deprecation-contracts` dependency instead of autoloading it via composer. * * We need to do that because autoloading via composer prevents the vendor-prefixing of the dependency itself. * Note that we don't expect the function to be ever called since the OAuth2 library should not provide invalid input. */ $deprecation_contracts_file = WPSEO_PATH . 'vendor_prefixed/symfony/deprecation-contracts/functions.php'; if ( is_readable( $deprecation_contracts_file ) ) { include $deprecation_contracts_file; } if ( function_exists( 'spl_autoload_register' ) ) { spl_autoload_register( 'wpseo_auto_load' ); } require_once WPSEO_PATH . 'src/functions.php'; /* ********************* DEFINES DEPENDING ON AUTOLOADED CODE ********************* */ /** * Defaults to production, for safety. */ if ( ! defined( 'YOAST_ENVIRONMENT' ) ) { define( 'YOAST_ENVIRONMENT', 'production' ); } if ( YOAST_ENVIRONMENT === 'development' && isset( $yoast_autoloader ) ) { add_action( 'plugins_loaded', /** * Reregisters the autoloader so that Yoast SEO is at the front. * This prevents conflicts with the development versions of our addons. * An anonymous function is used so we can use the autoloader variable. * As this is only loaded in development removing this action is not a concern. * * @return void */ static function () use ( $yoast_autoloader ) { $yoast_autoloader->unregister(); $yoast_autoloader->register( true ); }, 1 ); } /** * Only use minified assets when we are in a production environment. */ if ( ! defined( 'WPSEO_CSSJS_SUFFIX' ) ) { define( 'WPSEO_CSSJS_SUFFIX', ( YOAST_ENVIRONMENT !== 'development' ) ? '.min' : '' ); } /* ***************************** PLUGIN (DE-)ACTIVATION *************************** */ /** * Run single site / network-wide activation of the plugin. * * @param bool $networkwide Whether the plugin is being activated network-wide. * * @return void */ function wpseo_activate( $networkwide = false ) { if ( ! is_multisite() || ! $networkwide ) { _wpseo_activate(); } else { /* Multi-site network activation - activate the plugin for all blogs. */ wpseo_network_activate_deactivate( true ); } // This is done so that the 'uninstall_{$file}' is triggered. register_uninstall_hook( WPSEO_FILE, '__return_false' ); } /** * Run single site / network-wide de-activation of the plugin. * * @param bool $networkwide Whether the plugin is being de-activated network-wide. * * @return void */ function wpseo_deactivate( $networkwide = false ) { if ( ! is_multisite() || ! $networkwide ) { _wpseo_deactivate(); } else { /* Multi-site network activation - de-activate the plugin for all blogs. */ wpseo_network_activate_deactivate( false ); } } /** * Run network-wide (de-)activation of the plugin. * * @param bool $activate True for plugin activation, false for de-activation. * * @return void */ function wpseo_network_activate_deactivate( $activate = true ) { global $wpdb; $network_blogs = $wpdb->get_col( $wpdb->prepare( "SELECT blog_id FROM $wpdb->blogs WHERE site_id = %d", $wpdb->siteid ) ); if ( is_array( $network_blogs ) && $network_blogs !== [] ) { foreach ( $network_blogs as $blog_id ) { switch_to_blog( $blog_id ); if ( $activate === true ) { _wpseo_activate(); } else { _wpseo_deactivate(); } restore_current_blog(); } } } /** * Runs on activation of the plugin. * * @return void */ function _wpseo_activate() { require_once WPSEO_PATH . 'inc/wpseo-functions.php'; require_once WPSEO_PATH . 'inc/class-wpseo-installation.php'; wpseo_load_textdomain(); // Make sure we have our translations available for the defaults. new WPSEO_Installation(); WPSEO_Options::get_instance(); if ( ! is_multisite() ) { WPSEO_Options::initialize(); } else { WPSEO_Options::maybe_set_multisite_defaults( true ); } WPSEO_Options::ensure_options_exist(); if ( ! is_multisite() || ! ms_is_switched() ) { // Constructor has side effects so this registers all hooks. $GLOBALS['wpseo_rewrite'] = new WPSEO_Rewrite(); } add_action( 'shutdown', [ 'WPSEO_Utils', 'clear_rewrites' ] ); WPSEO_Options::set( 'indexing_reason', 'first_install' ); WPSEO_Options::set( 'first_time_install', true ); if ( ! defined( 'WP_CLI' ) || ! WP_CLI ) { WPSEO_Options::set( 'should_redirect_after_install_free', true ); } else { WPSEO_Options::set( 'activation_redirect_timestamp_free', time() ); } // Reset tracking to be disabled by default. if ( ! YoastSEO()->helpers->product->is_premium() && WPSEO_Options::get( 'toggled_tracking' ) !== true ) { WPSEO_Options::set( 'tracking', false ); } do_action( 'wpseo_register_roles' ); WPSEO_Role_Manager_Factory::get()->add(); do_action( 'wpseo_register_capabilities' ); WPSEO_Capability_Manager_Factory::get()->add(); // Clear cache so the changes are obvious. WPSEO_Utils::clear_cache(); do_action( 'wpseo_activate' ); } /** * On deactivation, flush the rewrite rules so XML sitemaps stop working. * * @return void */ function _wpseo_deactivate() { require_once WPSEO_PATH . 'inc/wpseo-functions.php'; add_action( 'shutdown', [ 'WPSEO_Utils', 'clear_rewrites' ] ); // Register capabilities, to make sure they are cleaned up. do_action( 'wpseo_register_roles' ); do_action( 'wpseo_register_capabilities' ); // Clean up capabilities. WPSEO_Role_Manager_Factory::get()->remove(); WPSEO_Capability_Manager_Factory::get()->remove(); // Clear cache so the changes are obvious. WPSEO_Utils::clear_cache(); do_action( 'wpseo_deactivate' ); } /** * Run wpseo activation routine on creation / activation of a multisite blog if WPSEO is activated * network-wide. * * Will only be called by multisite actions. * * {@internal Unfortunately will fail if the plugin is in the must-use directory. * {@link https://core.trac.wordpress.org/ticket/24205} }} * * @param int|WP_Site $blog_id Blog ID. * * @return void */ function wpseo_on_activate_blog( $blog_id ) { if ( ! function_exists( 'is_plugin_active_for_network' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } if ( $blog_id instanceof WP_Site ) { $blog_id = (int) $blog_id->blog_id; } if ( is_plugin_active_for_network( WPSEO_BASENAME ) ) { switch_to_blog( $blog_id ); wpseo_activate( false ); restore_current_blog(); } } /* ***************************** PLUGIN LOADING *************************** */ /** * Load translations. * * @return void */ function wpseo_load_textdomain() { $wpseo_path = str_replace( '\\', '/', WPSEO_PATH ); $mu_path = str_replace( '\\', '/', WPMU_PLUGIN_DIR ); if ( stripos( $wpseo_path, $mu_path ) !== false ) { load_muplugin_textdomain( 'wordpress-seo', dirname( WPSEO_BASENAME ) . '/languages/' ); } else { load_plugin_textdomain( 'wordpress-seo', false, dirname( WPSEO_BASENAME ) . '/languages/' ); } } add_action( 'plugins_loaded', 'wpseo_load_textdomain' ); /** * On plugins_loaded: load the minimum amount of essential files for this plugin. * * @return void */ function wpseo_init() { require_once WPSEO_PATH . 'inc/wpseo-functions.php'; require_once WPSEO_PATH . 'inc/wpseo-functions-deprecated.php'; // Make sure our option and meta value validation routines and default values are always registered and available. WPSEO_Options::get_instance(); WPSEO_Meta::init(); if ( version_compare( WPSEO_Options::get( 'version', 1, [ 'wpseo' ] ), WPSEO_VERSION, '<' ) ) { if ( function_exists( 'opcache_reset' ) ) { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- Prevent notices when opcache.restrict_api is set. @opcache_reset(); } new WPSEO_Upgrade(); // Get a cleaned up version of the $options. } $GLOBALS['wpseo_rewrite'] = new WPSEO_Rewrite(); if ( WPSEO_Options::get( 'enable_xml_sitemap', null, [ 'wpseo' ] ) === true ) { $GLOBALS['wpseo_sitemaps'] = new WPSEO_Sitemaps(); } if ( ! wp_doing_ajax() ) { require_once WPSEO_PATH . 'inc/wpseo-non-ajax-functions.php'; } $integrations = []; $integrations[] = new WPSEO_Slug_Change_Watcher(); foreach ( $integrations as $integration ) { $integration->register_hooks(); } } /** * Loads the rest api endpoints. * * @return void */ function wpseo_init_rest_api() { // We can't do anything when requirements are not met. if ( ! WPSEO_Utils::is_api_available() ) { return; } // Boot up REST API. $statistics_service = new WPSEO_Statistics_Service( new WPSEO_Statistics() ); $endpoints = []; $endpoints[] = new WPSEO_Endpoint_File_Size( new WPSEO_File_Size_Service() ); $endpoints[] = new WPSEO_Endpoint_Statistics( $statistics_service ); foreach ( $endpoints as $endpoint ) { $endpoint->register(); } } /** * Used to load the required files on the plugins_loaded hook, instead of immediately. * * @return void */ function wpseo_admin_init() { new WPSEO_Admin_Init(); } /* ***************************** BOOTSTRAP / HOOK INTO WP *************************** */ $spl_autoload_exists = function_exists( 'spl_autoload_register' ); if ( ! $spl_autoload_exists ) { add_action( 'admin_init', 'yoast_wpseo_missing_spl', 1 ); } if ( ! wp_installing() && ( $spl_autoload_exists ) ) { add_action( 'plugins_loaded', 'wpseo_init', 14 ); add_action( 'setup_theme', [ 'Yoast_Dynamic_Rewrites', 'instance' ], 1 ); add_action( 'rest_api_init', 'wpseo_init_rest_api' ); if ( is_admin() ) { new Yoast_Notifications(); $yoast_addon_manager = new WPSEO_Addon_Manager(); $yoast_addon_manager->register_hooks(); if ( wp_doing_ajax() ) { require_once WPSEO_PATH . 'admin/ajax.php'; // Plugin conflict ajax hooks. new Yoast_Plugin_Conflict_Ajax(); // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: We are not processing form information but only loading the admin init class. if ( isset( $_POST['action'] ) && is_string( $_POST['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form information but only loading the admin init class, We are strictly comparing only. if ( wp_unslash( $_POST['action'] ) === 'inline-save' ) { add_action( 'plugins_loaded', 'wpseo_admin_init', 15 ); } } } else { add_action( 'plugins_loaded', 'wpseo_admin_init', 15 ); } } add_action( 'plugins_loaded', 'load_yoast_notifications' ); add_action( 'init', [ 'WPSEO_Replace_Vars', 'setup_statics_once' ] ); // Initializes the Yoast indexables for the first time. YoastSEO(); /** * Action called when the Yoast SEO plugin file has loaded. */ do_action( 'wpseo_loaded' ); } // Activation and deactivation hook. register_activation_hook( WPSEO_FILE, 'wpseo_activate' ); register_deactivation_hook( WPSEO_FILE, 'wpseo_deactivate' ); add_action( 'wp_initialize_site', 'wpseo_on_activate_blog', 99 ); add_action( 'activate_blog', 'wpseo_on_activate_blog' ); // Registers SEO capabilities. $wpseo_register_capabilities = new WPSEO_Register_Capabilities(); $wpseo_register_capabilities->register_hooks(); // Registers SEO roles. $wpseo_register_capabilities = new WPSEO_Register_Roles(); $wpseo_register_capabilities->register_hooks(); /** * Wraps for notifications center class. * * @return void */ function load_yoast_notifications() { // Init Yoast_Notification_Center class. Yoast_Notification_Center::get(); } /** * Throw an error if the PHP SPL extension is disabled (prevent white screens) and self-deactivate plugin. * * @since 1.5.4 * * @return void */ function yoast_wpseo_missing_spl() { if ( is_admin() ) { add_action( 'admin_notices', 'yoast_wpseo_missing_spl_notice' ); yoast_wpseo_self_deactivate(); } } /** * Returns the notice in case of missing spl extension. * * @return void */ function yoast_wpseo_missing_spl_notice() { $message = esc_html__( 'The Standard PHP Library (SPL) extension seem to be unavailable. Please ask your web host to enable it.', 'wordpress-seo' ); yoast_wpseo_activation_failed_notice( $message ); } /** * Throw an error if the Composer autoload is missing and self-deactivate plugin. * * @return void */ function yoast_wpseo_missing_autoload() { if ( is_admin() ) { add_action( 'admin_notices', 'yoast_wpseo_missing_autoload_notice' ); yoast_wpseo_self_deactivate(); } } /** * Returns the notice in case of missing Composer autoload. * * @return void */ function yoast_wpseo_missing_autoload_notice() { /* translators: %1$s expands to Yoast SEO, %2$s / %3$s: links to the installation manual in the Readme for the Yoast SEO code repository on GitHub */ $message = esc_html__( 'The %1$s plugin installation is incomplete. Please refer to %2$sinstallation instructions%3$s.', 'wordpress-seo' ); $message = sprintf( $message, 'Yoast SEO', '', '' ); yoast_wpseo_activation_failed_notice( $message ); } /** * Throw an error if the filter extension is disabled (prevent white screens) and self-deactivate plugin. * * @since 2.0 * @deprecated 23.3 * @codeCoverageIgnore * * @return void */ function yoast_wpseo_missing_filter() { _deprecated_function( __FUNCTION__, 'Yoast SEO 23.3' ); } /** * Returns the notice in case of missing filter extension. * * @deprecated 23.3 * @codeCoverageIgnore * * @return void */ function yoast_wpseo_missing_filter_notice() { _deprecated_function( __FUNCTION__, 'Yoast SEO 23.3' ); } /** * Echo's the Activation failed notice with any given message. * * @param string $message Message string. * * @return void */ function yoast_wpseo_activation_failed_notice( $message ) { $title = sprintf( /* translators: %s: Yoast SEO. */ esc_html__( '%s activation failed', 'wordpress-seo' ), 'Yoast SEO' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- This function is only called in 3 places that are safe. echo '

' . $title . '

' . strip_tags( $message, '' ) . '

'; } /** * The method will deactivate the plugin, but only once, done by the static $is_deactivated. * * @return void */ function yoast_wpseo_self_deactivate() { static $is_deactivated; if ( $is_deactivated === null ) { $is_deactivated = true; deactivate_plugins( WPSEO_BASENAME ); if ( isset( $_GET['activate'] ) ) { unset( $_GET['activate'] ); } } } /** * Aliasses added in order to keep compatibility with Yoast SEO: Local. */ class_alias( '\Yoast\WP\SEO\Initializers\Initializer_Interface', '\Yoast\WP\SEO\WordPress\Initializer' ); class_alias( '\Yoast\WP\SEO\Loadable_Interface', '\Yoast\WP\SEO\WordPress\Loadable' ); class_alias( '\Yoast\WP\SEO\Integrations\Integration_Interface', '\Yoast\WP\SEO\WordPress\Integration' ); license.txt000064400000101047147206602470006742 0ustar00 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. 18. Additional terms In the light of Article 7 of the GPL license, the following additional terms apply: a) You are prohibited to make misrepresentations of the origin of that material, or to require that modified versions of such material be marked in reasonable ways as different from the original version; b) You are limited in the use for publicity purposes of names of licensors or authors of the material; c) You are declined any grant of rights under trademark law for use of the trade names, trademarks, or service marks of YOAST B.V.; d) You are required to indemnify licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. END OF TERMS AND CONDITIONS wp-seo.php000064400000003174147206602470006504 0ustar00. */ if ( ! function_exists( 'add_filter' ) ) { header( 'Status: 403 Forbidden' ); header( 'HTTP/1.1 403 Forbidden' ); exit(); } if ( ! defined( 'WPSEO_FILE' ) ) { define( 'WPSEO_FILE', __FILE__ ); } // Load the Yoast SEO plugin. require_once dirname( WPSEO_FILE ) . '/wp-seo-main.php'; vendor_prefixed/league/oauth2-client/src/OptionProvider/OptionProviderInterface.php000064400000001613147206602470024747 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\OptionProvider; /** * Interface for access token options provider */ interface OptionProviderInterface { /** * Builds request options used for requesting an access token. * * @param string $method * @param array $params * @return array */ public function getAccessTokenOptions($method, array $params); } vendor_prefixed/league/oauth2-client/src/OptionProvider/HttpBasicAuthOptionProvider.php000064400000002752147206602470025557 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\OptionProvider; use InvalidArgumentException; /** * Add http basic auth into access token request options * @link https://tools.ietf.org/html/rfc6749#section-2.3.1 */ class HttpBasicAuthOptionProvider extends \YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\PostAuthOptionProvider { /** * @inheritdoc */ public function getAccessTokenOptions($method, array $params) { if (empty($params['client_id']) || empty($params['client_secret'])) { throw new \InvalidArgumentException('clientId and clientSecret are required for http basic auth'); } $encodedCredentials = \base64_encode(\sprintf('%s:%s', $params['client_id'], $params['client_secret'])); unset($params['client_id'], $params['client_secret']); $options = parent::getAccessTokenOptions($method, $params); $options['headers']['Authorization'] = 'Basic ' . $encodedCredentials; return $options; } } vendor_prefixed/league/oauth2-client/src/OptionProvider/PostAuthOptionProvider.php000064400000003041147206602470024613 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\OptionProvider; use YoastSEO_Vendor\League\OAuth2\Client\Provider\AbstractProvider; use YoastSEO_Vendor\League\OAuth2\Client\Tool\QueryBuilderTrait; /** * Provide options for access token */ class PostAuthOptionProvider implements \YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\OptionProviderInterface { use QueryBuilderTrait; /** * @inheritdoc */ public function getAccessTokenOptions($method, array $params) { $options = ['headers' => ['content-type' => 'application/x-www-form-urlencoded']]; if ($method === \YoastSEO_Vendor\League\OAuth2\Client\Provider\AbstractProvider::METHOD_POST) { $options['body'] = $this->getAccessTokenBody($params); } return $options; } /** * Returns the request body for requesting an access token. * * @param array $params * @return string */ protected function getAccessTokenBody(array $params) { return $this->buildQueryString($params); } } vendor_prefixed/league/oauth2-client/src/Provider/AbstractProvider.php000064400000064351147206602470022240 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Provider; use YoastSEO_Vendor\GuzzleHttp\Client as HttpClient; use YoastSEO_Vendor\GuzzleHttp\ClientInterface as HttpClientInterface; use YoastSEO_Vendor\GuzzleHttp\Exception\BadResponseException; use InvalidArgumentException; use YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant; use YoastSEO_Vendor\League\OAuth2\Client\Grant\GrantFactory; use YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\OptionProviderInterface; use YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\PostAuthOptionProvider; use YoastSEO_Vendor\League\OAuth2\Client\Provider\Exception\IdentityProviderException; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface; use YoastSEO_Vendor\League\OAuth2\Client\Tool\ArrayAccessorTrait; use YoastSEO_Vendor\League\OAuth2\Client\Tool\GuardedPropertyTrait; use YoastSEO_Vendor\League\OAuth2\Client\Tool\QueryBuilderTrait; use YoastSEO_Vendor\League\OAuth2\Client\Tool\RequestFactory; use YoastSEO_Vendor\Psr\Http\Message\RequestInterface; use YoastSEO_Vendor\Psr\Http\Message\ResponseInterface; use UnexpectedValueException; /** * Represents a service provider (authorization server). * * @link http://tools.ietf.org/html/rfc6749#section-1.1 Roles (RFC 6749, §1.1) */ abstract class AbstractProvider { use ArrayAccessorTrait; use GuardedPropertyTrait; use QueryBuilderTrait; /** * @var string|null Key used in a token response to identify the resource owner. */ const ACCESS_TOKEN_RESOURCE_OWNER_ID = null; /** * @var string HTTP method used to fetch access tokens. */ const METHOD_GET = 'GET'; /** * @var string HTTP method used to fetch access tokens. */ const METHOD_POST = 'POST'; /** * @var string PKCE method used to fetch authorization token. * The PKCE code challenge will be hashed with sha256 (recommended). */ const PKCE_METHOD_S256 = 'S256'; /** * @var string PKCE method used to fetch authorization token. * The PKCE code challenge will be sent as plain text, this is NOT recommended. * Only use `plain` if no other option is possible. */ const PKCE_METHOD_PLAIN = 'plain'; /** * @var string */ protected $clientId; /** * @var string */ protected $clientSecret; /** * @var string */ protected $redirectUri; /** * @var string */ protected $state; /** * @var string|null */ protected $pkceCode = null; /** * @var GrantFactory */ protected $grantFactory; /** * @var RequestFactory */ protected $requestFactory; /** * @var HttpClientInterface */ protected $httpClient; /** * @var OptionProviderInterface */ protected $optionProvider; /** * Constructs an OAuth 2.0 service provider. * * @param array $options An array of options to set on this provider. * Options include `clientId`, `clientSecret`, `redirectUri`, and `state`. * Individual providers may introduce more options, as needed. * @param array $collaborators An array of collaborators that may be used to * override this provider's default behavior. Collaborators include * `grantFactory`, `requestFactory`, and `httpClient`. * Individual providers may introduce more collaborators, as needed. */ public function __construct(array $options = [], array $collaborators = []) { // We'll let the GuardedPropertyTrait handle mass assignment of incoming // options, skipping any blacklisted properties defined in the provider $this->fillProperties($options); if (empty($collaborators['grantFactory'])) { $collaborators['grantFactory'] = new \YoastSEO_Vendor\League\OAuth2\Client\Grant\GrantFactory(); } $this->setGrantFactory($collaborators['grantFactory']); if (empty($collaborators['requestFactory'])) { $collaborators['requestFactory'] = new \YoastSEO_Vendor\League\OAuth2\Client\Tool\RequestFactory(); } $this->setRequestFactory($collaborators['requestFactory']); if (empty($collaborators['httpClient'])) { $client_options = $this->getAllowedClientOptions($options); $collaborators['httpClient'] = new \YoastSEO_Vendor\GuzzleHttp\Client(\array_intersect_key($options, \array_flip($client_options))); } $this->setHttpClient($collaborators['httpClient']); if (empty($collaborators['optionProvider'])) { $collaborators['optionProvider'] = new \YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\PostAuthOptionProvider(); } $this->setOptionProvider($collaborators['optionProvider']); } /** * Returns the list of options that can be passed to the HttpClient * * @param array $options An array of options to set on this provider. * Options include `clientId`, `clientSecret`, `redirectUri`, and `state`. * Individual providers may introduce more options, as needed. * @return array The options to pass to the HttpClient constructor */ protected function getAllowedClientOptions(array $options) { $client_options = ['timeout', 'proxy']; // Only allow turning off ssl verification if it's for a proxy if (!empty($options['proxy'])) { $client_options[] = 'verify'; } return $client_options; } /** * Sets the grant factory instance. * * @param GrantFactory $factory * @return self */ public function setGrantFactory(\YoastSEO_Vendor\League\OAuth2\Client\Grant\GrantFactory $factory) { $this->grantFactory = $factory; return $this; } /** * Returns the current grant factory instance. * * @return GrantFactory */ public function getGrantFactory() { return $this->grantFactory; } /** * Sets the request factory instance. * * @param RequestFactory $factory * @return self */ public function setRequestFactory(\YoastSEO_Vendor\League\OAuth2\Client\Tool\RequestFactory $factory) { $this->requestFactory = $factory; return $this; } /** * Returns the request factory instance. * * @return RequestFactory */ public function getRequestFactory() { return $this->requestFactory; } /** * Sets the HTTP client instance. * * @param HttpClientInterface $client * @return self */ public function setHttpClient(\YoastSEO_Vendor\GuzzleHttp\ClientInterface $client) { $this->httpClient = $client; return $this; } /** * Returns the HTTP client instance. * * @return HttpClientInterface */ public function getHttpClient() { return $this->httpClient; } /** * Sets the option provider instance. * * @param OptionProviderInterface $provider * @return self */ public function setOptionProvider(\YoastSEO_Vendor\League\OAuth2\Client\OptionProvider\OptionProviderInterface $provider) { $this->optionProvider = $provider; return $this; } /** * Returns the option provider instance. * * @return OptionProviderInterface */ public function getOptionProvider() { return $this->optionProvider; } /** * Returns the current value of the state parameter. * * This can be accessed by the redirect handler during authorization. * * @return string */ public function getState() { return $this->state; } /** * Set the value of the pkceCode parameter. * * When using PKCE this should be set before requesting an access token. * * @param string $pkceCode * @return self */ public function setPkceCode($pkceCode) { $this->pkceCode = $pkceCode; return $this; } /** * Returns the current value of the pkceCode parameter. * * This can be accessed by the redirect handler during authorization. * * @return string|null */ public function getPkceCode() { return $this->pkceCode; } /** * Returns the base URL for authorizing a client. * * Eg. https://oauth.service.com/authorize * * @return string */ public abstract function getBaseAuthorizationUrl(); /** * Returns the base URL for requesting an access token. * * Eg. https://oauth.service.com/token * * @param array $params * @return string */ public abstract function getBaseAccessTokenUrl(array $params); /** * Returns the URL for requesting the resource owner's details. * * @param AccessToken $token * @return string */ public abstract function getResourceOwnerDetailsUrl(\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token); /** * Returns a new random string to use as the state parameter in an * authorization flow. * * @param int $length Length of the random string to be generated. * @return string */ protected function getRandomState($length = 32) { // Converting bytes to hex will always double length. Hence, we can reduce // the amount of bytes by half to produce the correct length. return \bin2hex(\random_bytes($length / 2)); } /** * Returns a new random string to use as PKCE code_verifier and * hashed as code_challenge parameters in an authorization flow. * Must be between 43 and 128 characters long. * * @param int $length Length of the random string to be generated. * @return string */ protected function getRandomPkceCode($length = 64) { return \substr(\strtr(\base64_encode(\random_bytes($length)), '+/', '-_'), 0, $length); } /** * Returns the default scopes used by this provider. * * This should only be the scopes that are required to request the details * of the resource owner, rather than all the available scopes. * * @return array */ protected abstract function getDefaultScopes(); /** * Returns the string that should be used to separate scopes when building * the URL for requesting an access token. * * @return string Scope separator, defaults to ',' */ protected function getScopeSeparator() { return ','; } /** * @return string|null */ protected function getPkceMethod() { return null; } /** * Returns authorization parameters based on provided options. * * @param array $options * @return array Authorization parameters */ protected function getAuthorizationParameters(array $options) { if (empty($options['state'])) { $options['state'] = $this->getRandomState(); } if (empty($options['scope'])) { $options['scope'] = $this->getDefaultScopes(); } $options += ['response_type' => 'code', 'approval_prompt' => 'auto']; if (\is_array($options['scope'])) { $separator = $this->getScopeSeparator(); $options['scope'] = \implode($separator, $options['scope']); } // Store the state as it may need to be accessed later on. $this->state = $options['state']; $pkceMethod = $this->getPkceMethod(); if (!empty($pkceMethod)) { $this->pkceCode = $this->getRandomPkceCode(); if ($pkceMethod === static::PKCE_METHOD_S256) { $options['code_challenge'] = \trim(\strtr(\base64_encode(\hash('sha256', $this->pkceCode, \true)), '+/', '-_'), '='); } elseif ($pkceMethod === static::PKCE_METHOD_PLAIN) { $options['code_challenge'] = $this->pkceCode; } else { throw new \InvalidArgumentException('Unknown PKCE method "' . $pkceMethod . '".'); } $options['code_challenge_method'] = $pkceMethod; } // Business code layer might set a different redirect_uri parameter // depending on the context, leave it as-is if (!isset($options['redirect_uri'])) { $options['redirect_uri'] = $this->redirectUri; } $options['client_id'] = $this->clientId; return $options; } /** * Builds the authorization URL's query string. * * @param array $params Query parameters * @return string Query string */ protected function getAuthorizationQuery(array $params) { return $this->buildQueryString($params); } /** * Builds the authorization URL. * * @param array $options * @return string Authorization URL */ public function getAuthorizationUrl(array $options = []) { $base = $this->getBaseAuthorizationUrl(); $params = $this->getAuthorizationParameters($options); $query = $this->getAuthorizationQuery($params); return $this->appendQuery($base, $query); } /** * Redirects the client for authorization. * * @param array $options * @param callable|null $redirectHandler * @return mixed */ public function authorize(array $options = [], callable $redirectHandler = null) { $url = $this->getAuthorizationUrl($options); if ($redirectHandler) { return $redirectHandler($url, $this); } // @codeCoverageIgnoreStart \header('Location: ' . $url); exit; // @codeCoverageIgnoreEnd } /** * Appends a query string to a URL. * * @param string $url The URL to append the query to * @param string $query The HTTP query string * @return string The resulting URL */ protected function appendQuery($url, $query) { $query = \trim($query, '?&'); if ($query) { $glue = \strstr($url, '?') === \false ? '?' : '&'; return $url . $glue . $query; } return $url; } /** * Returns the method to use when requesting an access token. * * @return string HTTP method */ protected function getAccessTokenMethod() { return self::METHOD_POST; } /** * Returns the key used in the access token response to identify the resource owner. * * @return string|null Resource owner identifier key */ protected function getAccessTokenResourceOwnerId() { return static::ACCESS_TOKEN_RESOURCE_OWNER_ID; } /** * Builds the access token URL's query string. * * @param array $params Query parameters * @return string Query string */ protected function getAccessTokenQuery(array $params) { return $this->buildQueryString($params); } /** * Checks that a provided grant is valid, or attempts to produce one if the * provided grant is a string. * * @param AbstractGrant|string $grant * @return AbstractGrant */ protected function verifyGrant($grant) { if (\is_string($grant)) { return $this->grantFactory->getGrant($grant); } $this->grantFactory->checkGrant($grant); return $grant; } /** * Returns the full URL to use when requesting an access token. * * @param array $params Query parameters * @return string */ protected function getAccessTokenUrl(array $params) { $url = $this->getBaseAccessTokenUrl($params); if ($this->getAccessTokenMethod() === self::METHOD_GET) { $query = $this->getAccessTokenQuery($params); return $this->appendQuery($url, $query); } return $url; } /** * Returns a prepared request for requesting an access token. * * @param array $params Query string parameters * @return RequestInterface */ protected function getAccessTokenRequest(array $params) { $method = $this->getAccessTokenMethod(); $url = $this->getAccessTokenUrl($params); $options = $this->optionProvider->getAccessTokenOptions($this->getAccessTokenMethod(), $params); return $this->getRequest($method, $url, $options); } /** * Requests an access token using a specified grant and option set. * * @param mixed $grant * @param array $options * @throws IdentityProviderException * @return AccessTokenInterface */ public function getAccessToken($grant, array $options = []) { $grant = $this->verifyGrant($grant); $params = ['client_id' => $this->clientId, 'client_secret' => $this->clientSecret, 'redirect_uri' => $this->redirectUri]; if (!empty($this->pkceCode)) { $params['code_verifier'] = $this->pkceCode; } $params = $grant->prepareRequestParameters($params, $options); $request = $this->getAccessTokenRequest($params); $response = $this->getParsedResponse($request); if (\false === \is_array($response)) { throw new \UnexpectedValueException('Invalid response received from Authorization Server. Expected JSON.'); } $prepared = $this->prepareAccessTokenResponse($response); $token = $this->createAccessToken($prepared, $grant); return $token; } /** * Returns a PSR-7 request instance that is not authenticated. * * @param string $method * @param string $url * @param array $options * @return RequestInterface */ public function getRequest($method, $url, array $options = []) { return $this->createRequest($method, $url, null, $options); } /** * Returns an authenticated PSR-7 request instance. * * @param string $method * @param string $url * @param AccessTokenInterface|string|null $token * @param array $options Any of "headers", "body", and "protocolVersion". * @return RequestInterface */ public function getAuthenticatedRequest($method, $url, $token, array $options = []) { return $this->createRequest($method, $url, $token, $options); } /** * Creates a PSR-7 request instance. * * @param string $method * @param string $url * @param AccessTokenInterface|string|null $token * @param array $options * @return RequestInterface */ protected function createRequest($method, $url, $token, array $options) { $defaults = ['headers' => $this->getHeaders($token)]; $options = \array_merge_recursive($defaults, $options); $factory = $this->getRequestFactory(); return $factory->getRequestWithOptions($method, $url, $options); } /** * Sends a request instance and returns a response instance. * * WARNING: This method does not attempt to catch exceptions caused by HTTP * errors! It is recommended to wrap this method in a try/catch block. * * @param RequestInterface $request * @return ResponseInterface */ public function getResponse(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) { return $this->getHttpClient()->send($request); } /** * Sends a request and returns the parsed response. * * @param RequestInterface $request * @throws IdentityProviderException * @return mixed */ public function getParsedResponse(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) { try { $response = $this->getResponse($request); } catch (\YoastSEO_Vendor\GuzzleHttp\Exception\BadResponseException $e) { $response = $e->getResponse(); } $parsed = $this->parseResponse($response); $this->checkResponse($response, $parsed); return $parsed; } /** * Attempts to parse a JSON response. * * @param string $content JSON content from response body * @return array Parsed JSON data * @throws UnexpectedValueException if the content could not be parsed */ protected function parseJson($content) { $content = \json_decode($content, \true); if (\json_last_error() !== \JSON_ERROR_NONE) { throw new \UnexpectedValueException(\sprintf("Failed to parse JSON response: %s", \json_last_error_msg())); } return $content; } /** * Returns the content type header of a response. * * @param ResponseInterface $response * @return string Semi-colon separated join of content-type headers. */ protected function getContentType(\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) { return \join(';', (array) $response->getHeader('content-type')); } /** * Parses the response according to its content-type header. * * @throws UnexpectedValueException * @param ResponseInterface $response * @return array */ protected function parseResponse(\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) { $content = (string) $response->getBody(); $type = $this->getContentType($response); if (\strpos($type, 'urlencoded') !== \false) { \parse_str($content, $parsed); return $parsed; } // Attempt to parse the string as JSON regardless of content type, // since some providers use non-standard content types. Only throw an // exception if the JSON could not be parsed when it was expected to. try { return $this->parseJson($content); } catch (\UnexpectedValueException $e) { if (\strpos($type, 'json') !== \false) { throw $e; } if ($response->getStatusCode() == 500) { throw new \UnexpectedValueException('An OAuth server error was encountered that did not contain a JSON body', 0, $e); } return $content; } } /** * Checks a provider response for errors. * * @throws IdentityProviderException * @param ResponseInterface $response * @param array|string $data Parsed response data * @return void */ protected abstract function checkResponse(\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response, $data); /** * Prepares an parsed access token response for a grant. * * Custom mapping of expiration, etc should be done here. Always call the * parent method when overloading this method. * * @param mixed $result * @return array */ protected function prepareAccessTokenResponse(array $result) { if ($this->getAccessTokenResourceOwnerId() !== null) { $result['resource_owner_id'] = $this->getValueByKey($result, $this->getAccessTokenResourceOwnerId()); } return $result; } /** * Creates an access token from a response. * * The grant that was used to fetch the response can be used to provide * additional context. * * @param array $response * @param AbstractGrant $grant * @return AccessTokenInterface */ protected function createAccessToken(array $response, \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant $grant) { return new \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken($response); } /** * Generates a resource owner object from a successful resource owner * details request. * * @param array $response * @param AccessToken $token * @return ResourceOwnerInterface */ protected abstract function createResourceOwner(array $response, \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token); /** * Requests and returns the resource owner of given access token. * * @param AccessToken $token * @return ResourceOwnerInterface */ public function getResourceOwner(\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token) { $response = $this->fetchResourceOwnerDetails($token); return $this->createResourceOwner($response, $token); } /** * Requests resource owner details. * * @param AccessToken $token * @return mixed */ protected function fetchResourceOwnerDetails(\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token) { $url = $this->getResourceOwnerDetailsUrl($token); $request = $this->getAuthenticatedRequest(self::METHOD_GET, $url, $token); $response = $this->getParsedResponse($request); if (\false === \is_array($response)) { throw new \UnexpectedValueException('Invalid response received from Authorization Server. Expected JSON.'); } return $response; } /** * Returns the default headers used by this provider. * * Typically this is used to set 'Accept' or 'Content-Type' headers. * * @return array */ protected function getDefaultHeaders() { return []; } /** * Returns the authorization headers used by this provider. * * Typically this is "Bearer" or "MAC". For more information see: * http://tools.ietf.org/html/rfc6749#section-7.1 * * No default is provided, providers must overload this method to activate * authorization headers. * * @param mixed|null $token Either a string or an access token instance * @return array */ protected function getAuthorizationHeaders($token = null) { return []; } /** * Returns all headers used by this provider for a request. * * The request will be authenticated if an access token is provided. * * @param mixed|null $token object or string * @return array */ public function getHeaders($token = null) { if ($token) { return \array_merge($this->getDefaultHeaders(), $this->getAuthorizationHeaders($token)); } return $this->getDefaultHeaders(); } } vendor_prefixed/league/oauth2-client/src/Provider/Exception/IdentityProviderException.php000064400000002273147206602470026076 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Provider\Exception; /** * Exception thrown if the provider response contains errors. */ class IdentityProviderException extends \Exception { /** * @var mixed */ protected $response; /** * @param string $message * @param int $code * @param mixed $response The response body */ public function __construct($message, $code, $response) { $this->response = $response; parent::__construct($message, $code); } /** * Returns the exception's response body. * * @return mixed */ public function getResponseBody() { return $this->response; } } vendor_prefixed/league/oauth2-client/src/Provider/GenericResourceOwner.php000064400000002750147206602470023054 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Provider; /** * Represents a generic resource owner for use with the GenericProvider. */ class GenericResourceOwner implements \YoastSEO_Vendor\League\OAuth2\Client\Provider\ResourceOwnerInterface { /** * @var array */ protected $response; /** * @var string */ protected $resourceOwnerId; /** * @param array $response * @param string $resourceOwnerId */ public function __construct(array $response, $resourceOwnerId) { $this->response = $response; $this->resourceOwnerId = $resourceOwnerId; } /** * Returns the identifier of the authorized resource owner. * * @return mixed */ public function getId() { return $this->response[$this->resourceOwnerId]; } /** * Returns the raw resource owner response. * * @return array */ public function toArray() { return $this->response; } } vendor_prefixed/league/oauth2-client/src/Provider/ResourceOwnerInterface.php000064400000002002147206602470023366 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Provider; /** * Classes implementing `ResourceOwnerInterface` may be used to represent * the resource owner authenticated with a service provider. */ interface ResourceOwnerInterface { /** * Returns the identifier of the authorized resource owner. * * @return mixed */ public function getId(); /** * Return all of the owner details available as an array. * * @return array */ public function toArray(); } vendor_prefixed/league/oauth2-client/src/Provider/GenericProvider.php000064400000013404147206602470022042 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Provider; use InvalidArgumentException; use YoastSEO_Vendor\League\OAuth2\Client\Provider\Exception\IdentityProviderException; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken; use YoastSEO_Vendor\League\OAuth2\Client\Tool\BearerAuthorizationTrait; use YoastSEO_Vendor\Psr\Http\Message\ResponseInterface; /** * Represents a generic service provider that may be used to interact with any * OAuth 2.0 service provider, using Bearer token authentication. */ class GenericProvider extends \YoastSEO_Vendor\League\OAuth2\Client\Provider\AbstractProvider { use BearerAuthorizationTrait; /** * @var string */ private $urlAuthorize; /** * @var string */ private $urlAccessToken; /** * @var string */ private $urlResourceOwnerDetails; /** * @var string */ private $accessTokenMethod; /** * @var string */ private $accessTokenResourceOwnerId; /** * @var array|null */ private $scopes = null; /** * @var string */ private $scopeSeparator; /** * @var string */ private $responseError = 'error'; /** * @var string */ private $responseCode; /** * @var string */ private $responseResourceOwnerId = 'id'; /** * @var string|null */ private $pkceMethod = null; /** * @param array $options * @param array $collaborators */ public function __construct(array $options = [], array $collaborators = []) { $this->assertRequiredOptions($options); $possible = $this->getConfigurableOptions(); $configured = \array_intersect_key($options, \array_flip($possible)); foreach ($configured as $key => $value) { $this->{$key} = $value; } // Remove all options that are only used locally $options = \array_diff_key($options, $configured); parent::__construct($options, $collaborators); } /** * Returns all options that can be configured. * * @return array */ protected function getConfigurableOptions() { return \array_merge($this->getRequiredOptions(), ['accessTokenMethod', 'accessTokenResourceOwnerId', 'scopeSeparator', 'responseError', 'responseCode', 'responseResourceOwnerId', 'scopes', 'pkceMethod']); } /** * Returns all options that are required. * * @return array */ protected function getRequiredOptions() { return ['urlAuthorize', 'urlAccessToken', 'urlResourceOwnerDetails']; } /** * Verifies that all required options have been passed. * * @param array $options * @return void * @throws InvalidArgumentException */ private function assertRequiredOptions(array $options) { $missing = \array_diff_key(\array_flip($this->getRequiredOptions()), $options); if (!empty($missing)) { throw new \InvalidArgumentException('Required options not defined: ' . \implode(', ', \array_keys($missing))); } } /** * @inheritdoc */ public function getBaseAuthorizationUrl() { return $this->urlAuthorize; } /** * @inheritdoc */ public function getBaseAccessTokenUrl(array $params) { return $this->urlAccessToken; } /** * @inheritdoc */ public function getResourceOwnerDetailsUrl(\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token) { return $this->urlResourceOwnerDetails; } /** * @inheritdoc */ public function getDefaultScopes() { return $this->scopes; } /** * @inheritdoc */ protected function getAccessTokenMethod() { return $this->accessTokenMethod ?: parent::getAccessTokenMethod(); } /** * @inheritdoc */ protected function getAccessTokenResourceOwnerId() { return $this->accessTokenResourceOwnerId ?: parent::getAccessTokenResourceOwnerId(); } /** * @inheritdoc */ protected function getScopeSeparator() { return $this->scopeSeparator ?: parent::getScopeSeparator(); } /** * @inheritdoc */ protected function getPkceMethod() { return $this->pkceMethod ?: parent::getPkceMethod(); } /** * @inheritdoc */ protected function checkResponse(\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response, $data) { if (!empty($data[$this->responseError])) { $error = $data[$this->responseError]; if (!\is_string($error)) { $error = \var_export($error, \true); } $code = $this->responseCode && !empty($data[$this->responseCode]) ? $data[$this->responseCode] : 0; if (!\is_int($code)) { $code = \intval($code); } throw new \YoastSEO_Vendor\League\OAuth2\Client\Provider\Exception\IdentityProviderException($error, $code, $data); } } /** * @inheritdoc */ protected function createResourceOwner(array $response, \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token) { return new \YoastSEO_Vendor\League\OAuth2\Client\Provider\GenericResourceOwner($response, $this->responseResourceOwnerId); } } vendor_prefixed/league/oauth2-client/src/Grant/Exception/InvalidGrantException.php000064400000001444147206602470024434 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant\Exception; use InvalidArgumentException; /** * Exception thrown if the grant does not extend from AbstractGrant. * * @see League\OAuth2\Client\Grant\AbstractGrant */ class InvalidGrantException extends \InvalidArgumentException { } vendor_prefixed/league/oauth2-client/src/Grant/Password.php000064400000002077147206602470020042 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; /** * Represents a resource owner password credentials grant. * * @link http://tools.ietf.org/html/rfc6749#section-1.3.3 Resource Owner Password Credentials (RFC 6749, §1.3.3) */ class Password extends \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant { /** * @inheritdoc */ protected function getName() { return 'password'; } /** * @inheritdoc */ protected function getRequiredRequestParameters() { return ['username', 'password']; } } vendor_prefixed/league/oauth2-client/src/Grant/AbstractGrant.php000064400000004676147206602470021006 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; use YoastSEO_Vendor\League\OAuth2\Client\Tool\RequiredParameterTrait; /** * Represents a type of authorization grant. * * An authorization grant is a credential representing the resource * owner's authorization (to access its protected resources) used by the * client to obtain an access token. OAuth 2.0 defines four * grant types -- authorization code, implicit, resource owner password * credentials, and client credentials -- as well as an extensibility * mechanism for defining additional types. * * @link http://tools.ietf.org/html/rfc6749#section-1.3 Authorization Grant (RFC 6749, §1.3) */ abstract class AbstractGrant { use RequiredParameterTrait; /** * Returns the name of this grant, eg. 'grant_name', which is used as the * grant type when encoding URL query parameters. * * @return string */ protected abstract function getName(); /** * Returns a list of all required request parameters. * * @return array */ protected abstract function getRequiredRequestParameters(); /** * Returns this grant's name as its string representation. This allows for * string interpolation when building URL query parameters. * * @return string */ public function __toString() { return $this->getName(); } /** * Prepares an access token request's parameters by checking that all * required parameters are set, then merging with any given defaults. * * @param array $defaults * @param array $options * @return array */ public function prepareRequestParameters(array $defaults, array $options) { $defaults['grant_type'] = $this->getName(); $required = $this->getRequiredRequestParameters(); $provided = \array_merge($defaults, $options); $this->checkRequiredParameters($required, $provided); return $provided; } } vendor_prefixed/league/oauth2-client/src/Grant/AuthorizationCode.php000064400000002041147206602470021662 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; /** * Represents an authorization code grant. * * @link http://tools.ietf.org/html/rfc6749#section-1.3.1 Authorization Code (RFC 6749, §1.3.1) */ class AuthorizationCode extends \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant { /** * @inheritdoc */ protected function getName() { return 'authorization_code'; } /** * @inheritdoc */ protected function getRequiredRequestParameters() { return ['code']; } } vendor_prefixed/league/oauth2-client/src/Grant/GrantFactory.php000064400000005364147206602470020645 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; use YoastSEO_Vendor\League\OAuth2\Client\Grant\Exception\InvalidGrantException; /** * Represents a factory used when retrieving an authorization grant type. */ class GrantFactory { /** * @var array */ protected $registry = []; /** * Defines a grant singleton in the registry. * * @param string $name * @param AbstractGrant $grant * @return self */ public function setGrant($name, \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant $grant) { $this->registry[$name] = $grant; return $this; } /** * Returns a grant singleton by name. * * If the grant has not be registered, a default grant will be loaded. * * @param string $name * @return AbstractGrant */ public function getGrant($name) { if (empty($this->registry[$name])) { $this->registerDefaultGrant($name); } return $this->registry[$name]; } /** * Registers a default grant singleton by name. * * @param string $name * @return self */ protected function registerDefaultGrant($name) { // PascalCase the grant. E.g: 'authorization_code' becomes 'AuthorizationCode' $class = \str_replace(' ', '', \ucwords(\str_replace(['-', '_'], ' ', $name))); $class = 'YoastSEO_Vendor\\League\\OAuth2\\Client\\Grant\\' . $class; $this->checkGrant($class); return $this->setGrant($name, new $class()); } /** * Determines if a variable is a valid grant. * * @param mixed $class * @return boolean */ public function isGrant($class) { return \is_subclass_of($class, \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant::class); } /** * Checks if a variable is a valid grant. * * @throws InvalidGrantException * @param mixed $class * @return void */ public function checkGrant($class) { if (!$this->isGrant($class)) { throw new \YoastSEO_Vendor\League\OAuth2\Client\Grant\Exception\InvalidGrantException(\sprintf('Grant "%s" must extend AbstractGrant', \is_object($class) ? \get_class($class) : $class)); } } } vendor_prefixed/league/oauth2-client/src/Grant/RefreshToken.php000064400000002032147206602470020626 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; /** * Represents a refresh token grant. * * @link http://tools.ietf.org/html/rfc6749#section-6 Refreshing an Access Token (RFC 6749, §6) */ class RefreshToken extends \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant { /** * @inheritdoc */ protected function getName() { return 'refresh_token'; } /** * @inheritdoc */ protected function getRequiredRequestParameters() { return ['refresh_token']; } } vendor_prefixed/league/oauth2-client/src/Grant/ClientCredentials.php000064400000002032147206602470021623 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Grant; /** * Represents a client credentials grant. * * @link http://tools.ietf.org/html/rfc6749#section-1.3.4 Client Credentials (RFC 6749, §1.3.4) */ class ClientCredentials extends \YoastSEO_Vendor\League\OAuth2\Client\Grant\AbstractGrant { /** * @inheritdoc */ protected function getName() { return 'client_credentials'; } /** * @inheritdoc */ protected function getRequiredRequestParameters() { return []; } } vendor_prefixed/league/oauth2-client/src/Token/ResourceOwnerAccessTokenInterface.php000064400000001510147206602470025002 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Token; interface ResourceOwnerAccessTokenInterface extends \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface { /** * Returns the resource owner identifier, if defined. * * @return string|null */ public function getResourceOwnerId(); } vendor_prefixed/league/oauth2-client/src/Token/AccessToken.php000064400000013576147206602470020455 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Token; use InvalidArgumentException; use RuntimeException; /** * Represents an access token. * * @link http://tools.ietf.org/html/rfc6749#section-1.4 Access Token (RFC 6749, §1.4) */ class AccessToken implements \YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface, \YoastSEO_Vendor\League\OAuth2\Client\Token\ResourceOwnerAccessTokenInterface { /** * @var string */ protected $accessToken; /** * @var int */ protected $expires; /** * @var string */ protected $refreshToken; /** * @var string */ protected $resourceOwnerId; /** * @var array */ protected $values = []; /** * @var int */ private static $timeNow; /** * Set the time now. This should only be used for testing purposes. * * @param int $timeNow the time in seconds since epoch * @return void */ public static function setTimeNow($timeNow) { self::$timeNow = $timeNow; } /** * Reset the time now if it was set for test purposes. * * @return void */ public static function resetTimeNow() { self::$timeNow = null; } /** * @return int */ public function getTimeNow() { return self::$timeNow ? self::$timeNow : \time(); } /** * Constructs an access token. * * @param array $options An array of options returned by the service provider * in the access token request. The `access_token` option is required. * @throws InvalidArgumentException if `access_token` is not provided in `$options`. */ public function __construct(array $options = []) { if (empty($options['access_token'])) { throw new \InvalidArgumentException('Required option not passed: "access_token"'); } $this->accessToken = $options['access_token']; if (!empty($options['resource_owner_id'])) { $this->resourceOwnerId = $options['resource_owner_id']; } if (!empty($options['refresh_token'])) { $this->refreshToken = $options['refresh_token']; } // We need to know when the token expires. Show preference to // 'expires_in' since it is defined in RFC6749 Section 5.1. // Defer to 'expires' if it is provided instead. if (isset($options['expires_in'])) { if (!\is_numeric($options['expires_in'])) { throw new \InvalidArgumentException('expires_in value must be an integer'); } $this->expires = $options['expires_in'] != 0 ? $this->getTimeNow() + $options['expires_in'] : 0; } elseif (!empty($options['expires'])) { // Some providers supply the seconds until expiration rather than // the exact timestamp. Take a best guess at which we received. $expires = $options['expires']; if (!$this->isExpirationTimestamp($expires)) { $expires += $this->getTimeNow(); } $this->expires = $expires; } // Capture any additional values that might exist in the token but are // not part of the standard response. Vendors will sometimes pass // additional user data this way. $this->values = \array_diff_key($options, \array_flip(['access_token', 'resource_owner_id', 'refresh_token', 'expires_in', 'expires'])); } /** * Check if a value is an expiration timestamp or second value. * * @param integer $value * @return bool */ protected function isExpirationTimestamp($value) { // If the given value is larger than the original OAuth 2 draft date, // assume that it is meant to be a (possible expired) timestamp. $oauth2InceptionDate = 1349067600; // 2012-10-01 return $value > $oauth2InceptionDate; } /** * @inheritdoc */ public function getToken() { return $this->accessToken; } /** * @inheritdoc */ public function getRefreshToken() { return $this->refreshToken; } /** * @inheritdoc */ public function getExpires() { return $this->expires; } /** * @inheritdoc */ public function getResourceOwnerId() { return $this->resourceOwnerId; } /** * @inheritdoc */ public function hasExpired() { $expires = $this->getExpires(); if (empty($expires)) { throw new \RuntimeException('"expires" is not set on the token'); } return $expires < \time(); } /** * @inheritdoc */ public function getValues() { return $this->values; } /** * @inheritdoc */ public function __toString() { return (string) $this->getToken(); } /** * @inheritdoc */ public function jsonSerialize() { $parameters = $this->values; if ($this->accessToken) { $parameters['access_token'] = $this->accessToken; } if ($this->refreshToken) { $parameters['refresh_token'] = $this->refreshToken; } if ($this->expires) { $parameters['expires'] = $this->expires; } if ($this->resourceOwnerId) { $parameters['resource_owner_id'] = $this->resourceOwnerId; } return $parameters; } } vendor_prefixed/league/oauth2-client/src/Token/AccessTokenInterface.php000064400000003464147206602470022271 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Token; use JsonSerializable; use ReturnTypeWillChange; use RuntimeException; interface AccessTokenInterface extends \JsonSerializable { /** * Returns the access token string of this instance. * * @return string */ public function getToken(); /** * Returns the refresh token, if defined. * * @return string|null */ public function getRefreshToken(); /** * Returns the expiration timestamp in seconds, if defined. * * @return integer|null */ public function getExpires(); /** * Checks if this token has expired. * * @return boolean true if the token has expired, false otherwise. * @throws RuntimeException if 'expires' is not set on the token. */ public function hasExpired(); /** * Returns additional vendor values stored in the token. * * @return array */ public function getValues(); /** * Returns a string representation of the access token * * @return string */ public function __toString(); /** * Returns an array of parameters to serialize when this is serialized with * json_encode(). * * @return array */ #[ReturnTypeWillChange] public function jsonSerialize(); } vendor_prefixed/league/oauth2-client/src/Tool/RequiredParameterTrait.php000064400000002740147206602470022524 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; use BadMethodCallException; /** * Provides functionality to check for required parameters. */ trait RequiredParameterTrait { /** * Checks for a required parameter in a hash. * * @throws BadMethodCallException * @param string $name * @param array $params * @return void */ private function checkRequiredParameter($name, array $params) { if (!isset($params[$name])) { throw new \BadMethodCallException(\sprintf('Required parameter not passed: "%s"', $name)); } } /** * Checks for multiple required parameters in a hash. * * @throws InvalidArgumentException * @param array $names * @param array $params * @return void */ private function checkRequiredParameters(array $names, array $params) { foreach ($names as $name) { $this->checkRequiredParameter($name, $params); } } } vendor_prefixed/league/oauth2-client/src/Tool/BearerAuthorizationTrait.php000064400000002173147206602470023064 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface; /** * Enables `Bearer` header authorization for providers. * * @link http://tools.ietf.org/html/rfc6750 Bearer Token Usage (RFC 6750) */ trait BearerAuthorizationTrait { /** * Returns authorization headers for the 'bearer' grant. * * @param AccessTokenInterface|string|null $token Either a string or an access token instance * @return array */ protected function getAuthorizationHeaders($token = null) { return ['Authorization' => 'Bearer ' . $token]; } } vendor_prefixed/league/oauth2-client/src/Tool/ArrayAccessorTrait.php000064400000002662147206602470021647 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; /** * Provides generic array navigation tools. */ trait ArrayAccessorTrait { /** * Returns a value by key using dot notation. * * @param array $data * @param string $key * @param mixed|null $default * @return mixed */ private function getValueByKey(array $data, $key, $default = null) { if (!\is_string($key) || empty($key) || !\count($data)) { return $default; } if (\strpos($key, '.') !== \false) { $keys = \explode('.', $key); foreach ($keys as $innerKey) { if (!\is_array($data) || !\array_key_exists($innerKey, $data)) { return $default; } $data = $data[$innerKey]; } return $data; } return \array_key_exists($key, $data) ? $data[$key] : $default; } } vendor_prefixed/league/oauth2-client/src/Tool/ProviderRedirectTrait.php000064400000006472147206602470022365 0ustar00redirectLimit) { $attempts++; $response = $this->getHttpClient()->send($request, ['allow_redirects' => \false]); if ($this->isRedirect($response)) { $redirectUrl = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri($response->getHeader('Location')[0]); $request = $request->withUri($redirectUrl); } else { break; } } return $response; } /** * Returns the HTTP client instance. * * @return GuzzleHttp\ClientInterface */ public abstract function getHttpClient(); /** * Retrieves current redirect limit. * * @return integer */ public function getRedirectLimit() { return $this->redirectLimit; } /** * Determines if a given response is a redirect. * * @param ResponseInterface $response * * @return boolean */ protected function isRedirect(\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) { $statusCode = $response->getStatusCode(); return $statusCode > 300 && $statusCode < 400 && $response->hasHeader('Location'); } /** * Sends a request instance and returns a response instance. * * WARNING: This method does not attempt to catch exceptions caused by HTTP * errors! It is recommended to wrap this method in a try/catch block. * * @param RequestInterface $request * @return ResponseInterface */ public function getResponse(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) { try { $response = $this->followRequestRedirects($request); } catch (\YoastSEO_Vendor\GuzzleHttp\Exception\BadResponseException $e) { $response = $e->getResponse(); } return $response; } /** * Updates the redirect limit. * * @param integer $limit * @return League\OAuth2\Client\Provider\AbstractProvider * @throws InvalidArgumentException */ public function setRedirectLimit($limit) { if (!\is_int($limit)) { throw new \InvalidArgumentException('redirectLimit must be an integer.'); } if ($limit < 1) { throw new \InvalidArgumentException('redirectLimit must be greater than or equal to one.'); } $this->redirectLimit = $limit; return $this; } } vendor_prefixed/league/oauth2-client/src/Tool/MacAuthorizationTrait.php000064400000005133147206602470022363 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken; use YoastSEO_Vendor\League\OAuth2\Client\Token\AccessTokenInterface; /** * Enables `MAC` header authorization for providers. * * @link http://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05 Message Authentication Code (MAC) Tokens */ trait MacAuthorizationTrait { /** * Returns the id of this token for MAC generation. * * @param AccessToken $token * @return string */ protected abstract function getTokenId(\YoastSEO_Vendor\League\OAuth2\Client\Token\AccessToken $token); /** * Returns the MAC signature for the current request. * * @param string $id * @param integer $ts * @param string $nonce * @return string */ protected abstract function getMacSignature($id, $ts, $nonce); /** * Returns a new random string to use as the state parameter in an * authorization flow. * * @param int $length Length of the random string to be generated. * @return string */ protected abstract function getRandomState($length = 32); /** * Returns the authorization headers for the 'mac' grant. * * @param AccessTokenInterface|string|null $token Either a string or an access token instance * @return array * @codeCoverageIgnore * * @todo This is currently untested and provided only as an example. If you * complete the implementation, please create a pull request for * https://github.com/thephpleague/oauth2-client */ protected function getAuthorizationHeaders($token = null) { if ($token === null) { return []; } $ts = \time(); $id = $this->getTokenId($token); $nonce = $this->getRandomState(16); $mac = $this->getMacSignature($id, $ts, $nonce); $parts = []; foreach (\compact('id', 'ts', 'nonce', 'mac') as $key => $value) { $parts[] = \sprintf('%s="%s"', $key, $value); } return ['Authorization' => 'MAC ' . \implode(', ', $parts)]; } } vendor_prefixed/league/oauth2-client/src/Tool/GuardedPropertyTrait.php000064400000003432147206602470022222 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; /** * Provides support for blacklisting explicit properties from the * mass assignment behavior. */ trait GuardedPropertyTrait { /** * The properties that aren't mass assignable. * * @var array */ protected $guarded = []; /** * Attempts to mass assign the given options to explicitly defined properties, * skipping over any properties that are defined in the guarded array. * * @param array $options * @return mixed */ protected function fillProperties(array $options = []) { if (isset($options['guarded'])) { unset($options['guarded']); } foreach ($options as $option => $value) { if (\property_exists($this, $option) && !$this->isGuarded($option)) { $this->{$option} = $value; } } } /** * Returns current guarded properties. * * @return array */ public function getGuarded() { return $this->guarded; } /** * Determines if the given property is guarded. * * @param string $property * @return bool */ public function isGuarded($property) { return \in_array($property, $this->getGuarded()); } } vendor_prefixed/league/oauth2-client/src/Tool/QueryBuilderTrait.php000064400000001630147206602470021514 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; /** * Provides a standard way to generate query strings. */ trait QueryBuilderTrait { /** * Build a query string from an array. * * @param array $params * * @return string */ protected function buildQueryString(array $params) { return \http_build_query($params, '', '&', \PHP_QUERY_RFC3986); } } vendor_prefixed/league/oauth2-client/src/Tool/RequestFactory.php000064400000004262147206602470021060 0ustar00 * @license http://opensource.org/licenses/MIT MIT * @link http://thephpleague.com/oauth2-client/ Documentation * @link https://packagist.org/packages/league/oauth2-client Packagist * @link https://github.com/thephpleague/oauth2-client GitHub */ namespace YoastSEO_Vendor\League\OAuth2\Client\Tool; use YoastSEO_Vendor\GuzzleHttp\Psr7\Request; /** * Used to produce PSR-7 Request instances. * * @link https://github.com/guzzle/guzzle/pull/1101 */ class RequestFactory { /** * Creates a PSR-7 Request instance. * * @param null|string $method HTTP method for the request. * @param null|string $uri URI for the request. * @param array $headers Headers for the message. * @param string|resource|StreamInterface $body Message body. * @param string $version HTTP protocol version. * * @return Request */ public function getRequest($method, $uri, array $headers = [], $body = null, $version = '1.1') { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Request($method, $uri, $headers, $body, $version); } /** * Parses simplified options. * * @param array $options Simplified options. * * @return array Extended options for use with getRequest. */ protected function parseOptions(array $options) { // Should match default values for getRequest $defaults = ['headers' => [], 'body' => null, 'version' => '1.1']; return \array_merge($defaults, $options); } /** * Creates a request using a simplified array of options. * * @param null|string $method * @param null|string $uri * @param array $options * * @return Request */ public function getRequestWithOptions($method, $uri, array $options = []) { $options = $this->parseOptions($options); return $this->getRequest($method, $uri, $options['headers'], $options['body'], $options['version']); } } vendor_prefixed/symfony/deprecation-contracts/function.php000064400000001760147206602470020300 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (!function_exists('trigger_deprecation')) { /** * Triggers a silenced deprecation notice. * * @param string $package The name of the Composer package that is triggering the deprecation * @param string $version The version of the package that introduced the deprecation * @param string $message The message of the deprecation * @param mixed ...$args Values to insert in the message using printf() formatting * * @author Nicolas Grekas */ function trigger_deprecation(string $package, string $version, string $message, ...$args): void { @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); } } vendor_prefixed/symfony/dependency-injection/Exception/LogicException.php000064400000001014147206602470023120 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * Base LogicException for Dependency Injection component. */ class LogicException extends \LogicException implements \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ExceptionInterface { } vendor_prefixed/symfony/dependency-injection/Exception/InvalidArgumentException.php000064400000001151147206602470025156 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * Base InvalidArgumentException for Dependency Injection component. * * @author Bulat Shakirzyanov */ class InvalidArgumentException extends \InvalidArgumentException implements \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ExceptionInterface { } vendor_prefixed/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php000064400000002101147206602470026765 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * This exception is thrown when a circular reference is detected. * * @author Johannes M. Schmitt */ class ServiceCircularReferenceException extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException { private $serviceId; private $path; public function __construct($serviceId, array $path, \Exception $previous = null) { parent::__construct(\sprintf('Circular reference detected for service "%s", path: "%s".', $serviceId, \implode(' -> ', $path)), 0, $previous); $this->serviceId = $serviceId; $this->path = $path; } public function getServiceId() { return $this->serviceId; } public function getPath() { return $this->path; } } vendor_prefixed/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php000064400000001757147206602470027325 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * This exception is thrown when a circular reference in a parameter is detected. * * @author Fabien Potencier */ class ParameterCircularReferenceException extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException { private $parameters; public function __construct($parameters, \Exception $previous = null) { parent::__construct(\sprintf('Circular reference detected for parameter "%s" ("%s" > "%s").', $parameters[0], \implode('" > "', $parameters), $parameters[0]), 0, $previous); $this->parameters = $parameters; } public function getParameters() { return $this->parameters; } } vendor_prefixed/symfony/dependency-injection/Exception/ExceptionInterface.php000064400000001223147206602470023765 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; use YoastSEO_Vendor\Psr\Container\ContainerExceptionInterface; /** * Base ExceptionInterface for Dependency Injection component. * * @author Fabien Potencier * @author Bulat Shakirzyanov */ interface ExceptionInterface extends \YoastSEO_Vendor\Psr\Container\ContainerExceptionInterface { } vendor_prefixed/symfony/dependency-injection/Exception/ServiceNotFoundException.php000064400000003556147206602470025155 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; use YoastSEO_Vendor\Psr\Container\NotFoundExceptionInterface; /** * This exception is thrown when a non-existent service is requested. * * @author Johannes M. Schmitt */ class ServiceNotFoundException extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException implements \YoastSEO_Vendor\Psr\Container\NotFoundExceptionInterface { private $id; private $sourceId; private $alternatives; public function __construct($id, $sourceId = null, \Exception $previous = null, array $alternatives = [], $msg = null) { if (null !== $msg) { // no-op } elseif (null === $sourceId) { $msg = \sprintf('You have requested a non-existent service "%s".', $id); } else { $msg = \sprintf('The service "%s" has a dependency on a non-existent service "%s".', $sourceId, $id); } if ($alternatives) { if (1 == \count($alternatives)) { $msg .= ' Did you mean this: "'; } else { $msg .= ' Did you mean one of these: "'; } $msg .= \implode('", "', $alternatives) . '"?'; } parent::__construct($msg, 0, $previous); $this->id = $id; $this->sourceId = $sourceId; $this->alternatives = $alternatives; } public function getId() { return $this->id; } public function getSourceId() { return $this->sourceId; } public function getAlternatives() { return $this->alternatives; } } vendor_prefixed/symfony/dependency-injection/Exception/EnvNotFoundException.php000064400000001300147206602470024266 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * This exception is thrown when an environment variable is not found. * * @author Nicolas Grekas */ class EnvNotFoundException extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException { public function __construct($name) { parent::__construct(\sprintf('Environment variable not found: "%s".', $name)); } } vendor_prefixed/symfony/dependency-injection/Exception/RuntimeException.php000064400000001113147206602470023506 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception; /** * Base RuntimeException for Dependency Injection component. * * @author Johannes M. Schmitt */ class RuntimeException extends \RuntimeException implements \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ExceptionInterface { } vendor_prefixed/symfony/dependency-injection/Argument/RewindableGenerator.php000064400000001613147206602470023760 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\Argument; /** * @internal */ class RewindableGenerator implements \IteratorAggregate, \Countable { private $generator; private $count; /** * @param int|callable $count */ public function __construct(callable $generator, $count) { $this->generator = $generator; $this->count = $count; } public function getIterator() { $g = $this->generator; return $g(); } public function count() { if (\is_callable($count = $this->count)) { $this->count = $count(); } return $this->count; } } vendor_prefixed/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php000064400000003633147206602470024327 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException; /** * Holds read-only parameters. * * @author Fabien Potencier */ class FrozenParameterBag extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\ParameterBag { /** * For performance reasons, the constructor assumes that * all keys are already lowercased. * * This is always the case when used internally. * * @param array $parameters An array of parameters */ public function __construct(array $parameters = []) { $this->parameters = $parameters; $this->resolved = \true; } /** * {@inheritdoc} */ public function clear() { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException('Impossible to call clear() on a frozen ParameterBag.'); } /** * {@inheritdoc} */ public function add(array $parameters) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException('Impossible to call add() on a frozen ParameterBag.'); } /** * {@inheritdoc} */ public function set($name, $value) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException('Impossible to call set() on a frozen ParameterBag.'); } /** * {@inheritdoc} */ public function remove($name) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException('Impossible to call remove() on a frozen ParameterBag.'); } } vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBag.php000064400000022671147206602470023146 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException; /** * Holds parameters. * * @author Fabien Potencier */ class ParameterBag implements \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface { protected $parameters = []; protected $resolved = \false; private $normalizedNames = []; /** * @param array $parameters An array of parameters */ public function __construct(array $parameters = []) { $this->add($parameters); } /** * Clears all parameters. */ public function clear() { $this->parameters = []; } /** * Adds parameters to the service container parameters. * * @param array $parameters An array of parameters */ public function add(array $parameters) { foreach ($parameters as $key => $value) { $this->set($key, $value); } } /** * {@inheritdoc} */ public function all() { return $this->parameters; } /** * {@inheritdoc} */ public function get($name) { $name = $this->normalizeName($name); if (!\array_key_exists($name, $this->parameters)) { if (!$name) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException($name); } $alternatives = []; foreach ($this->parameters as $key => $parameterValue) { $lev = \levenshtein($name, $key); if ($lev <= \strlen($name) / 3 || \false !== \strpos($key, $name)) { $alternatives[] = $key; } } $nonNestedAlternative = null; if (!\count($alternatives) && \false !== \strpos($name, '.')) { $namePartsLength = \array_map('strlen', \explode('.', $name)); $key = \substr($name, 0, -1 * (1 + \array_pop($namePartsLength))); while (\count($namePartsLength)) { if ($this->has($key)) { if (\is_array($this->get($key))) { $nonNestedAlternative = $key; } break; } $key = \substr($key, 0, -1 * (1 + \array_pop($namePartsLength))); } } throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException($name, null, null, null, $alternatives, $nonNestedAlternative); } return $this->parameters[$name]; } /** * Sets a service container parameter. * * @param string $name The parameter name * @param mixed $value The parameter value */ public function set($name, $value) { $this->parameters[$this->normalizeName($name)] = $value; } /** * {@inheritdoc} */ public function has($name) { return \array_key_exists($this->normalizeName($name), $this->parameters); } /** * Removes a parameter. * * @param string $name The parameter name */ public function remove($name) { unset($this->parameters[$this->normalizeName($name)]); } /** * {@inheritdoc} */ public function resolve() { if ($this->resolved) { return; } $parameters = []; foreach ($this->parameters as $key => $value) { try { $value = $this->resolveValue($value); $parameters[$key] = $this->unescapeValue($value); } catch (\YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException $e) { $e->setSourceKey($key); throw $e; } } $this->parameters = $parameters; $this->resolved = \true; } /** * Replaces parameter placeholders (%name%) by their values. * * @param mixed $value A value * @param array $resolving An array of keys that are being resolved (used internally to detect circular references) * * @return mixed The resolved value * * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist * @throws ParameterCircularReferenceException if a circular reference if detected * @throws RuntimeException when a given parameter has a type problem */ public function resolveValue($value, array $resolving = []) { if (\is_array($value)) { $args = []; foreach ($value as $k => $v) { $args[\is_string($k) ? $this->resolveValue($k, $resolving) : $k] = $this->resolveValue($v, $resolving); } return $args; } if (!\is_string($value) || 2 > \strlen($value)) { return $value; } return $this->resolveString($value, $resolving); } /** * Resolves parameters inside a string. * * @param string $value The string to resolve * @param array $resolving An array of keys that are being resolved (used internally to detect circular references) * * @return mixed The resolved string * * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist * @throws ParameterCircularReferenceException if a circular reference if detected * @throws RuntimeException when a given parameter has a type problem */ public function resolveString($value, array $resolving = []) { // we do this to deal with non string values (Boolean, integer, ...) // as the preg_replace_callback throw an exception when trying // a non-string in a parameter value if (\preg_match('/^%([^%\\s]+)%$/', $value, $match)) { $key = $match[1]; $lcKey = \strtolower($key); // strtolower() to be removed in 4.0 if (isset($resolving[$lcKey])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException(\array_keys($resolving)); } $resolving[$lcKey] = \true; return $this->resolved ? $this->get($key) : $this->resolveValue($this->get($key), $resolving); } return \preg_replace_callback('/%%|%([^%\\s]+)%/', function ($match) use($resolving, $value) { // skip %% if (!isset($match[1])) { return '%%'; } $key = $match[1]; $lcKey = \strtolower($key); // strtolower() to be removed in 4.0 if (isset($resolving[$lcKey])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException(\array_keys($resolving)); } $resolved = $this->get($key); if (!\is_string($resolved) && !\is_numeric($resolved)) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException(\sprintf('A string value must be composed of strings and/or numbers, but found parameter "%s" of type "%s" inside string value "%s".', $key, \gettype($resolved), $value)); } $resolved = (string) $resolved; $resolving[$lcKey] = \true; return $this->isResolved() ? $resolved : $this->resolveString($resolved, $resolving); }, $value); } public function isResolved() { return $this->resolved; } /** * {@inheritdoc} */ public function escapeValue($value) { if (\is_string($value)) { return \str_replace('%', '%%', $value); } if (\is_array($value)) { $result = []; foreach ($value as $k => $v) { $result[$k] = $this->escapeValue($v); } return $result; } return $value; } /** * {@inheritdoc} */ public function unescapeValue($value) { if (\is_string($value)) { return \str_replace('%%', '%', $value); } if (\is_array($value)) { $result = []; foreach ($value as $k => $v) { $result[$k] = $this->unescapeValue($v); } return $result; } return $value; } private function normalizeName($name) { if (isset($this->normalizedNames[$normalizedName = \strtolower($name)])) { $normalizedName = $this->normalizedNames[$normalizedName]; if ((string) $name !== $normalizedName) { @\trigger_error(\sprintf('Parameter names will be made case sensitive in Symfony 4.0. Using "%s" instead of "%s" is deprecated since Symfony 3.4.', $name, $normalizedName), \E_USER_DEPRECATED); } } else { $normalizedName = $this->normalizedNames[$normalizedName] = (string) $name; } return $normalizedName; } } vendor_prefixed/symfony/dependency-injection/ParameterBag/EnvPlaceholderParameterBag.php000064400000010007147206602470025750 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException; /** * @author Nicolas Grekas */ class EnvPlaceholderParameterBag extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\ParameterBag { private $envPlaceholders = []; private $providedTypes = []; /** * {@inheritdoc} */ public function get($name) { if (0 === \strpos($name, 'env(') && ')' === \substr($name, -1) && 'env()' !== $name) { $env = \substr($name, 4, -1); if (isset($this->envPlaceholders[$env])) { foreach ($this->envPlaceholders[$env] as $placeholder) { return $placeholder; // return first result } } if (!\preg_match('/^(?:\\w++:)*+\\w++$/', $env)) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException(\sprintf('Invalid "%s" name: only "word" characters are allowed.', $name)); } if ($this->has($name)) { $defaultValue = parent::get($name); if (null !== $defaultValue && !\is_scalar($defaultValue)) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException(\sprintf('The default value of an env() parameter must be scalar or null, but "%s" given to "%s".', \gettype($defaultValue), $name)); } } $uniqueName = \md5($name . \uniqid(\mt_rand(), \true)); $placeholder = \sprintf('env_%s_%s', \str_replace(':', '_', $env), $uniqueName); $this->envPlaceholders[$env][$placeholder] = $placeholder; return $placeholder; } return parent::get($name); } /** * Returns the map of env vars used in the resolved parameter values to their placeholders. * * @return string[][] A map of env var names to their placeholders */ public function getEnvPlaceholders() { return $this->envPlaceholders; } /** * Merges the env placeholders of another EnvPlaceholderParameterBag. */ public function mergeEnvPlaceholders(self $bag) { if ($newPlaceholders = $bag->getEnvPlaceholders()) { $this->envPlaceholders += $newPlaceholders; foreach ($newPlaceholders as $env => $placeholders) { $this->envPlaceholders[$env] += $placeholders; } } } /** * Maps env prefixes to their corresponding PHP types. */ public function setProvidedTypes(array $providedTypes) { $this->providedTypes = $providedTypes; } /** * Gets the PHP types corresponding to env() parameter prefixes. * * @return string[][] */ public function getProvidedTypes() { return $this->providedTypes; } /** * {@inheritdoc} */ public function resolve() { if ($this->resolved) { return; } parent::resolve(); foreach ($this->envPlaceholders as $env => $placeholders) { if (!$this->has($name = "env({$env})")) { continue; } if (\is_numeric($default = $this->parameters[$name])) { $this->parameters[$name] = (string) $default; } elseif (null !== $default && !\is_scalar($default)) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\RuntimeException(\sprintf('The default value of env parameter "%s" must be scalar or null, "%s" given.', $env, \gettype($default))); } } } } vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php000064400000005370147206602470024764 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\LogicException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; /** * ParameterBagInterface. * * @author Fabien Potencier */ interface ParameterBagInterface { /** * Clears all parameters. * * @throws LogicException if the ParameterBagInterface can not be cleared */ public function clear(); /** * Adds parameters to the service container parameters. * * @param array $parameters An array of parameters * * @throws LogicException if the parameter can not be added */ public function add(array $parameters); /** * Gets the service container parameters. * * @return array An array of parameters */ public function all(); /** * Gets a service container parameter. * * @param string $name The parameter name * * @return mixed The parameter value * * @throws ParameterNotFoundException if the parameter is not defined */ public function get($name); /** * Removes a parameter. * * @param string $name The parameter name */ public function remove($name); /** * Sets a service container parameter. * * @param string $name The parameter name * @param mixed $value The parameter value * * @throws LogicException if the parameter can not be set */ public function set($name, $value); /** * Returns true if a parameter name is defined. * * @param string $name The parameter name * * @return bool true if the parameter name is defined, false otherwise */ public function has($name); /** * Replaces parameter placeholders (%name%) by their values for all parameters. */ public function resolve(); /** * Replaces parameter placeholders (%name%) by their values. * * @param mixed $value A value * * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist */ public function resolveValue($value); /** * Escape parameter placeholders %. * * @param mixed $value * * @return mixed */ public function escapeValue($value); /** * Unescape parameter placeholders %. * * @param mixed $value * * @return mixed */ public function unescapeValue($value); } vendor_prefixed/symfony/dependency-injection/ResettableContainerInterface.php000064400000002015147206602470024026 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection; /** * ResettableContainerInterface defines additional resetting functionality * for containers, allowing to release shared services when the container is * not needed anymore. * * @author Christophe Coevoet */ interface ResettableContainerInterface extends \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface { /** * Resets shared services from the container. * * The container is not intended to be used again after being reset in a normal workflow. This method is * meant as a way to release references for ref-counting. * A subsequent call to ContainerInterface::get will recreate a new instance of the shared service. */ public function reset(); } vendor_prefixed/symfony/dependency-injection/ContainerInterface.php000064400000005677147206602470022034 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection; use YoastSEO_Vendor\Psr\Container\ContainerInterface as PsrContainerInterface; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; /** * ContainerInterface is the interface implemented by service container classes. * * @author Fabien Potencier * @author Johannes M. Schmitt */ interface ContainerInterface extends \YoastSEO_Vendor\Psr\Container\ContainerInterface { const EXCEPTION_ON_INVALID_REFERENCE = 1; const NULL_ON_INVALID_REFERENCE = 2; const IGNORE_ON_INVALID_REFERENCE = 3; const IGNORE_ON_UNINITIALIZED_REFERENCE = 4; /** * Sets a service. * * @param string $id The service identifier * @param object|null $service The service instance */ public function set($id, $service); /** * Gets a service. * * @param string $id The service identifier * @param int $invalidBehavior The behavior when the service does not exist * * @return object|null The associated service * * @throws ServiceCircularReferenceException When a circular reference is detected * @throws ServiceNotFoundException When the service is not defined * * @see Reference */ public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE); /** * Returns true if the given service is defined. * * @param string $id The service identifier * * @return bool true if the service is defined, false otherwise */ public function has($id); /** * Check for whether or not a service has been initialized. * * @param string $id * * @return bool true if the service has been initialized, false otherwise */ public function initialized($id); /** * Gets a parameter. * * @param string $name The parameter name * * @return mixed The parameter value * * @throws InvalidArgumentException if the parameter is not defined */ public function getParameter($name); /** * Checks if a parameter exists. * * @param string $name The parameter name * * @return bool The presence of parameter in container */ public function hasParameter($name); /** * Sets a parameter. * * @param string $name The parameter name * @param mixed $value The parameter value */ public function setParameter($name, $value); } vendor_prefixed/symfony/dependency-injection/Container.php000064400000047734147206602470020213 0ustar00 * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace YoastSEO_Vendor\Symfony\Component\DependencyInjection; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\EnvNotFoundException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; /** * Container is a dependency injection container. * * It gives access to object instances (services). * Services and parameters are simple key/pair stores. * The container can have four possible behaviors when a service * does not exist (or is not initialized for the last case): * * * EXCEPTION_ON_INVALID_REFERENCE: Throws an exception (the default) * * NULL_ON_INVALID_REFERENCE: Returns null * * IGNORE_ON_INVALID_REFERENCE: Ignores the wrapping command asking for the reference * (for instance, ignore a setter if the service does not exist) * * IGNORE_ON_UNINITIALIZED_REFERENCE: Ignores/returns null for uninitialized services or invalid references * * @author Fabien Potencier * @author Johannes M. Schmitt */ class Container implements \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ResettableContainerInterface { protected $parameterBag; protected $services = []; protected $fileMap = []; protected $methodMap = []; protected $aliases = []; protected $loading = []; protected $resolving = []; protected $syntheticIds = []; /** * @internal */ protected $privates = []; /** * @internal */ protected $normalizedIds = []; private $underscoreMap = ['_' => '', '.' => '_', '\\' => '_']; private $envCache = []; private $compiled = \false; private $getEnv; public function __construct(\YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag = null) { $this->parameterBag = $parameterBag ?: new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag(); } /** * Compiles the container. * * This method does two things: * * * Parameter values are resolved; * * The parameter bag is frozen. */ public function compile() { $this->parameterBag->resolve(); $this->parameterBag = new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag($this->parameterBag->all()); $this->compiled = \true; } /** * Returns true if the container is compiled. * * @return bool */ public function isCompiled() { return $this->compiled; } /** * Returns true if the container parameter bag are frozen. * * @deprecated since version 3.3, to be removed in 4.0. * * @return bool true if the container parameter bag are frozen, false otherwise */ public function isFrozen() { @\trigger_error(\sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Use the isCompiled() method instead.', __METHOD__), \E_USER_DEPRECATED); return $this->parameterBag instanceof \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; } /** * Gets the service container parameter bag. * * @return ParameterBagInterface A ParameterBagInterface instance */ public function getParameterBag() { return $this->parameterBag; } /** * Gets a parameter. * * @param string $name The parameter name * * @return mixed The parameter value * * @throws InvalidArgumentException if the parameter is not defined */ public function getParameter($name) { return $this->parameterBag->get($name); } /** * Checks if a parameter exists. * * @param string $name The parameter name * * @return bool The presence of parameter in container */ public function hasParameter($name) { return $this->parameterBag->has($name); } /** * Sets a parameter. * * @param string $name The parameter name * @param mixed $value The parameter value */ public function setParameter($name, $value) { $this->parameterBag->set($name, $value); } /** * Sets a service. * * Setting a synthetic service to null resets it: has() returns false and get() * behaves in the same way as if the service was never created. * * @param string $id The service identifier * @param object|null $service The service instance */ public function set($id, $service) { // Runs the internal initializer; used by the dumped container to include always-needed files if (isset($this->privates['service_container']) && $this->privates['service_container'] instanceof \Closure) { $initialize = $this->privates['service_container']; unset($this->privates['service_container']); $initialize(); } $id = $this->normalizeId($id); if ('service_container' === $id) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException('You cannot set service "service_container".'); } if (isset($this->privates[$id]) || !(isset($this->fileMap[$id]) || isset($this->methodMap[$id]))) { if (!isset($this->privates[$id]) && !isset($this->getRemovedIds()[$id])) { // no-op } elseif (null === $service) { @\trigger_error(\sprintf('The "%s" service is private, unsetting it is deprecated since Symfony 3.2 and will fail in 4.0.', $id), \E_USER_DEPRECATED); unset($this->privates[$id]); } else { @\trigger_error(\sprintf('The "%s" service is private, replacing it is deprecated since Symfony 3.2 and will fail in 4.0.', $id), \E_USER_DEPRECATED); } } elseif (isset($this->services[$id])) { if (null === $service) { @\trigger_error(\sprintf('The "%s" service is already initialized, unsetting it is deprecated since Symfony 3.3 and will fail in 4.0.', $id), \E_USER_DEPRECATED); } else { @\trigger_error(\sprintf('The "%s" service is already initialized, replacing it is deprecated since Symfony 3.3 and will fail in 4.0.', $id), \E_USER_DEPRECATED); } } if (isset($this->aliases[$id])) { unset($this->aliases[$id]); } if (null === $service) { unset($this->services[$id]); return; } $this->services[$id] = $service; } /** * Returns true if the given service is defined. * * @param string $id The service identifier * * @return bool true if the service is defined, false otherwise */ public function has($id) { for ($i = 2;;) { if (isset($this->privates[$id])) { @\trigger_error(\sprintf('The "%s" service is private, checking for its existence is deprecated since Symfony 3.2 and will fail in 4.0.', $id), \E_USER_DEPRECATED); } if (isset($this->aliases[$id])) { $id = $this->aliases[$id]; } if (isset($this->services[$id])) { return \true; } if ('service_container' === $id) { return \true; } if (isset($this->fileMap[$id]) || isset($this->methodMap[$id])) { return \true; } if (--$i && $id !== ($normalizedId = $this->normalizeId($id))) { $id = $normalizedId; continue; } // We only check the convention-based factory in a compiled container (i.e. a child class other than a ContainerBuilder, // and only when the dumper has not generated the method map (otherwise the method map is considered to be fully populated by the dumper) if (!$this->methodMap && !$this instanceof \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerBuilder && __CLASS__ !== static::class && \method_exists($this, 'get' . \strtr($id, $this->underscoreMap) . 'Service')) { @\trigger_error('Generating a dumped container without populating the method map is deprecated since Symfony 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', \E_USER_DEPRECATED); return \true; } return \false; } } /** * Gets a service. * * If a service is defined both through a set() method and * with a get{$id}Service() method, the former has always precedence. * * @param string $id The service identifier * @param int $invalidBehavior The behavior when the service does not exist * * @return object|null The associated service * * @throws ServiceCircularReferenceException When a circular reference is detected * @throws ServiceNotFoundException When the service is not defined * @throws \Exception if an exception has been thrown when the service has been resolved * * @see Reference */ public function get($id, $invalidBehavior = 1) { // Attempt to retrieve the service by checking first aliases then // available services. Service IDs are case insensitive, however since // this method can be called thousands of times during a request, avoid // calling $this->normalizeId($id) unless necessary. for ($i = 2;;) { if (isset($this->privates[$id])) { @\trigger_error(\sprintf('The "%s" service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container directly and use dependency injection instead.', $id), \E_USER_DEPRECATED); } if (isset($this->aliases[$id])) { $id = $this->aliases[$id]; } // Re-use shared service instance if it exists. if (isset($this->services[$id])) { return $this->services[$id]; } if ('service_container' === $id) { return $this; } if (isset($this->loading[$id])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException($id, \array_merge(\array_keys($this->loading), [$id])); } $this->loading[$id] = \true; try { if (isset($this->fileMap[$id])) { return 4 === $invalidBehavior ? null : $this->load($this->fileMap[$id]); } elseif (isset($this->methodMap[$id])) { return 4 === $invalidBehavior ? null : $this->{$this->methodMap[$id]}(); } elseif (--$i && $id !== ($normalizedId = $this->normalizeId($id))) { unset($this->loading[$id]); $id = $normalizedId; continue; } elseif (!$this->methodMap && !$this instanceof \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerBuilder && __CLASS__ !== static::class && \method_exists($this, $method = 'get' . \strtr($id, $this->underscoreMap) . 'Service')) { // We only check the convention-based factory in a compiled container (i.e. a child class other than a ContainerBuilder, // and only when the dumper has not generated the method map (otherwise the method map is considered to be fully populated by the dumper) @\trigger_error('Generating a dumped container without populating the method map is deprecated since Symfony 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', \E_USER_DEPRECATED); return 4 === $invalidBehavior ? null : $this->{$method}(); } break; } catch (\Exception $e) { unset($this->services[$id]); throw $e; } finally { unset($this->loading[$id]); } } if (1 === $invalidBehavior) { if (!$id) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException($id); } if (isset($this->syntheticIds[$id])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException($id, null, null, [], \sprintf('The "%s" service is synthetic, it needs to be set at boot time before it can be used.', $id)); } if (isset($this->getRemovedIds()[$id])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException($id, null, null, [], \sprintf('The "%s" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead.', $id)); } $alternatives = []; foreach ($this->getServiceIds() as $knownId) { $lev = \levenshtein($id, $knownId); if ($lev <= \strlen($id) / 3 || \false !== \strpos($knownId, $id)) { $alternatives[] = $knownId; } } throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException($id, null, null, $alternatives); } } /** * Returns true if the given service has actually been initialized. * * @param string $id The service identifier * * @return bool true if service has already been initialized, false otherwise */ public function initialized($id) { $id = $this->normalizeId($id); if (isset($this->privates[$id])) { @\trigger_error(\sprintf('Checking for the initialization of the "%s" private service is deprecated since Symfony 3.4 and won\'t be supported anymore in Symfony 4.0.', $id), \E_USER_DEPRECATED); } if (isset($this->aliases[$id])) { $id = $this->aliases[$id]; } if ('service_container' === $id) { return \false; } return isset($this->services[$id]); } /** * {@inheritdoc} */ public function reset() { $this->services = []; } /** * Gets all service ids. * * @return string[] An array of all defined service ids */ public function getServiceIds() { $ids = []; if (!$this->methodMap && !$this instanceof \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerBuilder && __CLASS__ !== static::class) { // We only check the convention-based factory in a compiled container (i.e. a child class other than a ContainerBuilder, // and only when the dumper has not generated the method map (otherwise the method map is considered to be fully populated by the dumper) @\trigger_error('Generating a dumped container without populating the method map is deprecated since Symfony 3.2 and will be unsupported in 4.0. Update your dumper to generate the method map.', \E_USER_DEPRECATED); foreach (\get_class_methods($this) as $method) { if (\preg_match('/^get(.+)Service$/', $method, $match)) { $ids[] = self::underscore($match[1]); } } } $ids[] = 'service_container'; return \array_map('strval', \array_unique(\array_merge($ids, \array_keys($this->methodMap), \array_keys($this->fileMap), \array_keys($this->aliases), \array_keys($this->services)))); } /** * Gets service ids that existed at compile time. * * @return array */ public function getRemovedIds() { return []; } /** * Camelizes a string. * * @param string $id A string to camelize * * @return string The camelized string */ public static function camelize($id) { return \strtr(\ucwords(\strtr($id, ['_' => ' ', '.' => '_ ', '\\' => '_ '])), [' ' => '']); } /** * A string to underscore. * * @param string $id The string to underscore * * @return string The underscored string */ public static function underscore($id) { return \strtolower(\preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\\d])([A-Z])/'], ['\\1_\\2', '\\1_\\2'], \str_replace('_', '.', $id))); } /** * Creates a service by requiring its factory file. */ protected function load($file) { return require $file; } /** * Fetches a variable from the environment. * * @param string $name The name of the environment variable * * @return mixed The value to use for the provided environment variable name * * @throws EnvNotFoundException When the environment variable is not found and has no default value */ protected function getEnv($name) { if (isset($this->resolving[$envName = "env({$name})"])) { throw new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException(\array_keys($this->resolving)); } if (isset($this->envCache[$name]) || \array_key_exists($name, $this->envCache)) { return $this->envCache[$name]; } if (!$this->has($id = 'container.env_var_processors_locator')) { $this->set($id, new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\ServiceLocator([])); } if (!$this->getEnv) { $this->getEnv = new \ReflectionMethod($this, __FUNCTION__); $this->getEnv->setAccessible(\true); $this->getEnv = $this->getEnv->getClosure($this); } $processors = $this->get($id); if (\false !== ($i = \strpos($name, ':'))) { $prefix = \substr($name, 0, $i); $localName = \substr($name, 1 + $i); } else { $prefix = 'string'; $localName = $name; } $processor = $processors->has($prefix) ? $processors->get($prefix) : new \YoastSEO_Vendor\Symfony\Component\DependencyInjection\EnvVarProcessor($this); $this->resolving[$envName] = \true; try { return $this->envCache[$name] = $processor->getEnv($prefix, $localName, $this->getEnv); } finally { unset($this->resolving[$envName]); } } /** * Returns the case sensitive id used at registration time. * * @param string $id * * @return string * * @internal */ public function normalizeId($id) { if (!\is_string($id)) { $id = (string) $id; } if (isset($this->normalizedIds[$normalizedId = \strtolower($id)])) { $normalizedId = $this->normalizedIds[$normalizedId]; if ($id !== $normalizedId) { @\trigger_error(\sprintf('Service identifiers will be made case sensitive in Symfony 4.0. Using "%s" instead of "%s" is deprecated since Symfony 3.3.', $id, $normalizedId), \E_USER_DEPRECATED); } } else { $normalizedId = $this->normalizedIds[$normalizedId] = $id; } return $normalizedId; } private function __clone() { } } vendor_prefixed/guzzlehttp/promises/src/Promise.php000064400000022177147206602470016747 0ustar00waitFn = $waitFn; $this->cancelFn = $cancelFn; } public function then(callable $onFulfilled = null, callable $onRejected = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if ($this->state === self::PENDING) { $p = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise(null, [$this, 'cancel']); $this->handlers[] = [$p, $onFulfilled, $onRejected]; $p->waitList = $this->waitList; $p->waitList[] = $this; return $p; } // Return a fulfilled promise and immediately invoke any callbacks. if ($this->state === self::FULFILLED) { $promise = \YoastSEO_Vendor\GuzzleHttp\Promise\Create::promiseFor($this->result); return $onFulfilled ? $promise->then($onFulfilled) : $promise; } // It's either cancelled or rejected, so return a rejected promise // and immediately invoke any callbacks. $rejection = \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($this->result); return $onRejected ? $rejection->then(null, $onRejected) : $rejection; } public function otherwise(callable $onRejected) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->then(null, $onRejected); } public function wait(bool $unwrap = \true) { $this->waitIfPending(); if ($this->result instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface) { return $this->result->wait($unwrap); } if ($unwrap) { if ($this->state === self::FULFILLED) { return $this->result; } // It's rejected so "unwrap" and throw an exception. throw \YoastSEO_Vendor\GuzzleHttp\Promise\Create::exceptionFor($this->result); } } public function getState() : string { return $this->state; } public function cancel() : void { if ($this->state !== self::PENDING) { return; } $this->waitFn = $this->waitList = null; if ($this->cancelFn) { $fn = $this->cancelFn; $this->cancelFn = null; try { $fn(); } catch (\Throwable $e) { $this->reject($e); } } // Reject the promise only if it wasn't rejected in a then callback. /** @psalm-suppress RedundantCondition */ if ($this->state === self::PENDING) { $this->reject(new \YoastSEO_Vendor\GuzzleHttp\Promise\CancellationException('Promise has been cancelled')); } } public function resolve($value) : void { $this->settle(self::FULFILLED, $value); } public function reject($reason) : void { $this->settle(self::REJECTED, $reason); } private function settle(string $state, $value) : void { if ($this->state !== self::PENDING) { // Ignore calls with the same resolution. if ($state === $this->state && $value === $this->result) { return; } throw $this->state === $state ? new \LogicException("The promise is already {$state}.") : new \LogicException("Cannot change a {$this->state} promise to {$state}"); } if ($value === $this) { throw new \LogicException('Cannot fulfill or reject a promise with itself'); } // Clear out the state of the promise but stash the handlers. $this->state = $state; $this->result = $value; $handlers = $this->handlers; $this->handlers = null; $this->waitList = $this->waitFn = null; $this->cancelFn = null; if (!$handlers) { return; } // If the value was not a settled promise or a thenable, then resolve // it in the task queue using the correct ID. if (!\is_object($value) || !\method_exists($value, 'then')) { $id = $state === self::FULFILLED ? 1 : 2; // It's a success, so resolve the handlers in the queue. \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue()->add(static function () use($id, $value, $handlers) : void { foreach ($handlers as $handler) { self::callHandler($id, $value, $handler); } }); } elseif ($value instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\Promise && \YoastSEO_Vendor\GuzzleHttp\Promise\Is::pending($value)) { // We can just merge our handlers onto the next promise. $value->handlers = \array_merge($value->handlers, $handlers); } else { // Resolve the handlers when the forwarded promise is resolved. $value->then(static function ($value) use($handlers) : void { foreach ($handlers as $handler) { self::callHandler(1, $value, $handler); } }, static function ($reason) use($handlers) : void { foreach ($handlers as $handler) { self::callHandler(2, $reason, $handler); } }); } } /** * Call a stack of handlers using a specific callback index and value. * * @param int $index 1 (resolve) or 2 (reject). * @param mixed $value Value to pass to the callback. * @param array $handler Array of handler data (promise and callbacks). */ private static function callHandler(int $index, $value, array $handler) : void { /** @var PromiseInterface $promise */ $promise = $handler[0]; // The promise may have been cancelled or resolved before placing // this thunk in the queue. if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::settled($promise)) { return; } try { if (isset($handler[$index])) { /* * If $f throws an exception, then $handler will be in the exception * stack trace. Since $handler contains a reference to the callable * itself we get a circular reference. We clear the $handler * here to avoid that memory leak. */ $f = $handler[$index]; unset($handler); $promise->resolve($f($value)); } elseif ($index === 1) { // Forward resolution values as-is. $promise->resolve($value); } else { // Forward rejections down the chain. $promise->reject($value); } } catch (\Throwable $reason) { $promise->reject($reason); } } private function waitIfPending() : void { if ($this->state !== self::PENDING) { return; } elseif ($this->waitFn) { $this->invokeWaitFn(); } elseif ($this->waitList) { $this->invokeWaitList(); } else { // If there's no wait function, then reject the promise. $this->reject('Cannot wait on a promise that has ' . 'no internal wait function. You must provide a wait ' . 'function when constructing the promise to be able to ' . 'wait on a promise.'); } \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue()->run(); /** @psalm-suppress RedundantCondition */ if ($this->state === self::PENDING) { $this->reject('Invoking the wait callback did not resolve the promise'); } } private function invokeWaitFn() : void { try { $wfn = $this->waitFn; $this->waitFn = null; $wfn(\true); } catch (\Throwable $reason) { if ($this->state === self::PENDING) { // The promise has not been resolved yet, so reject the promise // with the exception. $this->reject($reason); } else { // The promise was already resolved, so there's a problem in // the application. throw $reason; } } } private function invokeWaitList() : void { $waitList = $this->waitList; $this->waitList = null; foreach ($waitList as $result) { do { $result->waitIfPending(); $result = $result->result; } while ($result instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\Promise); if ($result instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface) { $result->wait(\false); } } } } vendor_prefixed/guzzlehttp/promises/src/Coroutine.php000064400000010412147206602470017265 0ustar00then(function ($v) { echo $v; }); * * @param callable $generatorFn Generator function to wrap into a promise. * * @return Promise * * @see https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration */ final class Coroutine implements \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { /** * @var PromiseInterface|null */ private $currentPromise; /** * @var Generator */ private $generator; /** * @var Promise */ private $result; public function __construct(callable $generatorFn) { $this->generator = $generatorFn(); $this->result = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise(function () : void { while (isset($this->currentPromise)) { $this->currentPromise->wait(); } }); try { $this->nextCoroutine($this->generator->current()); } catch (\Throwable $throwable) { $this->result->reject($throwable); } } /** * Create a new coroutine. */ public static function of(callable $generatorFn) : self { return new self($generatorFn); } public function then(callable $onFulfilled = null, callable $onRejected = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->result->then($onFulfilled, $onRejected); } public function otherwise(callable $onRejected) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->result->otherwise($onRejected); } public function wait(bool $unwrap = \true) { return $this->result->wait($unwrap); } public function getState() : string { return $this->result->getState(); } public function resolve($value) : void { $this->result->resolve($value); } public function reject($reason) : void { $this->result->reject($reason); } public function cancel() : void { $this->currentPromise->cancel(); $this->result->cancel(); } private function nextCoroutine($yielded) : void { $this->currentPromise = \YoastSEO_Vendor\GuzzleHttp\Promise\Create::promiseFor($yielded)->then([$this, '_handleSuccess'], [$this, '_handleFailure']); } /** * @internal */ public function _handleSuccess($value) : void { unset($this->currentPromise); try { $next = $this->generator->send($value); if ($this->generator->valid()) { $this->nextCoroutine($next); } else { $this->result->resolve($value); } } catch (\Throwable $throwable) { $this->result->reject($throwable); } } /** * @internal */ public function _handleFailure($reason) : void { unset($this->currentPromise); try { $nextYield = $this->generator->throw(\YoastSEO_Vendor\GuzzleHttp\Promise\Create::exceptionFor($reason)); // The throw was caught, so keep iterating on the coroutine $this->nextCoroutine($nextYield); } catch (\Throwable $throwable) { $this->result->reject($throwable); } } } vendor_prefixed/guzzlehttp/promises/src/Utils.php000064400000021320147206602470016416 0ustar00 * while ($eventLoop->isRunning()) { * GuzzleHttp\Promise\Utils::queue()->run(); * } * * * @param TaskQueueInterface|null $assign Optionally specify a new queue instance. */ public static function queue(\YoastSEO_Vendor\GuzzleHttp\Promise\TaskQueueInterface $assign = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\TaskQueueInterface { static $queue; if ($assign) { $queue = $assign; } elseif (!$queue) { $queue = new \YoastSEO_Vendor\GuzzleHttp\Promise\TaskQueue(); } return $queue; } /** * Adds a function to run in the task queue when it is next `run()` and * returns a promise that is fulfilled or rejected with the result. * * @param callable $task Task function to run. */ public static function task(callable $task) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $queue = self::queue(); $promise = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise([$queue, 'run']); $queue->add(function () use($task, $promise) : void { try { if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::pending($promise)) { $promise->resolve($task()); } } catch (\Throwable $e) { $promise->reject($e); } }); return $promise; } /** * Synchronously waits on a promise to resolve and returns an inspection * state array. * * Returns a state associative array containing a "state" key mapping to a * valid promise state. If the state of the promise is "fulfilled", the * array will contain a "value" key mapping to the fulfilled value of the * promise. If the promise is rejected, the array will contain a "reason" * key mapping to the rejection reason of the promise. * * @param PromiseInterface $promise Promise or value. */ public static function inspect(\YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $promise) : array { try { return ['state' => \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $promise->wait()]; } catch (\YoastSEO_Vendor\GuzzleHttp\Promise\RejectionException $e) { return ['state' => \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e->getReason()]; } catch (\Throwable $e) { return ['state' => \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $e]; } } /** * Waits on all of the provided promises, but does not unwrap rejected * promises as thrown exception. * * Returns an array of inspection state arrays. * * @see inspect for the inspection state array format. * * @param PromiseInterface[] $promises Traversable of promises to wait upon. */ public static function inspectAll($promises) : array { $results = []; foreach ($promises as $key => $promise) { $results[$key] = self::inspect($promise); } return $results; } /** * Waits on all of the provided promises and returns the fulfilled values. * * Returns an array that contains the value of each promise (in the same * order the promises were provided). An exception is thrown if any of the * promises are rejected. * * @param iterable $promises Iterable of PromiseInterface objects to wait on. * * @throws \Throwable on error */ public static function unwrap($promises) : array { $results = []; foreach ($promises as $key => $promise) { $results[$key] = $promise->wait(); } return $results; } /** * Given an array of promises, return a promise that is fulfilled when all * the items in the array are fulfilled. * * The promise's fulfillment value is an array with fulfillment values at * respective positions to the original array. If any promise in the array * rejects, the returned promise is rejected with the rejection reason. * * @param mixed $promises Promises or values. * @param bool $recursive If true, resolves new promises that might have been added to the stack during its own resolution. */ public static function all($promises, bool $recursive = \false) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $results = []; $promise = \YoastSEO_Vendor\GuzzleHttp\Promise\Each::of($promises, function ($value, $idx) use(&$results) : void { $results[$idx] = $value; }, function ($reason, $idx, \YoastSEO_Vendor\GuzzleHttp\Promise\Promise $aggregate) : void { $aggregate->reject($reason); })->then(function () use(&$results) { \ksort($results); return $results; }); if (\true === $recursive) { $promise = $promise->then(function ($results) use($recursive, &$promises) { foreach ($promises as $promise) { if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::pending($promise)) { return self::all($promises, $recursive); } } return $results; }); } return $promise; } /** * Initiate a competitive race between multiple promises or values (values * will become immediately fulfilled promises). * * When count amount of promises have been fulfilled, the returned promise * is fulfilled with an array that contains the fulfillment values of the * winners in order of resolution. * * This promise is rejected with a {@see AggregateException} if the number * of fulfilled promises is less than the desired $count. * * @param int $count Total number of promises. * @param mixed $promises Promises or values. */ public static function some(int $count, $promises) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $results = []; $rejections = []; return \YoastSEO_Vendor\GuzzleHttp\Promise\Each::of($promises, function ($value, $idx, \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $p) use(&$results, $count) : void { if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::settled($p)) { return; } $results[$idx] = $value; if (\count($results) >= $count) { $p->resolve(null); } }, function ($reason) use(&$rejections) : void { $rejections[] = $reason; })->then(function () use(&$results, &$rejections, $count) { if (\count($results) !== $count) { throw new \YoastSEO_Vendor\GuzzleHttp\Promise\AggregateException('Not enough promises to fulfill count', $rejections); } \ksort($results); return \array_values($results); }); } /** * Like some(), with 1 as count. However, if the promise fulfills, the * fulfillment value is not an array of 1 but the value directly. * * @param mixed $promises Promises or values. */ public static function any($promises) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return self::some(1, $promises)->then(function ($values) { return $values[0]; }); } /** * Returns a promise that is fulfilled when all of the provided promises have * been fulfilled or rejected. * * The returned promise is fulfilled with an array of inspection state arrays. * * @see inspect for the inspection state array format. * * @param mixed $promises Promises or values. */ public static function settle($promises) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $results = []; return \YoastSEO_Vendor\GuzzleHttp\Promise\Each::of($promises, function ($value, $idx) use(&$results) : void { $results[$idx] = ['state' => \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::FULFILLED, 'value' => $value]; }, function ($reason, $idx) use(&$results) : void { $results[$idx] = ['state' => \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::REJECTED, 'reason' => $reason]; })->then(function () use(&$results) { \ksort($results); return $results; }); } } vendor_prefixed/guzzlehttp/promises/src/TaskQueueInterface.php000064400000000723147206602470021052 0ustar00iterable = \YoastSEO_Vendor\GuzzleHttp\Promise\Create::iterFor($iterable); if (isset($config['concurrency'])) { $this->concurrency = $config['concurrency']; } if (isset($config['fulfilled'])) { $this->onFulfilled = $config['fulfilled']; } if (isset($config['rejected'])) { $this->onRejected = $config['rejected']; } } /** @psalm-suppress InvalidNullableReturnType */ public function promise() : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if ($this->aggregate) { return $this->aggregate; } try { $this->createPromise(); /** @psalm-assert Promise $this->aggregate */ $this->iterable->rewind(); $this->refillPending(); } catch (\Throwable $e) { $this->aggregate->reject($e); } /** * @psalm-suppress NullableReturnStatement */ return $this->aggregate; } private function createPromise() : void { $this->mutex = \false; $this->aggregate = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise(function () : void { if ($this->checkIfFinished()) { return; } \reset($this->pending); // Consume a potentially fluctuating list of promises while // ensuring that indexes are maintained (precluding array_shift). while ($promise = \current($this->pending)) { \next($this->pending); $promise->wait(); if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::settled($this->aggregate)) { return; } } }); // Clear the references when the promise is resolved. $clearFn = function () : void { $this->iterable = $this->concurrency = $this->pending = null; $this->onFulfilled = $this->onRejected = null; $this->nextPendingIndex = 0; }; $this->aggregate->then($clearFn, $clearFn); } private function refillPending() : void { if (!$this->concurrency) { // Add all pending promises. while ($this->addPending() && $this->advanceIterator()) { } return; } // Add only up to N pending promises. $concurrency = \is_callable($this->concurrency) ? ($this->concurrency)(\count($this->pending)) : $this->concurrency; $concurrency = \max($concurrency - \count($this->pending), 0); // Concurrency may be set to 0 to disallow new promises. if (!$concurrency) { return; } // Add the first pending promise. $this->addPending(); // Note this is special handling for concurrency=1 so that we do // not advance the iterator after adding the first promise. This // helps work around issues with generators that might not have the // next value to yield until promise callbacks are called. while (--$concurrency && $this->advanceIterator() && $this->addPending()) { } } private function addPending() : bool { if (!$this->iterable || !$this->iterable->valid()) { return \false; } $promise = \YoastSEO_Vendor\GuzzleHttp\Promise\Create::promiseFor($this->iterable->current()); $key = $this->iterable->key(); // Iterable keys may not be unique, so we use a counter to // guarantee uniqueness $idx = $this->nextPendingIndex++; $this->pending[$idx] = $promise->then(function ($value) use($idx, $key) : void { if ($this->onFulfilled) { ($this->onFulfilled)($value, $key, $this->aggregate); } $this->step($idx); }, function ($reason) use($idx, $key) : void { if ($this->onRejected) { ($this->onRejected)($reason, $key, $this->aggregate); } $this->step($idx); }); return \true; } private function advanceIterator() : bool { // Place a lock on the iterator so that we ensure to not recurse, // preventing fatal generator errors. if ($this->mutex) { return \false; } $this->mutex = \true; try { $this->iterable->next(); $this->mutex = \false; return \true; } catch (\Throwable $e) { $this->aggregate->reject($e); $this->mutex = \false; return \false; } } private function step(int $idx) : void { // If the promise was already resolved, then ignore this step. if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::settled($this->aggregate)) { return; } unset($this->pending[$idx]); // Only refill pending promises if we are not locked, preventing the // EachPromise to recursively invoke the provided iterator, which // cause a fatal error: "Cannot resume an already running generator" if ($this->advanceIterator() && !$this->checkIfFinished()) { // Add more pending promises if possible. $this->refillPending(); } } private function checkIfFinished() : bool { if (!$this->pending && !$this->iterable->valid()) { // Resolve the promise if there's nothing left to do. $this->aggregate->resolve(null); return \true; } return \false; } } vendor_prefixed/guzzlehttp/promises/src/CancellationException.php000064400000000405147206602470021572 0ustar00run(); * * @final */ class TaskQueue implements \YoastSEO_Vendor\GuzzleHttp\Promise\TaskQueueInterface { private $enableShutdown = \true; private $queue = []; public function __construct(bool $withShutdown = \true) { if ($withShutdown) { \register_shutdown_function(function () : void { if ($this->enableShutdown) { // Only run the tasks if an E_ERROR didn't occur. $err = \error_get_last(); if (!$err || $err['type'] ^ \E_ERROR) { $this->run(); } } }); } } public function isEmpty() : bool { return !$this->queue; } public function add(callable $task) : void { $this->queue[] = $task; } public function run() : void { while ($task = \array_shift($this->queue)) { /** @var callable $task */ $task(); } } /** * The task queue will be run and exhausted by default when the process * exits IFF the exit is not the result of a PHP E_ERROR error. * * You can disable running the automatic shutdown of the queue by calling * this function. If you disable the task queue shutdown process, then you * MUST either run the task queue (as a result of running your event loop * or manually using the run() method) or wait on each outstanding promise. * * Note: This shutdown will occur before any destructors are triggered. */ public function disableShutdown() : void { $this->enableShutdown = \false; } } vendor_prefixed/guzzlehttp/promises/src/RejectionException.php000064400000002327147206602470021125 0ustar00reason = $reason; $message = 'The promise was rejected'; if ($description) { $message .= ' with reason: ' . $description; } elseif (\is_string($reason) || \is_object($reason) && \method_exists($reason, '__toString')) { $message .= ' with reason: ' . $this->reason; } elseif ($reason instanceof \JsonSerializable) { $message .= ' with reason: ' . \json_encode($this->reason, \JSON_PRETTY_PRINT); } parent::__construct($message); } /** * Returns the rejection reason. * * @return mixed */ public function getReason() { return $this->reason; } } vendor_prefixed/guzzlehttp/promises/src/AggregateException.php000064400000000661147206602470021070 0ustar00reason = $reason; } public function then(callable $onFulfilled = null, callable $onRejected = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { // If there's no onRejected callback then just return self. if (!$onRejected) { return $this; } $queue = \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue(); $reason = $this->reason; $p = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise([$queue, 'run']); $queue->add(static function () use($p, $reason, $onRejected) : void { if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::pending($p)) { try { // Return a resolved promise if onRejected does not throw. $p->resolve($onRejected($reason)); } catch (\Throwable $e) { // onRejected threw, so return a rejected promise. $p->reject($e); } } }); return $p; } public function otherwise(callable $onRejected) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->then(null, $onRejected); } public function wait(bool $unwrap = \true) { if ($unwrap) { throw \YoastSEO_Vendor\GuzzleHttp\Promise\Create::exceptionFor($this->reason); } return null; } public function getState() : string { return self::REJECTED; } public function resolve($value) : void { throw new \LogicException('Cannot resolve a rejected promise'); } public function reject($reason) : void { if ($reason !== $this->reason) { throw new \LogicException('Cannot reject a rejected promise'); } } public function cancel() : void { // pass } } vendor_prefixed/guzzlehttp/promises/src/Each.php000064400000005143147206602470016163 0ustar00 $onFulfilled, 'rejected' => $onRejected]))->promise(); } /** * Like of, but only allows a certain number of outstanding promises at any * given time. * * $concurrency may be an integer or a function that accepts the number of * pending promises and returns a numeric concurrency limit value to allow * for dynamic a concurrency size. * * @param mixed $iterable * @param int|callable $concurrency */ public static function ofLimit($iterable, $concurrency, callable $onFulfilled = null, callable $onRejected = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return (new \YoastSEO_Vendor\GuzzleHttp\Promise\EachPromise($iterable, ['fulfilled' => $onFulfilled, 'rejected' => $onRejected, 'concurrency' => $concurrency]))->promise(); } /** * Like limit, but ensures that no promise in the given $iterable argument * is rejected. If any promise is rejected, then the aggregate promise is * rejected with the encountered rejection. * * @param mixed $iterable * @param int|callable $concurrency */ public static function ofLimitAll($iterable, $concurrency, callable $onFulfilled = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return self::ofLimit($iterable, $concurrency, $onFulfilled, function ($reason, $idx, \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $aggregate) : void { $aggregate->reject($reason); }); } } vendor_prefixed/guzzlehttp/promises/src/PromisorInterface.php000064400000000456147206602470020760 0ustar00then([$promise, 'resolve'], [$promise, 'reject']); return $promise; } return new \YoastSEO_Vendor\GuzzleHttp\Promise\FulfilledPromise($value); } /** * Creates a rejected promise for a reason if the reason is not a promise. * If the provided reason is a promise, then it is returned as-is. * * @param mixed $reason Promise or reason. */ public static function rejectionFor($reason) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if ($reason instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface) { return $reason; } return new \YoastSEO_Vendor\GuzzleHttp\Promise\RejectedPromise($reason); } /** * Create an exception for a rejected promise value. * * @param mixed $reason */ public static function exceptionFor($reason) : \Throwable { if ($reason instanceof \Throwable) { return $reason; } return new \YoastSEO_Vendor\GuzzleHttp\Promise\RejectionException($reason); } /** * Returns an iterator for the given value. * * @param mixed $value */ public static function iterFor($value) : \Iterator { if ($value instanceof \Iterator) { return $value; } if (\is_array($value)) { return new \ArrayIterator($value); } return new \ArrayIterator([$value]); } } vendor_prefixed/guzzlehttp/promises/src/FulfilledPromise.php000064400000004261147206602470020570 0ustar00value = $value; } public function then(callable $onFulfilled = null, callable $onRejected = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { // Return itself if there is no onFulfilled function. if (!$onFulfilled) { return $this; } $queue = \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue(); $p = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise([$queue, 'run']); $value = $this->value; $queue->add(static function () use($p, $value, $onFulfilled) : void { if (\YoastSEO_Vendor\GuzzleHttp\Promise\Is::pending($p)) { try { $p->resolve($onFulfilled($value)); } catch (\Throwable $e) { $p->reject($e); } } }); return $p; } public function otherwise(callable $onRejected) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->then(null, $onRejected); } public function wait(bool $unwrap = \true) { return $unwrap ? $this->value : null; } public function getState() : string { return self::FULFILLED; } public function resolve($value) : void { if ($value !== $this->value) { throw new \LogicException('Cannot resolve a fulfilled promise'); } } public function reject($reason) : void { throw new \LogicException('Cannot reject a fulfilled promise'); } public function cancel() : void { // pass } } vendor_prefixed/guzzlehttp/promises/src/Is.php000064400000002336147206602470015677 0ustar00getState() === \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::PENDING; } /** * Returns true if a promise is fulfilled or rejected. */ public static function settled(\YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $promise) : bool { return $promise->getState() !== \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::PENDING; } /** * Returns true if a promise is fulfilled. */ public static function fulfilled(\YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $promise) : bool { return $promise->getState() === \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::FULFILLED; } /** * Returns true if a promise is rejected. */ public static function rejected(\YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $promise) : bool { return $promise->getState() === \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface::REJECTED; } } vendor_prefixed/guzzlehttp/guzzle/src/Exception/TransferException.php000064400000000257147206602470022404 0ustar00request = $request; $this->handlerContext = $handlerContext; } /** * Get the request that caused the exception */ public function getRequest() : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { return $this->request; } /** * Get contextual information about the error from the underlying handler. * * The contents of this array will vary depending on which handler you are * using. It may also be just an empty array. Relying on this data will * couple you to a specific handler, but can give more debug information * when needed. */ public function getHandlerContext() : array { return $this->handlerContext; } } vendor_prefixed/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php000064400000000304147206602470023702 0ustar00getStatusCode() : 0; parent::__construct($message, $code, $previous); $this->request = $request; $this->response = $response; $this->handlerContext = $handlerContext; } /** * Wrap non-RequestExceptions with a RequestException */ public static function wrapException(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \Throwable $e) : \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException { return $e instanceof \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException ? $e : new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException($e->getMessage(), $request, null, $e); } /** * Factory method to create a new exception with a normalized error message * * @param RequestInterface $request Request sent * @param ResponseInterface $response Response received * @param \Throwable|null $previous Previous exception * @param array $handlerContext Optional handler context * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer */ public static function create(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response = null, \Throwable $previous = null, array $handlerContext = [], \YoastSEO_Vendor\GuzzleHttp\BodySummarizerInterface $bodySummarizer = null) : self { if (!$response) { return new self('Error completing request', $request, null, $previous, $handlerContext); } $level = (int) \floor($response->getStatusCode() / 100); if ($level === 4) { $label = 'Client error'; $className = \YoastSEO_Vendor\GuzzleHttp\Exception\ClientException::class; } elseif ($level === 5) { $label = 'Server error'; $className = \YoastSEO_Vendor\GuzzleHttp\Exception\ServerException::class; } else { $label = 'Unsuccessful request'; $className = __CLASS__; } $uri = $request->getUri(); $uri = static::obfuscateUri($uri); // Client Error: `GET /` resulted in a `404 Not Found` response: // ... (truncated) $message = \sprintf('%s: `%s %s` resulted in a `%s %s` response', $label, $request->getMethod(), $uri->__toString(), $response->getStatusCode(), $response->getReasonPhrase()); $summary = ($bodySummarizer ?? new \YoastSEO_Vendor\GuzzleHttp\BodySummarizer())->summarize($response); if ($summary !== null) { $message .= ":\n{$summary}\n"; } return new $className($message, $request, $response, $previous, $handlerContext); } /** * Obfuscates URI if there is a username and a password present */ private static function obfuscateUri(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $userInfo = $uri->getUserInfo(); if (\false !== ($pos = \strpos($userInfo, ':'))) { return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***'); } return $uri; } /** * Get the request that caused the exception */ public function getRequest() : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { return $this->request; } /** * Get the associated response */ public function getResponse() : ?\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->response; } /** * Check if a response was received */ public function hasResponse() : bool { return $this->response !== null; } /** * Get contextual information about the error from the underlying handler. * * The contents of this array will vary depending on which handler you are * using. It may also be just an empty array. Relying on this data will * couple you to a specific handler, but can give more debug information * when needed. */ public function getHandlerContext() : array { return $this->handlerContext; } } vendor_prefixed/guzzlehttp/guzzle/src/HandlerStack.php000064400000021246147206602470017347 0ustar00push(\YoastSEO_Vendor\GuzzleHttp\Middleware::httpErrors(), 'http_errors'); $stack->push(\YoastSEO_Vendor\GuzzleHttp\Middleware::redirect(), 'allow_redirects'); $stack->push(\YoastSEO_Vendor\GuzzleHttp\Middleware::cookies(), 'cookies'); $stack->push(\YoastSEO_Vendor\GuzzleHttp\Middleware::prepareBody(), 'prepare_body'); return $stack; } /** * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler. */ public function __construct(callable $handler = null) { $this->handler = $handler; } /** * Invokes the handler stack as a composed handler * * @return ResponseInterface|PromiseInterface */ public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) { $handler = $this->resolve(); return $handler($request, $options); } /** * Dumps a string representation of the stack. * * @return string */ public function __toString() { $depth = 0; $stack = []; if ($this->handler !== null) { $stack[] = '0) Handler: ' . $this->debugCallable($this->handler); } $result = ''; foreach (\array_reverse($this->stack) as $tuple) { ++$depth; $str = "{$depth}) Name: '{$tuple[1]}', "; $str .= 'Function: ' . $this->debugCallable($tuple[0]); $result = "> {$str}\n{$result}"; $stack[] = $str; } foreach (\array_keys($stack) as $k) { $result .= "< {$stack[$k]}\n"; } return $result; } /** * Set the HTTP handler that actually returns a promise. * * @param callable(RequestInterface, array): PromiseInterface $handler Accepts a request and array of options and * returns a Promise. */ public function setHandler(callable $handler) : void { $this->handler = $handler; $this->cached = null; } /** * Returns true if the builder has a handler. */ public function hasHandler() : bool { return $this->handler !== null; } /** * Unshift a middleware to the bottom of the stack. * * @param callable(callable): callable $middleware Middleware function * @param string $name Name to register for this middleware. */ public function unshift(callable $middleware, string $name = null) : void { \array_unshift($this->stack, [$middleware, $name]); $this->cached = null; } /** * Push a middleware to the top of the stack. * * @param callable(callable): callable $middleware Middleware function * @param string $name Name to register for this middleware. */ public function push(callable $middleware, string $name = '') : void { $this->stack[] = [$middleware, $name]; $this->cached = null; } /** * Add a middleware before another middleware by name. * * @param string $findName Middleware to find * @param callable(callable): callable $middleware Middleware function * @param string $withName Name to register for this middleware. */ public function before(string $findName, callable $middleware, string $withName = '') : void { $this->splice($findName, $withName, $middleware, \true); } /** * Add a middleware after another middleware by name. * * @param string $findName Middleware to find * @param callable(callable): callable $middleware Middleware function * @param string $withName Name to register for this middleware. */ public function after(string $findName, callable $middleware, string $withName = '') : void { $this->splice($findName, $withName, $middleware, \false); } /** * Remove a middleware by instance or name from the stack. * * @param callable|string $remove Middleware to remove by instance or name. */ public function remove($remove) : void { if (!\is_string($remove) && !\is_callable($remove)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a callable or string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->cached = null; $idx = \is_callable($remove) ? 0 : 1; $this->stack = \array_values(\array_filter($this->stack, static function ($tuple) use($idx, $remove) { return $tuple[$idx] !== $remove; })); } /** * Compose the middleware and handler into a single callable function. * * @return callable(RequestInterface, array): PromiseInterface */ public function resolve() : callable { if ($this->cached === null) { if (($prev = $this->handler) === null) { throw new \LogicException('No handler has been specified'); } foreach (\array_reverse($this->stack) as $fn) { /** @var callable(RequestInterface, array): PromiseInterface $prev */ $prev = $fn[0]($prev); } $this->cached = $prev; } return $this->cached; } private function findByName(string $name) : int { foreach ($this->stack as $k => $v) { if ($v[1] === $name) { return $k; } } throw new \InvalidArgumentException("Middleware not found: {$name}"); } /** * Splices a function into the middleware list at a specific position. */ private function splice(string $findName, string $withName, callable $middleware, bool $before) : void { $this->cached = null; $idx = $this->findByName($findName); $tuple = [$middleware, $withName]; if ($before) { if ($idx === 0) { \array_unshift($this->stack, $tuple); } else { $replacement = [$tuple, $this->stack[$idx]]; \array_splice($this->stack, $idx, 1, $replacement); } } elseif ($idx === \count($this->stack) - 1) { $this->stack[] = $tuple; } else { $replacement = [$this->stack[$idx], $tuple]; \array_splice($this->stack, $idx, 1, $replacement); } } /** * Provides a debug string for a given callable. * * @param callable|string $fn Function to write as a string. */ private function debugCallable($fn) : string { if (\is_string($fn)) { return "callable({$fn})"; } if (\is_array($fn)) { return \is_string($fn[0]) ? "callable({$fn[0]}::{$fn[1]})" : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])"; } /** @var object $fn */ return 'callable(' . \spl_object_hash($fn) . ')'; } } vendor_prefixed/guzzlehttp/guzzle/src/TransferStats.php000064400000006442147206602470017610 0ustar00request = $request; $this->response = $response; $this->transferTime = $transferTime; $this->handlerErrorData = $handlerErrorData; $this->handlerStats = $handlerStats; } public function getRequest() : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { return $this->request; } /** * Returns the response that was received (if any). */ public function getResponse() : ?\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->response; } /** * Returns true if a response was received. */ public function hasResponse() : bool { return $this->response !== null; } /** * Gets handler specific error data. * * This might be an exception, a integer representing an error code, or * anything else. Relying on this value assumes that you know what handler * you are using. * * @return mixed */ public function getHandlerErrorData() { return $this->handlerErrorData; } /** * Get the effective URI the request was sent to. */ public function getEffectiveUri() : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { return $this->request->getUri(); } /** * Get the estimated time the request was being transferred by the handler. * * @return float|null Time in seconds. */ public function getTransferTime() : ?float { return $this->transferTime; } /** * Gets an array of all of the handler specific transfer data. */ public function getHandlerStats() : array { return $this->handlerStats; } /** * Get a specific handler statistic from the handler by name. * * @param string $stat Handler specific transfer stat to retrieve. * * @return mixed|null */ public function getHandlerStat(string $stat) { return $this->handlerStats[$stat] ?? null; } } vendor_prefixed/guzzlehttp/guzzle/src/ClientTrait.php000064400000022550147206602470017225 0ustar00request('GET', $uri, $options); } /** * Create and send an HTTP HEAD request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * * @throws GuzzleException */ public function head($uri, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->request('HEAD', $uri, $options); } /** * Create and send an HTTP PUT request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * * @throws GuzzleException */ public function put($uri, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->request('PUT', $uri, $options); } /** * Create and send an HTTP POST request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * * @throws GuzzleException */ public function post($uri, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->request('POST', $uri, $options); } /** * Create and send an HTTP PATCH request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * * @throws GuzzleException */ public function patch($uri, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->request('PATCH', $uri, $options); } /** * Create and send an HTTP DELETE request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. * * @throws GuzzleException */ public function delete($uri, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return $this->request('DELETE', $uri, $options); } /** * Create and send an asynchronous HTTP request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string $method HTTP method * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public abstract function requestAsync(string $method, $uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface; /** * Create and send an asynchronous HTTP GET request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function getAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('GET', $uri, $options); } /** * Create and send an asynchronous HTTP HEAD request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function headAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('HEAD', $uri, $options); } /** * Create and send an asynchronous HTTP PUT request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function putAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('PUT', $uri, $options); } /** * Create and send an asynchronous HTTP POST request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function postAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('POST', $uri, $options); } /** * Create and send an asynchronous HTTP PATCH request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function patchAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('PATCH', $uri, $options); } /** * Create and send an asynchronous HTTP DELETE request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. */ public function deleteAsync($uri, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->requestAsync('DELETE', $uri, $options); } } vendor_prefixed/guzzlehttp/guzzle/src/RequestOptions.php000064400000025314147206602470020010 0ustar00 5, 'protocols' => ['http', 'https'], 'strict' => \false, 'referer' => \false, 'track_redirects' => \false]; /** * @var callable(RequestInterface, array): PromiseInterface */ private $nextHandler; /** * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke. */ public function __construct(callable $nextHandler) { $this->nextHandler = $nextHandler; } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $fn = $this->nextHandler; if (empty($options['allow_redirects'])) { return $fn($request, $options); } if ($options['allow_redirects'] === \true) { $options['allow_redirects'] = self::$defaultSettings; } elseif (!\is_array($options['allow_redirects'])) { throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); } else { // Merge the default settings with the provided settings $options['allow_redirects'] += self::$defaultSettings; } if (empty($options['allow_redirects']['max'])) { return $fn($request, $options); } return $fn($request, $options)->then(function (\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) use($request, $options) { return $this->checkRedirect($request, $options, $response); }); } /** * @return ResponseInterface|PromiseInterface */ public function checkRedirect(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) { if (\strpos((string) $response->getStatusCode(), '3') !== 0 || !$response->hasHeader('Location')) { return $response; } $this->guardMax($request, $response, $options); $nextRequest = $this->modifyRequest($request, $options, $response); // If authorization is handled by curl, unset it if URI is cross-origin. if (\YoastSEO_Vendor\GuzzleHttp\Psr7\UriComparator::isCrossOrigin($request->getUri(), $nextRequest->getUri()) && \defined('\\CURLOPT_HTTPAUTH')) { unset($options['curl'][\CURLOPT_HTTPAUTH], $options['curl'][\CURLOPT_USERPWD]); } if (isset($options['allow_redirects']['on_redirect'])) { $options['allow_redirects']['on_redirect']($request, $response, $nextRequest->getUri()); } $promise = $this($nextRequest, $options); // Add headers to be able to track history of redirects. if (!empty($options['allow_redirects']['track_redirects'])) { return $this->withTracking($promise, (string) $nextRequest->getUri(), $response->getStatusCode()); } return $promise; } /** * Enable tracking on promise. */ private function withTracking(\YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface $promise, string $uri, int $statusCode) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $promise->then(static function (\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) use($uri, $statusCode) { // Note that we are pushing to the front of the list as this // would be an earlier response than what is currently present // in the history header. $historyHeader = $response->getHeader(self::HISTORY_HEADER); $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER); \array_unshift($historyHeader, $uri); \array_unshift($statusHeader, (string) $statusCode); return $response->withHeader(self::HISTORY_HEADER, $historyHeader)->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader); }); } /** * Check for too many redirects. * * @throws TooManyRedirectsException Too many redirects. */ private function guardMax(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response, array &$options) : void { $current = $options['__redirect_count'] ?? 0; $options['__redirect_count'] = $current + 1; $max = $options['allow_redirects']['max']; if ($options['__redirect_count'] > $max) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\TooManyRedirectsException("Will not follow more than {$max} redirects", $request, $response); } } public function modifyRequest(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { // Request modifications to apply. $modify = []; $protocols = $options['allow_redirects']['protocols']; // Use a GET request if this is an entity enclosing request and we are // not forcing RFC compliance, but rather emulating what all browsers // would do. $statusCode = $response->getStatusCode(); if ($statusCode == 303 || $statusCode <= 302 && !$options['allow_redirects']['strict']) { $safeMethods = ['GET', 'HEAD', 'OPTIONS']; $requestMethod = $request->getMethod(); $modify['method'] = \in_array($requestMethod, $safeMethods) ? $requestMethod : 'GET'; $modify['body'] = ''; } $uri = self::redirectUri($request, $response, $protocols); if (isset($options['idn_conversion']) && $options['idn_conversion'] !== \false) { $idnOptions = $options['idn_conversion'] === \true ? \IDNA_DEFAULT : $options['idn_conversion']; $uri = \YoastSEO_Vendor\GuzzleHttp\Utils::idnUriConvert($uri, $idnOptions); } $modify['uri'] = $uri; \YoastSEO_Vendor\GuzzleHttp\Psr7\Message::rewindBody($request); // Add the Referer header if it is told to do so and only // add the header if we are not redirecting from https to http. if ($options['allow_redirects']['referer'] && $modify['uri']->getScheme() === $request->getUri()->getScheme()) { $uri = $request->getUri()->withUserInfo(''); $modify['set_headers']['Referer'] = (string) $uri; } else { $modify['remove_headers'][] = 'Referer'; } // Remove Authorization and Cookie headers if URI is cross-origin. if (\YoastSEO_Vendor\GuzzleHttp\Psr7\UriComparator::isCrossOrigin($request->getUri(), $modify['uri'])) { $modify['remove_headers'][] = 'Authorization'; $modify['remove_headers'][] = 'Cookie'; } return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::modifyRequest($request, $modify); } /** * Set the appropriate URL on the request based on the location header. */ private static function redirectUri(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response, array $protocols) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $location = \YoastSEO_Vendor\GuzzleHttp\Psr7\UriResolver::resolve($request->getUri(), new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri($response->getHeaderLine('Location'))); // Ensure that the redirect URI is allowed based on the protocols. if (!\in_array($location->getScheme(), $protocols)) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response); } return $location; } } vendor_prefixed/guzzlehttp/guzzle/src/BodySummarizer.php000064400000001333147206602470017753 0ustar00truncateAt = $truncateAt; } /** * Returns a summarized message body. */ public function summarize(\YoastSEO_Vendor\Psr\Http\Message\MessageInterface $message) : ?string { return $this->truncateAt === null ? \YoastSEO_Vendor\GuzzleHttp\Psr7\Message::bodySummary($message) : \YoastSEO_Vendor\GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt); } } vendor_prefixed/guzzlehttp/guzzle/src/Utils.php000064400000032615147206602470016106 0ustar00getHost()) { $asciiHost = self::idnToAsci($uri->getHost(), $options, $info); if ($asciiHost === \false) { $errorBitSet = $info['errors'] ?? 0; $errorConstants = \array_filter(\array_keys(\get_defined_constants()), static function (string $name) : bool { return \substr($name, 0, 11) === 'IDNA_ERROR_'; }); $errors = []; foreach ($errorConstants as $errorConstant) { if ($errorBitSet & \constant($errorConstant)) { $errors[] = $errorConstant; } } $errorMessage = 'IDN conversion failed'; if ($errors) { $errorMessage .= ' (errors: ' . \implode(', ', $errors) . ')'; } throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException($errorMessage); } if ($uri->getHost() !== $asciiHost) { // Replace URI only if the ASCII version is different $uri = $uri->withHost($asciiHost); } } return $uri; } /** * @internal */ public static function getenv(string $name) : ?string { if (isset($_SERVER[$name])) { return (string) $_SERVER[$name]; } if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== \false && $value !== null) { return (string) $value; } return null; } /** * @return string|false */ private static function idnToAsci(string $domain, int $options, ?array &$info = []) { if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) { return \idn_to_ascii($domain, $options, \INTL_IDNA_VARIANT_UTS46, $info); } throw new \Error('ext-idn or symfony/polyfill-intl-idn not loaded or too old'); } } vendor_prefixed/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php000064400000006376147206602470021225 0ustar00nextHandler = $nextHandler; } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $fn = $this->nextHandler; // Don't do anything if the request has no body. if ($request->getBody()->getSize() === 0) { return $fn($request, $options); } $modify = []; // Add a default content-type if possible. if (!$request->hasHeader('Content-Type')) { if ($uri = $request->getBody()->getMetadata('uri')) { if (\is_string($uri) && ($type = \YoastSEO_Vendor\GuzzleHttp\Psr7\MimeType::fromFilename($uri))) { $modify['set_headers']['Content-Type'] = $type; } } } // Add a default content-length or transfer-encoding header. if (!$request->hasHeader('Content-Length') && !$request->hasHeader('Transfer-Encoding')) { $size = $request->getBody()->getSize(); if ($size !== null) { $modify['set_headers']['Content-Length'] = $size; } else { $modify['set_headers']['Transfer-Encoding'] = 'chunked'; } } // Add the expect header if needed. $this->addExpectHeader($request, $options, $modify); return $fn(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::modifyRequest($request, $modify), $options); } /** * Add expect header */ private function addExpectHeader(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, array &$modify) : void { // Determine if the Expect header should be used if ($request->hasHeader('Expect')) { return; } $expect = $options['expect'] ?? null; // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0 if ($expect === \false || $request->getProtocolVersion() < 1.1) { return; } // The expect header is unconditionally enabled if ($expect === \true) { $modify['set_headers']['Expect'] = '100-Continue'; return; } // By default, send the expect header when the payload is > 1mb if ($expect === null) { $expect = 1048576; } // Always add if the body cannot be rewound, the size cannot be // determined, or the size is greater than the cutoff threshold $body = $request->getBody(); $size = $body->getSize(); if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { $modify['set_headers']['Expect'] = '100-Continue'; } } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/EasyHandle.php000064400000005703147206602470020376 0ustar00headers); $normalizedKeys = \YoastSEO_Vendor\GuzzleHttp\Utils::normalizeHeaderKeys($headers); if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) { $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; unset($headers[$normalizedKeys['content-encoding']]); if (isset($normalizedKeys['content-length'])) { $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; $bodyLength = (int) $this->sink->getSize(); if ($bodyLength) { $headers[$normalizedKeys['content-length']] = $bodyLength; } else { unset($headers[$normalizedKeys['content-length']]); } } } // Attach a response to the easy handle with the parsed headers. $this->response = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Response($status, $headers, $this->sink, $ver, $reason); } /** * @param string $name * * @return void * * @throws \BadMethodCallException */ public function __get($name) { $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name; throw new \BadMethodCallException($msg); } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php000064400000002127147206602470021446 0ustar00withoutHeader('Expect'); // Append a content-length header if body size is zero to match // cURL's behavior. if (0 === $request->getBody()->getSize()) { $request = $request->withHeader('Content-Length', '0'); } return $this->createResponse($request, $options, $this->createStream($request, $options), $startTime); } catch (\InvalidArgumentException $e) { throw $e; } catch (\Exception $e) { // Determine if the error was a networking error. $message = $e->getMessage(); // This list can probably get more comprehensive. if (\false !== \strpos($message, 'getaddrinfo') || \false !== \strpos($message, 'Connection refused') || \false !== \strpos($message, "couldn't connect to host") || \false !== \strpos($message, 'connection attempt failed')) { $e = new \YoastSEO_Vendor\GuzzleHttp\Exception\ConnectException($e->getMessage(), $request, $e); } else { $e = \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException::wrapException($request, $e); } $this->invokeStats($options, $request, $startTime, null, $e); return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($e); } } private function invokeStats(array $options, \YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, ?float $startTime, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response = null, \Throwable $error = null) : void { if (isset($options['on_stats'])) { $stats = new \YoastSEO_Vendor\GuzzleHttp\TransferStats($request, $response, \YoastSEO_Vendor\GuzzleHttp\Utils::currentTime() - $startTime, $error, []); $options['on_stats']($stats); } } /** * @param resource $stream */ private function createResponse(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, $stream, ?float $startTime) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $hdrs = $this->lastHeaders; $this->lastHeaders = []; try { [$ver, $status, $reason, $headers] = \YoastSEO_Vendor\GuzzleHttp\Handler\HeaderProcessor::parseHeaders($hdrs); } catch (\Exception $e) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor(new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException('An error was encountered while creating the response', $request, null, $e)); } [$stream, $headers] = $this->checkDecode($options, $headers, $stream); $stream = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($stream); $sink = $stream; if (\strcasecmp('HEAD', $request->getMethod())) { $sink = $this->createSink($stream, $options); } try { $response = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Response($status, $headers, $sink, $ver, $reason); } catch (\Exception $e) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor(new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException('An error was encountered while creating the response', $request, null, $e)); } if (isset($options['on_headers'])) { try { $options['on_headers']($response); } catch (\Exception $e) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor(new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException('An error was encountered during the on_headers event', $request, $response, $e)); } } // Do not drain when the request is a HEAD request because they have // no body. if ($sink !== $stream) { $this->drain($stream, $sink, $response->getHeaderLine('Content-Length')); } $this->invokeStats($options, $request, $startTime, $response, null); return new \YoastSEO_Vendor\GuzzleHttp\Promise\FulfilledPromise($response); } private function createSink(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, array $options) : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { if (!empty($options['stream'])) { return $stream; } $sink = $options['sink'] ?? \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'r+'); return \is_string($sink) ? new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+') : \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($sink); } /** * @param resource $stream */ private function checkDecode(array $options, array $headers, $stream) : array { // Automatically decode responses when instructed. if (!empty($options['decode_content'])) { $normalizedKeys = \YoastSEO_Vendor\GuzzleHttp\Utils::normalizeHeaderKeys($headers); if (isset($normalizedKeys['content-encoding'])) { $encoding = $headers[$normalizedKeys['content-encoding']]; if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { $stream = new \YoastSEO_Vendor\GuzzleHttp\Psr7\InflateStream(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($stream)); $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']]; // Remove content-encoding header unset($headers[$normalizedKeys['content-encoding']]); // Fix content-length header if (isset($normalizedKeys['content-length'])) { $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']]; $length = (int) $stream->getSize(); if ($length === 0) { unset($headers[$normalizedKeys['content-length']]); } else { $headers[$normalizedKeys['content-length']] = [$length]; } } } } } return [$stream, $headers]; } /** * Drains the source stream into the "sink" client option. * * @param string $contentLength Header specifying the amount of * data to read. * * @throws \RuntimeException when the sink option is invalid. */ private function drain(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $source, \YoastSEO_Vendor\Psr\Http\Message\StreamInterface $sink, string $contentLength) : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { // If a content-length header is provided, then stop reading once // that number of bytes has been read. This can prevent infinitely // reading from a stream when dealing with servers that do not honor // Connection: Close headers. \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToStream($source, $sink, \strlen($contentLength) > 0 && (int) $contentLength > 0 ? (int) $contentLength : -1); $sink->seek(0); $source->close(); return $sink; } /** * Create a resource and check to ensure it was created successfully * * @param callable $callback Callable that returns stream resource * * @return resource * * @throws \RuntimeException on error */ private function createResource(callable $callback) { $errors = []; \set_error_handler(static function ($_, $msg, $file, $line) use(&$errors) : bool { $errors[] = ['message' => $msg, 'file' => $file, 'line' => $line]; return \true; }); try { $resource = $callback(); } finally { \restore_error_handler(); } if (!$resource) { $message = 'Error creating resource: '; foreach ($errors as $err) { foreach ($err as $key => $value) { $message .= "[{$key}] {$value}" . \PHP_EOL; } } throw new \RuntimeException(\trim($message)); } return $resource; } /** * @return resource */ private function createStream(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) { static $methods; if (!$methods) { $methods = \array_flip(\get_class_methods(__CLASS__)); } if (!\in_array($request->getUri()->getScheme(), ['http', 'https'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException(\sprintf("The scheme '%s' is not supported.", $request->getUri()->getScheme()), $request); } // HTTP/1.1 streams using the PHP stream wrapper require a // Connection: close header if ($request->getProtocolVersion() == '1.1' && !$request->hasHeader('Connection')) { $request = $request->withHeader('Connection', 'close'); } // Ensure SSL is verified by default if (!isset($options['verify'])) { $options['verify'] = \true; } $params = []; $context = $this->getDefaultContext($request); if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) { throw new \InvalidArgumentException('on_headers must be callable'); } if (!empty($options)) { foreach ($options as $key => $value) { $method = "add_{$key}"; if (isset($methods[$method])) { $this->{$method}($request, $context, $value, $params); } } } if (isset($options['stream_context'])) { if (!\is_array($options['stream_context'])) { throw new \InvalidArgumentException('stream_context must be an array'); } $context = \array_replace_recursive($context, $options['stream_context']); } // Microsoft NTLM authentication only supported with curl handler if (isset($options['auth'][2]) && 'ntlm' === $options['auth'][2]) { throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler'); } $uri = $this->resolveHost($request, $options); $contextResource = $this->createResource(static function () use($context, $params) { return \stream_context_create($context, $params); }); return $this->createResource(function () use($uri, &$http_response_header, $contextResource, $context, $options, $request) { $resource = @\fopen((string) $uri, 'r', \false, $contextResource); $this->lastHeaders = $http_response_header ?? []; if (\false === $resource) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\ConnectException(\sprintf('Connection refused for URI %s', $uri), $request, null, $context); } if (isset($options['read_timeout'])) { $readTimeout = $options['read_timeout']; $sec = (int) $readTimeout; $usec = ($readTimeout - $sec) * 100000; \stream_set_timeout($resource, $sec, $usec); } return $resource; }); } private function resolveHost(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $uri = $request->getUri(); if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) { if ('v4' === $options['force_ip_resolve']) { $records = \dns_get_record($uri->getHost(), \DNS_A); if (\false === $records || !isset($records[0]['ip'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); } return $uri->withHost($records[0]['ip']); } if ('v6' === $options['force_ip_resolve']) { $records = \dns_get_record($uri->getHost(), \DNS_AAAA); if (\false === $records || !isset($records[0]['ipv6'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); } return $uri->withHost('[' . $records[0]['ipv6'] . ']'); } } return $uri; } private function getDefaultContext(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) : array { $headers = ''; foreach ($request->getHeaders() as $name => $value) { foreach ($value as $val) { $headers .= "{$name}: {$val}\r\n"; } } $context = ['http' => ['method' => $request->getMethod(), 'header' => $headers, 'protocol_version' => $request->getProtocolVersion(), 'ignore_errors' => \true, 'follow_location' => 0], 'ssl' => ['peer_name' => $request->getUri()->getHost()]]; $body = (string) $request->getBody(); if ('' !== $body) { $context['http']['content'] = $body; // Prevent the HTTP handler from adding a Content-Type header. if (!$request->hasHeader('Content-Type')) { $context['http']['header'] .= "Content-Type:\r\n"; } } $context['http']['header'] = \rtrim($context['http']['header']); return $context; } /** * @param mixed $value as passed via Request transfer options. */ private function add_proxy(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { $uri = null; if (!\is_array($value)) { $uri = $value; } else { $scheme = $request->getUri()->getScheme(); if (isset($value[$scheme])) { if (!isset($value['no']) || !\YoastSEO_Vendor\GuzzleHttp\Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) { $uri = $value[$scheme]; } } } if (!$uri) { return; } $parsed = $this->parse_proxy($uri); $options['http']['proxy'] = $parsed['proxy']; if ($parsed['auth']) { if (!isset($options['http']['header'])) { $options['http']['header'] = []; } $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}"; } } /** * Parses the given proxy URL to make it compatible with the format PHP's stream context expects. */ private function parse_proxy(string $url) : array { $parsed = \parse_url($url); if ($parsed !== \false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') { if (isset($parsed['host']) && isset($parsed['port'])) { $auth = null; if (isset($parsed['user']) && isset($parsed['pass'])) { $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}"); } return ['proxy' => "tcp://{$parsed['host']}:{$parsed['port']}", 'auth' => $auth ? "Basic {$auth}" : null]; } } // Return proxy as-is. return ['proxy' => $url, 'auth' => null]; } /** * @param mixed $value as passed via Request transfer options. */ private function add_timeout(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { if ($value > 0) { $options['http']['timeout'] = $value; } } /** * @param mixed $value as passed via Request transfer options. */ private function add_crypto_method(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { if ($value === \STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT || $value === \STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT || $value === \STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT || \defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && $value === \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT) { $options['http']['crypto_method'] = $value; return; } throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); } /** * @param mixed $value as passed via Request transfer options. */ private function add_verify(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { if ($value === \false) { $options['ssl']['verify_peer'] = \false; $options['ssl']['verify_peer_name'] = \false; return; } if (\is_string($value)) { $options['ssl']['cafile'] = $value; if (!\file_exists($value)) { throw new \RuntimeException("SSL CA bundle not found: {$value}"); } } elseif ($value !== \true) { throw new \InvalidArgumentException('Invalid verify request option'); } $options['ssl']['verify_peer'] = \true; $options['ssl']['verify_peer_name'] = \true; $options['ssl']['allow_self_signed'] = \false; } /** * @param mixed $value as passed via Request transfer options. */ private function add_cert(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { if (\is_array($value)) { $options['ssl']['passphrase'] = $value[1]; $value = $value[0]; } if (!\file_exists($value)) { throw new \RuntimeException("SSL certificate not found: {$value}"); } $options['ssl']['local_cert'] = $value; } /** * @param mixed $value as passed via Request transfer options. */ private function add_progress(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { self::addNotification($params, static function ($code, $a, $b, $c, $transferred, $total) use($value) { if ($code == \STREAM_NOTIFY_PROGRESS) { // The upload progress cannot be determined. Use 0 for cURL compatibility: // https://curl.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html $value($total, $transferred, 0, 0); } }); } /** * @param mixed $value as passed via Request transfer options. */ private function add_debug(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options, $value, array &$params) : void { if ($value === \false) { return; } static $map = [\STREAM_NOTIFY_CONNECT => 'CONNECT', \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', \STREAM_NOTIFY_PROGRESS => 'PROGRESS', \STREAM_NOTIFY_FAILURE => 'FAILURE', \STREAM_NOTIFY_COMPLETED => 'COMPLETED', \STREAM_NOTIFY_RESOLVE => 'RESOLVE']; static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max']; $value = \YoastSEO_Vendor\GuzzleHttp\Utils::debugResource($value); $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); self::addNotification($params, static function (int $code, ...$passed) use($ident, $value, $map, $args) : void { \fprintf($value, '<%s> [%s] ', $ident, $map[$code]); foreach (\array_filter($passed) as $i => $v) { \fwrite($value, $args[$i] . ': "' . $v . '" '); } \fwrite($value, "\n"); }); } private static function addNotification(array &$params, callable $notify) : void { // Wrap the existing function if needed. if (!isset($params['notification'])) { $params['notification'] = $notify; } else { $params['notification'] = self::callArray([$params['notification'], $notify]); } } private static function callArray(array $functions) : callable { return static function (...$args) use($functions) { foreach ($functions as $fn) { $fn(...$args); } }; } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/MockHandler.php000064400000015330147206602470020545 0ustar00|null $queue The parameters to be passed to the append function, as an indexed array. * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled. * @param callable|null $onRejected Callback to invoke when the return value is rejected. */ public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null) { $this->onFulfilled = $onFulfilled; $this->onRejected = $onRejected; if ($queue) { // array_values included for BC $this->append(...\array_values($queue)); } } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if (!$this->queue) { throw new \OutOfBoundsException('Mock queue is empty'); } if (isset($options['delay']) && \is_numeric($options['delay'])) { \usleep((int) $options['delay'] * 1000); } $this->lastRequest = $request; $this->lastOptions = $options; $response = \array_shift($this->queue); if (isset($options['on_headers'])) { if (!\is_callable($options['on_headers'])) { throw new \InvalidArgumentException('on_headers must be callable'); } try { $options['on_headers']($response); } catch (\Exception $e) { $msg = 'An error was encountered during the on_headers event'; $response = new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException($msg, $request, $response, $e); } } if (\is_callable($response)) { $response = $response($request, $options); } $response = $response instanceof \Throwable ? \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($response) : \YoastSEO_Vendor\GuzzleHttp\Promise\Create::promiseFor($response); return $response->then(function (?\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $value) use($request, $options) { $this->invokeStats($request, $options, $value); if ($this->onFulfilled) { ($this->onFulfilled)($value); } if ($value !== null && isset($options['sink'])) { $contents = (string) $value->getBody(); $sink = $options['sink']; if (\is_resource($sink)) { \fwrite($sink, $contents); } elseif (\is_string($sink)) { \file_put_contents($sink, $contents); } elseif ($sink instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) { $sink->write($contents); } } return $value; }, function ($reason) use($request, $options) { $this->invokeStats($request, $options, null, $reason); if ($this->onRejected) { ($this->onRejected)($reason); } return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($reason); }); } /** * Adds one or more variadic requests, exceptions, callables, or promises * to the queue. * * @param mixed ...$values */ public function append(...$values) : void { foreach ($values as $value) { if ($value instanceof \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface || $value instanceof \Throwable || $value instanceof \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface || \is_callable($value)) { $this->queue[] = $value; } else { throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . \YoastSEO_Vendor\GuzzleHttp\Utils::describeType($value)); } } } /** * Get the last received request. */ public function getLastRequest() : ?\YoastSEO_Vendor\Psr\Http\Message\RequestInterface { return $this->lastRequest; } /** * Get the last received request options. */ public function getLastOptions() : array { return $this->lastOptions; } /** * Returns the number of remaining items in the queue. */ public function count() : int { return \count($this->queue); } public function reset() : void { $this->queue = []; } /** * @param mixed $reason Promise or reason. */ private function invokeStats(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response = null, $reason = null) : void { if (isset($options['on_stats'])) { $transferTime = $options['transfer_time'] ?? 0; $stats = new \YoastSEO_Vendor\GuzzleHttp\TransferStats($request, $response, $transferTime, $reason); $options['on_stats']($stats); } } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/CurlHandler.php000064400000002740147206602470020562 0ustar00factory = $options['handle_factory'] ?? new \YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactory(3); } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if (isset($options['delay'])) { \usleep($options['delay'] * 1000); } $easy = $this->factory->create($request, $options); \curl_exec($easy->handle); $easy->errno = \curl_errno($easy->handle); return \YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactory::finish($this, $easy, $this->factory); } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php000064400000020160147206602470021571 0ustar00 An array of delay times, indexed by handle id in `addRequest`. * * @see CurlMultiHandler::addRequest */ private $delays = []; /** * @var array An associative array of CURLMOPT_* options and corresponding values for curl_multi_setopt() */ private $options = []; /** @var resource|\CurlMultiHandle */ private $_mh; /** * This handler accepts the following options: * * - handle_factory: An optional factory used to create curl handles * - select_timeout: Optional timeout (in seconds) to block before timing * out while selecting curl handles. Defaults to 1 second. * - options: An associative array of CURLMOPT_* options and * corresponding values for curl_multi_setopt() */ public function __construct(array $options = []) { $this->factory = $options['handle_factory'] ?? new \YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactory(50); if (isset($options['select_timeout'])) { $this->selectTimeout = $options['select_timeout']; } elseif ($selectTimeout = \YoastSEO_Vendor\GuzzleHttp\Utils::getenv('GUZZLE_CURL_SELECT_TIMEOUT')) { @\trigger_error('Since guzzlehttp/guzzle 7.2.0: Using environment variable GUZZLE_CURL_SELECT_TIMEOUT is deprecated. Use option "select_timeout" instead.', \E_USER_DEPRECATED); $this->selectTimeout = (int) $selectTimeout; } else { $this->selectTimeout = 1; } $this->options = $options['options'] ?? []; // unsetting the property forces the first access to go through // __get(). unset($this->_mh); } /** * @param string $name * * @return resource|\CurlMultiHandle * * @throws \BadMethodCallException when another field as `_mh` will be gotten * @throws \RuntimeException when curl can not initialize a multi handle */ public function __get($name) { if ($name !== '_mh') { throw new \BadMethodCallException("Can not get other property as '_mh'."); } $multiHandle = \curl_multi_init(); if (\false === $multiHandle) { throw new \RuntimeException('Can not initialize curl multi handle.'); } $this->_mh = $multiHandle; foreach ($this->options as $option => $value) { // A warning is raised in case of a wrong option. \curl_multi_setopt($this->_mh, $option, $value); } return $this->_mh; } public function __destruct() { if (isset($this->_mh)) { \curl_multi_close($this->_mh); unset($this->_mh); } } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $easy = $this->factory->create($request, $options); $id = (int) $easy->handle; $promise = new \YoastSEO_Vendor\GuzzleHttp\Promise\Promise([$this, 'execute'], function () use($id) { return $this->cancel($id); }); $this->addRequest(['easy' => $easy, 'deferred' => $promise]); return $promise; } /** * Ticks the curl event loop. */ public function tick() : void { // Add any delayed handles if needed. if ($this->delays) { $currentTime = \YoastSEO_Vendor\GuzzleHttp\Utils::currentTime(); foreach ($this->delays as $id => $delay) { if ($currentTime >= $delay) { unset($this->delays[$id]); \curl_multi_add_handle($this->_mh, $this->handles[$id]['easy']->handle); } } } // Step through the task queue which may add additional requests. \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue()->run(); if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) { // Perform a usleep if a select returns -1. // See: https://bugs.php.net/bug.php?id=61141 \usleep(250); } while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM) { } $this->processMessages(); } /** * Runs until all outstanding connections have completed. */ public function execute() : void { $queue = \YoastSEO_Vendor\GuzzleHttp\Promise\Utils::queue(); while ($this->handles || !$queue->isEmpty()) { // If there are no transfers, then sleep for the next delay if (!$this->active && $this->delays) { \usleep($this->timeToNext()); } $this->tick(); } } private function addRequest(array $entry) : void { $easy = $entry['easy']; $id = (int) $easy->handle; $this->handles[$id] = $entry; if (empty($easy->options['delay'])) { \curl_multi_add_handle($this->_mh, $easy->handle); } else { $this->delays[$id] = \YoastSEO_Vendor\GuzzleHttp\Utils::currentTime() + $easy->options['delay'] / 1000; } } /** * Cancels a handle from sending and removes references to it. * * @param int $id Handle ID to cancel and remove. * * @return bool True on success, false on failure. */ private function cancel($id) : bool { if (!\is_int($id)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an integer to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } // Cannot cancel if it has been processed. if (!isset($this->handles[$id])) { return \false; } $handle = $this->handles[$id]['easy']->handle; unset($this->delays[$id], $this->handles[$id]); \curl_multi_remove_handle($this->_mh, $handle); \curl_close($handle); return \true; } private function processMessages() : void { while ($done = \curl_multi_info_read($this->_mh)) { if ($done['msg'] !== \CURLMSG_DONE) { // if it's not done, then it would be premature to remove the handle. ref https://github.com/guzzle/guzzle/pull/2892#issuecomment-945150216 continue; } $id = (int) $done['handle']; \curl_multi_remove_handle($this->_mh, $done['handle']); if (!isset($this->handles[$id])) { // Probably was cancelled. continue; } $entry = $this->handles[$id]; unset($this->handles[$id], $this->delays[$id]); $entry['easy']->errno = $done['result']; $entry['deferred']->resolve(\YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactory::finish($this, $entry['easy'], $this->factory)); } } private function timeToNext() : int { $currentTime = \YoastSEO_Vendor\GuzzleHttp\Utils::currentTime(); $nextTime = \PHP_INT_MAX; foreach ($this->delays as $time) { if ($time < $nextTime) { $nextTime = $time; } } return (int) \max(0, $nextTime - $currentTime) * 1000000; } } vendor_prefixed/guzzlehttp/guzzle/src/Handler/Proxy.php000064400000004616147206602470017504 0ustar00maxHandles = $maxHandles; } public function create(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle { if (isset($options['curl']['body_as_string'])) { $options['_body_as_string'] = $options['curl']['body_as_string']; unset($options['curl']['body_as_string']); } $easy = new \YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle(); $easy->request = $request; $easy->options = $options; $conf = $this->getDefaultConf($easy); $this->applyMethod($easy, $conf); $this->applyHandlerOptions($easy, $conf); $this->applyHeaders($easy, $conf); unset($conf['_headers']); // Add handler options from the request configuration options if (isset($options['curl'])) { $conf = \array_replace($conf, $options['curl']); } $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init(); \curl_setopt_array($easy->handle, $conf); return $easy; } public function release(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy) : void { $resource = $easy->handle; unset($easy->handle); if (\count($this->handles) >= $this->maxHandles) { \curl_close($resource); } else { // Remove all callback functions as they can hold onto references // and are not cleaned up by curl_reset. Using curl_setopt_array // does not work for some reason, so removing each one // individually. \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null); \curl_setopt($resource, \CURLOPT_READFUNCTION, null); \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null); \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null); \curl_reset($resource); $this->handles[] = $resource; } } /** * Completes a cURL transaction, either returning a response promise or a * rejected promise. * * @param callable(RequestInterface, array): PromiseInterface $handler * @param CurlFactoryInterface $factory Dictates how the handle is released */ public static function finish(callable $handler, \YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, \YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactoryInterface $factory) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if (isset($easy->options['on_stats'])) { self::invokeStats($easy); } if (!$easy->response || $easy->errno) { return self::finishError($handler, $easy, $factory); } // Return the response if it is present and there is no error. $factory->release($easy); // Rewind the body of the response if possible. $body = $easy->response->getBody(); if ($body->isSeekable()) { $body->rewind(); } return new \YoastSEO_Vendor\GuzzleHttp\Promise\FulfilledPromise($easy->response); } private static function invokeStats(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy) : void { $curlStats = \curl_getinfo($easy->handle); $curlStats['appconnect_time'] = \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME); $stats = new \YoastSEO_Vendor\GuzzleHttp\TransferStats($easy->request, $easy->response, $curlStats['total_time'], $easy->errno, $curlStats); $easy->options['on_stats']($stats); } /** * @param callable(RequestInterface, array): PromiseInterface $handler */ private static function finishError(callable $handler, \YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, \YoastSEO_Vendor\GuzzleHttp\Handler\CurlFactoryInterface $factory) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { // Get error information and release the handle to the factory. $ctx = ['errno' => $easy->errno, 'error' => \curl_error($easy->handle), 'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME)] + \curl_getinfo($easy->handle); $ctx[self::CURL_VERSION_STR] = \curl_version()['version']; $factory->release($easy); // Retry when nothing is present or when curl failed to rewind. if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) { return self::retryFailedRewind($handler, $easy, $ctx); } return self::createRejection($easy, $ctx); } private static function createRejection(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { static $connectionErrors = [\CURLE_OPERATION_TIMEOUTED => \true, \CURLE_COULDNT_RESOLVE_HOST => \true, \CURLE_COULDNT_CONNECT => \true, \CURLE_SSL_CONNECT_ERROR => \true, \CURLE_GOT_NOTHING => \true]; if ($easy->createResponseException) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor(new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException('An error was encountered while creating the response', $easy->request, $easy->response, $easy->createResponseException, $ctx)); } // If an exception was encountered during the onHeaders event, then // return a rejected promise that wraps that exception. if ($easy->onHeadersException) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor(new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException('An error was encountered during the on_headers event', $easy->request, $easy->response, $easy->onHeadersException, $ctx)); } $message = \sprintf('cURL error %s: %s (%s)', $ctx['errno'], $ctx['error'], 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'); $uriString = (string) $easy->request->getUri(); if ($uriString !== '' && \false === \strpos($ctx['error'], $uriString)) { $message .= \sprintf(' for %s', $uriString); } // Create a connection exception if it was a specific error code. $error = isset($connectionErrors[$easy->errno]) ? new \YoastSEO_Vendor\GuzzleHttp\Exception\ConnectException($message, $easy->request, null, $ctx) : new \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException($message, $easy->request, $easy->response, null, $ctx); return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($error); } /** * @return array */ private function getDefaultConf(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy) : array { $conf = ['_headers' => $easy->request->getHeaders(), \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), \CURLOPT_RETURNTRANSFER => \false, \CURLOPT_HEADER => \false, \CURLOPT_CONNECTTIMEOUT => 300]; if (\defined('CURLOPT_PROTOCOLS')) { $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS; } $version = $easy->request->getProtocolVersion(); if ($version == 1.1) { $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1; } elseif ($version == 2.0) { $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0; } else { $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0; } return $conf; } private function applyMethod(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) : void { $body = $easy->request->getBody(); $size = $body->getSize(); if ($size === null || $size > 0) { $this->applyBody($easy->request, $easy->options, $conf); return; } $method = $easy->request->getMethod(); if ($method === 'PUT' || $method === 'POST') { // See https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2 if (!$easy->request->hasHeader('Content-Length')) { $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; } } elseif ($method === 'HEAD') { $conf[\CURLOPT_NOBODY] = \true; unset($conf[\CURLOPT_WRITEFUNCTION], $conf[\CURLOPT_READFUNCTION], $conf[\CURLOPT_FILE], $conf[\CURLOPT_INFILE]); } } private function applyBody(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, array &$conf) : void { $size = $request->hasHeader('Content-Length') ? (int) $request->getHeaderLine('Content-Length') : null; // Send the body as a string if the size is less than 1MB OR if the // [curl][body_as_string] request value is set. if ($size !== null && $size < 1000000 || !empty($options['_body_as_string'])) { $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody(); // Don't duplicate the Content-Length header $this->removeHeader('Content-Length', $conf); $this->removeHeader('Transfer-Encoding', $conf); } else { $conf[\CURLOPT_UPLOAD] = \true; if ($size !== null) { $conf[\CURLOPT_INFILESIZE] = $size; $this->removeHeader('Content-Length', $conf); } $body = $request->getBody(); if ($body->isSeekable()) { $body->rewind(); } $conf[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use($body) { return $body->read($length); }; } // If the Expect header is not present, prevent curl from adding it if (!$request->hasHeader('Expect')) { $conf[\CURLOPT_HTTPHEADER][] = 'Expect:'; } // cURL sometimes adds a content-type by default. Prevent this. if (!$request->hasHeader('Content-Type')) { $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:'; } } private function applyHeaders(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) : void { foreach ($conf['_headers'] as $name => $values) { foreach ($values as $value) { $value = (string) $value; if ($value === '') { // cURL requires a special format for empty headers. // See https://github.com/guzzle/guzzle/issues/1882 for more details. $conf[\CURLOPT_HTTPHEADER][] = "{$name};"; } else { $conf[\CURLOPT_HTTPHEADER][] = "{$name}: {$value}"; } } } // Remove the Accept header if one was not set if (!$easy->request->hasHeader('Accept')) { $conf[\CURLOPT_HTTPHEADER][] = 'Accept:'; } } /** * Remove a header from the options array. * * @param string $name Case-insensitive header to remove * @param array $options Array of options to modify */ private function removeHeader(string $name, array &$options) : void { foreach (\array_keys($options['_headers']) as $key) { if (!\strcasecmp($key, $name)) { unset($options['_headers'][$key]); return; } } } private function applyHandlerOptions(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, array &$conf) : void { $options = $easy->options; if (isset($options['verify'])) { if ($options['verify'] === \false) { unset($conf[\CURLOPT_CAINFO]); $conf[\CURLOPT_SSL_VERIFYHOST] = 0; $conf[\CURLOPT_SSL_VERIFYPEER] = \false; } else { $conf[\CURLOPT_SSL_VERIFYHOST] = 2; $conf[\CURLOPT_SSL_VERIFYPEER] = \true; if (\is_string($options['verify'])) { // Throw an error if the file/folder/link path is not valid or doesn't exist. if (!\file_exists($options['verify'])) { throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}"); } // If it's a directory or a link to a directory use CURLOPT_CAPATH. // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO. if (\is_dir($options['verify']) || \is_link($options['verify']) === \true && ($verifyLink = \readlink($options['verify'])) !== \false && \is_dir($verifyLink)) { $conf[\CURLOPT_CAPATH] = $options['verify']; } else { $conf[\CURLOPT_CAINFO] = $options['verify']; } } } } if (!isset($options['curl'][\CURLOPT_ENCODING]) && !empty($options['decode_content'])) { $accept = $easy->request->getHeaderLine('Accept-Encoding'); if ($accept) { $conf[\CURLOPT_ENCODING] = $accept; } else { // The empty string enables all available decoders and implicitly // sets a matching 'Accept-Encoding' header. $conf[\CURLOPT_ENCODING] = ''; // But as the user did not specify any acceptable encodings we need // to overwrite this implicit header with an empty one. $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; } } if (!isset($options['sink'])) { // Use a default temp stream if no sink was set. $options['sink'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+'); } $sink = $options['sink']; if (!\is_string($sink)) { $sink = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($sink); } elseif (!\is_dir(\dirname($sink))) { // Ensure that the directory exists before failing in curl. throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink)); } else { $sink = new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($sink, 'w+'); } $easy->sink = $sink; $conf[\CURLOPT_WRITEFUNCTION] = static function ($ch, $write) use($sink) : int { return $sink->write($write); }; $timeoutRequiresNoSignal = \false; if (isset($options['timeout'])) { $timeoutRequiresNoSignal |= $options['timeout'] < 1; $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; } // CURL default value is CURL_IPRESOLVE_WHATEVER if (isset($options['force_ip_resolve'])) { if ('v4' === $options['force_ip_resolve']) { $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4; } elseif ('v6' === $options['force_ip_resolve']) { $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6; } } if (isset($options['connect_timeout'])) { $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1; $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; } if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') { $conf[\CURLOPT_NOSIGNAL] = \true; } if (isset($options['proxy'])) { if (!\is_array($options['proxy'])) { $conf[\CURLOPT_PROXY] = $options['proxy']; } else { $scheme = $easy->request->getUri()->getScheme(); if (isset($options['proxy'][$scheme])) { $host = $easy->request->getUri()->getHost(); if (isset($options['proxy']['no']) && \YoastSEO_Vendor\GuzzleHttp\Utils::isHostInNoProxy($host, $options['proxy']['no'])) { unset($conf[\CURLOPT_PROXY]); } else { $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme]; } } } } if (isset($options['crypto_method'])) { if (\STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT === $options['crypto_method']) { if (!\defined('CURL_SSLVERSION_TLSv1_0')) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.0 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_0; } elseif (\STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT === $options['crypto_method']) { if (!\defined('CURL_SSLVERSION_TLSv1_1')) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.1 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_1; } elseif (\STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT === $options['crypto_method']) { if (!\defined('CURL_SSLVERSION_TLSv1_2')) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.2 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_2; } elseif (\defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT') && \STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT === $options['crypto_method']) { if (!\defined('CURL_SSLVERSION_TLSv1_3')) { throw new \InvalidArgumentException('Invalid crypto_method request option: TLS 1.3 not supported by your version of cURL'); } $conf[\CURLOPT_SSLVERSION] = \CURL_SSLVERSION_TLSv1_3; } else { throw new \InvalidArgumentException('Invalid crypto_method request option: unknown version provided'); } } if (isset($options['cert'])) { $cert = $options['cert']; if (\is_array($cert)) { $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1]; $cert = $cert[0]; } if (!\file_exists($cert)) { throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); } // OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. // see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html $ext = \pathinfo($cert, \PATHINFO_EXTENSION); if (\preg_match('#^(der|p12)$#i', $ext)) { $conf[\CURLOPT_SSLCERTTYPE] = \strtoupper($ext); } $conf[\CURLOPT_SSLCERT] = $cert; } if (isset($options['ssl_key'])) { if (\is_array($options['ssl_key'])) { if (\count($options['ssl_key']) === 2) { [$sslKey, $conf[\CURLOPT_SSLKEYPASSWD]] = $options['ssl_key']; } else { [$sslKey] = $options['ssl_key']; } } $sslKey = $sslKey ?? $options['ssl_key']; if (!\file_exists($sslKey)) { throw new \InvalidArgumentException("SSL private key not found: {$sslKey}"); } $conf[\CURLOPT_SSLKEY] = $sslKey; } if (isset($options['progress'])) { $progress = $options['progress']; if (!\is_callable($progress)) { throw new \InvalidArgumentException('progress client option must be callable'); } $conf[\CURLOPT_NOPROGRESS] = \false; $conf[\CURLOPT_PROGRESSFUNCTION] = static function ($resource, int $downloadSize, int $downloaded, int $uploadSize, int $uploaded) use($progress) { $progress($downloadSize, $downloaded, $uploadSize, $uploaded); }; } if (!empty($options['debug'])) { $conf[\CURLOPT_STDERR] = \YoastSEO_Vendor\GuzzleHttp\Utils::debugResource($options['debug']); $conf[\CURLOPT_VERBOSE] = \true; } } /** * This function ensures that a response was set on a transaction. If one * was not set, then the request is retried if possible. This error * typically means you are sending a payload, curl encountered a * "Connection died, retrying a fresh connect" error, tried to rewind the * stream, and then encountered a "necessary data rewind wasn't possible" * error, causing the request to be sent through curl_multi_info_read() * without an error status. * * @param callable(RequestInterface, array): PromiseInterface $handler */ private static function retryFailedRewind(callable $handler, \YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy, array $ctx) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { try { // Only rewind if the body has been read from. $body = $easy->request->getBody(); if ($body->tell() > 0) { $body->rewind(); } } catch (\RuntimeException $e) { $ctx['error'] = 'The connection unexpectedly failed without ' . 'providing an error. The request would have been retried, ' . 'but attempting to rewind the request body failed. ' . 'Exception: ' . $e; return self::createRejection($easy, $ctx); } // Retry no more than 3 times before giving up. if (!isset($easy->options['_curl_retries'])) { $easy->options['_curl_retries'] = 1; } elseif ($easy->options['_curl_retries'] == 2) { $ctx['error'] = 'The cURL request was retried 3 times ' . 'and did not succeed. The most likely reason for the failure ' . 'is that cURL was unable to rewind the body of the request ' . 'and subsequent retries resulted in the same error. Turn on ' . 'the debug option to see what went wrong. See ' . 'https://bugs.php.net/bug.php?id=47204 for more information.'; return self::createRejection($easy, $ctx); } else { ++$easy->options['_curl_retries']; } return $handler($easy->request, $easy->options); } private function createHeaderFn(\YoastSEO_Vendor\GuzzleHttp\Handler\EasyHandle $easy) : callable { if (isset($easy->options['on_headers'])) { $onHeaders = $easy->options['on_headers']; if (!\is_callable($onHeaders)) { throw new \InvalidArgumentException('on_headers must be callable'); } } else { $onHeaders = null; } return static function ($ch, $h) use($onHeaders, $easy, &$startingResponse) { $value = \trim($h); if ($value === '') { $startingResponse = \true; try { $easy->createResponse(); } catch (\Exception $e) { $easy->createResponseException = $e; return -1; } if ($onHeaders !== null) { try { $onHeaders($easy->response); } catch (\Exception $e) { // Associate the exception with the handle and trigger // a curl header write error by returning 0. $easy->onHeadersException = $e; return -1; } } } elseif ($startingResponse) { $startingResponse = \false; $easy->headers = [$value]; } else { $easy->headers[] = $value; } return \strlen($h); }; } public function __destruct() { foreach ($this->handles as $id => $handle) { \curl_close($handle); unset($this->handles[$id]); } } } vendor_prefixed/guzzlehttp/guzzle/src/ClientInterface.php000064400000006202147206602470020036 0ustar00 'http://www.foo.com/1.0/', * 'timeout' => 0, * 'allow_redirects' => false, * 'proxy' => '192.168.16.1:10' * ]); * * Client configuration settings include the following options: * * - handler: (callable) Function that transfers HTTP requests over the * wire. The function is called with a Psr7\Http\Message\RequestInterface * and array of transfer options, and must return a * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a * Psr7\Http\Message\ResponseInterface on success. * If no handler is provided, a default handler will be created * that enables all of the request options below by attaching all of the * default middleware to the handler. * - base_uri: (string|UriInterface) Base URI of the client that is merged * into relative URIs. Can be a string or instance of UriInterface. * - **: any request option * * @param array $config Client configuration settings. * * @see \GuzzleHttp\RequestOptions for a list of available request options. */ public function __construct(array $config = []) { if (!isset($config['handler'])) { $config['handler'] = \YoastSEO_Vendor\GuzzleHttp\HandlerStack::create(); } elseif (!\is_callable($config['handler'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('handler must be a callable'); } // Convert the base_uri to a UriInterface if (isset($config['base_uri'])) { $config['base_uri'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::uriFor($config['base_uri']); } $this->configureDefaults($config); } /** * @param string $method * @param array $args * * @return PromiseInterface|ResponseInterface * * @deprecated Client::__call will be removed in guzzlehttp/guzzle:8.0. */ public function __call($method, $args) { if (\count($args) < 1) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('Magic request methods require a URI and optional options array'); } $uri = $args[0]; $opts = $args[1] ?? []; return \substr($method, -5) === 'Async' ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts) : $this->request($method, $uri, $opts); } /** * Asynchronously send an HTTP request. * * @param array $options Request options to apply to the given * request and to the transfer. See \GuzzleHttp\RequestOptions. */ public function sendAsync(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { // Merge the base URI into the request URI if needed. $options = $this->prepareDefaults($options); return $this->transfer($request->withUri($this->buildUri($request->getUri(), $options), $request->hasHeader('Host')), $options); } /** * Send an HTTP request. * * @param array $options Request options to apply to the given * request and to the transfer. See \GuzzleHttp\RequestOptions. * * @throws GuzzleException */ public function send(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; return $this->sendAsync($request, $options)->wait(); } /** * The HttpClient PSR (PSR-18) specify this method. * * {@inheritDoc} */ public function sendRequest(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::ALLOW_REDIRECTS] = \false; $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::HTTP_ERRORS] = \false; return $this->sendAsync($request, $options)->wait(); } /** * Create and send an asynchronous HTTP request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. Use an array to provide a URL * template and additional variables to use in the URL template expansion. * * @param string $method HTTP method * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. */ public function requestAsync(string $method, $uri = '', array $options = []) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $options = $this->prepareDefaults($options); // Remove request modifying parameter because it can be done up-front. $headers = $options['headers'] ?? []; $body = $options['body'] ?? null; $version = $options['version'] ?? '1.1'; // Merge the URI into the base URI. $uri = $this->buildUri(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::uriFor($uri), $options); if (\is_array($body)) { throw $this->invalidBody(); } $request = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Request($method, $uri, $headers, $body, $version); // Remove the option so that they are not doubly-applied. unset($options['headers'], $options['body'], $options['version']); return $this->transfer($request, $options); } /** * Create and send an HTTP request. * * Use an absolute path to override the base path of the client, or a * relative path to append to the base path of the client. The URL can * contain the query string as well. * * @param string $method HTTP method. * @param string|UriInterface $uri URI object or string. * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions. * * @throws GuzzleException */ public function request(string $method, $uri = '', array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { $options[\YoastSEO_Vendor\GuzzleHttp\RequestOptions::SYNCHRONOUS] = \true; return $this->requestAsync($method, $uri, $options)->wait(); } /** * Get a client configuration option. * * These options include default request options of the client, a "handler" * (if utilized by the concrete client), and a "base_uri" if utilized by * the concrete client. * * @param string|null $option The config option to retrieve. * * @return mixed * * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0. */ public function getConfig(string $option = null) { return $option === null ? $this->config : $this->config[$option] ?? null; } private function buildUri(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, array $config) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { if (isset($config['base_uri'])) { $uri = \YoastSEO_Vendor\GuzzleHttp\Psr7\UriResolver::resolve(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::uriFor($config['base_uri']), $uri); } if (isset($config['idn_conversion']) && $config['idn_conversion'] !== \false) { $idnOptions = $config['idn_conversion'] === \true ? \IDNA_DEFAULT : $config['idn_conversion']; $uri = \YoastSEO_Vendor\GuzzleHttp\Utils::idnUriConvert($uri, $idnOptions); } return $uri->getScheme() === '' && $uri->getHost() !== '' ? $uri->withScheme('http') : $uri; } /** * Configures the default options for a client. */ private function configureDefaults(array $config) : void { $defaults = ['allow_redirects' => \YoastSEO_Vendor\GuzzleHttp\RedirectMiddleware::$defaultSettings, 'http_errors' => \true, 'decode_content' => \true, 'verify' => \true, 'cookies' => \false, 'idn_conversion' => \false]; // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set. // We can only trust the HTTP_PROXY environment variable in a CLI // process due to the fact that PHP has no reliable mechanism to // get environment variables that start with "HTTP_". if (\PHP_SAPI === 'cli' && ($proxy = \YoastSEO_Vendor\GuzzleHttp\Utils::getenv('HTTP_PROXY'))) { $defaults['proxy']['http'] = $proxy; } if ($proxy = \YoastSEO_Vendor\GuzzleHttp\Utils::getenv('HTTPS_PROXY')) { $defaults['proxy']['https'] = $proxy; } if ($noProxy = \YoastSEO_Vendor\GuzzleHttp\Utils::getenv('NO_PROXY')) { $cleanedNoProxy = \str_replace(' ', '', $noProxy); $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy); } $this->config = $config + $defaults; if (!empty($config['cookies']) && $config['cookies'] === \true) { $this->config['cookies'] = new \YoastSEO_Vendor\GuzzleHttp\Cookie\CookieJar(); } // Add the default user-agent header. if (!isset($this->config['headers'])) { $this->config['headers'] = ['User-Agent' => \YoastSEO_Vendor\GuzzleHttp\Utils::defaultUserAgent()]; } else { // Add the User-Agent header if one was not already set. foreach (\array_keys($this->config['headers']) as $name) { if (\strtolower($name) === 'user-agent') { return; } } $this->config['headers']['User-Agent'] = \YoastSEO_Vendor\GuzzleHttp\Utils::defaultUserAgent(); } } /** * Merges default options into the array. * * @param array $options Options to modify by reference */ private function prepareDefaults(array $options) : array { $defaults = $this->config; if (!empty($defaults['headers'])) { // Default headers are only added if they are not present. $defaults['_conditional'] = $defaults['headers']; unset($defaults['headers']); } // Special handling for headers is required as they are added as // conditional headers and as headers passed to a request ctor. if (\array_key_exists('headers', $options)) { // Allows default headers to be unset. if ($options['headers'] === null) { $defaults['_conditional'] = []; unset($options['headers']); } elseif (!\is_array($options['headers'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('headers must be an array'); } } // Shallow merge defaults underneath options. $result = $options + $defaults; // Remove null values. foreach ($result as $k => $v) { if ($v === null) { unset($result[$k]); } } return $result; } /** * Transfers the given request and applies request options. * * The URI of the request is not modified and the request options are used * as-is without merging in default options. * * @param array $options See \GuzzleHttp\RequestOptions. */ private function transfer(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $request = $this->applyOptions($request, $options); /** @var HandlerStack $handler */ $handler = $options['handler']; try { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::promiseFor($handler($request, $options)); } catch (\Exception $e) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($e); } } /** * Applies the array of request options to a request. */ private function applyOptions(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array &$options) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { $modify = ['set_headers' => []]; if (isset($options['headers'])) { if (\array_keys($options['headers']) === \range(0, \count($options['headers']) - 1)) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('The headers array must have header name as keys.'); } $modify['set_headers'] = $options['headers']; unset($options['headers']); } if (isset($options['form_params'])) { if (isset($options['multipart'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('You cannot use ' . 'form_params and multipart at the same time. Use the ' . 'form_params option if you want to send application/' . 'x-www-form-urlencoded requests, and the multipart ' . 'option to send multipart/form-data requests.'); } $options['body'] = \http_build_query($options['form_params'], '', '&'); unset($options['form_params']); // Ensure that we don't have the header in different case and set the new value. $options['_conditional'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; } if (isset($options['multipart'])) { $options['body'] = new \YoastSEO_Vendor\GuzzleHttp\Psr7\MultipartStream($options['multipart']); unset($options['multipart']); } if (isset($options['json'])) { $options['body'] = \YoastSEO_Vendor\GuzzleHttp\Utils::jsonEncode($options['json']); unset($options['json']); // Ensure that we don't have the header in different case and set the new value. $options['_conditional'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'application/json'; } if (!empty($options['decode_content']) && $options['decode_content'] !== \true) { // Ensure that we don't have the header in different case and set the new value. $options['_conditional'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::caselessRemove(['Accept-Encoding'], $options['_conditional']); $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; } if (isset($options['body'])) { if (\is_array($options['body'])) { throw $this->invalidBody(); } $modify['body'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($options['body']); unset($options['body']); } if (!empty($options['auth']) && \is_array($options['auth'])) { $value = $options['auth']; $type = isset($value[2]) ? \strtolower($value[2]) : 'basic'; switch ($type) { case 'basic': // Ensure that we don't have the header in different case and set the new value. $modify['set_headers'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']); $modify['set_headers']['Authorization'] = 'Basic ' . \base64_encode("{$value[0]}:{$value[1]}"); break; case 'digest': // @todo: Do not rely on curl $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST; $options['curl'][\CURLOPT_USERPWD] = "{$value[0]}:{$value[1]}"; break; case 'ntlm': $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM; $options['curl'][\CURLOPT_USERPWD] = "{$value[0]}:{$value[1]}"; break; } } if (isset($options['query'])) { $value = $options['query']; if (\is_array($value)) { $value = \http_build_query($value, '', '&', \PHP_QUERY_RFC3986); } if (!\is_string($value)) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('query must be a string or array'); } $modify['query'] = $value; unset($options['query']); } // Ensure that sink is not an invalid value. if (isset($options['sink'])) { // TODO: Add more sink validation? if (\is_bool($options['sink'])) { throw new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('sink must not be a boolean'); } } if (isset($options['version'])) { $modify['version'] = $options['version']; } $request = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::modifyRequest($request, $modify); if ($request->getBody() instanceof \YoastSEO_Vendor\GuzzleHttp\Psr7\MultipartStream) { // Use a multipart/form-data POST if a Content-Type is not set. // Ensure that we don't have the header in different case and set the new value. $options['_conditional'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']); $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' . $request->getBody()->getBoundary(); } // Merge in conditional headers if they are not present. if (isset($options['_conditional'])) { // Build up the changes so it's in a single clone of the message. $modify = []; foreach ($options['_conditional'] as $k => $v) { if (!$request->hasHeader($k)) { $modify['set_headers'][$k] = $v; } } $request = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::modifyRequest($request, $modify); // Don't pass this internal value along to middleware/handlers. unset($options['_conditional']); } return $request; } /** * Return an InvalidArgumentException with pre-set message. */ private function invalidBody() : \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException { return new \YoastSEO_Vendor\GuzzleHttp\Exception\InvalidArgumentException('Passing in the "body" request ' . 'option as an array to send a request is not supported. ' . 'Please use the "form_params" request option to send a ' . 'application/x-www-form-urlencoded request, or the "multipart" ' . 'request option to send a multipart/form-data request.'); } } vendor_prefixed/guzzlehttp/guzzle/src/BodySummarizerInterface.php000064400000000453147206602470021576 0ustar00 $rfn) { if ($rfn instanceof \YoastSEO_Vendor\Psr\Http\Message\RequestInterface) { (yield $key => $client->sendAsync($rfn, $opts)); } elseif (\is_callable($rfn)) { (yield $key => $rfn($opts)); } else { throw new \InvalidArgumentException('Each value yielded by the iterator must be a Psr7\\Http\\Message\\RequestInterface or a callable that returns a promise that fulfills with a Psr7\\Message\\Http\\ResponseInterface object.'); } } }; $this->each = new \YoastSEO_Vendor\GuzzleHttp\Promise\EachPromise($requests(), $config); } /** * Get promise */ public function promise() : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { return $this->each->promise(); } /** * Sends multiple requests concurrently and returns an array of responses * and exceptions that uses the same ordering as the provided requests. * * IMPORTANT: This method keeps every request and response in memory, and * as such, is NOT recommended when sending a large number or an * indeterminate number of requests concurrently. * * @param ClientInterface $client Client used to send the requests * @param array|\Iterator $requests Requests to send concurrently. * @param array $options Passes through the options available in * {@see \GuzzleHttp\Pool::__construct} * * @return array Returns an array containing the response or an exception * in the same order that the requests were sent. * * @throws \InvalidArgumentException if the event format is incorrect. */ public static function batch(\YoastSEO_Vendor\GuzzleHttp\ClientInterface $client, $requests, array $options = []) : array { $res = []; self::cmpCallback($options, 'fulfilled', $res); self::cmpCallback($options, 'rejected', $res); $pool = new static($client, $requests, $options); $pool->promise()->wait(); \ksort($res); return $res; } /** * Execute callback(s) */ private static function cmpCallback(array &$options, string $name, array &$results) : void { if (!isset($options[$name])) { $options[$name] = static function ($v, $k) use(&$results) { $results[$k] = $v; }; } else { $currentFn = $options[$name]; $options[$name] = static function ($v, $k) use(&$results, $currentFn) { $currentFn($v, $k); $results[$k] = $v; }; } } } vendor_prefixed/guzzlehttp/guzzle/src/Middleware.php000064400000026130147206602470017056 0ustar00withCookieHeader($request); return $handler($request, $options)->then(static function (\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) use($cookieJar, $request) : ResponseInterface { $cookieJar->extractCookies($request, $response); return $response; }); }; }; } /** * Middleware that throws exceptions for 4xx or 5xx responses when the * "http_errors" request option is set to true. * * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages. * * @return callable(callable): callable Returns a function that accepts the next handler. */ public static function httpErrors(\YoastSEO_Vendor\GuzzleHttp\BodySummarizerInterface $bodySummarizer = null) : callable { return static function (callable $handler) use($bodySummarizer) : callable { return static function ($request, array $options) use($handler, $bodySummarizer) { if (empty($options['http_errors'])) { return $handler($request, $options); } return $handler($request, $options)->then(static function (\YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) use($request, $bodySummarizer) { $code = $response->getStatusCode(); if ($code < 400) { return $response; } throw \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException::create($request, $response, null, [], $bodySummarizer); }); }; }; } /** * Middleware that pushes history data to an ArrayAccess container. * * @param array|\ArrayAccess $container Container to hold the history (by reference). * * @return callable(callable): callable Returns a function that accepts the next handler. * * @throws \InvalidArgumentException if container is not an array or ArrayAccess. */ public static function history(&$container) : callable { if (!\is_array($container) && !$container instanceof \ArrayAccess) { throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess'); } return static function (callable $handler) use(&$container) : callable { return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($handler, &$container) { return $handler($request, $options)->then(static function ($value) use($request, &$container, $options) { $container[] = ['request' => $request, 'response' => $value, 'error' => null, 'options' => $options]; return $value; }, static function ($reason) use($request, &$container, $options) { $container[] = ['request' => $request, 'response' => null, 'error' => $reason, 'options' => $options]; return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($reason); }); }; }; } /** * Middleware that invokes a callback before and after sending a request. * * The provided listener cannot modify or alter the response. It simply * "taps" into the chain to be notified before returning the promise. The * before listener accepts a request and options array, and the after * listener accepts a request, options array, and response promise. * * @param callable $before Function to invoke before forwarding the request. * @param callable $after Function invoked after forwarding. * * @return callable Returns a function that accepts the next handler. */ public static function tap(callable $before = null, callable $after = null) : callable { return static function (callable $handler) use($before, $after) : callable { return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($handler, $before, $after) { if ($before) { $before($request, $options); } $response = $handler($request, $options); if ($after) { $after($request, $options, $response); } return $response; }; }; } /** * Middleware that handles request redirects. * * @return callable Returns a function that accepts the next handler. */ public static function redirect() : callable { return static function (callable $handler) : RedirectMiddleware { return new \YoastSEO_Vendor\GuzzleHttp\RedirectMiddleware($handler); }; } /** * Middleware that retries requests based on the boolean result of * invoking the provided "decider" function. * * If no delay function is provided, a simple implementation of exponential * backoff will be utilized. * * @param callable $decider Function that accepts the number of retries, * a request, [response], and [exception] and * returns true if the request is to be retried. * @param callable $delay Function that accepts the number of retries and * returns the number of milliseconds to delay. * * @return callable Returns a function that accepts the next handler. */ public static function retry(callable $decider, callable $delay = null) : callable { return static function (callable $handler) use($decider, $delay) : RetryMiddleware { return new \YoastSEO_Vendor\GuzzleHttp\RetryMiddleware($decider, $handler, $delay); }; } /** * Middleware that logs requests, responses, and errors using a message * formatter. * * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests. * * @param LoggerInterface $logger Logs messages. * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings. * @param string $logLevel Level at which to log requests. * * @return callable Returns a function that accepts the next handler. */ public static function log(\YoastSEO_Vendor\Psr\Log\LoggerInterface $logger, $formatter, string $logLevel = 'info') : callable { // To be compatible with Guzzle 7.1.x we need to allow users to pass a MessageFormatter if (!$formatter instanceof \YoastSEO_Vendor\GuzzleHttp\MessageFormatter && !$formatter instanceof \YoastSEO_Vendor\GuzzleHttp\MessageFormatterInterface) { throw new \LogicException(\sprintf('Argument 2 to %s::log() must be of type %s', self::class, \YoastSEO_Vendor\GuzzleHttp\MessageFormatterInterface::class)); } return static function (callable $handler) use($logger, $formatter, $logLevel) : callable { return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options = []) use($handler, $logger, $formatter, $logLevel) { return $handler($request, $options)->then(static function ($response) use($logger, $request, $formatter, $logLevel) : ResponseInterface { $message = $formatter->format($request, $response); $logger->log($logLevel, $message); return $response; }, static function ($reason) use($logger, $request, $formatter) : PromiseInterface { $response = $reason instanceof \YoastSEO_Vendor\GuzzleHttp\Exception\RequestException ? $reason->getResponse() : null; $message = $formatter->format($request, $response, \YoastSEO_Vendor\GuzzleHttp\Promise\Create::exceptionFor($reason)); $logger->error($message); return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($reason); }); }; }; } /** * This middleware adds a default content-type if possible, a default * content-length or transfer-encoding header, and the expect header. */ public static function prepareBody() : callable { return static function (callable $handler) : PrepareBodyMiddleware { return new \YoastSEO_Vendor\GuzzleHttp\PrepareBodyMiddleware($handler); }; } /** * Middleware that applies a map function to the request before passing to * the next handler. * * @param callable $fn Function that accepts a RequestInterface and returns * a RequestInterface. */ public static function mapRequest(callable $fn) : callable { return static function (callable $handler) use($fn) : callable { return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($handler, $fn) { return $handler($fn($request), $options); }; }; } /** * Middleware that applies a map function to the resolved promise's * response. * * @param callable $fn Function that accepts a ResponseInterface and * returns a ResponseInterface. */ public static function mapResponse(callable $fn) : callable { return static function (callable $handler) use($fn) : callable { return static function (\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) use($handler, $fn) { return $handler($request, $options)->then($fn); }; }; } } vendor_prefixed/guzzlehttp/guzzle/src/RetryMiddleware.php000064400000007241147206602470020106 0ustar00decider = $decider; $this->nextHandler = $nextHandler; $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; } /** * Default exponential backoff delay function. * * @return int milliseconds. */ public static function exponentialDelay(int $retries) : int { return (int) 2 ** ($retries - 1) * 1000; } public function __invoke(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { if (!isset($options['retries'])) { $options['retries'] = 0; } $fn = $this->nextHandler; return $fn($request, $options)->then($this->onFulfilled($request, $options), $this->onRejected($request, $options)); } /** * Execute fulfilled closure */ private function onFulfilled(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options) : callable { return function ($value) use($request, $options) { if (!($this->decider)($options['retries'], $request, $value, null)) { return $value; } return $this->doRetry($request, $options, $value); }; } /** * Execute rejected closure */ private function onRejected(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $req, array $options) : callable { return function ($reason) use($req, $options) { if (!($this->decider)($options['retries'], $req, null, $reason)) { return \YoastSEO_Vendor\GuzzleHttp\Promise\Create::rejectionFor($reason); } return $this->doRetry($req, $options); }; } private function doRetry(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $options, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response = null) : \YoastSEO_Vendor\GuzzleHttp\Promise\PromiseInterface { $options['delay'] = ($this->delay)(++$options['retries'], $response, $request); return $this($request, $options); } } vendor_prefixed/guzzlehttp/guzzle/src/MessageFormatter.php000064400000016166147206602470020261 0ustar00>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; /** * @var string Template used to format log messages */ private $template; /** * @param string $template Log message template */ public function __construct(?string $template = self::CLF) { $this->template = $template ?: self::CLF; } /** * Returns a formatted message string. * * @param RequestInterface $request Request that was sent * @param ResponseInterface|null $response Response that was received * @param \Throwable|null $error Exception that was received */ public function format(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response = null, \Throwable $error = null) : string { $cache = []; /** @var string */ return \preg_replace_callback('/{\\s*([A-Za-z_\\-\\.0-9]+)\\s*}/', function (array $matches) use($request, $response, $error, &$cache) { if (isset($cache[$matches[1]])) { return $cache[$matches[1]]; } $result = ''; switch ($matches[1]) { case 'request': $result = \YoastSEO_Vendor\GuzzleHttp\Psr7\Message::toString($request); break; case 'response': $result = $response ? \YoastSEO_Vendor\GuzzleHttp\Psr7\Message::toString($response) : ''; break; case 'req_headers': $result = \trim($request->getMethod() . ' ' . $request->getRequestTarget()) . ' HTTP/' . $request->getProtocolVersion() . "\r\n" . $this->headers($request); break; case 'res_headers': $result = $response ? \sprintf('HTTP/%s %d %s', $response->getProtocolVersion(), $response->getStatusCode(), $response->getReasonPhrase()) . "\r\n" . $this->headers($response) : 'NULL'; break; case 'req_body': $result = $request->getBody()->__toString(); break; case 'res_body': if (!$response instanceof \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface) { $result = 'NULL'; break; } $body = $response->getBody(); if (!$body->isSeekable()) { $result = 'RESPONSE_NOT_LOGGEABLE'; break; } $result = $response->getBody()->__toString(); break; case 'ts': case 'date_iso_8601': $result = \gmdate('c'); break; case 'date_common_log': $result = \date('d/M/Y:H:i:s O'); break; case 'method': $result = $request->getMethod(); break; case 'version': $result = $request->getProtocolVersion(); break; case 'uri': case 'url': $result = $request->getUri()->__toString(); break; case 'target': $result = $request->getRequestTarget(); break; case 'req_version': $result = $request->getProtocolVersion(); break; case 'res_version': $result = $response ? $response->getProtocolVersion() : 'NULL'; break; case 'host': $result = $request->getHeaderLine('Host'); break; case 'hostname': $result = \gethostname(); break; case 'code': $result = $response ? $response->getStatusCode() : 'NULL'; break; case 'phrase': $result = $response ? $response->getReasonPhrase() : 'NULL'; break; case 'error': $result = $error ? $error->getMessage() : 'NULL'; break; default: // handle prefixed dynamic headers if (\strpos($matches[1], 'req_header_') === 0) { $result = $request->getHeaderLine(\substr($matches[1], 11)); } elseif (\strpos($matches[1], 'res_header_') === 0) { $result = $response ? $response->getHeaderLine(\substr($matches[1], 11)) : 'NULL'; } } $cache[$matches[1]] = $result; return $result; }, $this->template); } /** * Get headers from message as string */ private function headers(\YoastSEO_Vendor\Psr\Http\Message\MessageInterface $message) : string { $result = ''; foreach ($message->getHeaders() as $name => $values) { $result .= $name . ': ' . \implode(', ', $values) . "\r\n"; } return \trim($result); } } vendor_prefixed/guzzlehttp/guzzle/src/Cookie/SetCookie.php000064400000033464147206602470020107 0ustar00 null, 'Value' => null, 'Domain' => null, 'Path' => '/', 'Max-Age' => null, 'Expires' => null, 'Secure' => \false, 'Discard' => \false, 'HttpOnly' => \false]; /** * @var array Cookie data */ private $data; /** * Create a new SetCookie object from a string. * * @param string $cookie Set-Cookie header string */ public static function fromString(string $cookie) : self { // Create the default return array $data = self::$defaults; // Explode the cookie string using a series of semicolons $pieces = \array_filter(\array_map('trim', \explode(';', $cookie))); // The name of the cookie (first kvp) must exist and include an equal sign. if (!isset($pieces[0]) || \strpos($pieces[0], '=') === \false) { return new self($data); } // Add the cookie pieces into the parsed data array foreach ($pieces as $part) { $cookieParts = \explode('=', $part, 2); $key = \trim($cookieParts[0]); $value = isset($cookieParts[1]) ? \trim($cookieParts[1], " \n\r\t\x00\v") : \true; // Only check for non-cookies when cookies have been found if (!isset($data['Name'])) { $data['Name'] = $key; $data['Value'] = $value; } else { foreach (\array_keys(self::$defaults) as $search) { if (!\strcasecmp($search, $key)) { if ($search === 'Max-Age') { if (\is_numeric($value)) { $data[$search] = (int) $value; } } else { $data[$search] = $value; } continue 2; } } $data[$key] = $value; } } return new self($data); } /** * @param array $data Array of cookie data provided by a Cookie parser */ public function __construct(array $data = []) { $this->data = self::$defaults; if (isset($data['Name'])) { $this->setName($data['Name']); } if (isset($data['Value'])) { $this->setValue($data['Value']); } if (isset($data['Domain'])) { $this->setDomain($data['Domain']); } if (isset($data['Path'])) { $this->setPath($data['Path']); } if (isset($data['Max-Age'])) { $this->setMaxAge($data['Max-Age']); } if (isset($data['Expires'])) { $this->setExpires($data['Expires']); } if (isset($data['Secure'])) { $this->setSecure($data['Secure']); } if (isset($data['Discard'])) { $this->setDiscard($data['Discard']); } if (isset($data['HttpOnly'])) { $this->setHttpOnly($data['HttpOnly']); } // Set the remaining values that don't have extra validation logic foreach (\array_diff(\array_keys($data), \array_keys(self::$defaults)) as $key) { $this->data[$key] = $data[$key]; } // Extract the Expires value and turn it into a UNIX timestamp if needed if (!$this->getExpires() && $this->getMaxAge()) { // Calculate the Expires date $this->setExpires(\time() + $this->getMaxAge()); } elseif (null !== ($expires = $this->getExpires()) && !\is_numeric($expires)) { $this->setExpires($expires); } } public function __toString() { $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; '; foreach ($this->data as $k => $v) { if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== \false) { if ($k === 'Expires') { $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \\G\\M\\T', $v) . '; '; } else { $str .= ($v === \true ? $k : "{$k}={$v}") . '; '; } } } return \rtrim($str, '; '); } public function toArray() : array { return $this->data; } /** * Get the cookie name. * * @return string */ public function getName() { return $this->data['Name']; } /** * Set the cookie name. * * @param string $name Cookie name */ public function setName($name) : void { if (!\is_string($name)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Name'] = (string) $name; } /** * Get the cookie value. * * @return string|null */ public function getValue() { return $this->data['Value']; } /** * Set the cookie value. * * @param string $value Cookie value */ public function setValue($value) : void { if (!\is_string($value)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Value'] = (string) $value; } /** * Get the domain. * * @return string|null */ public function getDomain() { return $this->data['Domain']; } /** * Set the domain of the cookie. * * @param string|null $domain */ public function setDomain($domain) : void { if (!\is_string($domain) && null !== $domain) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Domain'] = null === $domain ? null : (string) $domain; } /** * Get the path. * * @return string */ public function getPath() { return $this->data['Path']; } /** * Set the path of the cookie. * * @param string $path Path of the cookie */ public function setPath($path) : void { if (!\is_string($path)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Path'] = (string) $path; } /** * Maximum lifetime of the cookie in seconds. * * @return int|null */ public function getMaxAge() { return null === $this->data['Max-Age'] ? null : (int) $this->data['Max-Age']; } /** * Set the max-age of the cookie. * * @param int|null $maxAge Max age of the cookie in seconds */ public function setMaxAge($maxAge) : void { if (!\is_int($maxAge) && null !== $maxAge) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Max-Age'] = $maxAge === null ? null : (int) $maxAge; } /** * The UNIX timestamp when the cookie Expires. * * @return string|int|null */ public function getExpires() { return $this->data['Expires']; } /** * Set the unix timestamp for which the cookie will expire. * * @param int|string|null $timestamp Unix timestamp or any English textual datetime description. */ public function setExpires($timestamp) : void { if (!\is_int($timestamp) && !\is_string($timestamp) && null !== $timestamp) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int, string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Expires'] = null === $timestamp ? null : (\is_numeric($timestamp) ? (int) $timestamp : \strtotime((string) $timestamp)); } /** * Get whether or not this is a secure cookie. * * @return bool */ public function getSecure() { return $this->data['Secure']; } /** * Set whether or not the cookie is secure. * * @param bool $secure Set to true or false if secure */ public function setSecure($secure) : void { if (!\is_bool($secure)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Secure'] = (bool) $secure; } /** * Get whether or not this is a session cookie. * * @return bool|null */ public function getDiscard() { return $this->data['Discard']; } /** * Set whether or not this is a session cookie. * * @param bool $discard Set to true or false if this is a session cookie */ public function setDiscard($discard) : void { if (!\is_bool($discard)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['Discard'] = (bool) $discard; } /** * Get whether or not this is an HTTP only cookie. * * @return bool */ public function getHttpOnly() { return $this->data['HttpOnly']; } /** * Set whether or not this is an HTTP only cookie. * * @param bool $httpOnly Set to true or false if this is HTTP only */ public function setHttpOnly($httpOnly) : void { if (!\is_bool($httpOnly)) { trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__); } $this->data['HttpOnly'] = (bool) $httpOnly; } /** * Check if the cookie matches a path value. * * A request-path path-matches a given cookie-path if at least one of * the following conditions holds: * * - The cookie-path and the request-path are identical. * - The cookie-path is a prefix of the request-path, and the last * character of the cookie-path is %x2F ("/"). * - The cookie-path is a prefix of the request-path, and the first * character of the request-path that is not included in the cookie- * path is a %x2F ("/") character. * * @param string $requestPath Path to check against */ public function matchesPath(string $requestPath) : bool { $cookiePath = $this->getPath(); // Match on exact matches or when path is the default empty "/" if ($cookiePath === '/' || $cookiePath == $requestPath) { return \true; } // Ensure that the cookie-path is a prefix of the request path. if (0 !== \strpos($requestPath, $cookiePath)) { return \false; } // Match if the last character of the cookie-path is "/" if (\substr($cookiePath, -1, 1) === '/') { return \true; } // Match if the first character not included in cookie path is "/" return \substr($requestPath, \strlen($cookiePath), 1) === '/'; } /** * Check if the cookie matches a domain value. * * @param string $domain Domain to check against */ public function matchesDomain(string $domain) : bool { $cookieDomain = $this->getDomain(); if (null === $cookieDomain) { return \true; } // Remove the leading '.' as per spec in RFC 6265. // https://datatracker.ietf.org/doc/html/rfc6265#section-5.2.3 $cookieDomain = \ltrim(\strtolower($cookieDomain), '.'); $domain = \strtolower($domain); // Domain not set or exact match. if ('' === $cookieDomain || $domain === $cookieDomain) { return \true; } // Matching the subdomain according to RFC 6265. // https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.3 if (\filter_var($domain, \FILTER_VALIDATE_IP)) { return \false; } return (bool) \preg_match('/\\.' . \preg_quote($cookieDomain, '/') . '$/', $domain); } /** * Check if the cookie is expired. */ public function isExpired() : bool { return $this->getExpires() !== null && \time() > $this->getExpires(); } /** * Check if the cookie is valid according to RFC 6265. * * @return bool|string Returns true if valid or an error message if invalid */ public function validate() { $name = $this->getName(); if ($name === '') { return 'The cookie name must not be empty'; } // Check if any of the invalid characters are present in the cookie name if (\preg_match('/[\\x00-\\x20\\x22\\x28-\\x29\\x2c\\x2f\\x3a-\\x40\\x5c\\x7b\\x7d\\x7f]/', $name)) { return 'Cookie name must not contain invalid characters: ASCII ' . 'Control characters (0-31;127), space, tab and the ' . 'following characters: ()<>@,;:\\"/?={}'; } // Value must not be null. 0 and empty string are valid. Empty strings // are technically against RFC 6265, but known to happen in the wild. $value = $this->getValue(); if ($value === null) { return 'The cookie value must not be empty'; } // Domains must not be empty, but can be 0. "0" is not a valid internet // domain, but may be used as server name in a private network. $domain = $this->getDomain(); if ($domain === null || $domain === '') { return 'The cookie domain must not be empty'; } return \true; } } vendor_prefixed/guzzlehttp/guzzle/src/Cookie/CookieJar.php000064400000022706147206602470020065 0ustar00strictMode = $strictMode; foreach ($cookieArray as $cookie) { if (!$cookie instanceof \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie) { $cookie = new \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie($cookie); } $this->setCookie($cookie); } } /** * Create a new Cookie jar from an associative array and domain. * * @param array $cookies Cookies to create the jar from * @param string $domain Domain to set the cookies to */ public static function fromArray(array $cookies, string $domain) : self { $cookieJar = new self(); foreach ($cookies as $name => $value) { $cookieJar->setCookie(new \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie(['Domain' => $domain, 'Name' => $name, 'Value' => $value, 'Discard' => \true])); } return $cookieJar; } /** * Evaluate if this cookie should be persisted to storage * that survives between requests. * * @param SetCookie $cookie Being evaluated. * @param bool $allowSessionCookies If we should persist session cookies */ public static function shouldPersist(\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie, bool $allowSessionCookies = \false) : bool { if ($cookie->getExpires() || $allowSessionCookies) { if (!$cookie->getDiscard()) { return \true; } } return \false; } /** * Finds and returns the cookie based on the name * * @param string $name cookie name to search for * * @return SetCookie|null cookie that was found or null if not found */ public function getCookieByName(string $name) : ?\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie { foreach ($this->cookies as $cookie) { if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) { return $cookie; } } return null; } public function toArray() : array { return \array_map(static function (\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) : array { return $cookie->toArray(); }, $this->getIterator()->getArrayCopy()); } public function clear(string $domain = null, string $path = null, string $name = null) : void { if (!$domain) { $this->cookies = []; return; } elseif (!$path) { $this->cookies = \array_filter($this->cookies, static function (\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) use($domain) : bool { return !$cookie->matchesDomain($domain); }); } elseif (!$name) { $this->cookies = \array_filter($this->cookies, static function (\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain) : bool { return !($cookie->matchesPath($path) && $cookie->matchesDomain($domain)); }); } else { $this->cookies = \array_filter($this->cookies, static function (\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) use($path, $domain, $name) { return !($cookie->getName() == $name && $cookie->matchesPath($path) && $cookie->matchesDomain($domain)); }); } } public function clearSessionCookies() : void { $this->cookies = \array_filter($this->cookies, static function (\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) : bool { return !$cookie->getDiscard() && $cookie->getExpires(); }); } public function setCookie(\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) : bool { // If the name string is empty (but not 0), ignore the set-cookie // string entirely. $name = $cookie->getName(); if (!$name && $name !== '0') { return \false; } // Only allow cookies with set and valid domain, name, value $result = $cookie->validate(); if ($result !== \true) { if ($this->strictMode) { throw new \RuntimeException('Invalid cookie: ' . $result); } $this->removeCookieIfEmpty($cookie); return \false; } // Resolve conflicts with previously set cookies foreach ($this->cookies as $i => $c) { // Two cookies are identical, when their path, and domain are // identical. if ($c->getPath() != $cookie->getPath() || $c->getDomain() != $cookie->getDomain() || $c->getName() != $cookie->getName()) { continue; } // The previously set cookie is a discard cookie and this one is // not so allow the new cookie to be set if (!$cookie->getDiscard() && $c->getDiscard()) { unset($this->cookies[$i]); continue; } // If the new cookie's expiration is further into the future, then // replace the old cookie if ($cookie->getExpires() > $c->getExpires()) { unset($this->cookies[$i]); continue; } // If the value has changed, we better change it if ($cookie->getValue() !== $c->getValue()) { unset($this->cookies[$i]); continue; } // The cookie exists, so no need to continue return \false; } $this->cookies[] = $cookie; return \true; } public function count() : int { return \count($this->cookies); } /** * @return \ArrayIterator */ public function getIterator() : \ArrayIterator { return new \ArrayIterator(\array_values($this->cookies)); } public function extractCookies(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) : void { if ($cookieHeader = $response->getHeader('Set-Cookie')) { foreach ($cookieHeader as $cookie) { $sc = \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie::fromString($cookie); if (!$sc->getDomain()) { $sc->setDomain($request->getUri()->getHost()); } if (0 !== \strpos($sc->getPath(), '/')) { $sc->setPath($this->getCookiePathFromRequest($request)); } if (!$sc->matchesDomain($request->getUri()->getHost())) { continue; } // Note: At this point `$sc->getDomain()` being a public suffix should // be rejected, but we don't want to pull in the full PSL dependency. $this->setCookie($sc); } } } /** * Computes cookie path following RFC 6265 section 5.1.4 * * @see https://datatracker.ietf.org/doc/html/rfc6265#section-5.1.4 */ private function getCookiePathFromRequest(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) : string { $uriPath = $request->getUri()->getPath(); if ('' === $uriPath) { return '/'; } if (0 !== \strpos($uriPath, '/')) { return '/'; } if ('/' === $uriPath) { return '/'; } $lastSlashPos = \strrpos($uriPath, '/'); if (0 === $lastSlashPos || \false === $lastSlashPos) { return '/'; } return \substr($uriPath, 0, $lastSlashPos); } public function withCookieHeader(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { $values = []; $uri = $request->getUri(); $scheme = $uri->getScheme(); $host = $uri->getHost(); $path = $uri->getPath() ?: '/'; foreach ($this->cookies as $cookie) { if ($cookie->matchesPath($path) && $cookie->matchesDomain($host) && !$cookie->isExpired() && (!$cookie->getSecure() || $scheme === 'https')) { $values[] = $cookie->getName() . '=' . $cookie->getValue(); } } return $values ? $request->withHeader('Cookie', \implode('; ', $values)) : $request; } /** * If a cookie already exists and the server asks to set it again with a * null value, the cookie must be deleted. */ private function removeCookieIfEmpty(\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) : void { $cookieValue = $cookie->getValue(); if ($cookieValue === null || $cookieValue === '') { $this->clear($cookie->getDomain(), $cookie->getPath(), $cookie->getName()); } } } vendor_prefixed/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php000064400000004112147206602470021420 0ustar00sessionKey = $sessionKey; $this->storeSessionCookies = $storeSessionCookies; $this->load(); } /** * Saves cookies to session when shutting down */ public function __destruct() { $this->save(); } /** * Save cookies to the client session */ public function save() : void { $json = []; /** @var SetCookie $cookie */ foreach ($this as $cookie) { if (\YoastSEO_Vendor\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { $json[] = $cookie->toArray(); } } $_SESSION[$this->sessionKey] = \json_encode($json); } /** * Load the contents of the client session into the data array */ protected function load() : void { if (!isset($_SESSION[$this->sessionKey])) { return; } $data = \json_decode($_SESSION[$this->sessionKey], \true); if (\is_array($data)) { foreach ($data as $cookie) { $this->setCookie(new \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie($cookie)); } } elseif (\strlen($data)) { throw new \RuntimeException('Invalid cookie data'); } } } vendor_prefixed/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php000064400000005745147206602470021712 0ustar00 */ interface CookieJarInterface extends \Countable, \IteratorAggregate { /** * Create a request with added cookie headers. * * If no matching cookies are found in the cookie jar, then no Cookie * header is added to the request and the same request is returned. * * @param RequestInterface $request Request object to modify. * * @return RequestInterface returns the modified request. */ public function withCookieHeader(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface; /** * Extract cookies from an HTTP response and store them in the CookieJar. * * @param RequestInterface $request Request that was sent * @param ResponseInterface $response Response that was received */ public function extractCookies(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface $response) : void; /** * Sets a cookie in the cookie jar. * * @param SetCookie $cookie Cookie to set. * * @return bool Returns true on success or false on failure */ public function setCookie(\YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie $cookie) : bool; /** * Remove cookies currently held in the cookie jar. * * Invoking this method without arguments will empty the whole cookie jar. * If given a $domain argument only cookies belonging to that domain will * be removed. If given a $domain and $path argument, cookies belonging to * the specified path within that domain are removed. If given all three * arguments, then the cookie with the specified name, path and domain is * removed. * * @param string|null $domain Clears cookies matching a domain * @param string|null $path Clears cookies matching a domain and path * @param string|null $name Clears cookies matching a domain, path, and name */ public function clear(string $domain = null, string $path = null, string $name = null) : void; /** * Discard all sessions cookies. * * Removes cookies that don't have an expire field or a have a discard * field set to true. To be called when the user agent shuts down according * to RFC 2965. */ public function clearSessionCookies() : void; /** * Converts the cookie jar to an array. */ public function toArray() : array; } vendor_prefixed/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php000064400000005604147206602470020663 0ustar00filename = $cookieFile; $this->storeSessionCookies = $storeSessionCookies; if (\file_exists($cookieFile)) { $this->load($cookieFile); } } /** * Saves the file when shutting down */ public function __destruct() { $this->save($this->filename); } /** * Saves the cookies to a file. * * @param string $filename File to save * * @throws \RuntimeException if the file cannot be found or created */ public function save(string $filename) : void { $json = []; /** @var SetCookie $cookie */ foreach ($this as $cookie) { if (\YoastSEO_Vendor\GuzzleHttp\Cookie\CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { $json[] = $cookie->toArray(); } } $jsonStr = \YoastSEO_Vendor\GuzzleHttp\Utils::jsonEncode($json); if (\false === \file_put_contents($filename, $jsonStr, \LOCK_EX)) { throw new \RuntimeException("Unable to save file {$filename}"); } } /** * Load cookies from a JSON formatted file. * * Old cookies are kept unless overwritten by newly loaded ones. * * @param string $filename Cookie file to load. * * @throws \RuntimeException if the file cannot be loaded. */ public function load(string $filename) : void { $json = \file_get_contents($filename); if (\false === $json) { throw new \RuntimeException("Unable to load file {$filename}"); } if ($json === '') { return; } $data = \YoastSEO_Vendor\GuzzleHttp\Utils::jsonDecode($json, \true); if (\is_array($data)) { foreach ($data as $cookie) { $this->setCookie(new \YoastSEO_Vendor\GuzzleHttp\Cookie\SetCookie($cookie)); } } elseif (\is_scalar($data) && !empty($data)) { throw new \RuntimeException("Invalid cookie file: {$filename}"); } } } vendor_prefixed/guzzlehttp/guzzle/src/MessageFormatterInterface.php000064400000001243147206602470022070 0ustar00]+>|[^=]+/', $kvp, $matches)) { $m = $matches[0]; if (isset($m[1])) { $part[\trim($m[0], $trimmed)] = \trim($m[1], $trimmed); } else { $part[] = \trim($m[0], $trimmed); } } } if ($part) { $params[] = $part; } } } return $params; } /** * Converts an array of header values that may contain comma separated * headers into an array of headers with no comma separated values. * * @param string|array $header Header to normalize. * * @deprecated Use self::splitList() instead. */ public static function normalize($header) : array { $result = []; foreach ((array) $header as $value) { foreach (self::splitList($value) as $parsed) { $result[] = $parsed; } } return $result; } /** * Splits a HTTP header defined to contain a comma-separated list into * each individual value. Empty values will be removed. * * Example headers include 'accept', 'cache-control' and 'if-none-match'. * * This method must not be used to parse headers that are not defined as * a list, such as 'user-agent' or 'set-cookie'. * * @param string|string[] $values Header value as returned by MessageInterface::getHeader() * * @return string[] */ public static function splitList($values) : array { if (!\is_array($values)) { $values = [$values]; } $result = []; foreach ($values as $value) { if (!\is_string($value)) { throw new \TypeError('$header must either be a string or an array containing strings.'); } $v = ''; $isQuoted = \false; $isEscaped = \false; for ($i = 0, $max = \strlen($value); $i < $max; ++$i) { if ($isEscaped) { $v .= $value[$i]; $isEscaped = \false; continue; } if (!$isQuoted && $value[$i] === ',') { $v = \trim($v); if ($v !== '') { $result[] = $v; } $v = ''; continue; } if ($isQuoted && $value[$i] === '\\') { $isEscaped = \true; $v .= $value[$i]; continue; } if ($value[$i] === '"') { $isQuoted = !$isQuoted; $v .= $value[$i]; continue; } $v .= $value[$i]; } $v = \trim($v); if ($v !== '') { $result[] = $v; } } return $result; } } vendor_prefixed/guzzlehttp/psr7/src/Rfc7230.php000064400000001232147206602470015376 0ustar00@,;:\\\"/[\\]?={}\x01- ]++):[ \t]*+((?:[ \t]*+[!-~\x80-\xff]++)*+)[ \t]*+\r?\n)m"; public const HEADER_FOLD_REGEX = "(\r?\n[ \t]++)"; } vendor_prefixed/guzzlehttp/psr7/src/MessageTrait.php000064400000017343147206602470016752 0ustar00 array of values */ private $headers = []; /** @var string[] Map of lowercase header name => original name at registration */ private $headerNames = []; /** @var string */ private $protocol = '1.1'; /** @var StreamInterface|null */ private $stream; public function getProtocolVersion() : string { return $this->protocol; } public function withProtocolVersion($version) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface { if ($this->protocol === $version) { return $this; } $new = clone $this; $new->protocol = $version; return $new; } public function getHeaders() : array { return $this->headers; } public function hasHeader($header) : bool { return isset($this->headerNames[\strtolower($header)]); } public function getHeader($header) : array { $header = \strtolower($header); if (!isset($this->headerNames[$header])) { return []; } $header = $this->headerNames[$header]; return $this->headers[$header]; } public function getHeaderLine($header) : string { return \implode(', ', $this->getHeader($header)); } public function withHeader($header, $value) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface { $this->assertHeader($header); $value = $this->normalizeHeaderValue($value); $normalized = \strtolower($header); $new = clone $this; if (isset($new->headerNames[$normalized])) { unset($new->headers[$new->headerNames[$normalized]]); } $new->headerNames[$normalized] = $header; $new->headers[$header] = $value; return $new; } public function withAddedHeader($header, $value) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface { $this->assertHeader($header); $value = $this->normalizeHeaderValue($value); $normalized = \strtolower($header); $new = clone $this; if (isset($new->headerNames[$normalized])) { $header = $this->headerNames[$normalized]; $new->headers[$header] = \array_merge($this->headers[$header], $value); } else { $new->headerNames[$normalized] = $header; $new->headers[$header] = $value; } return $new; } public function withoutHeader($header) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface { $normalized = \strtolower($header); if (!isset($this->headerNames[$normalized])) { return $this; } $header = $this->headerNames[$normalized]; $new = clone $this; unset($new->headers[$header], $new->headerNames[$normalized]); return $new; } public function getBody() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { if (!$this->stream) { $this->stream = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor(''); } return $this->stream; } public function withBody(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $body) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface { if ($body === $this->stream) { return $this; } $new = clone $this; $new->stream = $body; return $new; } /** * @param (string|string[])[] $headers */ private function setHeaders(array $headers) : void { $this->headerNames = $this->headers = []; foreach ($headers as $header => $value) { // Numeric array keys are converted to int by PHP. $header = (string) $header; $this->assertHeader($header); $value = $this->normalizeHeaderValue($value); $normalized = \strtolower($header); if (isset($this->headerNames[$normalized])) { $header = $this->headerNames[$normalized]; $this->headers[$header] = \array_merge($this->headers[$header], $value); } else { $this->headerNames[$normalized] = $header; $this->headers[$header] = $value; } } } /** * @param mixed $value * * @return string[] */ private function normalizeHeaderValue($value) : array { if (!\is_array($value)) { return $this->trimAndValidateHeaderValues([$value]); } if (\count($value) === 0) { throw new \InvalidArgumentException('Header value can not be an empty array.'); } return $this->trimAndValidateHeaderValues($value); } /** * Trims whitespace from the header values. * * Spaces and tabs ought to be excluded by parsers when extracting the field value from a header field. * * header-field = field-name ":" OWS field-value OWS * OWS = *( SP / HTAB ) * * @param mixed[] $values Header values * * @return string[] Trimmed header values * * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4 */ private function trimAndValidateHeaderValues(array $values) : array { return \array_map(function ($value) { if (!\is_scalar($value) && null !== $value) { throw new \InvalidArgumentException(\sprintf('Header value must be scalar or null but %s provided.', \is_object($value) ? \get_class($value) : \gettype($value))); } $trimmed = \trim((string) $value, " \t"); $this->assertValue($trimmed); return $trimmed; }, \array_values($values)); } /** * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 * * @param mixed $header */ private function assertHeader($header) : void { if (!\is_string($header)) { throw new \InvalidArgumentException(\sprintf('Header name must be a string but %s provided.', \is_object($header) ? \get_class($header) : \gettype($header))); } if (!\preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) { throw new \InvalidArgumentException(\sprintf('"%s" is not valid header name.', $header)); } } /** * @see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2 * * field-value = *( field-content / obs-fold ) * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] * field-vchar = VCHAR / obs-text * VCHAR = %x21-7E * obs-text = %x80-FF * obs-fold = CRLF 1*( SP / HTAB ) */ private function assertValue(string $value) : void { // The regular expression intentionally does not support the obs-fold production, because as // per RFC 7230#3.2.4: // // A sender MUST NOT generate a message that includes // line folding (i.e., that has any field-value that contains a match to // the obs-fold rule) unless the message is intended for packaging // within the message/http media type. // // Clients must not send a request with line folding and a server sending folded headers is // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting // folding is not likely to break any legitimate use case. if (!\preg_match('/^[\\x20\\x09\\x21-\\x7E\\x80-\\xFF]*$/D', $value)) { throw new \InvalidArgumentException(\sprintf('"%s" is not valid header value.', $value)); } } } vendor_prefixed/guzzlehttp/psr7/src/Exception/MalformedUriException.php000064400000000405147206602470022554 0ustar00stream = $stream; $this->maxLength = $maxLength; } public function write($string) : int { $diff = $this->maxLength - $this->stream->getSize(); // Begin returning 0 when the underlying stream is too large. if ($diff <= 0) { return 0; } // Write the stream or a subset of the stream if needed. if (\strlen($string) < $diff) { return $this->stream->write($string); } return $this->stream->write(\substr($string, 0, $diff)); } } vendor_prefixed/guzzlehttp/psr7/src/Message.php000064400000020640147206602470015740 0ustar00getMethod() . ' ' . $message->getRequestTarget()) . ' HTTP/' . $message->getProtocolVersion(); if (!$message->hasHeader('host')) { $msg .= "\r\nHost: " . $message->getUri()->getHost(); } } elseif ($message instanceof \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface) { $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' . $message->getStatusCode() . ' ' . $message->getReasonPhrase(); } else { throw new \InvalidArgumentException('Unknown message type'); } foreach ($message->getHeaders() as $name => $values) { if (\is_string($name) && \strtolower($name) === 'set-cookie') { foreach ($values as $value) { $msg .= "\r\n{$name}: " . $value; } } else { $msg .= "\r\n{$name}: " . \implode(', ', $values); } } return "{$msg}\r\n\r\n" . $message->getBody(); } /** * Get a short summary of the message body. * * Will return `null` if the response is not printable. * * @param MessageInterface $message The message to get the body summary * @param int $truncateAt The maximum allowed size of the summary */ public static function bodySummary(\YoastSEO_Vendor\Psr\Http\Message\MessageInterface $message, int $truncateAt = 120) : ?string { $body = $message->getBody(); if (!$body->isSeekable() || !$body->isReadable()) { return null; } $size = $body->getSize(); if ($size === 0) { return null; } $body->rewind(); $summary = $body->read($truncateAt); $body->rewind(); if ($size > $truncateAt) { $summary .= ' (truncated...)'; } // Matches any printable character, including unicode characters: // letters, marks, numbers, punctuation, spacing, and separators. if (\preg_match('/[^\\pL\\pM\\pN\\pP\\pS\\pZ\\n\\r\\t]/u', $summary) !== 0) { return null; } return $summary; } /** * Attempts to rewind a message body and throws an exception on failure. * * The body of the message will only be rewound if a call to `tell()` * returns a value other than `0`. * * @param MessageInterface $message Message to rewind * * @throws \RuntimeException */ public static function rewindBody(\YoastSEO_Vendor\Psr\Http\Message\MessageInterface $message) : void { $body = $message->getBody(); if ($body->tell()) { $body->rewind(); } } /** * Parses an HTTP message into an associative array. * * The array contains the "start-line" key containing the start line of * the message, "headers" key containing an associative array of header * array values, and a "body" key containing the body of the message. * * @param string $message HTTP request or response to parse. */ public static function parseMessage(string $message) : array { if (!$message) { throw new \InvalidArgumentException('Invalid message'); } $message = \ltrim($message, "\r\n"); $messageParts = \preg_split("/\r?\n\r?\n/", $message, 2); if ($messageParts === \false || \count($messageParts) !== 2) { throw new \InvalidArgumentException('Invalid message: Missing header delimiter'); } [$rawHeaders, $body] = $messageParts; $rawHeaders .= "\r\n"; // Put back the delimiter we split previously $headerParts = \preg_split("/\r?\n/", $rawHeaders, 2); if ($headerParts === \false || \count($headerParts) !== 2) { throw new \InvalidArgumentException('Invalid message: Missing status line'); } [$startLine, $rawHeaders] = $headerParts; if (\preg_match("/(?:^HTTP\\/|^[A-Z]+ \\S+ HTTP\\/)(\\d+(?:\\.\\d+)?)/i", $startLine, $matches) && $matches[1] === '1.0') { // Header folding is deprecated for HTTP/1.1, but allowed in HTTP/1.0 $rawHeaders = \preg_replace(\YoastSEO_Vendor\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, ' ', $rawHeaders); } /** @var array[] $headerLines */ $count = \preg_match_all(\YoastSEO_Vendor\GuzzleHttp\Psr7\Rfc7230::HEADER_REGEX, $rawHeaders, $headerLines, \PREG_SET_ORDER); // If these aren't the same, then one line didn't match and there's an invalid header. if ($count !== \substr_count($rawHeaders, "\n")) { // Folding is deprecated, see https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4 if (\preg_match(\YoastSEO_Vendor\GuzzleHttp\Psr7\Rfc7230::HEADER_FOLD_REGEX, $rawHeaders)) { throw new \InvalidArgumentException('Invalid header syntax: Obsolete line folding'); } throw new \InvalidArgumentException('Invalid header syntax'); } $headers = []; foreach ($headerLines as $headerLine) { $headers[$headerLine[1]][] = $headerLine[2]; } return ['start-line' => $startLine, 'headers' => $headers, 'body' => $body]; } /** * Constructs a URI for an HTTP request message. * * @param string $path Path from the start-line * @param array $headers Array of headers (each value an array). */ public static function parseRequestUri(string $path, array $headers) : string { $hostKey = \array_filter(\array_keys($headers), function ($k) { // Numeric array keys are converted to int by PHP. $k = (string) $k; return \strtolower($k) === 'host'; }); // If no host is found, then a full URI cannot be constructed. if (!$hostKey) { return $path; } $host = $headers[\reset($hostKey)][0]; $scheme = \substr($host, -4) === ':443' ? 'https' : 'http'; return $scheme . '://' . $host . '/' . \ltrim($path, '/'); } /** * Parses a request message string into a request object. * * @param string $message Request message string. */ public static function parseRequest(string $message) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { $data = self::parseMessage($message); $matches = []; if (!\preg_match('/^[\\S]+\\s+([a-zA-Z]+:\\/\\/|\\/).*/', $data['start-line'], $matches)) { throw new \InvalidArgumentException('Invalid request string'); } $parts = \explode(' ', $data['start-line'], 3); $version = isset($parts[2]) ? \explode('/', $parts[2])[1] : '1.1'; $request = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Request($parts[0], $matches[1] === '/' ? self::parseRequestUri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); } /** * Parses a response message string into a response object. * * @param string $message Response message string. */ public static function parseResponse(string $message) : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { $data = self::parseMessage($message); // According to https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2 // the space between status-code and reason-phrase is required. But // browsers accept responses without space and reason as well. if (!\preg_match('/^HTTP\\/.* [0-9]{3}( .*|$)/', $data['start-line'])) { throw new \InvalidArgumentException('Invalid response string: ' . $data['start-line']); } $parts = \explode(' ', $data['start-line'], 3); return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Response((int) $parts[1], $data['headers'], $data['body'], \explode('/', $parts[0])[1], $parts[2] ?? null); } } vendor_prefixed/guzzlehttp/psr7/src/Request.php000064400000010143147206602470016001 0ustar00assertMethod($method); if (!$uri instanceof \YoastSEO_Vendor\Psr\Http\Message\UriInterface) { $uri = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri($uri); } $this->method = \strtoupper($method); $this->uri = $uri; $this->setHeaders($headers); $this->protocol = $version; if (!isset($this->headerNames['host'])) { $this->updateHostFromUri(); } if ($body !== '' && $body !== null) { $this->stream = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($body); } } public function getRequestTarget() : string { if ($this->requestTarget !== null) { return $this->requestTarget; } $target = $this->uri->getPath(); if ($target === '') { $target = '/'; } if ($this->uri->getQuery() != '') { $target .= '?' . $this->uri->getQuery(); } return $target; } public function withRequestTarget($requestTarget) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { if (\preg_match('#\\s#', $requestTarget)) { throw new \InvalidArgumentException('Invalid request target provided; cannot contain whitespace'); } $new = clone $this; $new->requestTarget = $requestTarget; return $new; } public function getMethod() : string { return $this->method; } public function withMethod($method) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { $this->assertMethod($method); $new = clone $this; $new->method = \strtoupper($method); return $new; } public function getUri() : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { return $this->uri; } public function withUri(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, $preserveHost = \false) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { if ($uri === $this->uri) { return $this; } $new = clone $this; $new->uri = $uri; if (!$preserveHost || !isset($this->headerNames['host'])) { $new->updateHostFromUri(); } return $new; } private function updateHostFromUri() : void { $host = $this->uri->getHost(); if ($host == '') { return; } if (($port = $this->uri->getPort()) !== null) { $host .= ':' . $port; } if (isset($this->headerNames['host'])) { $header = $this->headerNames['host']; } else { $header = 'Host'; $this->headerNames['host'] = 'Host'; } // Ensure Host is the first header. // See: https://datatracker.ietf.org/doc/html/rfc7230#section-5.4 $this->headers = [$header => [$host]] + $this->headers; } /** * @param mixed $method */ private function assertMethod($method) : void { if (!\is_string($method) || $method === '') { throw new \InvalidArgumentException('Method must be a non-empty string.'); } } } vendor_prefixed/guzzlehttp/psr7/src/Query.php000064400000007140147206602470015461 0ustar00 '1', 'foo[b]' => '2'])`. * * @param string $str Query string to parse * @param int|bool $urlEncoding How the query string is encoded */ public static function parse(string $str, $urlEncoding = \true) : array { $result = []; if ($str === '') { return $result; } if ($urlEncoding === \true) { $decoder = function ($value) { return \rawurldecode(\str_replace('+', ' ', (string) $value)); }; } elseif ($urlEncoding === \PHP_QUERY_RFC3986) { $decoder = 'rawurldecode'; } elseif ($urlEncoding === \PHP_QUERY_RFC1738) { $decoder = 'urldecode'; } else { $decoder = function ($str) { return $str; }; } foreach (\explode('&', $str) as $kvp) { $parts = \explode('=', $kvp, 2); $key = $decoder($parts[0]); $value = isset($parts[1]) ? $decoder($parts[1]) : null; if (!\array_key_exists($key, $result)) { $result[$key] = $value; } else { if (!\is_array($result[$key])) { $result[$key] = [$result[$key]]; } $result[$key][] = $value; } } return $result; } /** * Build a query string from an array of key value pairs. * * This function can use the return value of `parse()` to build a query * string. This function does not modify the provided keys when an array is * encountered (like `http_build_query()` would). * * @param array $params Query string parameters. * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC1738. */ public static function build(array $params, $encoding = \PHP_QUERY_RFC3986) : string { if (!$params) { return ''; } if ($encoding === \false) { $encoder = function (string $str) : string { return $str; }; } elseif ($encoding === \PHP_QUERY_RFC3986) { $encoder = 'rawurlencode'; } elseif ($encoding === \PHP_QUERY_RFC1738) { $encoder = 'urlencode'; } else { throw new \InvalidArgumentException('Invalid type'); } $qs = ''; foreach ($params as $k => $v) { $k = $encoder((string) $k); if (!\is_array($v)) { $qs .= $k; $v = \is_bool($v) ? (int) $v : $v; if ($v !== null) { $qs .= '=' . $encoder((string) $v); } $qs .= '&'; } else { foreach ($v as $vv) { $qs .= $k; $vv = \is_bool($vv) ? (int) $vv : $vv; if ($vv !== null) { $qs .= '=' . $encoder((string) $vv); } $qs .= '&'; } } } return $qs ? (string) \substr($qs, 0, -1) : ''; } } vendor_prefixed/guzzlehttp/psr7/src/MultipartStream.php000064400000012371147206602470017513 0ustar00boundary = $boundary ?: \bin2hex(\random_bytes(20)); $this->stream = $this->createStream($elements); } public function getBoundary() : string { return $this->boundary; } public function isWritable() : bool { return \false; } /** * Get the headers needed before transferring the content of a POST file * * @param string[] $headers */ private function getHeaders(array $headers) : string { $str = ''; foreach ($headers as $key => $value) { $str .= "{$key}: {$value}\r\n"; } return "--{$this->boundary}\r\n" . \trim($str) . "\r\n\r\n"; } /** * Create the aggregate stream that will be used to upload the POST data */ protected function createStream(array $elements = []) : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { $stream = new \YoastSEO_Vendor\GuzzleHttp\Psr7\AppendStream(); foreach ($elements as $element) { if (!\is_array($element)) { throw new \UnexpectedValueException('An array is expected'); } $this->addElement($stream, $element); } // Add the trailing boundary with CRLF $stream->addStream(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor("--{$this->boundary}--\r\n")); return $stream; } private function addElement(\YoastSEO_Vendor\GuzzleHttp\Psr7\AppendStream $stream, array $element) : void { foreach (['contents', 'name'] as $key) { if (!\array_key_exists($key, $element)) { throw new \InvalidArgumentException("A '{$key}' key is required"); } } $element['contents'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($element['contents']); if (empty($element['filename'])) { $uri = $element['contents']->getMetadata('uri'); if ($uri && \is_string($uri) && \substr($uri, 0, 6) !== 'php://' && \substr($uri, 0, 7) !== 'data://') { $element['filename'] = $uri; } } [$body, $headers] = $this->createElement($element['name'], $element['contents'], $element['filename'] ?? null, $element['headers'] ?? []); $stream->addStream(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($this->getHeaders($headers))); $stream->addStream($body); $stream->addStream(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor("\r\n")); } /** * @param string[] $headers * * @return array{0: StreamInterface, 1: string[]} */ private function createElement(string $name, \YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, ?string $filename, array $headers) : array { // Set a default content-disposition header if one was no provided $disposition = self::getHeader($headers, 'content-disposition'); if (!$disposition) { $headers['Content-Disposition'] = $filename === '0' || $filename ? \sprintf('form-data; name="%s"; filename="%s"', $name, \basename($filename)) : "form-data; name=\"{$name}\""; } // Set a default content-length header if one was no provided $length = self::getHeader($headers, 'content-length'); if (!$length) { if ($length = $stream->getSize()) { $headers['Content-Length'] = (string) $length; } } // Set a default Content-Type if one was not supplied $type = self::getHeader($headers, 'content-type'); if (!$type && ($filename === '0' || $filename)) { $headers['Content-Type'] = \YoastSEO_Vendor\GuzzleHttp\Psr7\MimeType::fromFilename($filename) ?? 'application/octet-stream'; } return [$stream, $headers]; } /** * @param string[] $headers */ private static function getHeader(array $headers, string $key) : ?string { $lowercaseHeader = \strtolower($key); foreach ($headers as $k => $v) { if (\strtolower((string) $k) === $lowercaseHeader) { return $v; } } return null; } } vendor_prefixed/guzzlehttp/psr7/src/UriNormalizer.php000064400000020702147206602470017155 0ustar00getPath() === '' && ($uri->getScheme() === 'http' || $uri->getScheme() === 'https')) { $uri = $uri->withPath('/'); } if ($flags & self::REMOVE_DEFAULT_HOST && $uri->getScheme() === 'file' && $uri->getHost() === 'localhost') { $uri = $uri->withHost(''); } if ($flags & self::REMOVE_DEFAULT_PORT && $uri->getPort() !== null && \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri::isDefaultPort($uri)) { $uri = $uri->withPort(null); } if ($flags & self::REMOVE_DOT_SEGMENTS && !\YoastSEO_Vendor\GuzzleHttp\Psr7\Uri::isRelativePathReference($uri)) { $uri = $uri->withPath(\YoastSEO_Vendor\GuzzleHttp\Psr7\UriResolver::removeDotSegments($uri->getPath())); } if ($flags & self::REMOVE_DUPLICATE_SLASHES) { $uri = $uri->withPath(\preg_replace('#//++#', '/', $uri->getPath())); } if ($flags & self::SORT_QUERY_PARAMETERS && $uri->getQuery() !== '') { $queryKeyValues = \explode('&', $uri->getQuery()); \sort($queryKeyValues); $uri = $uri->withQuery(\implode('&', $queryKeyValues)); } return $uri; } /** * Whether two URIs can be considered equivalent. * * Both URIs are normalized automatically before comparison with the given $normalizations bitmask. The method also * accepts relative URI references and returns true when they are equivalent. This of course assumes they will be * resolved against the same base URI. If this is not the case, determination of equivalence or difference of * relative references does not mean anything. * * @param UriInterface $uri1 An URI to compare * @param UriInterface $uri2 An URI to compare * @param int $normalizations A bitmask of normalizations to apply, see constants * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-6.1 */ public static function isEquivalent(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri1, \YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri2, int $normalizations = self::PRESERVING_NORMALIZATIONS) : bool { return (string) self::normalize($uri1, $normalizations) === (string) self::normalize($uri2, $normalizations); } private static function capitalizePercentEncoding(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $regex = '/(?:%[A-Fa-f0-9]{2})++/'; $callback = function (array $match) : string { return \strtoupper($match[0]); }; return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); } private static function decodeUnreservedCharacters(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $regex = '/%(?:2D|2E|5F|7E|3[0-9]|[46][1-9A-F]|[57][0-9A])/i'; $callback = function (array $match) : string { return \rawurldecode($match[0]); }; return $uri->withPath(\preg_replace_callback($regex, $callback, $uri->getPath()))->withQuery(\preg_replace_callback($regex, $callback, $uri->getQuery())); } private function __construct() { // cannot be instantiated } } vendor_prefixed/guzzlehttp/psr7/src/Utils.php000064400000036735147206602470015470 0ustar00 $v) { if (!\in_array(\strtolower((string) $k), $keys)) { $result[$k] = $v; } } return $result; } /** * Copy the contents of a stream into another stream until the given number * of bytes have been read. * * @param StreamInterface $source Stream to read from * @param StreamInterface $dest Stream to write to * @param int $maxLen Maximum number of bytes to read. Pass -1 * to read the entire stream. * * @throws \RuntimeException on error. */ public static function copyToStream(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $source, \YoastSEO_Vendor\Psr\Http\Message\StreamInterface $dest, int $maxLen = -1) : void { $bufferSize = 8192; if ($maxLen === -1) { while (!$source->eof()) { if (!$dest->write($source->read($bufferSize))) { break; } } } else { $remaining = $maxLen; while ($remaining > 0 && !$source->eof()) { $buf = $source->read(\min($bufferSize, $remaining)); $len = \strlen($buf); if (!$len) { break; } $remaining -= $len; $dest->write($buf); } } } /** * Copy the contents of a stream into a string until the given number of * bytes have been read. * * @param StreamInterface $stream Stream to read * @param int $maxLen Maximum number of bytes to read. Pass -1 * to read the entire stream. * * @throws \RuntimeException on error. */ public static function copyToString(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, int $maxLen = -1) : string { $buffer = ''; if ($maxLen === -1) { while (!$stream->eof()) { $buf = $stream->read(1048576); if ($buf === '') { break; } $buffer .= $buf; } return $buffer; } $len = 0; while (!$stream->eof() && $len < $maxLen) { $buf = $stream->read($maxLen - $len); if ($buf === '') { break; } $buffer .= $buf; $len = \strlen($buffer); } return $buffer; } /** * Calculate a hash of a stream. * * This method reads the entire stream to calculate a rolling hash, based * on PHP's `hash_init` functions. * * @param StreamInterface $stream Stream to calculate the hash for * @param string $algo Hash algorithm (e.g. md5, crc32, etc) * @param bool $rawOutput Whether or not to use raw output * * @throws \RuntimeException on error. */ public static function hash(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, string $algo, bool $rawOutput = \false) : string { $pos = $stream->tell(); if ($pos > 0) { $stream->rewind(); } $ctx = \hash_init($algo); while (!$stream->eof()) { \hash_update($ctx, $stream->read(1048576)); } $out = \hash_final($ctx, $rawOutput); $stream->seek($pos); return $out; } /** * Clone and modify a request with the given changes. * * This method is useful for reducing the number of clones needed to mutate * a message. * * The changes can be one of: * - method: (string) Changes the HTTP method. * - set_headers: (array) Sets the given headers. * - remove_headers: (array) Remove the given headers. * - body: (mixed) Sets the given body. * - uri: (UriInterface) Set the URI. * - query: (string) Set the query string value of the URI. * - version: (string) Set the protocol version. * * @param RequestInterface $request Request to clone and modify. * @param array $changes Changes to apply. */ public static function modifyRequest(\YoastSEO_Vendor\Psr\Http\Message\RequestInterface $request, array $changes) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { if (!$changes) { return $request; } $headers = $request->getHeaders(); if (!isset($changes['uri'])) { $uri = $request->getUri(); } else { // Remove the host header if one is on the URI if ($host = $changes['uri']->getHost()) { $changes['set_headers']['Host'] = $host; if ($port = $changes['uri']->getPort()) { $standardPorts = ['http' => 80, 'https' => 443]; $scheme = $changes['uri']->getScheme(); if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { $changes['set_headers']['Host'] .= ':' . $port; } } } $uri = $changes['uri']; } if (!empty($changes['remove_headers'])) { $headers = self::caselessRemove($changes['remove_headers'], $headers); } if (!empty($changes['set_headers'])) { $headers = self::caselessRemove(\array_keys($changes['set_headers']), $headers); $headers = $changes['set_headers'] + $headers; } if (isset($changes['query'])) { $uri = $uri->withQuery($changes['query']); } if ($request instanceof \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface) { $new = (new \YoastSEO_Vendor\GuzzleHttp\Psr7\ServerRequest($changes['method'] ?? $request->getMethod(), $uri, $headers, $changes['body'] ?? $request->getBody(), $changes['version'] ?? $request->getProtocolVersion(), $request->getServerParams()))->withParsedBody($request->getParsedBody())->withQueryParams($request->getQueryParams())->withCookieParams($request->getCookieParams())->withUploadedFiles($request->getUploadedFiles()); foreach ($request->getAttributes() as $key => $value) { $new = $new->withAttribute($key, $value); } return $new; } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Request($changes['method'] ?? $request->getMethod(), $uri, $headers, $changes['body'] ?? $request->getBody(), $changes['version'] ?? $request->getProtocolVersion()); } /** * Read a line from the stream up to the maximum allowed buffer length. * * @param StreamInterface $stream Stream to read from * @param int|null $maxLength Maximum buffer length */ public static function readLine(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, int $maxLength = null) : string { $buffer = ''; $size = 0; while (!$stream->eof()) { if ('' === ($byte = $stream->read(1))) { return $buffer; } $buffer .= $byte; // Break when a new line is found or the max length - 1 is reached if ($byte === "\n" || ++$size === $maxLength - 1) { break; } } return $buffer; } /** * Create a new stream based on the input type. * * Options is an associative array that can contain the following keys: * - metadata: Array of custom metadata. * - size: Size of the stream. * * This method accepts the following `$resource` types: * - `Psr\Http\Message\StreamInterface`: Returns the value as-is. * - `string`: Creates a stream object that uses the given string as the contents. * - `resource`: Creates a stream object that wraps the given PHP stream resource. * - `Iterator`: If the provided value implements `Iterator`, then a read-only * stream object will be created that wraps the given iterable. Each time the * stream is read from, data from the iterator will fill a buffer and will be * continuously called until the buffer is equal to the requested read size. * Subsequent read calls will first read from the buffer and then call `next` * on the underlying iterator until it is exhausted. * - `object` with `__toString()`: If the object has the `__toString()` method, * the object will be cast to a string and then a stream will be returned that * uses the string value. * - `NULL`: When `null` is passed, an empty stream object is returned. * - `callable` When a callable is passed, a read-only stream object will be * created that invokes the given callable. The callable is invoked with the * number of suggested bytes to read. The callable can return any number of * bytes, but MUST return `false` when there is no more data to return. The * stream object that wraps the callable will invoke the callable until the * number of requested bytes are available. Any additional bytes will be * buffered and used in subsequent reads. * * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data * @param array{size?: int, metadata?: array} $options Additional options * * @throws \InvalidArgumentException if the $resource arg is not valid. */ public static function streamFor($resource = '', array $options = []) : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { if (\is_scalar($resource)) { $stream = self::tryFopen('php://temp', 'r+'); if ($resource !== '') { \fwrite($stream, (string) $resource); \fseek($stream, 0); } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($stream, $options); } switch (\gettype($resource)) { case 'resource': /* * The 'php://input' is a special stream with quirks and inconsistencies. * We avoid using that stream by reading it into php://temp */ /** @var resource $resource */ if ((\stream_get_meta_data($resource)['uri'] ?? '') === 'php://input') { $stream = self::tryFopen('php://temp', 'w+'); \stream_copy_to_stream($resource, $stream); \fseek($stream, 0); $resource = $stream; } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($resource, $options); case 'object': /** @var object $resource */ if ($resource instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) { return $resource; } elseif ($resource instanceof \Iterator) { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\PumpStream(function () use($resource) { if (!$resource->valid()) { return \false; } $result = $resource->current(); $resource->next(); return $result; }, $options); } elseif (\method_exists($resource, '__toString')) { return self::streamFor((string) $resource, $options); } break; case 'NULL': return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream(self::tryFopen('php://temp', 'r+'), $options); } if (\is_callable($resource)) { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\PumpStream($resource, $options); } throw new \InvalidArgumentException('Invalid resource type: ' . \gettype($resource)); } /** * Safely opens a PHP stream resource using a filename. * * When fopen fails, PHP normally raises a warning. This function adds an * error handler that checks for errors and throws an exception instead. * * @param string $filename File to open * @param string $mode Mode used to open the file * * @return resource * * @throws \RuntimeException if the file cannot be opened */ public static function tryFopen(string $filename, string $mode) { $ex = null; \set_error_handler(static function (int $errno, string $errstr) use($filename, $mode, &$ex) : bool { $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, $errstr)); return \true; }); try { /** @var resource $handle */ $handle = \fopen($filename, $mode); } catch (\Throwable $e) { $ex = new \RuntimeException(\sprintf('Unable to open "%s" using mode "%s": %s', $filename, $mode, $e->getMessage()), 0, $e); } \restore_error_handler(); if ($ex) { /** @var $ex \RuntimeException */ throw $ex; } return $handle; } /** * Safely gets the contents of a given stream. * * When stream_get_contents fails, PHP normally raises a warning. This * function adds an error handler that checks for errors and throws an * exception instead. * * @param resource $stream * * @throws \RuntimeException if the stream cannot be read */ public static function tryGetContents($stream) : string { $ex = null; \set_error_handler(static function (int $errno, string $errstr) use(&$ex) : bool { $ex = new \RuntimeException(\sprintf('Unable to read stream contents: %s', $errstr)); return \true; }); try { /** @var string|false $contents */ $contents = \stream_get_contents($stream); if ($contents === \false) { $ex = new \RuntimeException('Unable to read stream contents'); } } catch (\Throwable $e) { $ex = new \RuntimeException(\sprintf('Unable to read stream contents: %s', $e->getMessage()), 0, $e); } \restore_error_handler(); if ($ex) { /** @var $ex \RuntimeException */ throw $ex; } return $contents; } /** * Returns a UriInterface for the given value. * * This function accepts a string or UriInterface and returns a * UriInterface for the given value. If the value is already a * UriInterface, it is returned as-is. * * @param string|UriInterface $uri * * @throws \InvalidArgumentException */ public static function uriFor($uri) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { if ($uri instanceof \YoastSEO_Vendor\Psr\Http\Message\UriInterface) { return $uri; } if (\is_string($uri)) { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri($uri); } throw new \InvalidArgumentException('URI must be a string or UriInterface'); } } vendor_prefixed/guzzlehttp/psr7/src/FnStream.php000064400000010416147206602470016073 0ustar00 */ private $methods; /** * @param array $methods Hash of method name to a callable. */ public function __construct(array $methods) { $this->methods = $methods; // Create the functions on the class foreach ($methods as $name => $fn) { $this->{'_fn_' . $name} = $fn; } } /** * Lazily determine which methods are not implemented. * * @throws \BadMethodCallException */ public function __get(string $name) : void { throw new \BadMethodCallException(\str_replace('_fn_', '', $name) . '() is not implemented in the FnStream'); } /** * The close method is called on the underlying stream only if possible. */ public function __destruct() { if (isset($this->_fn_close)) { ($this->_fn_close)(); } } /** * An unserialize would allow the __destruct to run when the unserialized value goes out of scope. * * @throws \LogicException */ public function __wakeup() : void { throw new \LogicException('FnStream should never be unserialized'); } /** * Adds custom functionality to an underlying stream by intercepting * specific method calls. * * @param StreamInterface $stream Stream to decorate * @param array $methods Hash of method name to a closure * * @return FnStream */ public static function decorate(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream, array $methods) { // If any of the required methods were not provided, then simply // proxy to the decorated stream. foreach (\array_diff(self::SLOTS, \array_keys($methods)) as $diff) { /** @var callable $callable */ $callable = [$stream, $diff]; $methods[$diff] = $callable; } return new self($methods); } public function __toString() : string { try { /** @var string */ return ($this->_fn___toString)(); } catch (\Throwable $e) { if (\PHP_VERSION_ID >= 70400) { throw $e; } \trigger_error(\sprintf('%s::__toString exception: %s', self::class, (string) $e), \E_USER_ERROR); return ''; } } public function close() : void { ($this->_fn_close)(); } public function detach() { return ($this->_fn_detach)(); } public function getSize() : ?int { return ($this->_fn_getSize)(); } public function tell() : int { return ($this->_fn_tell)(); } public function eof() : bool { return ($this->_fn_eof)(); } public function isSeekable() : bool { return ($this->_fn_isSeekable)(); } public function rewind() : void { ($this->_fn_rewind)(); } public function seek($offset, $whence = \SEEK_SET) : void { ($this->_fn_seek)($offset, $whence); } public function isWritable() : bool { return ($this->_fn_isWritable)(); } public function write($string) : int { return ($this->_fn_write)($string); } public function isReadable() : bool { return ($this->_fn_isReadable)(); } public function read($length) : string { return ($this->_fn_read)($length); } public function getContents() : string { return ($this->_fn_getContents)(); } /** * @return mixed */ public function getMetadata($key = null) { return ($this->_fn_getMetadata)($key); } } vendor_prefixed/guzzlehttp/psr7/src/LimitStream.php000064400000010316147206602470016605 0ustar00stream = $stream; $this->setLimit($limit); $this->setOffset($offset); } public function eof() : bool { // Always return true if the underlying stream is EOF if ($this->stream->eof()) { return \true; } // No limit and the underlying stream is not at EOF if ($this->limit === -1) { return \false; } return $this->stream->tell() >= $this->offset + $this->limit; } /** * Returns the size of the limited subset of data */ public function getSize() : ?int { if (null === ($length = $this->stream->getSize())) { return null; } elseif ($this->limit === -1) { return $length - $this->offset; } else { return \min($this->limit, $length - $this->offset); } } /** * Allow for a bounded seek on the read limited stream */ public function seek($offset, $whence = \SEEK_SET) : void { if ($whence !== \SEEK_SET || $offset < 0) { throw new \RuntimeException(\sprintf('Cannot seek to offset %s with whence %s', $offset, $whence)); } $offset += $this->offset; if ($this->limit !== -1) { if ($offset > $this->offset + $this->limit) { $offset = $this->offset + $this->limit; } } $this->stream->seek($offset); } /** * Give a relative tell() */ public function tell() : int { return $this->stream->tell() - $this->offset; } /** * Set the offset to start limiting from * * @param int $offset Offset to seek to and begin byte limiting from * * @throws \RuntimeException if the stream cannot be seeked. */ public function setOffset(int $offset) : void { $current = $this->stream->tell(); if ($current !== $offset) { // If the stream cannot seek to the offset position, then read to it if ($this->stream->isSeekable()) { $this->stream->seek($offset); } elseif ($current > $offset) { throw new \RuntimeException("Could not seek to stream offset {$offset}"); } else { $this->stream->read($offset - $current); } } $this->offset = $offset; } /** * Set the limit of bytes that the decorator allows to be read from the * stream. * * @param int $limit Number of bytes to allow to be read from the stream. * Use -1 for no limit. */ public function setLimit(int $limit) : void { $this->limit = $limit; } public function read($length) : string { if ($this->limit === -1) { return $this->stream->read($length); } // Check if the current position is less than the total allowed // bytes + original offset $remaining = $this->offset + $this->limit - $this->stream->tell(); if ($remaining > 0) { // Only return the amount of requested data, ensuring that the byte // limit is not exceeded return $this->stream->read(\min($remaining, $length)); } return ''; } } vendor_prefixed/guzzlehttp/psr7/src/MimeType.php000064400000130251147206602470016105 0ustar00 'application/vnd.1000minds.decision-model+xml', '3dml' => 'text/vnd.in3d.3dml', '3ds' => 'image/x-3ds', '3g2' => 'video/3gpp2', '3gp' => 'video/3gp', '3gpp' => 'video/3gpp', '3mf' => 'model/3mf', '7z' => 'application/x-7z-compressed', '7zip' => 'application/x-7z-compressed', '123' => 'application/vnd.lotus-1-2-3', 'aab' => 'application/x-authorware-bin', 'aac' => 'audio/aac', 'aam' => 'application/x-authorware-map', 'aas' => 'application/x-authorware-seg', 'abw' => 'application/x-abiword', 'ac' => 'application/vnd.nokia.n-gage.ac+xml', 'ac3' => 'audio/ac3', 'acc' => 'application/vnd.americandynamics.acc', 'ace' => 'application/x-ace-compressed', 'acu' => 'application/vnd.acucobol', 'acutc' => 'application/vnd.acucorp', 'adp' => 'audio/adpcm', 'adts' => 'audio/aac', 'aep' => 'application/vnd.audiograph', 'afm' => 'application/x-font-type1', 'afp' => 'application/vnd.ibm.modcap', 'age' => 'application/vnd.age', 'ahead' => 'application/vnd.ahead.space', 'ai' => 'application/pdf', 'aif' => 'audio/x-aiff', 'aifc' => 'audio/x-aiff', 'aiff' => 'audio/x-aiff', 'air' => 'application/vnd.adobe.air-application-installer-package+zip', 'ait' => 'application/vnd.dvb.ait', 'ami' => 'application/vnd.amiga.ami', 'aml' => 'application/automationml-aml+xml', 'amlx' => 'application/automationml-amlx+zip', 'amr' => 'audio/amr', 'apk' => 'application/vnd.android.package-archive', 'apng' => 'image/apng', 'appcache' => 'text/cache-manifest', 'appinstaller' => 'application/appinstaller', 'application' => 'application/x-ms-application', 'appx' => 'application/appx', 'appxbundle' => 'application/appxbundle', 'apr' => 'application/vnd.lotus-approach', 'arc' => 'application/x-freearc', 'arj' => 'application/x-arj', 'asc' => 'application/pgp-signature', 'asf' => 'video/x-ms-asf', 'asm' => 'text/x-asm', 'aso' => 'application/vnd.accpac.simply.aso', 'asx' => 'video/x-ms-asf', 'atc' => 'application/vnd.acucorp', 'atom' => 'application/atom+xml', 'atomcat' => 'application/atomcat+xml', 'atomdeleted' => 'application/atomdeleted+xml', 'atomsvc' => 'application/atomsvc+xml', 'atx' => 'application/vnd.antix.game-component', 'au' => 'audio/x-au', 'avci' => 'image/avci', 'avcs' => 'image/avcs', 'avi' => 'video/x-msvideo', 'avif' => 'image/avif', 'aw' => 'application/applixware', 'azf' => 'application/vnd.airzip.filesecure.azf', 'azs' => 'application/vnd.airzip.filesecure.azs', 'azv' => 'image/vnd.airzip.accelerator.azv', 'azw' => 'application/vnd.amazon.ebook', 'b16' => 'image/vnd.pco.b16', 'bat' => 'application/x-msdownload', 'bcpio' => 'application/x-bcpio', 'bdf' => 'application/x-font-bdf', 'bdm' => 'application/vnd.syncml.dm+wbxml', 'bdoc' => 'application/x-bdoc', 'bed' => 'application/vnd.realvnc.bed', 'bh2' => 'application/vnd.fujitsu.oasysprs', 'bin' => 'application/octet-stream', 'blb' => 'application/x-blorb', 'blorb' => 'application/x-blorb', 'bmi' => 'application/vnd.bmi', 'bmml' => 'application/vnd.balsamiq.bmml+xml', 'bmp' => 'image/bmp', 'book' => 'application/vnd.framemaker', 'box' => 'application/vnd.previewsystems.box', 'boz' => 'application/x-bzip2', 'bpk' => 'application/octet-stream', 'bpmn' => 'application/octet-stream', 'bsp' => 'model/vnd.valve.source.compiled-map', 'btf' => 'image/prs.btif', 'btif' => 'image/prs.btif', 'buffer' => 'application/octet-stream', 'bz' => 'application/x-bzip', 'bz2' => 'application/x-bzip2', 'c' => 'text/x-c', 'c4d' => 'application/vnd.clonk.c4group', 'c4f' => 'application/vnd.clonk.c4group', 'c4g' => 'application/vnd.clonk.c4group', 'c4p' => 'application/vnd.clonk.c4group', 'c4u' => 'application/vnd.clonk.c4group', 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', 'cab' => 'application/vnd.ms-cab-compressed', 'caf' => 'audio/x-caf', 'cap' => 'application/vnd.tcpdump.pcap', 'car' => 'application/vnd.curl.car', 'cat' => 'application/vnd.ms-pki.seccat', 'cb7' => 'application/x-cbr', 'cba' => 'application/x-cbr', 'cbr' => 'application/x-cbr', 'cbt' => 'application/x-cbr', 'cbz' => 'application/x-cbr', 'cc' => 'text/x-c', 'cco' => 'application/x-cocoa', 'cct' => 'application/x-director', 'ccxml' => 'application/ccxml+xml', 'cdbcmsg' => 'application/vnd.contact.cmsg', 'cdf' => 'application/x-netcdf', 'cdfx' => 'application/cdfx+xml', 'cdkey' => 'application/vnd.mediastation.cdkey', 'cdmia' => 'application/cdmi-capability', 'cdmic' => 'application/cdmi-container', 'cdmid' => 'application/cdmi-domain', 'cdmio' => 'application/cdmi-object', 'cdmiq' => 'application/cdmi-queue', 'cdr' => 'application/cdr', 'cdx' => 'chemical/x-cdx', 'cdxml' => 'application/vnd.chemdraw+xml', 'cdy' => 'application/vnd.cinderella', 'cer' => 'application/pkix-cert', 'cfs' => 'application/x-cfs-compressed', 'cgm' => 'image/cgm', 'chat' => 'application/x-chat', 'chm' => 'application/vnd.ms-htmlhelp', 'chrt' => 'application/vnd.kde.kchart', 'cif' => 'chemical/x-cif', 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', 'cil' => 'application/vnd.ms-artgalry', 'cjs' => 'application/node', 'cla' => 'application/vnd.claymore', 'class' => 'application/octet-stream', 'cld' => 'model/vnd.cld', 'clkk' => 'application/vnd.crick.clicker.keyboard', 'clkp' => 'application/vnd.crick.clicker.palette', 'clkt' => 'application/vnd.crick.clicker.template', 'clkw' => 'application/vnd.crick.clicker.wordbank', 'clkx' => 'application/vnd.crick.clicker', 'clp' => 'application/x-msclip', 'cmc' => 'application/vnd.cosmocaller', 'cmdf' => 'chemical/x-cmdf', 'cml' => 'chemical/x-cml', 'cmp' => 'application/vnd.yellowriver-custom-menu', 'cmx' => 'image/x-cmx', 'cod' => 'application/vnd.rim.cod', 'coffee' => 'text/coffeescript', 'com' => 'application/x-msdownload', 'conf' => 'text/plain', 'cpio' => 'application/x-cpio', 'cpl' => 'application/cpl+xml', 'cpp' => 'text/x-c', 'cpt' => 'application/mac-compactpro', 'crd' => 'application/x-mscardfile', 'crl' => 'application/pkix-crl', 'crt' => 'application/x-x509-ca-cert', 'crx' => 'application/x-chrome-extension', 'cryptonote' => 'application/vnd.rig.cryptonote', 'csh' => 'application/x-csh', 'csl' => 'application/vnd.citationstyles.style+xml', 'csml' => 'chemical/x-csml', 'csp' => 'application/vnd.commonspace', 'csr' => 'application/octet-stream', 'css' => 'text/css', 'cst' => 'application/x-director', 'csv' => 'text/csv', 'cu' => 'application/cu-seeme', 'curl' => 'text/vnd.curl', 'cwl' => 'application/cwl', 'cww' => 'application/prs.cww', 'cxt' => 'application/x-director', 'cxx' => 'text/x-c', 'dae' => 'model/vnd.collada+xml', 'daf' => 'application/vnd.mobius.daf', 'dart' => 'application/vnd.dart', 'dataless' => 'application/vnd.fdsn.seed', 'davmount' => 'application/davmount+xml', 'dbf' => 'application/vnd.dbf', 'dbk' => 'application/docbook+xml', 'dcr' => 'application/x-director', 'dcurl' => 'text/vnd.curl.dcurl', 'dd2' => 'application/vnd.oma.dd2+xml', 'ddd' => 'application/vnd.fujixerox.ddd', 'ddf' => 'application/vnd.syncml.dmddf+xml', 'dds' => 'image/vnd.ms-dds', 'deb' => 'application/x-debian-package', 'def' => 'text/plain', 'deploy' => 'application/octet-stream', 'der' => 'application/x-x509-ca-cert', 'dfac' => 'application/vnd.dreamfactory', 'dgc' => 'application/x-dgc-compressed', 'dib' => 'image/bmp', 'dic' => 'text/x-c', 'dir' => 'application/x-director', 'dis' => 'application/vnd.mobius.dis', 'disposition-notification' => 'message/disposition-notification', 'dist' => 'application/octet-stream', 'distz' => 'application/octet-stream', 'djv' => 'image/vnd.djvu', 'djvu' => 'image/vnd.djvu', 'dll' => 'application/octet-stream', 'dmg' => 'application/x-apple-diskimage', 'dmn' => 'application/octet-stream', 'dmp' => 'application/vnd.tcpdump.pcap', 'dms' => 'application/octet-stream', 'dna' => 'application/vnd.dna', 'doc' => 'application/msword', 'docm' => 'application/vnd.ms-word.template.macroEnabled.12', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dot' => 'application/msword', 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12', 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'dp' => 'application/vnd.osgi.dp', 'dpg' => 'application/vnd.dpgraph', 'dpx' => 'image/dpx', 'dra' => 'audio/vnd.dra', 'drle' => 'image/dicom-rle', 'dsc' => 'text/prs.lines.tag', 'dssc' => 'application/dssc+der', 'dtb' => 'application/x-dtbook+xml', 'dtd' => 'application/xml-dtd', 'dts' => 'audio/vnd.dts', 'dtshd' => 'audio/vnd.dts.hd', 'dump' => 'application/octet-stream', 'dvb' => 'video/vnd.dvb.file', 'dvi' => 'application/x-dvi', 'dwd' => 'application/atsc-dwd+xml', 'dwf' => 'model/vnd.dwf', 'dwg' => 'image/vnd.dwg', 'dxf' => 'image/vnd.dxf', 'dxp' => 'application/vnd.spotfire.dxp', 'dxr' => 'application/x-director', 'ear' => 'application/java-archive', 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', 'ecma' => 'application/ecmascript', 'edm' => 'application/vnd.novadigm.edm', 'edx' => 'application/vnd.novadigm.edx', 'efif' => 'application/vnd.picsel', 'ei6' => 'application/vnd.pg.osasli', 'elc' => 'application/octet-stream', 'emf' => 'image/emf', 'eml' => 'message/rfc822', 'emma' => 'application/emma+xml', 'emotionml' => 'application/emotionml+xml', 'emz' => 'application/x-msmetafile', 'eol' => 'audio/vnd.digital-winds', 'eot' => 'application/vnd.ms-fontobject', 'eps' => 'application/postscript', 'epub' => 'application/epub+zip', 'es3' => 'application/vnd.eszigno3+xml', 'esa' => 'application/vnd.osgi.subsystem', 'esf' => 'application/vnd.epson.esf', 'et3' => 'application/vnd.eszigno3+xml', 'etx' => 'text/x-setext', 'eva' => 'application/x-eva', 'evy' => 'application/x-envoy', 'exe' => 'application/octet-stream', 'exi' => 'application/exi', 'exp' => 'application/express', 'exr' => 'image/aces', 'ext' => 'application/vnd.novadigm.ext', 'ez' => 'application/andrew-inset', 'ez2' => 'application/vnd.ezpix-album', 'ez3' => 'application/vnd.ezpix-package', 'f' => 'text/x-fortran', 'f4v' => 'video/mp4', 'f77' => 'text/x-fortran', 'f90' => 'text/x-fortran', 'fbs' => 'image/vnd.fastbidsheet', 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', 'fcs' => 'application/vnd.isac.fcs', 'fdf' => 'application/vnd.fdf', 'fdt' => 'application/fdt+xml', 'fe_launch' => 'application/vnd.denovo.fcselayout-link', 'fg5' => 'application/vnd.fujitsu.oasysgp', 'fgd' => 'application/x-director', 'fh' => 'image/x-freehand', 'fh4' => 'image/x-freehand', 'fh5' => 'image/x-freehand', 'fh7' => 'image/x-freehand', 'fhc' => 'image/x-freehand', 'fig' => 'application/x-xfig', 'fits' => 'image/fits', 'flac' => 'audio/x-flac', 'fli' => 'video/x-fli', 'flo' => 'application/vnd.micrografx.flo', 'flv' => 'video/x-flv', 'flw' => 'application/vnd.kde.kivio', 'flx' => 'text/vnd.fmi.flexstor', 'fly' => 'text/vnd.fly', 'fm' => 'application/vnd.framemaker', 'fnc' => 'application/vnd.frogans.fnc', 'fo' => 'application/vnd.software602.filler.form+xml', 'for' => 'text/x-fortran', 'fpx' => 'image/vnd.fpx', 'frame' => 'application/vnd.framemaker', 'fsc' => 'application/vnd.fsc.weblaunch', 'fst' => 'image/vnd.fst', 'ftc' => 'application/vnd.fluxtime.clip', 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', 'fvt' => 'video/vnd.fvt', 'fxp' => 'application/vnd.adobe.fxp', 'fxpl' => 'application/vnd.adobe.fxp', 'fzs' => 'application/vnd.fuzzysheet', 'g2w' => 'application/vnd.geoplan', 'g3' => 'image/g3fax', 'g3w' => 'application/vnd.geospace', 'gac' => 'application/vnd.groove-account', 'gam' => 'application/x-tads', 'gbr' => 'application/rpki-ghostbusters', 'gca' => 'application/x-gca-compressed', 'gdl' => 'model/vnd.gdl', 'gdoc' => 'application/vnd.google-apps.document', 'ged' => 'text/vnd.familysearch.gedcom', 'geo' => 'application/vnd.dynageo', 'geojson' => 'application/geo+json', 'gex' => 'application/vnd.geometry-explorer', 'ggb' => 'application/vnd.geogebra.file', 'ggt' => 'application/vnd.geogebra.tool', 'ghf' => 'application/vnd.groove-help', 'gif' => 'image/gif', 'gim' => 'application/vnd.groove-identity-message', 'glb' => 'model/gltf-binary', 'gltf' => 'model/gltf+json', 'gml' => 'application/gml+xml', 'gmx' => 'application/vnd.gmx', 'gnumeric' => 'application/x-gnumeric', 'gpg' => 'application/gpg-keys', 'gph' => 'application/vnd.flographit', 'gpx' => 'application/gpx+xml', 'gqf' => 'application/vnd.grafeq', 'gqs' => 'application/vnd.grafeq', 'gram' => 'application/srgs', 'gramps' => 'application/x-gramps-xml', 'gre' => 'application/vnd.geometry-explorer', 'grv' => 'application/vnd.groove-injector', 'grxml' => 'application/srgs+xml', 'gsf' => 'application/x-font-ghostscript', 'gsheet' => 'application/vnd.google-apps.spreadsheet', 'gslides' => 'application/vnd.google-apps.presentation', 'gtar' => 'application/x-gtar', 'gtm' => 'application/vnd.groove-tool-message', 'gtw' => 'model/vnd.gtw', 'gv' => 'text/vnd.graphviz', 'gxf' => 'application/gxf', 'gxt' => 'application/vnd.geonext', 'gz' => 'application/gzip', 'gzip' => 'application/gzip', 'h' => 'text/x-c', 'h261' => 'video/h261', 'h263' => 'video/h263', 'h264' => 'video/h264', 'hal' => 'application/vnd.hal+xml', 'hbci' => 'application/vnd.hbci', 'hbs' => 'text/x-handlebars-template', 'hdd' => 'application/x-virtualbox-hdd', 'hdf' => 'application/x-hdf', 'heic' => 'image/heic', 'heics' => 'image/heic-sequence', 'heif' => 'image/heif', 'heifs' => 'image/heif-sequence', 'hej2' => 'image/hej2k', 'held' => 'application/atsc-held+xml', 'hh' => 'text/x-c', 'hjson' => 'application/hjson', 'hlp' => 'application/winhlp', 'hpgl' => 'application/vnd.hp-hpgl', 'hpid' => 'application/vnd.hp-hpid', 'hps' => 'application/vnd.hp-hps', 'hqx' => 'application/mac-binhex40', 'hsj2' => 'image/hsj2', 'htc' => 'text/x-component', 'htke' => 'application/vnd.kenameaapp', 'htm' => 'text/html', 'html' => 'text/html', 'hvd' => 'application/vnd.yamaha.hv-dic', 'hvp' => 'application/vnd.yamaha.hv-voice', 'hvs' => 'application/vnd.yamaha.hv-script', 'i2g' => 'application/vnd.intergeo', 'icc' => 'application/vnd.iccprofile', 'ice' => 'x-conference/x-cooltalk', 'icm' => 'application/vnd.iccprofile', 'ico' => 'image/x-icon', 'ics' => 'text/calendar', 'ief' => 'image/ief', 'ifb' => 'text/calendar', 'ifm' => 'application/vnd.shana.informed.formdata', 'iges' => 'model/iges', 'igl' => 'application/vnd.igloader', 'igm' => 'application/vnd.insors.igm', 'igs' => 'model/iges', 'igx' => 'application/vnd.micrografx.igx', 'iif' => 'application/vnd.shana.informed.interchange', 'img' => 'application/octet-stream', 'imp' => 'application/vnd.accpac.simply.imp', 'ims' => 'application/vnd.ms-ims', 'in' => 'text/plain', 'ini' => 'text/plain', 'ink' => 'application/inkml+xml', 'inkml' => 'application/inkml+xml', 'install' => 'application/x-install-instructions', 'iota' => 'application/vnd.astraea-software.iota', 'ipfix' => 'application/ipfix', 'ipk' => 'application/vnd.shana.informed.package', 'irm' => 'application/vnd.ibm.rights-management', 'irp' => 'application/vnd.irepository.package+xml', 'iso' => 'application/x-iso9660-image', 'itp' => 'application/vnd.shana.informed.formtemplate', 'its' => 'application/its+xml', 'ivp' => 'application/vnd.immervision-ivp', 'ivu' => 'application/vnd.immervision-ivu', 'jad' => 'text/vnd.sun.j2me.app-descriptor', 'jade' => 'text/jade', 'jam' => 'application/vnd.jam', 'jar' => 'application/java-archive', 'jardiff' => 'application/x-java-archive-diff', 'java' => 'text/x-java-source', 'jhc' => 'image/jphc', 'jisp' => 'application/vnd.jisp', 'jls' => 'image/jls', 'jlt' => 'application/vnd.hp-jlyt', 'jng' => 'image/x-jng', 'jnlp' => 'application/x-java-jnlp-file', 'joda' => 'application/vnd.joost.joda-archive', 'jp2' => 'image/jp2', 'jpe' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'jpf' => 'image/jpx', 'jpg' => 'image/jpeg', 'jpg2' => 'image/jp2', 'jpgm' => 'video/jpm', 'jpgv' => 'video/jpeg', 'jph' => 'image/jph', 'jpm' => 'video/jpm', 'jpx' => 'image/jpx', 'js' => 'application/javascript', 'json' => 'application/json', 'json5' => 'application/json5', 'jsonld' => 'application/ld+json', 'jsonml' => 'application/jsonml+json', 'jsx' => 'text/jsx', 'jt' => 'model/jt', 'jxr' => 'image/jxr', 'jxra' => 'image/jxra', 'jxrs' => 'image/jxrs', 'jxs' => 'image/jxs', 'jxsc' => 'image/jxsc', 'jxsi' => 'image/jxsi', 'jxss' => 'image/jxss', 'kar' => 'audio/midi', 'karbon' => 'application/vnd.kde.karbon', 'kdb' => 'application/octet-stream', 'kdbx' => 'application/x-keepass2', 'key' => 'application/x-iwork-keynote-sffkey', 'kfo' => 'application/vnd.kde.kformula', 'kia' => 'application/vnd.kidspiration', 'kml' => 'application/vnd.google-earth.kml+xml', 'kmz' => 'application/vnd.google-earth.kmz', 'kne' => 'application/vnd.kinar', 'knp' => 'application/vnd.kinar', 'kon' => 'application/vnd.kde.kontour', 'kpr' => 'application/vnd.kde.kpresenter', 'kpt' => 'application/vnd.kde.kpresenter', 'kpxx' => 'application/vnd.ds-keypoint', 'ksp' => 'application/vnd.kde.kspread', 'ktr' => 'application/vnd.kahootz', 'ktx' => 'image/ktx', 'ktx2' => 'image/ktx2', 'ktz' => 'application/vnd.kahootz', 'kwd' => 'application/vnd.kde.kword', 'kwt' => 'application/vnd.kde.kword', 'lasxml' => 'application/vnd.las.las+xml', 'latex' => 'application/x-latex', 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', 'les' => 'application/vnd.hhe.lesson-player', 'less' => 'text/less', 'lgr' => 'application/lgr+xml', 'lha' => 'application/octet-stream', 'link66' => 'application/vnd.route66.link66+xml', 'list' => 'text/plain', 'list3820' => 'application/vnd.ibm.modcap', 'listafp' => 'application/vnd.ibm.modcap', 'litcoffee' => 'text/coffeescript', 'lnk' => 'application/x-ms-shortcut', 'log' => 'text/plain', 'lostxml' => 'application/lost+xml', 'lrf' => 'application/octet-stream', 'lrm' => 'application/vnd.ms-lrm', 'ltf' => 'application/vnd.frogans.ltf', 'lua' => 'text/x-lua', 'luac' => 'application/x-lua-bytecode', 'lvp' => 'audio/vnd.lucent.voice', 'lwp' => 'application/vnd.lotus-wordpro', 'lzh' => 'application/octet-stream', 'm1v' => 'video/mpeg', 'm2a' => 'audio/mpeg', 'm2v' => 'video/mpeg', 'm3a' => 'audio/mpeg', 'm3u' => 'text/plain', 'm3u8' => 'application/vnd.apple.mpegurl', 'm4a' => 'audio/x-m4a', 'm4p' => 'application/mp4', 'm4s' => 'video/iso.segment', 'm4u' => 'application/vnd.mpegurl', 'm4v' => 'video/x-m4v', 'm13' => 'application/x-msmediaview', 'm14' => 'application/x-msmediaview', 'm21' => 'application/mp21', 'ma' => 'application/mathematica', 'mads' => 'application/mads+xml', 'maei' => 'application/mmt-aei+xml', 'mag' => 'application/vnd.ecowin.chart', 'maker' => 'application/vnd.framemaker', 'man' => 'text/troff', 'manifest' => 'text/cache-manifest', 'map' => 'application/json', 'mar' => 'application/octet-stream', 'markdown' => 'text/markdown', 'mathml' => 'application/mathml+xml', 'mb' => 'application/mathematica', 'mbk' => 'application/vnd.mobius.mbk', 'mbox' => 'application/mbox', 'mc1' => 'application/vnd.medcalcdata', 'mcd' => 'application/vnd.mcd', 'mcurl' => 'text/vnd.curl.mcurl', 'md' => 'text/markdown', 'mdb' => 'application/x-msaccess', 'mdi' => 'image/vnd.ms-modi', 'mdx' => 'text/mdx', 'me' => 'text/troff', 'mesh' => 'model/mesh', 'meta4' => 'application/metalink4+xml', 'metalink' => 'application/metalink+xml', 'mets' => 'application/mets+xml', 'mfm' => 'application/vnd.mfmp', 'mft' => 'application/rpki-manifest', 'mgp' => 'application/vnd.osgeo.mapguide.package', 'mgz' => 'application/vnd.proteus.magazine', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mie' => 'application/x-mie', 'mif' => 'application/vnd.mif', 'mime' => 'message/rfc822', 'mj2' => 'video/mj2', 'mjp2' => 'video/mj2', 'mjs' => 'text/javascript', 'mk3d' => 'video/x-matroska', 'mka' => 'audio/x-matroska', 'mkd' => 'text/x-markdown', 'mks' => 'video/x-matroska', 'mkv' => 'video/x-matroska', 'mlp' => 'application/vnd.dolby.mlp', 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', 'mmf' => 'application/vnd.smaf', 'mml' => 'text/mathml', 'mmr' => 'image/vnd.fujixerox.edmics-mmr', 'mng' => 'video/x-mng', 'mny' => 'application/x-msmoney', 'mobi' => 'application/x-mobipocket-ebook', 'mods' => 'application/mods+xml', 'mov' => 'video/quicktime', 'movie' => 'video/x-sgi-movie', 'mp2' => 'audio/mpeg', 'mp2a' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'mp4' => 'video/mp4', 'mp4a' => 'audio/mp4', 'mp4s' => 'application/mp4', 'mp4v' => 'video/mp4', 'mp21' => 'application/mp21', 'mpc' => 'application/vnd.mophun.certificate', 'mpd' => 'application/dash+xml', 'mpe' => 'video/mpeg', 'mpeg' => 'video/mpeg', 'mpf' => 'application/media-policy-dataset+xml', 'mpg' => 'video/mpeg', 'mpg4' => 'video/mp4', 'mpga' => 'audio/mpeg', 'mpkg' => 'application/vnd.apple.installer+xml', 'mpm' => 'application/vnd.blueice.multipass', 'mpn' => 'application/vnd.mophun.application', 'mpp' => 'application/vnd.ms-project', 'mpt' => 'application/vnd.ms-project', 'mpy' => 'application/vnd.ibm.minipay', 'mqy' => 'application/vnd.mobius.mqy', 'mrc' => 'application/marc', 'mrcx' => 'application/marcxml+xml', 'ms' => 'text/troff', 'mscml' => 'application/mediaservercontrol+xml', 'mseed' => 'application/vnd.fdsn.mseed', 'mseq' => 'application/vnd.mseq', 'msf' => 'application/vnd.epson.msf', 'msg' => 'application/vnd.ms-outlook', 'msh' => 'model/mesh', 'msi' => 'application/x-msdownload', 'msix' => 'application/msix', 'msixbundle' => 'application/msixbundle', 'msl' => 'application/vnd.mobius.msl', 'msm' => 'application/octet-stream', 'msp' => 'application/octet-stream', 'msty' => 'application/vnd.muvee.style', 'mtl' => 'model/mtl', 'mts' => 'model/vnd.mts', 'mus' => 'application/vnd.musician', 'musd' => 'application/mmt-usd+xml', 'musicxml' => 'application/vnd.recordare.musicxml+xml', 'mvb' => 'application/x-msmediaview', 'mvt' => 'application/vnd.mapbox-vector-tile', 'mwf' => 'application/vnd.mfer', 'mxf' => 'application/mxf', 'mxl' => 'application/vnd.recordare.musicxml', 'mxmf' => 'audio/mobile-xmf', 'mxml' => 'application/xv+xml', 'mxs' => 'application/vnd.triscape.mxs', 'mxu' => 'video/vnd.mpegurl', 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', 'n3' => 'text/n3', 'nb' => 'application/mathematica', 'nbp' => 'application/vnd.wolfram.player', 'nc' => 'application/x-netcdf', 'ncx' => 'application/x-dtbncx+xml', 'nfo' => 'text/x-nfo', 'ngdat' => 'application/vnd.nokia.n-gage.data', 'nitf' => 'application/vnd.nitf', 'nlu' => 'application/vnd.neurolanguage.nlu', 'nml' => 'application/vnd.enliven', 'nnd' => 'application/vnd.noblenet-directory', 'nns' => 'application/vnd.noblenet-sealer', 'nnw' => 'application/vnd.noblenet-web', 'npx' => 'image/vnd.net-fpx', 'nq' => 'application/n-quads', 'nsc' => 'application/x-conference', 'nsf' => 'application/vnd.lotus-notes', 'nt' => 'application/n-triples', 'ntf' => 'application/vnd.nitf', 'numbers' => 'application/x-iwork-numbers-sffnumbers', 'nzb' => 'application/x-nzb', 'oa2' => 'application/vnd.fujitsu.oasys2', 'oa3' => 'application/vnd.fujitsu.oasys3', 'oas' => 'application/vnd.fujitsu.oasys', 'obd' => 'application/x-msbinder', 'obgx' => 'application/vnd.openblox.game+xml', 'obj' => 'model/obj', 'oda' => 'application/oda', 'odb' => 'application/vnd.oasis.opendocument.database', 'odc' => 'application/vnd.oasis.opendocument.chart', 'odf' => 'application/vnd.oasis.opendocument.formula', 'odft' => 'application/vnd.oasis.opendocument.formula-template', 'odg' => 'application/vnd.oasis.opendocument.graphics', 'odi' => 'application/vnd.oasis.opendocument.image', 'odm' => 'application/vnd.oasis.opendocument.text-master', 'odp' => 'application/vnd.oasis.opendocument.presentation', 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', 'odt' => 'application/vnd.oasis.opendocument.text', 'oga' => 'audio/ogg', 'ogex' => 'model/vnd.opengex', 'ogg' => 'audio/ogg', 'ogv' => 'video/ogg', 'ogx' => 'application/ogg', 'omdoc' => 'application/omdoc+xml', 'onepkg' => 'application/onenote', 'onetmp' => 'application/onenote', 'onetoc' => 'application/onenote', 'onetoc2' => 'application/onenote', 'opf' => 'application/oebps-package+xml', 'opml' => 'text/x-opml', 'oprc' => 'application/vnd.palm', 'opus' => 'audio/ogg', 'org' => 'text/x-org', 'osf' => 'application/vnd.yamaha.openscoreformat', 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', 'osm' => 'application/vnd.openstreetmap.data+xml', 'otc' => 'application/vnd.oasis.opendocument.chart-template', 'otf' => 'font/otf', 'otg' => 'application/vnd.oasis.opendocument.graphics-template', 'oth' => 'application/vnd.oasis.opendocument.text-web', 'oti' => 'application/vnd.oasis.opendocument.image-template', 'otp' => 'application/vnd.oasis.opendocument.presentation-template', 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', 'ott' => 'application/vnd.oasis.opendocument.text-template', 'ova' => 'application/x-virtualbox-ova', 'ovf' => 'application/x-virtualbox-ovf', 'owl' => 'application/rdf+xml', 'oxps' => 'application/oxps', 'oxt' => 'application/vnd.openofficeorg.extension', 'p' => 'text/x-pascal', 'p7a' => 'application/x-pkcs7-signature', 'p7b' => 'application/x-pkcs7-certificates', 'p7c' => 'application/pkcs7-mime', 'p7m' => 'application/pkcs7-mime', 'p7r' => 'application/x-pkcs7-certreqresp', 'p7s' => 'application/pkcs7-signature', 'p8' => 'application/pkcs8', 'p10' => 'application/x-pkcs10', 'p12' => 'application/x-pkcs12', 'pac' => 'application/x-ns-proxy-autoconfig', 'pages' => 'application/x-iwork-pages-sffpages', 'pas' => 'text/x-pascal', 'paw' => 'application/vnd.pawaafile', 'pbd' => 'application/vnd.powerbuilder6', 'pbm' => 'image/x-portable-bitmap', 'pcap' => 'application/vnd.tcpdump.pcap', 'pcf' => 'application/x-font-pcf', 'pcl' => 'application/vnd.hp-pcl', 'pclxl' => 'application/vnd.hp-pclxl', 'pct' => 'image/x-pict', 'pcurl' => 'application/vnd.curl.pcurl', 'pcx' => 'image/x-pcx', 'pdb' => 'application/x-pilot', 'pde' => 'text/x-processing', 'pdf' => 'application/pdf', 'pem' => 'application/x-x509-user-cert', 'pfa' => 'application/x-font-type1', 'pfb' => 'application/x-font-type1', 'pfm' => 'application/x-font-type1', 'pfr' => 'application/font-tdpfr', 'pfx' => 'application/x-pkcs12', 'pgm' => 'image/x-portable-graymap', 'pgn' => 'application/x-chess-pgn', 'pgp' => 'application/pgp', 'phar' => 'application/octet-stream', 'php' => 'application/x-httpd-php', 'php3' => 'application/x-httpd-php', 'php4' => 'application/x-httpd-php', 'phps' => 'application/x-httpd-php-source', 'phtml' => 'application/x-httpd-php', 'pic' => 'image/x-pict', 'pkg' => 'application/octet-stream', 'pki' => 'application/pkixcmp', 'pkipath' => 'application/pkix-pkipath', 'pkpass' => 'application/vnd.apple.pkpass', 'pl' => 'application/x-perl', 'plb' => 'application/vnd.3gpp.pic-bw-large', 'plc' => 'application/vnd.mobius.plc', 'plf' => 'application/vnd.pocketlearn', 'pls' => 'application/pls+xml', 'pm' => 'application/x-perl', 'pml' => 'application/vnd.ctc-posml', 'png' => 'image/png', 'pnm' => 'image/x-portable-anymap', 'portpkg' => 'application/vnd.macports.portpkg', 'pot' => 'application/vnd.ms-powerpoint', 'potm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', 'ppa' => 'application/vnd.ms-powerpoint', 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12', 'ppd' => 'application/vnd.cups-ppd', 'ppm' => 'image/x-portable-pixmap', 'pps' => 'application/vnd.ms-powerpoint', 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12', 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'ppt' => 'application/powerpoint', 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12', 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pqa' => 'application/vnd.palm', 'prc' => 'model/prc', 'pre' => 'application/vnd.lotus-freelance', 'prf' => 'application/pics-rules', 'provx' => 'application/provenance+xml', 'ps' => 'application/postscript', 'psb' => 'application/vnd.3gpp.pic-bw-small', 'psd' => 'application/x-photoshop', 'psf' => 'application/x-font-linux-psf', 'pskcxml' => 'application/pskc+xml', 'pti' => 'image/prs.pti', 'ptid' => 'application/vnd.pvi.ptid1', 'pub' => 'application/x-mspublisher', 'pvb' => 'application/vnd.3gpp.pic-bw-var', 'pwn' => 'application/vnd.3m.post-it-notes', 'pya' => 'audio/vnd.ms-playready.media.pya', 'pyo' => 'model/vnd.pytha.pyox', 'pyox' => 'model/vnd.pytha.pyox', 'pyv' => 'video/vnd.ms-playready.media.pyv', 'qam' => 'application/vnd.epson.quickanime', 'qbo' => 'application/vnd.intu.qbo', 'qfx' => 'application/vnd.intu.qfx', 'qps' => 'application/vnd.publishare-delta-tree', 'qt' => 'video/quicktime', 'qwd' => 'application/vnd.quark.quarkxpress', 'qwt' => 'application/vnd.quark.quarkxpress', 'qxb' => 'application/vnd.quark.quarkxpress', 'qxd' => 'application/vnd.quark.quarkxpress', 'qxl' => 'application/vnd.quark.quarkxpress', 'qxt' => 'application/vnd.quark.quarkxpress', 'ra' => 'audio/x-realaudio', 'ram' => 'audio/x-pn-realaudio', 'raml' => 'application/raml+yaml', 'rapd' => 'application/route-apd+xml', 'rar' => 'application/x-rar', 'ras' => 'image/x-cmu-raster', 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', 'rdf' => 'application/rdf+xml', 'rdz' => 'application/vnd.data-vision.rdz', 'relo' => 'application/p2p-overlay+xml', 'rep' => 'application/vnd.businessobjects', 'res' => 'application/x-dtbresource+xml', 'rgb' => 'image/x-rgb', 'rif' => 'application/reginfo+xml', 'rip' => 'audio/vnd.rip', 'ris' => 'application/x-research-info-systems', 'rl' => 'application/resource-lists+xml', 'rlc' => 'image/vnd.fujixerox.edmics-rlc', 'rld' => 'application/resource-lists-diff+xml', 'rm' => 'audio/x-pn-realaudio', 'rmi' => 'audio/midi', 'rmp' => 'audio/x-pn-realaudio-plugin', 'rms' => 'application/vnd.jcp.javame.midlet-rms', 'rmvb' => 'application/vnd.rn-realmedia-vbr', 'rnc' => 'application/relax-ng-compact-syntax', 'rng' => 'application/xml', 'roa' => 'application/rpki-roa', 'roff' => 'text/troff', 'rp9' => 'application/vnd.cloanto.rp9', 'rpm' => 'audio/x-pn-realaudio-plugin', 'rpss' => 'application/vnd.nokia.radio-presets', 'rpst' => 'application/vnd.nokia.radio-preset', 'rq' => 'application/sparql-query', 'rs' => 'application/rls-services+xml', 'rsa' => 'application/x-pkcs7', 'rsat' => 'application/atsc-rsat+xml', 'rsd' => 'application/rsd+xml', 'rsheet' => 'application/urc-ressheet+xml', 'rss' => 'application/rss+xml', 'rtf' => 'text/rtf', 'rtx' => 'text/richtext', 'run' => 'application/x-makeself', 'rusd' => 'application/route-usd+xml', 'rv' => 'video/vnd.rn-realvideo', 's' => 'text/x-asm', 's3m' => 'audio/s3m', 'saf' => 'application/vnd.yamaha.smaf-audio', 'sass' => 'text/x-sass', 'sbml' => 'application/sbml+xml', 'sc' => 'application/vnd.ibm.secure-container', 'scd' => 'application/x-msschedule', 'scm' => 'application/vnd.lotus-screencam', 'scq' => 'application/scvp-cv-request', 'scs' => 'application/scvp-cv-response', 'scss' => 'text/x-scss', 'scurl' => 'text/vnd.curl.scurl', 'sda' => 'application/vnd.stardivision.draw', 'sdc' => 'application/vnd.stardivision.calc', 'sdd' => 'application/vnd.stardivision.impress', 'sdkd' => 'application/vnd.solent.sdkm+xml', 'sdkm' => 'application/vnd.solent.sdkm+xml', 'sdp' => 'application/sdp', 'sdw' => 'application/vnd.stardivision.writer', 'sea' => 'application/octet-stream', 'see' => 'application/vnd.seemail', 'seed' => 'application/vnd.fdsn.seed', 'sema' => 'application/vnd.sema', 'semd' => 'application/vnd.semd', 'semf' => 'application/vnd.semf', 'senmlx' => 'application/senml+xml', 'sensmlx' => 'application/sensml+xml', 'ser' => 'application/java-serialized-object', 'setpay' => 'application/set-payment-initiation', 'setreg' => 'application/set-registration-initiation', 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', 'sfs' => 'application/vnd.spotfire.sfs', 'sfv' => 'text/x-sfv', 'sgi' => 'image/sgi', 'sgl' => 'application/vnd.stardivision.writer-global', 'sgm' => 'text/sgml', 'sgml' => 'text/sgml', 'sh' => 'application/x-sh', 'shar' => 'application/x-shar', 'shex' => 'text/shex', 'shf' => 'application/shf+xml', 'shtml' => 'text/html', 'sid' => 'image/x-mrsid-image', 'sieve' => 'application/sieve', 'sig' => 'application/pgp-signature', 'sil' => 'audio/silk', 'silo' => 'model/mesh', 'sis' => 'application/vnd.symbian.install', 'sisx' => 'application/vnd.symbian.install', 'sit' => 'application/x-stuffit', 'sitx' => 'application/x-stuffitx', 'siv' => 'application/sieve', 'skd' => 'application/vnd.koan', 'skm' => 'application/vnd.koan', 'skp' => 'application/vnd.koan', 'skt' => 'application/vnd.koan', 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', 'slim' => 'text/slim', 'slm' => 'text/slim', 'sls' => 'application/route-s-tsid+xml', 'slt' => 'application/vnd.epson.salt', 'sm' => 'application/vnd.stepmania.stepchart', 'smf' => 'application/vnd.stardivision.math', 'smi' => 'application/smil', 'smil' => 'application/smil', 'smv' => 'video/x-smv', 'smzip' => 'application/vnd.stepmania.package', 'snd' => 'audio/basic', 'snf' => 'application/x-font-snf', 'so' => 'application/octet-stream', 'spc' => 'application/x-pkcs7-certificates', 'spdx' => 'text/spdx', 'spf' => 'application/vnd.yamaha.smaf-phrase', 'spl' => 'application/x-futuresplash', 'spot' => 'text/vnd.in3d.spot', 'spp' => 'application/scvp-vp-response', 'spq' => 'application/scvp-vp-request', 'spx' => 'audio/ogg', 'sql' => 'application/x-sql', 'src' => 'application/x-wais-source', 'srt' => 'application/x-subrip', 'sru' => 'application/sru+xml', 'srx' => 'application/sparql-results+xml', 'ssdl' => 'application/ssdl+xml', 'sse' => 'application/vnd.kodak-descriptor', 'ssf' => 'application/vnd.epson.ssf', 'ssml' => 'application/ssml+xml', 'sst' => 'application/octet-stream', 'st' => 'application/vnd.sailingtracker.track', 'stc' => 'application/vnd.sun.xml.calc.template', 'std' => 'application/vnd.sun.xml.draw.template', 'step' => 'application/STEP', 'stf' => 'application/vnd.wt.stf', 'sti' => 'application/vnd.sun.xml.impress.template', 'stk' => 'application/hyperstudio', 'stl' => 'model/stl', 'stp' => 'application/STEP', 'stpx' => 'model/step+xml', 'stpxz' => 'model/step-xml+zip', 'stpz' => 'model/step+zip', 'str' => 'application/vnd.pg.format', 'stw' => 'application/vnd.sun.xml.writer.template', 'styl' => 'text/stylus', 'stylus' => 'text/stylus', 'sub' => 'text/vnd.dvb.subtitle', 'sus' => 'application/vnd.sus-calendar', 'susp' => 'application/vnd.sus-calendar', 'sv4cpio' => 'application/x-sv4cpio', 'sv4crc' => 'application/x-sv4crc', 'svc' => 'application/vnd.dvb.service', 'svd' => 'application/vnd.svd', 'svg' => 'image/svg+xml', 'svgz' => 'image/svg+xml', 'swa' => 'application/x-director', 'swf' => 'application/x-shockwave-flash', 'swi' => 'application/vnd.aristanetworks.swi', 'swidtag' => 'application/swid+xml', 'sxc' => 'application/vnd.sun.xml.calc', 'sxd' => 'application/vnd.sun.xml.draw', 'sxg' => 'application/vnd.sun.xml.writer.global', 'sxi' => 'application/vnd.sun.xml.impress', 'sxm' => 'application/vnd.sun.xml.math', 'sxw' => 'application/vnd.sun.xml.writer', 't' => 'text/troff', 't3' => 'application/x-t3vm-image', 't38' => 'image/t38', 'taglet' => 'application/vnd.mynfc', 'tao' => 'application/vnd.tao.intent-module-archive', 'tap' => 'image/vnd.tencent.tap', 'tar' => 'application/x-tar', 'tcap' => 'application/vnd.3gpp2.tcap', 'tcl' => 'application/x-tcl', 'td' => 'application/urc-targetdesc+xml', 'teacher' => 'application/vnd.smart.teacher', 'tei' => 'application/tei+xml', 'teicorpus' => 'application/tei+xml', 'tex' => 'application/x-tex', 'texi' => 'application/x-texinfo', 'texinfo' => 'application/x-texinfo', 'text' => 'text/plain', 'tfi' => 'application/thraud+xml', 'tfm' => 'application/x-tex-tfm', 'tfx' => 'image/tiff-fx', 'tga' => 'image/x-tga', 'tgz' => 'application/x-tar', 'thmx' => 'application/vnd.ms-officetheme', 'tif' => 'image/tiff', 'tiff' => 'image/tiff', 'tk' => 'application/x-tcl', 'tmo' => 'application/vnd.tmobile-livetv', 'toml' => 'application/toml', 'torrent' => 'application/x-bittorrent', 'tpl' => 'application/vnd.groove-tool-template', 'tpt' => 'application/vnd.trid.tpt', 'tr' => 'text/troff', 'tra' => 'application/vnd.trueapp', 'trig' => 'application/trig', 'trm' => 'application/x-msterminal', 'ts' => 'video/mp2t', 'tsd' => 'application/timestamped-data', 'tsv' => 'text/tab-separated-values', 'ttc' => 'font/collection', 'ttf' => 'font/ttf', 'ttl' => 'text/turtle', 'ttml' => 'application/ttml+xml', 'twd' => 'application/vnd.simtech-mindmapper', 'twds' => 'application/vnd.simtech-mindmapper', 'txd' => 'application/vnd.genomatix.tuxedo', 'txf' => 'application/vnd.mobius.txf', 'txt' => 'text/plain', 'u3d' => 'model/u3d', 'u8dsn' => 'message/global-delivery-status', 'u8hdr' => 'message/global-headers', 'u8mdn' => 'message/global-disposition-notification', 'u8msg' => 'message/global', 'u32' => 'application/x-authorware-bin', 'ubj' => 'application/ubjson', 'udeb' => 'application/x-debian-package', 'ufd' => 'application/vnd.ufdl', 'ufdl' => 'application/vnd.ufdl', 'ulx' => 'application/x-glulx', 'umj' => 'application/vnd.umajin', 'unityweb' => 'application/vnd.unity', 'uo' => 'application/vnd.uoml+xml', 'uoml' => 'application/vnd.uoml+xml', 'uri' => 'text/uri-list', 'uris' => 'text/uri-list', 'urls' => 'text/uri-list', 'usda' => 'model/vnd.usda', 'usdz' => 'model/vnd.usdz+zip', 'ustar' => 'application/x-ustar', 'utz' => 'application/vnd.uiq.theme', 'uu' => 'text/x-uuencode', 'uva' => 'audio/vnd.dece.audio', 'uvd' => 'application/vnd.dece.data', 'uvf' => 'application/vnd.dece.data', 'uvg' => 'image/vnd.dece.graphic', 'uvh' => 'video/vnd.dece.hd', 'uvi' => 'image/vnd.dece.graphic', 'uvm' => 'video/vnd.dece.mobile', 'uvp' => 'video/vnd.dece.pd', 'uvs' => 'video/vnd.dece.sd', 'uvt' => 'application/vnd.dece.ttml+xml', 'uvu' => 'video/vnd.uvvu.mp4', 'uvv' => 'video/vnd.dece.video', 'uvva' => 'audio/vnd.dece.audio', 'uvvd' => 'application/vnd.dece.data', 'uvvf' => 'application/vnd.dece.data', 'uvvg' => 'image/vnd.dece.graphic', 'uvvh' => 'video/vnd.dece.hd', 'uvvi' => 'image/vnd.dece.graphic', 'uvvm' => 'video/vnd.dece.mobile', 'uvvp' => 'video/vnd.dece.pd', 'uvvs' => 'video/vnd.dece.sd', 'uvvt' => 'application/vnd.dece.ttml+xml', 'uvvu' => 'video/vnd.uvvu.mp4', 'uvvv' => 'video/vnd.dece.video', 'uvvx' => 'application/vnd.dece.unspecified', 'uvvz' => 'application/vnd.dece.zip', 'uvx' => 'application/vnd.dece.unspecified', 'uvz' => 'application/vnd.dece.zip', 'vbox' => 'application/x-virtualbox-vbox', 'vbox-extpack' => 'application/x-virtualbox-vbox-extpack', 'vcard' => 'text/vcard', 'vcd' => 'application/x-cdlink', 'vcf' => 'text/x-vcard', 'vcg' => 'application/vnd.groove-vcard', 'vcs' => 'text/x-vcalendar', 'vcx' => 'application/vnd.vcx', 'vdi' => 'application/x-virtualbox-vdi', 'vds' => 'model/vnd.sap.vds', 'vhd' => 'application/x-virtualbox-vhd', 'vis' => 'application/vnd.visionary', 'viv' => 'video/vnd.vivo', 'vlc' => 'application/videolan', 'vmdk' => 'application/x-virtualbox-vmdk', 'vob' => 'video/x-ms-vob', 'vor' => 'application/vnd.stardivision.writer', 'vox' => 'application/x-authorware-bin', 'vrml' => 'model/vrml', 'vsd' => 'application/vnd.visio', 'vsf' => 'application/vnd.vsf', 'vss' => 'application/vnd.visio', 'vst' => 'application/vnd.visio', 'vsw' => 'application/vnd.visio', 'vtf' => 'image/vnd.valve.source.texture', 'vtt' => 'text/vtt', 'vtu' => 'model/vnd.vtu', 'vxml' => 'application/voicexml+xml', 'w3d' => 'application/x-director', 'wad' => 'application/x-doom', 'wadl' => 'application/vnd.sun.wadl+xml', 'war' => 'application/java-archive', 'wasm' => 'application/wasm', 'wav' => 'audio/x-wav', 'wax' => 'audio/x-ms-wax', 'wbmp' => 'image/vnd.wap.wbmp', 'wbs' => 'application/vnd.criticaltools.wbs+xml', 'wbxml' => 'application/wbxml', 'wcm' => 'application/vnd.ms-works', 'wdb' => 'application/vnd.ms-works', 'wdp' => 'image/vnd.ms-photo', 'weba' => 'audio/webm', 'webapp' => 'application/x-web-app-manifest+json', 'webm' => 'video/webm', 'webmanifest' => 'application/manifest+json', 'webp' => 'image/webp', 'wg' => 'application/vnd.pmi.widget', 'wgsl' => 'text/wgsl', 'wgt' => 'application/widget', 'wif' => 'application/watcherinfo+xml', 'wks' => 'application/vnd.ms-works', 'wm' => 'video/x-ms-wm', 'wma' => 'audio/x-ms-wma', 'wmd' => 'application/x-ms-wmd', 'wmf' => 'image/wmf', 'wml' => 'text/vnd.wap.wml', 'wmlc' => 'application/wmlc', 'wmls' => 'text/vnd.wap.wmlscript', 'wmlsc' => 'application/vnd.wap.wmlscriptc', 'wmv' => 'video/x-ms-wmv', 'wmx' => 'video/x-ms-wmx', 'wmz' => 'application/x-msmetafile', 'woff' => 'font/woff', 'woff2' => 'font/woff2', 'word' => 'application/msword', 'wpd' => 'application/vnd.wordperfect', 'wpl' => 'application/vnd.ms-wpl', 'wps' => 'application/vnd.ms-works', 'wqd' => 'application/vnd.wqd', 'wri' => 'application/x-mswrite', 'wrl' => 'model/vrml', 'wsc' => 'message/vnd.wfa.wsc', 'wsdl' => 'application/wsdl+xml', 'wspolicy' => 'application/wspolicy+xml', 'wtb' => 'application/vnd.webturbo', 'wvx' => 'video/x-ms-wvx', 'x3d' => 'model/x3d+xml', 'x3db' => 'model/x3d+fastinfoset', 'x3dbz' => 'model/x3d+binary', 'x3dv' => 'model/x3d-vrml', 'x3dvz' => 'model/x3d+vrml', 'x3dz' => 'model/x3d+xml', 'x32' => 'application/x-authorware-bin', 'x_b' => 'model/vnd.parasolid.transmit.binary', 'x_t' => 'model/vnd.parasolid.transmit.text', 'xaml' => 'application/xaml+xml', 'xap' => 'application/x-silverlight-app', 'xar' => 'application/vnd.xara', 'xav' => 'application/xcap-att+xml', 'xbap' => 'application/x-ms-xbap', 'xbd' => 'application/vnd.fujixerox.docuworks.binder', 'xbm' => 'image/x-xbitmap', 'xca' => 'application/xcap-caps+xml', 'xcs' => 'application/calendar+xml', 'xdf' => 'application/xcap-diff+xml', 'xdm' => 'application/vnd.syncml.dm+xml', 'xdp' => 'application/vnd.adobe.xdp+xml', 'xdssc' => 'application/dssc+xml', 'xdw' => 'application/vnd.fujixerox.docuworks', 'xel' => 'application/xcap-el+xml', 'xenc' => 'application/xenc+xml', 'xer' => 'application/patch-ops-error+xml', 'xfdf' => 'application/xfdf', 'xfdl' => 'application/vnd.xfdl', 'xht' => 'application/xhtml+xml', 'xhtm' => 'application/vnd.pwg-xhtml-print+xml', 'xhtml' => 'application/xhtml+xml', 'xhvml' => 'application/xv+xml', 'xif' => 'image/vnd.xiff', 'xl' => 'application/excel', 'xla' => 'application/vnd.ms-excel', 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', 'xlc' => 'application/vnd.ms-excel', 'xlf' => 'application/xliff+xml', 'xlm' => 'application/vnd.ms-excel', 'xls' => 'application/vnd.ms-excel', 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12', 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlt' => 'application/vnd.ms-excel', 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12', 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'xlw' => 'application/vnd.ms-excel', 'xm' => 'audio/xm', 'xml' => 'application/xml', 'xns' => 'application/xcap-ns+xml', 'xo' => 'application/vnd.olpc-sugar', 'xop' => 'application/xop+xml', 'xpi' => 'application/x-xpinstall', 'xpl' => 'application/xproc+xml', 'xpm' => 'image/x-xpixmap', 'xpr' => 'application/vnd.is-xpr', 'xps' => 'application/vnd.ms-xpsdocument', 'xpw' => 'application/vnd.intercon.formnet', 'xpx' => 'application/vnd.intercon.formnet', 'xsd' => 'application/xml', 'xsf' => 'application/prs.xsf+xml', 'xsl' => 'application/xml', 'xslt' => 'application/xslt+xml', 'xsm' => 'application/vnd.syncml+xml', 'xspf' => 'application/xspf+xml', 'xul' => 'application/vnd.mozilla.xul+xml', 'xvm' => 'application/xv+xml', 'xvml' => 'application/xv+xml', 'xwd' => 'image/x-xwindowdump', 'xyz' => 'chemical/x-xyz', 'xz' => 'application/x-xz', 'yaml' => 'text/yaml', 'yang' => 'application/yang', 'yin' => 'application/yin+xml', 'yml' => 'text/yaml', 'ymp' => 'text/x-suse-ymp', 'z' => 'application/x-compress', 'z1' => 'application/x-zmachine', 'z2' => 'application/x-zmachine', 'z3' => 'application/x-zmachine', 'z4' => 'application/x-zmachine', 'z5' => 'application/x-zmachine', 'z6' => 'application/x-zmachine', 'z7' => 'application/x-zmachine', 'z8' => 'application/x-zmachine', 'zaz' => 'application/vnd.zzazz.deck+xml', 'zip' => 'application/zip', 'zir' => 'application/vnd.zul', 'zirz' => 'application/vnd.zul', 'zmm' => 'application/vnd.handheld-entertainment+xml', 'zsh' => 'text/x-scriptzsh']; /** * Determines the mimetype of a file by looking at its extension. * * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json */ public static function fromFilename(string $filename) : ?string { return self::fromExtension(\pathinfo($filename, \PATHINFO_EXTENSION)); } /** * Maps a file extensions to a mimetype. * * @see https://raw.githubusercontent.com/jshttp/mime-db/master/db.json */ public static function fromExtension(string $extension) : ?string { return self::MIME_TYPES[\strtolower($extension)] ?? null; } } vendor_prefixed/guzzlehttp/psr7/src/Stream.php000064400000016466147206602470015622 0ustar00size = $options['size']; } $this->customMetadata = $options['metadata'] ?? []; $this->stream = $stream; $meta = \stream_get_meta_data($this->stream); $this->seekable = $meta['seekable']; $this->readable = (bool) \preg_match(self::READABLE_MODES, $meta['mode']); $this->writable = (bool) \preg_match(self::WRITABLE_MODES, $meta['mode']); $this->uri = $this->getMetadata('uri'); } /** * Closes the stream when the destructed */ public function __destruct() { $this->close(); } public function __toString() : string { try { if ($this->isSeekable()) { $this->seek(0); } return $this->getContents(); } catch (\Throwable $e) { if (\PHP_VERSION_ID >= 70400) { throw $e; } \trigger_error(\sprintf('%s::__toString exception: %s', self::class, (string) $e), \E_USER_ERROR); return ''; } } public function getContents() : string { if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } if (!$this->readable) { throw new \RuntimeException('Cannot read from non-readable stream'); } return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryGetContents($this->stream); } public function close() : void { if (isset($this->stream)) { if (\is_resource($this->stream)) { \fclose($this->stream); } $this->detach(); } } public function detach() { if (!isset($this->stream)) { return null; } $result = $this->stream; unset($this->stream); $this->size = $this->uri = null; $this->readable = $this->writable = $this->seekable = \false; return $result; } public function getSize() : ?int { if ($this->size !== null) { return $this->size; } if (!isset($this->stream)) { return null; } // Clear the stat cache if the stream has a URI if ($this->uri) { \clearstatcache(\true, $this->uri); } $stats = \fstat($this->stream); if (\is_array($stats) && isset($stats['size'])) { $this->size = $stats['size']; return $this->size; } return null; } public function isReadable() : bool { return $this->readable; } public function isWritable() : bool { return $this->writable; } public function isSeekable() : bool { return $this->seekable; } public function eof() : bool { if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } return \feof($this->stream); } public function tell() : int { if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } $result = \ftell($this->stream); if ($result === \false) { throw new \RuntimeException('Unable to determine stream position'); } return $result; } public function rewind() : void { $this->seek(0); } public function seek($offset, $whence = \SEEK_SET) : void { $whence = (int) $whence; if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } if (!$this->seekable) { throw new \RuntimeException('Stream is not seekable'); } if (\fseek($this->stream, $offset, $whence) === -1) { throw new \RuntimeException('Unable to seek to stream position ' . $offset . ' with whence ' . \var_export($whence, \true)); } } public function read($length) : string { if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } if (!$this->readable) { throw new \RuntimeException('Cannot read from non-readable stream'); } if ($length < 0) { throw new \RuntimeException('Length parameter cannot be negative'); } if (0 === $length) { return ''; } try { $string = \fread($this->stream, $length); } catch (\Exception $e) { throw new \RuntimeException('Unable to read from stream', 0, $e); } if (\false === $string) { throw new \RuntimeException('Unable to read from stream'); } return $string; } public function write($string) : int { if (!isset($this->stream)) { throw new \RuntimeException('Stream is detached'); } if (!$this->writable) { throw new \RuntimeException('Cannot write to a non-writable stream'); } // We can't know the size after writing anything $this->size = null; $result = \fwrite($this->stream, $string); if ($result === \false) { throw new \RuntimeException('Unable to write to stream'); } return $result; } /** * @return mixed */ public function getMetadata($key = null) { if (!isset($this->stream)) { return $key ? null : []; } elseif (!$key) { return $this->customMetadata + \stream_get_meta_data($this->stream); } elseif (isset($this->customMetadata[$key])) { return $this->customMetadata[$key]; } $meta = \stream_get_meta_data($this->stream); return $meta[$key] ?? null; } } vendor_prefixed/guzzlehttp/psr7/src/Uri.php000064400000053363147206602470015123 0ustar00 80, 'https' => 443, 'ftp' => 21, 'gopher' => 70, 'nntp' => 119, 'news' => 119, 'telnet' => 23, 'tn3270' => 23, 'imap' => 143, 'pop' => 110, 'ldap' => 389]; /** * Unreserved characters for use in a regex. * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.3 */ private const CHAR_UNRESERVED = 'a-zA-Z0-9_\\-\\.~'; /** * Sub-delims for use in a regex. * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-2.2 */ private const CHAR_SUB_DELIMS = '!\\$&\'\\(\\)\\*\\+,;='; private const QUERY_SEPARATORS_REPLACEMENT = ['=' => '%3D', '&' => '%26']; /** @var string Uri scheme. */ private $scheme = ''; /** @var string Uri user info. */ private $userInfo = ''; /** @var string Uri host. */ private $host = ''; /** @var int|null Uri port. */ private $port; /** @var string Uri path. */ private $path = ''; /** @var string Uri query string. */ private $query = ''; /** @var string Uri fragment. */ private $fragment = ''; /** @var string|null String representation */ private $composedComponents; public function __construct(string $uri = '') { if ($uri !== '') { $parts = self::parse($uri); if ($parts === \false) { throw new \YoastSEO_Vendor\GuzzleHttp\Psr7\Exception\MalformedUriException("Unable to parse URI: {$uri}"); } $this->applyParts($parts); } } /** * UTF-8 aware \parse_url() replacement. * * The internal function produces broken output for non ASCII domain names * (IDN) when used with locales other than "C". * * On the other hand, cURL understands IDN correctly only when UTF-8 locale * is configured ("C.UTF-8", "en_US.UTF-8", etc.). * * @see https://bugs.php.net/bug.php?id=52923 * @see https://www.php.net/manual/en/function.parse-url.php#114817 * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING * * @return array|false */ private static function parse(string $url) { // If IPv6 $prefix = ''; if (\preg_match('%^(.*://\\[[0-9:a-f]+\\])(.*?)$%', $url, $matches)) { /** @var array{0:string, 1:string, 2:string} $matches */ $prefix = $matches[1]; $url = $matches[2]; } /** @var string */ $encodedUrl = \preg_replace_callback('%[^:/@?&=#]+%usD', static function ($matches) { return \urlencode($matches[0]); }, $url); $result = \parse_url($prefix . $encodedUrl); if ($result === \false) { return \false; } return \array_map('urldecode', $result); } public function __toString() : string { if ($this->composedComponents === null) { $this->composedComponents = self::composeComponents($this->scheme, $this->getAuthority(), $this->path, $this->query, $this->fragment); } return $this->composedComponents; } /** * Composes a URI reference string from its various components. * * Usually this method does not need to be called manually but instead is used indirectly via * `Psr\Http\Message\UriInterface::__toString`. * * PSR-7 UriInterface treats an empty component the same as a missing component as * getQuery(), getFragment() etc. always return a string. This explains the slight * difference to RFC 3986 Section 5.3. * * Another adjustment is that the authority separator is added even when the authority is missing/empty * for the "file" scheme. This is because PHP stream functions like `file_get_contents` only work with * `file:///myfile` but not with `file:/myfile` although they are equivalent according to RFC 3986. But * `file:///` is the more common syntax for the file scheme anyway (Chrome for example redirects to * that format). * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.3 */ public static function composeComponents(?string $scheme, ?string $authority, string $path, ?string $query, ?string $fragment) : string { $uri = ''; // weak type checks to also accept null until we can add scalar type hints if ($scheme != '') { $uri .= $scheme . ':'; } if ($authority != '' || $scheme === 'file') { $uri .= '//' . $authority; } if ($authority != '' && $path != '' && $path[0] != '/') { $path = '/' . $path; } $uri .= $path; if ($query != '') { $uri .= '?' . $query; } if ($fragment != '') { $uri .= '#' . $fragment; } return $uri; } /** * Whether the URI has the default port of the current scheme. * * `Psr\Http\Message\UriInterface::getPort` may return null or the standard port. This method can be used * independently of the implementation. */ public static function isDefaultPort(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : bool { return $uri->getPort() === null || isset(self::DEFAULT_PORTS[$uri->getScheme()]) && $uri->getPort() === self::DEFAULT_PORTS[$uri->getScheme()]; } /** * Whether the URI is absolute, i.e. it has a scheme. * * An instance of UriInterface can either be an absolute URI or a relative reference. This method returns true * if it is the former. An absolute URI has a scheme. A relative reference is used to express a URI relative * to another URI, the base URI. Relative references can be divided into several forms: * - network-path references, e.g. '//example.com/path' * - absolute-path references, e.g. '/path' * - relative-path references, e.g. 'subpath' * * @see Uri::isNetworkPathReference * @see Uri::isAbsolutePathReference * @see Uri::isRelativePathReference * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4 */ public static function isAbsolute(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : bool { return $uri->getScheme() !== ''; } /** * Whether the URI is a network-path reference. * * A relative reference that begins with two slash characters is termed an network-path reference. * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 */ public static function isNetworkPathReference(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : bool { return $uri->getScheme() === '' && $uri->getAuthority() !== ''; } /** * Whether the URI is a absolute-path reference. * * A relative reference that begins with a single slash character is termed an absolute-path reference. * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 */ public static function isAbsolutePathReference(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : bool { return $uri->getScheme() === '' && $uri->getAuthority() === '' && isset($uri->getPath()[0]) && $uri->getPath()[0] === '/'; } /** * Whether the URI is a relative-path reference. * * A relative reference that does not begin with a slash character is termed a relative-path reference. * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.2 */ public static function isRelativePathReference(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : bool { return $uri->getScheme() === '' && $uri->getAuthority() === '' && (!isset($uri->getPath()[0]) || $uri->getPath()[0] !== '/'); } /** * Whether the URI is a same-document reference. * * A same-document reference refers to a URI that is, aside from its fragment * component, identical to the base URI. When no base URI is given, only an empty * URI reference (apart from its fragment) is considered a same-document reference. * * @param UriInterface $uri The URI to check * @param UriInterface|null $base An optional base URI to compare against * * @see https://datatracker.ietf.org/doc/html/rfc3986#section-4.4 */ public static function isSameDocumentReference(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, \YoastSEO_Vendor\Psr\Http\Message\UriInterface $base = null) : bool { if ($base !== null) { $uri = \YoastSEO_Vendor\GuzzleHttp\Psr7\UriResolver::resolve($base, $uri); return $uri->getScheme() === $base->getScheme() && $uri->getAuthority() === $base->getAuthority() && $uri->getPath() === $base->getPath() && $uri->getQuery() === $base->getQuery(); } return $uri->getScheme() === '' && $uri->getAuthority() === '' && $uri->getPath() === '' && $uri->getQuery() === ''; } /** * Creates a new URI with a specific query string value removed. * * Any existing query string values that exactly match the provided key are * removed. * * @param UriInterface $uri URI to use as a base. * @param string $key Query string key to remove. */ public static function withoutQueryValue(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, string $key) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $result = self::getFilteredQueryString($uri, [$key]); return $uri->withQuery(\implode('&', $result)); } /** * Creates a new URI with a specific query string value. * * Any existing query string values that exactly match the provided key are * removed and replaced with the given key value pair. * * A value of null will set the query string key without a value, e.g. "key" * instead of "key=value". * * @param UriInterface $uri URI to use as a base. * @param string $key Key to set. * @param string|null $value Value to set */ public static function withQueryValue(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, string $key, ?string $value) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $result = self::getFilteredQueryString($uri, [$key]); $result[] = self::generateQueryString($key, $value); return $uri->withQuery(\implode('&', $result)); } /** * Creates a new URI with multiple specific query string values. * * It has the same behavior as withQueryValue() but for an associative array of key => value. * * @param UriInterface $uri URI to use as a base. * @param (string|null)[] $keyValueArray Associative array of key and values */ public static function withQueryValues(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, array $keyValueArray) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $result = self::getFilteredQueryString($uri, \array_keys($keyValueArray)); foreach ($keyValueArray as $key => $value) { $result[] = self::generateQueryString((string) $key, $value !== null ? (string) $value : null); } return $uri->withQuery(\implode('&', $result)); } /** * Creates a URI from a hash of `parse_url` components. * * @see https://www.php.net/manual/en/function.parse-url.php * * @throws MalformedUriException If the components do not form a valid URI. */ public static function fromParts(array $parts) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $uri = new self(); $uri->applyParts($parts); $uri->validateState(); return $uri; } public function getScheme() : string { return $this->scheme; } public function getAuthority() : string { $authority = $this->host; if ($this->userInfo !== '') { $authority = $this->userInfo . '@' . $authority; } if ($this->port !== null) { $authority .= ':' . $this->port; } return $authority; } public function getUserInfo() : string { return $this->userInfo; } public function getHost() : string { return $this->host; } public function getPort() : ?int { return $this->port; } public function getPath() : string { return $this->path; } public function getQuery() : string { return $this->query; } public function getFragment() : string { return $this->fragment; } public function withScheme($scheme) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $scheme = $this->filterScheme($scheme); if ($this->scheme === $scheme) { return $this; } $new = clone $this; $new->scheme = $scheme; $new->composedComponents = null; $new->removeDefaultPort(); $new->validateState(); return $new; } public function withUserInfo($user, $password = null) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $info = $this->filterUserInfoComponent($user); if ($password !== null) { $info .= ':' . $this->filterUserInfoComponent($password); } if ($this->userInfo === $info) { return $this; } $new = clone $this; $new->userInfo = $info; $new->composedComponents = null; $new->validateState(); return $new; } public function withHost($host) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $host = $this->filterHost($host); if ($this->host === $host) { return $this; } $new = clone $this; $new->host = $host; $new->composedComponents = null; $new->validateState(); return $new; } public function withPort($port) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $port = $this->filterPort($port); if ($this->port === $port) { return $this; } $new = clone $this; $new->port = $port; $new->composedComponents = null; $new->removeDefaultPort(); $new->validateState(); return $new; } public function withPath($path) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $path = $this->filterPath($path); if ($this->path === $path) { return $this; } $new = clone $this; $new->path = $path; $new->composedComponents = null; $new->validateState(); return $new; } public function withQuery($query) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $query = $this->filterQueryAndFragment($query); if ($this->query === $query) { return $this; } $new = clone $this; $new->query = $query; $new->composedComponents = null; return $new; } public function withFragment($fragment) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $fragment = $this->filterQueryAndFragment($fragment); if ($this->fragment === $fragment) { return $this; } $new = clone $this; $new->fragment = $fragment; $new->composedComponents = null; return $new; } public function jsonSerialize() : string { return $this->__toString(); } /** * Apply parse_url parts to a URI. * * @param array $parts Array of parse_url parts to apply. */ private function applyParts(array $parts) : void { $this->scheme = isset($parts['scheme']) ? $this->filterScheme($parts['scheme']) : ''; $this->userInfo = isset($parts['user']) ? $this->filterUserInfoComponent($parts['user']) : ''; $this->host = isset($parts['host']) ? $this->filterHost($parts['host']) : ''; $this->port = isset($parts['port']) ? $this->filterPort($parts['port']) : null; $this->path = isset($parts['path']) ? $this->filterPath($parts['path']) : ''; $this->query = isset($parts['query']) ? $this->filterQueryAndFragment($parts['query']) : ''; $this->fragment = isset($parts['fragment']) ? $this->filterQueryAndFragment($parts['fragment']) : ''; if (isset($parts['pass'])) { $this->userInfo .= ':' . $this->filterUserInfoComponent($parts['pass']); } $this->removeDefaultPort(); } /** * @param mixed $scheme * * @throws \InvalidArgumentException If the scheme is invalid. */ private function filterScheme($scheme) : string { if (!\is_string($scheme)) { throw new \InvalidArgumentException('Scheme must be a string'); } return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); } /** * @param mixed $component * * @throws \InvalidArgumentException If the user info is invalid. */ private function filterUserInfoComponent($component) : string { if (!\is_string($component)) { throw new \InvalidArgumentException('User info must be a string'); } return \preg_replace_callback('/(?:[^%' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . ']+|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $component); } /** * @param mixed $host * * @throws \InvalidArgumentException If the host is invalid. */ private function filterHost($host) : string { if (!\is_string($host)) { throw new \InvalidArgumentException('Host must be a string'); } return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); } /** * @param mixed $port * * @throws \InvalidArgumentException If the port is invalid. */ private function filterPort($port) : ?int { if ($port === null) { return null; } $port = (int) $port; if (0 > $port || 0xffff < $port) { throw new \InvalidArgumentException(\sprintf('Invalid port: %d. Must be between 0 and 65535', $port)); } return $port; } /** * @param (string|int)[] $keys * * @return string[] */ private static function getFilteredQueryString(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri, array $keys) : array { $current = $uri->getQuery(); if ($current === '') { return []; } $decodedKeys = \array_map(function ($k) : string { return \rawurldecode((string) $k); }, $keys); return \array_filter(\explode('&', $current), function ($part) use($decodedKeys) { return !\in_array(\rawurldecode(\explode('=', $part)[0]), $decodedKeys, \true); }); } private static function generateQueryString(string $key, ?string $value) : string { // Query string separators ("=", "&") within the key or value need to be encoded // (while preventing double-encoding) before setting the query string. All other // chars that need percent-encoding will be encoded by withQuery(). $queryString = \strtr($key, self::QUERY_SEPARATORS_REPLACEMENT); if ($value !== null) { $queryString .= '=' . \strtr($value, self::QUERY_SEPARATORS_REPLACEMENT); } return $queryString; } private function removeDefaultPort() : void { if ($this->port !== null && self::isDefaultPort($this)) { $this->port = null; } } /** * Filters the path of a URI * * @param mixed $path * * @throws \InvalidArgumentException If the path is invalid. */ private function filterPath($path) : string { if (!\is_string($path)) { throw new \InvalidArgumentException('Path must be a string'); } return \preg_replace_callback('/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\\/]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $path); } /** * Filters the query string or fragment of a URI. * * @param mixed $str * * @throws \InvalidArgumentException If the query or fragment is invalid. */ private function filterQueryAndFragment($str) : string { if (!\is_string($str)) { throw new \InvalidArgumentException('Query and fragment must be a string'); } return \preg_replace_callback('/(?:[^' . self::CHAR_UNRESERVED . self::CHAR_SUB_DELIMS . '%:@\\/\\?]++|%(?![A-Fa-f0-9]{2}))/', [$this, 'rawurlencodeMatchZero'], $str); } private function rawurlencodeMatchZero(array $match) : string { return \rawurlencode($match[0]); } private function validateState() : void { if ($this->host === '' && ($this->scheme === 'http' || $this->scheme === 'https')) { $this->host = self::HTTP_DEFAULT_HOST; } if ($this->getAuthority() === '') { if (0 === \strpos($this->path, '//')) { throw new \YoastSEO_Vendor\GuzzleHttp\Psr7\Exception\MalformedUriException('The path of a URI without an authority must not start with two slashes "//"'); } if ($this->scheme === '' && \false !== \strpos(\explode('/', $this->path, 2)[0], ':')) { throw new \YoastSEO_Vendor\GuzzleHttp\Psr7\Exception\MalformedUriException('A relative URI must not have a path beginning with a segment containing a colon'); } } } } vendor_prefixed/guzzlehttp/psr7/src/InflateStream.php000064400000003156147206602470017115 0ustar00 15 + 32]); $this->stream = $stream->isSeekable() ? new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($resource) : new \YoastSEO_Vendor\GuzzleHttp\Psr7\NoSeekStream(new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($resource)); } } vendor_prefixed/guzzlehttp/psr7/src/UriResolver.php000064400000021311147206602470016631 0ustar00getScheme() != '') { return $rel->withPath(self::removeDotSegments($rel->getPath())); } if ($rel->getAuthority() != '') { $targetAuthority = $rel->getAuthority(); $targetPath = self::removeDotSegments($rel->getPath()); $targetQuery = $rel->getQuery(); } else { $targetAuthority = $base->getAuthority(); if ($rel->getPath() === '') { $targetPath = $base->getPath(); $targetQuery = $rel->getQuery() != '' ? $rel->getQuery() : $base->getQuery(); } else { if ($rel->getPath()[0] === '/') { $targetPath = $rel->getPath(); } else { if ($targetAuthority != '' && $base->getPath() === '') { $targetPath = '/' . $rel->getPath(); } else { $lastSlashPos = \strrpos($base->getPath(), '/'); if ($lastSlashPos === \false) { $targetPath = $rel->getPath(); } else { $targetPath = \substr($base->getPath(), 0, $lastSlashPos + 1) . $rel->getPath(); } } } $targetPath = self::removeDotSegments($targetPath); $targetQuery = $rel->getQuery(); } } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri(\YoastSEO_Vendor\GuzzleHttp\Psr7\Uri::composeComponents($base->getScheme(), $targetAuthority, $targetPath, $targetQuery, $rel->getFragment())); } /** * Returns the target URI as a relative reference from the base URI. * * This method is the counterpart to resolve(): * * (string) $target === (string) UriResolver::resolve($base, UriResolver::relativize($base, $target)) * * One use-case is to use the current request URI as base URI and then generate relative links in your documents * to reduce the document size or offer self-contained downloadable document archives. * * $base = new Uri('http://example.com/a/b/'); * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/c')); // prints 'c'. * echo UriResolver::relativize($base, new Uri('http://example.com/a/x/y')); // prints '../x/y'. * echo UriResolver::relativize($base, new Uri('http://example.com/a/b/?q')); // prints '?q'. * echo UriResolver::relativize($base, new Uri('http://example.org/a/b/')); // prints '//example.org/a/b/'. * * This method also accepts a target that is already relative and will try to relativize it further. Only a * relative-path reference will be returned as-is. * * echo UriResolver::relativize($base, new Uri('/a/b/c')); // prints 'c' as well */ public static function relativize(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $base, \YoastSEO_Vendor\Psr\Http\Message\UriInterface $target) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { if ($target->getScheme() !== '' && ($base->getScheme() !== $target->getScheme() || $target->getAuthority() === '' && $base->getAuthority() !== '')) { return $target; } if (\YoastSEO_Vendor\GuzzleHttp\Psr7\Uri::isRelativePathReference($target)) { // As the target is already highly relative we return it as-is. It would be possible to resolve // the target with `$target = self::resolve($base, $target);` and then try make it more relative // by removing a duplicate query. But let's not do that automatically. return $target; } if ($target->getAuthority() !== '' && $base->getAuthority() !== $target->getAuthority()) { return $target->withScheme(''); } // We must remove the path before removing the authority because if the path starts with two slashes, the URI // would turn invalid. And we also cannot set a relative path before removing the authority, as that is also // invalid. $emptyPathUri = $target->withScheme('')->withPath('')->withUserInfo('')->withPort(null)->withHost(''); if ($base->getPath() !== $target->getPath()) { return $emptyPathUri->withPath(self::getRelativePath($base, $target)); } if ($base->getQuery() === $target->getQuery()) { // Only the target fragment is left. And it must be returned even if base and target fragment are the same. return $emptyPathUri->withQuery(''); } // If the base URI has a query but the target has none, we cannot return an empty path reference as it would // inherit the base query component when resolving. if ($target->getQuery() === '') { $segments = \explode('/', $target->getPath()); /** @var string $lastSegment */ $lastSegment = \end($segments); return $emptyPathUri->withPath($lastSegment === '' ? './' : $lastSegment); } return $emptyPathUri; } private static function getRelativePath(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $base, \YoastSEO_Vendor\Psr\Http\Message\UriInterface $target) : string { $sourceSegments = \explode('/', $base->getPath()); $targetSegments = \explode('/', $target->getPath()); \array_pop($sourceSegments); $targetLastSegment = \array_pop($targetSegments); foreach ($sourceSegments as $i => $segment) { if (isset($targetSegments[$i]) && $segment === $targetSegments[$i]) { unset($sourceSegments[$i], $targetSegments[$i]); } else { break; } } $targetSegments[] = $targetLastSegment; $relativePath = \str_repeat('../', \count($sourceSegments)) . \implode('/', $targetSegments); // A reference to am empty last segment or an empty first sub-segment must be prefixed with "./". // This also applies to a segment with a colon character (e.g., "file:colon") that cannot be used // as the first segment of a relative-path reference, as it would be mistaken for a scheme name. if ('' === $relativePath || \false !== \strpos(\explode('/', $relativePath, 2)[0], ':')) { $relativePath = "./{$relativePath}"; } elseif ('/' === $relativePath[0]) { if ($base->getAuthority() != '' && $base->getPath() === '') { // In this case an extra slash is added by resolve() automatically. So we must not add one here. $relativePath = ".{$relativePath}"; } else { $relativePath = "./{$relativePath}"; } } return $relativePath; } private function __construct() { // cannot be instantiated } } vendor_prefixed/guzzlehttp/psr7/src/AppendStream.php000064400000013614147206602470016742 0ustar00addStream($stream); } } public function __toString() : string { try { $this->rewind(); return $this->getContents(); } catch (\Throwable $e) { if (\PHP_VERSION_ID >= 70400) { throw $e; } \trigger_error(\sprintf('%s::__toString exception: %s', self::class, (string) $e), \E_USER_ERROR); return ''; } } /** * Add a stream to the AppendStream * * @param StreamInterface $stream Stream to append. Must be readable. * * @throws \InvalidArgumentException if the stream is not readable */ public function addStream(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream) : void { if (!$stream->isReadable()) { throw new \InvalidArgumentException('Each stream must be readable'); } // The stream is only seekable if all streams are seekable if (!$stream->isSeekable()) { $this->seekable = \false; } $this->streams[] = $stream; } public function getContents() : string { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToString($this); } /** * Closes each attached stream. */ public function close() : void { $this->pos = $this->current = 0; $this->seekable = \true; foreach ($this->streams as $stream) { $stream->close(); } $this->streams = []; } /** * Detaches each attached stream. * * Returns null as it's not clear which underlying stream resource to return. */ public function detach() { $this->pos = $this->current = 0; $this->seekable = \true; foreach ($this->streams as $stream) { $stream->detach(); } $this->streams = []; return null; } public function tell() : int { return $this->pos; } /** * Tries to calculate the size by adding the size of each stream. * * If any of the streams do not return a valid number, then the size of the * append stream cannot be determined and null is returned. */ public function getSize() : ?int { $size = 0; foreach ($this->streams as $stream) { $s = $stream->getSize(); if ($s === null) { return null; } $size += $s; } return $size; } public function eof() : bool { return !$this->streams || $this->current >= \count($this->streams) - 1 && $this->streams[$this->current]->eof(); } public function rewind() : void { $this->seek(0); } /** * Attempts to seek to the given position. Only supports SEEK_SET. */ public function seek($offset, $whence = \SEEK_SET) : void { if (!$this->seekable) { throw new \RuntimeException('This AppendStream is not seekable'); } elseif ($whence !== \SEEK_SET) { throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); } $this->pos = $this->current = 0; // Rewind each stream foreach ($this->streams as $i => $stream) { try { $stream->rewind(); } catch (\Exception $e) { throw new \RuntimeException('Unable to seek stream ' . $i . ' of the AppendStream', 0, $e); } } // Seek to the actual position by reading from each stream while ($this->pos < $offset && !$this->eof()) { $result = $this->read(\min(8096, $offset - $this->pos)); if ($result === '') { break; } } } /** * Reads from all of the appended streams until the length is met or EOF. */ public function read($length) : string { $buffer = ''; $total = \count($this->streams) - 1; $remaining = $length; $progressToNext = \false; while ($remaining > 0) { // Progress to the next stream if needed. if ($progressToNext || $this->streams[$this->current]->eof()) { $progressToNext = \false; if ($this->current === $total) { break; } ++$this->current; } $result = $this->streams[$this->current]->read($remaining); if ($result === '') { $progressToNext = \true; continue; } $buffer .= $result; $remaining = $length - \strlen($buffer); } $this->pos += \strlen($buffer); return $buffer; } public function isReadable() : bool { return \true; } public function isWritable() : bool { return \false; } public function isSeekable() : bool { return $this->seekable; } public function write($string) : int { throw new \RuntimeException('Cannot write to an AppendStream'); } /** * @return mixed */ public function getMetadata($key = null) { return $key ? null : []; } } vendor_prefixed/guzzlehttp/psr7/src/LazyOpenStream.php000064400000002340147206602470017266 0ustar00filename = $filename; $this->mode = $mode; // unsetting the property forces the first access to go through // __get(). unset($this->stream); } /** * Creates the underlying stream lazily when required. */ protected function createStream() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryFopen($this->filename, $this->mode)); } } vendor_prefixed/guzzlehttp/psr7/src/PumpStream.php000064400000011166147206602470016454 0ustar00source = $source; $this->size = $options['size'] ?? null; $this->metadata = $options['metadata'] ?? []; $this->buffer = new \YoastSEO_Vendor\GuzzleHttp\Psr7\BufferStream(); } public function __toString() : string { try { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToString($this); } catch (\Throwable $e) { if (\PHP_VERSION_ID >= 70400) { throw $e; } \trigger_error(\sprintf('%s::__toString exception: %s', self::class, (string) $e), \E_USER_ERROR); return ''; } } public function close() : void { $this->detach(); } public function detach() { $this->tellPos = 0; $this->source = null; return null; } public function getSize() : ?int { return $this->size; } public function tell() : int { return $this->tellPos; } public function eof() : bool { return $this->source === null; } public function isSeekable() : bool { return \false; } public function rewind() : void { $this->seek(0); } public function seek($offset, $whence = \SEEK_SET) : void { throw new \RuntimeException('Cannot seek a PumpStream'); } public function isWritable() : bool { return \false; } public function write($string) : int { throw new \RuntimeException('Cannot write to a PumpStream'); } public function isReadable() : bool { return \true; } public function read($length) : string { $data = $this->buffer->read($length); $readLen = \strlen($data); $this->tellPos += $readLen; $remaining = $length - $readLen; if ($remaining) { $this->pump($remaining); $data .= $this->buffer->read($remaining); $this->tellPos += \strlen($data) - $readLen; } return $data; } public function getContents() : string { $result = ''; while (!$this->eof()) { $result .= $this->read(1000000); } return $result; } /** * @return mixed */ public function getMetadata($key = null) { if (!$key) { return $this->metadata; } return $this->metadata[$key] ?? null; } private function pump(int $length) : void { if ($this->source !== null) { do { $data = ($this->source)($length); if ($data === \false || $data === null) { $this->source = null; return; } $this->buffer->write($data); $length -= \strlen($data); } while ($length > 0); } } } vendor_prefixed/guzzlehttp/psr7/src/Response.php000064400000010646147206602470016157 0ustar00 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-status', 208 => 'Already Reported', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Switch Proxy', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Large', 415 => 'Unsupported Media Type', 416 => 'Requested range not satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 506 => 'Variant Also Negotiates', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended', 511 => 'Network Authentication Required']; /** @var string */ private $reasonPhrase; /** @var int */ private $statusCode; /** * @param int $status Status code * @param (string|string[])[] $headers Response headers * @param string|resource|StreamInterface|null $body Response body * @param string $version Protocol version * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) */ public function __construct(int $status = 200, array $headers = [], $body = null, string $version = '1.1', string $reason = null) { $this->assertStatusCodeRange($status); $this->statusCode = $status; if ($body !== '' && $body !== null) { $this->stream = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($body); } $this->setHeaders($headers); if ($reason == '' && isset(self::PHRASES[$this->statusCode])) { $this->reasonPhrase = self::PHRASES[$this->statusCode]; } else { $this->reasonPhrase = (string) $reason; } $this->protocol = $version; } public function getStatusCode() : int { return $this->statusCode; } public function getReasonPhrase() : string { return $this->reasonPhrase; } public function withStatus($code, $reasonPhrase = '') : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { $this->assertStatusCodeIsInteger($code); $code = (int) $code; $this->assertStatusCodeRange($code); $new = clone $this; $new->statusCode = $code; if ($reasonPhrase == '' && isset(self::PHRASES[$new->statusCode])) { $reasonPhrase = self::PHRASES[$new->statusCode]; } $new->reasonPhrase = (string) $reasonPhrase; return $new; } /** * @param mixed $statusCode */ private function assertStatusCodeIsInteger($statusCode) : void { if (\filter_var($statusCode, \FILTER_VALIDATE_INT) === \false) { throw new \InvalidArgumentException('Status code must be an integer value.'); } } private function assertStatusCodeRange(int $statusCode) : void { if ($statusCode < 100 || $statusCode >= 600) { throw new \InvalidArgumentException('Status code must be an integer value between 1xx and 5xx.'); } } } vendor_prefixed/guzzlehttp/psr7/src/CachingStream.php000064400000011303147206602470017060 0ustar00remoteStream = $stream; $this->stream = $target ?: new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream(\YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'r+')); } public function getSize() : ?int { $remoteSize = $this->remoteStream->getSize(); if (null === $remoteSize) { return null; } return \max($this->stream->getSize(), $remoteSize); } public function rewind() : void { $this->seek(0); } public function seek($offset, $whence = \SEEK_SET) : void { if ($whence === \SEEK_SET) { $byte = $offset; } elseif ($whence === \SEEK_CUR) { $byte = $offset + $this->tell(); } elseif ($whence === \SEEK_END) { $size = $this->remoteStream->getSize(); if ($size === null) { $size = $this->cacheEntireStream(); } $byte = $size + $offset; } else { throw new \InvalidArgumentException('Invalid whence'); } $diff = $byte - $this->stream->getSize(); if ($diff > 0) { // Read the remoteStream until we have read in at least the amount // of bytes requested, or we reach the end of the file. while ($diff > 0 && !$this->remoteStream->eof()) { $this->read($diff); $diff = $byte - $this->stream->getSize(); } } else { // We can just do a normal seek since we've already seen this byte. $this->stream->seek($byte); } } public function read($length) : string { // Perform a regular read on any previously read data from the buffer $data = $this->stream->read($length); $remaining = $length - \strlen($data); // More data was requested so read from the remote stream if ($remaining) { // If data was written to the buffer in a position that would have // been filled from the remote stream, then we must skip bytes on // the remote stream to emulate overwriting bytes from that // position. This mimics the behavior of other PHP stream wrappers. $remoteData = $this->remoteStream->read($remaining + $this->skipReadBytes); if ($this->skipReadBytes) { $len = \strlen($remoteData); $remoteData = \substr($remoteData, $this->skipReadBytes); $this->skipReadBytes = \max(0, $this->skipReadBytes - $len); } $data .= $remoteData; $this->stream->write($remoteData); } return $data; } public function write($string) : int { // When appending to the end of the currently read stream, you'll want // to skip bytes from being read from the remote stream to emulate // other stream wrappers. Basically replacing bytes of data of a fixed // length. $overflow = \strlen($string) + $this->tell() - $this->remoteStream->tell(); if ($overflow > 0) { $this->skipReadBytes += $overflow; } return $this->stream->write($string); } public function eof() : bool { return $this->stream->eof() && $this->remoteStream->eof(); } /** * Close both the remote stream and buffer stream */ public function close() : void { $this->remoteStream->close(); $this->stream->close(); } private function cacheEntireStream() : int { $target = new \YoastSEO_Vendor\GuzzleHttp\Psr7\FnStream(['write' => 'strlen']); \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToStream($this, $target); return $this->tell(); } } vendor_prefixed/guzzlehttp/psr7/src/StreamDecoratorTrait.php000064400000006565147206602470020470 0ustar00stream = $stream; } /** * Magic method used to create a new stream if streams are not added in * the constructor of a decorator (e.g., LazyOpenStream). * * @return StreamInterface */ public function __get(string $name) { if ($name === 'stream') { $this->stream = $this->createStream(); return $this->stream; } throw new \UnexpectedValueException("{$name} not found on class"); } public function __toString() : string { try { if ($this->isSeekable()) { $this->seek(0); } return $this->getContents(); } catch (\Throwable $e) { if (\PHP_VERSION_ID >= 70400) { throw $e; } \trigger_error(\sprintf('%s::__toString exception: %s', self::class, (string) $e), \E_USER_ERROR); return ''; } } public function getContents() : string { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToString($this); } /** * Allow decorators to implement custom methods * * @return mixed */ public function __call(string $method, array $args) { /** @var callable $callable */ $callable = [$this->stream, $method]; $result = $callable(...$args); // Always return the wrapped object if the result is a return $this return $result === $this->stream ? $this : $result; } public function close() : void { $this->stream->close(); } /** * @return mixed */ public function getMetadata($key = null) { return $this->stream->getMetadata($key); } public function detach() { return $this->stream->detach(); } public function getSize() : ?int { return $this->stream->getSize(); } public function eof() : bool { return $this->stream->eof(); } public function tell() : int { return $this->stream->tell(); } public function isReadable() : bool { return $this->stream->isReadable(); } public function isWritable() : bool { return $this->stream->isWritable(); } public function isSeekable() : bool { return $this->stream->isSeekable(); } public function rewind() : void { $this->seek(0); } public function seek($offset, $whence = \SEEK_SET) : void { $this->stream->seek($offset, $whence); } public function read($length) : string { return $this->stream->read($length); } public function write($string) : int { return $this->stream->write($string); } /** * Implement in subclasses to dynamically create streams when requested. * * @throws \BadMethodCallException */ protected function createStream() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { throw new \BadMethodCallException('Not implemented'); } } vendor_prefixed/guzzlehttp/psr7/src/BufferStream.php000064400000006321147206602470016741 0ustar00hwm = $hwm; } public function __toString() : string { return $this->getContents(); } public function getContents() : string { $buffer = $this->buffer; $this->buffer = ''; return $buffer; } public function close() : void { $this->buffer = ''; } public function detach() { $this->close(); return null; } public function getSize() : ?int { return \strlen($this->buffer); } public function isReadable() : bool { return \true; } public function isWritable() : bool { return \true; } public function isSeekable() : bool { return \false; } public function rewind() : void { $this->seek(0); } public function seek($offset, $whence = \SEEK_SET) : void { throw new \RuntimeException('Cannot seek a BufferStream'); } public function eof() : bool { return \strlen($this->buffer) === 0; } public function tell() : int { throw new \RuntimeException('Cannot determine the position of a BufferStream'); } /** * Reads data from the buffer. */ public function read($length) : string { $currentLength = \strlen($this->buffer); if ($length >= $currentLength) { // No need to slice the buffer because we don't have enough data. $result = $this->buffer; $this->buffer = ''; } else { // Slice up the result to provide a subset of the buffer. $result = \substr($this->buffer, 0, $length); $this->buffer = \substr($this->buffer, $length); } return $result; } /** * Writes data to the buffer. */ public function write($string) : int { $this->buffer .= $string; if (\strlen($this->buffer) >= $this->hwm) { return 0; } return \strlen($string); } /** * @return mixed */ public function getMetadata($key = null) { if ($key === 'hwm') { return $this->hwm; } return $key ? null : []; } } vendor_prefixed/guzzlehttp/psr7/src/HttpFactory.php000064400000007714147206602470016632 0ustar00getSize(); } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\UploadedFile($stream, $size, $error, $clientFilename, $clientMediaType); } public function createStream(string $content = '') : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($content); } public function createStreamFromFile(string $file, string $mode = 'r') : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { try { $resource = \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::tryFopen($file, $mode); } catch (\RuntimeException $e) { if ('' === $mode || \false === \in_array($mode[0], ['r', 'w', 'a', 'x', 'c'], \true)) { throw new \InvalidArgumentException(\sprintf('Invalid file opening mode "%s"', $mode), 0, $e); } throw $e; } return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($resource); } public function createStreamFromResource($resource) : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { return \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::streamFor($resource); } public function createServerRequest(string $method, $uri, array $serverParams = []) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { if (empty($method)) { if (!empty($serverParams['REQUEST_METHOD'])) { $method = $serverParams['REQUEST_METHOD']; } else { throw new \InvalidArgumentException('Cannot determine HTTP method'); } } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\ServerRequest($method, $uri, [], null, '1.1', $serverParams); } public function createResponse(int $code = 200, string $reasonPhrase = '') : \YoastSEO_Vendor\Psr\Http\Message\ResponseInterface { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Response($code, [], null, '1.1', $reasonPhrase); } public function createRequest(string $method, $uri) : \YoastSEO_Vendor\Psr\Http\Message\RequestInterface { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Request($method, $uri); } public function createUri(string $uri = '') : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { return new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri($uri); } } vendor_prefixed/guzzlehttp/psr7/src/ServerRequest.php000064400000023235147206602470017176 0ustar00serverParams = $serverParams; parent::__construct($method, $uri, $headers, $body, $version); } /** * Return an UploadedFile instance array. * * @param array $files An array which respect $_FILES structure * * @throws InvalidArgumentException for unrecognized values */ public static function normalizeFiles(array $files) : array { $normalized = []; foreach ($files as $key => $value) { if ($value instanceof \YoastSEO_Vendor\Psr\Http\Message\UploadedFileInterface) { $normalized[$key] = $value; } elseif (\is_array($value) && isset($value['tmp_name'])) { $normalized[$key] = self::createUploadedFileFromSpec($value); } elseif (\is_array($value)) { $normalized[$key] = self::normalizeFiles($value); continue; } else { throw new \InvalidArgumentException('Invalid value in files specification'); } } return $normalized; } /** * Create and return an UploadedFile instance from a $_FILES specification. * * If the specification represents an array of values, this method will * delegate to normalizeNestedFileSpec() and return that return value. * * @param array $value $_FILES struct * * @return UploadedFileInterface|UploadedFileInterface[] */ private static function createUploadedFileFromSpec(array $value) { if (\is_array($value['tmp_name'])) { return self::normalizeNestedFileSpec($value); } return new \YoastSEO_Vendor\GuzzleHttp\Psr7\UploadedFile($value['tmp_name'], (int) $value['size'], (int) $value['error'], $value['name'], $value['type']); } /** * Normalize an array of file specifications. * * Loops through all nested files and returns a normalized array of * UploadedFileInterface instances. * * @return UploadedFileInterface[] */ private static function normalizeNestedFileSpec(array $files = []) : array { $normalizedFiles = []; foreach (\array_keys($files['tmp_name']) as $key) { $spec = ['tmp_name' => $files['tmp_name'][$key], 'size' => $files['size'][$key] ?? null, 'error' => $files['error'][$key] ?? null, 'name' => $files['name'][$key] ?? null, 'type' => $files['type'][$key] ?? null]; $normalizedFiles[$key] = self::createUploadedFileFromSpec($spec); } return $normalizedFiles; } /** * Return a ServerRequest populated with superglobals: * $_GET * $_POST * $_COOKIE * $_FILES * $_SERVER */ public static function fromGlobals() : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $method = $_SERVER['REQUEST_METHOD'] ?? 'GET'; $headers = \getallheaders(); $uri = self::getUriFromGlobals(); $body = new \YoastSEO_Vendor\GuzzleHttp\Psr7\CachingStream(new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream('php://input', 'r+')); $protocol = isset($_SERVER['SERVER_PROTOCOL']) ? \str_replace('HTTP/', '', $_SERVER['SERVER_PROTOCOL']) : '1.1'; $serverRequest = new \YoastSEO_Vendor\GuzzleHttp\Psr7\ServerRequest($method, $uri, $headers, $body, $protocol, $_SERVER); return $serverRequest->withCookieParams($_COOKIE)->withQueryParams($_GET)->withParsedBody($_POST)->withUploadedFiles(self::normalizeFiles($_FILES)); } private static function extractHostAndPortFromAuthority(string $authority) : array { $uri = 'http://' . $authority; $parts = \parse_url($uri); if (\false === $parts) { return [null, null]; } $host = $parts['host'] ?? null; $port = $parts['port'] ?? null; return [$host, $port]; } /** * Get a Uri populated with values from $_SERVER. */ public static function getUriFromGlobals() : \YoastSEO_Vendor\Psr\Http\Message\UriInterface { $uri = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Uri(''); $uri = $uri->withScheme(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http'); $hasPort = \false; if (isset($_SERVER['HTTP_HOST'])) { [$host, $port] = self::extractHostAndPortFromAuthority($_SERVER['HTTP_HOST']); if ($host !== null) { $uri = $uri->withHost($host); } if ($port !== null) { $hasPort = \true; $uri = $uri->withPort($port); } } elseif (isset($_SERVER['SERVER_NAME'])) { $uri = $uri->withHost($_SERVER['SERVER_NAME']); } elseif (isset($_SERVER['SERVER_ADDR'])) { $uri = $uri->withHost($_SERVER['SERVER_ADDR']); } if (!$hasPort && isset($_SERVER['SERVER_PORT'])) { $uri = $uri->withPort($_SERVER['SERVER_PORT']); } $hasQuery = \false; if (isset($_SERVER['REQUEST_URI'])) { $requestUriParts = \explode('?', $_SERVER['REQUEST_URI'], 2); $uri = $uri->withPath($requestUriParts[0]); if (isset($requestUriParts[1])) { $hasQuery = \true; $uri = $uri->withQuery($requestUriParts[1]); } } if (!$hasQuery && isset($_SERVER['QUERY_STRING'])) { $uri = $uri->withQuery($_SERVER['QUERY_STRING']); } return $uri; } public function getServerParams() : array { return $this->serverParams; } public function getUploadedFiles() : array { return $this->uploadedFiles; } public function withUploadedFiles(array $uploadedFiles) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $new = clone $this; $new->uploadedFiles = $uploadedFiles; return $new; } public function getCookieParams() : array { return $this->cookieParams; } public function withCookieParams(array $cookies) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $new = clone $this; $new->cookieParams = $cookies; return $new; } public function getQueryParams() : array { return $this->queryParams; } public function withQueryParams(array $query) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $new = clone $this; $new->queryParams = $query; return $new; } /** * @return array|object|null */ public function getParsedBody() { return $this->parsedBody; } public function withParsedBody($data) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $new = clone $this; $new->parsedBody = $data; return $new; } public function getAttributes() : array { return $this->attributes; } /** * @return mixed */ public function getAttribute($attribute, $default = null) { if (\false === \array_key_exists($attribute, $this->attributes)) { return $default; } return $this->attributes[$attribute]; } public function withAttribute($attribute, $value) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { $new = clone $this; $new->attributes[$attribute] = $value; return $new; } public function withoutAttribute($attribute) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface { if (\false === \array_key_exists($attribute, $this->attributes)) { return $this; } $new = clone $this; unset($new->attributes[$attribute]); return $new; } } vendor_prefixed/guzzlehttp/psr7/src/UploadedFile.php000064400000011463147206602470016714 0ustar00setError($errorStatus); $this->size = $size; $this->clientFilename = $clientFilename; $this->clientMediaType = $clientMediaType; if ($this->isOk()) { $this->setStreamOrFile($streamOrFile); } } /** * Depending on the value set file or stream variable * * @param StreamInterface|string|resource $streamOrFile * * @throws InvalidArgumentException */ private function setStreamOrFile($streamOrFile) : void { if (\is_string($streamOrFile)) { $this->file = $streamOrFile; } elseif (\is_resource($streamOrFile)) { $this->stream = new \YoastSEO_Vendor\GuzzleHttp\Psr7\Stream($streamOrFile); } elseif ($streamOrFile instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) { $this->stream = $streamOrFile; } else { throw new \InvalidArgumentException('Invalid stream or file provided for UploadedFile'); } } /** * @throws InvalidArgumentException */ private function setError(int $error) : void { if (\false === \in_array($error, \YoastSEO_Vendor\GuzzleHttp\Psr7\UploadedFile::ERRORS, \true)) { throw new \InvalidArgumentException('Invalid error status for UploadedFile'); } $this->error = $error; } private static function isStringNotEmpty($param) : bool { return \is_string($param) && \false === empty($param); } /** * Return true if there is no upload error */ private function isOk() : bool { return $this->error === \UPLOAD_ERR_OK; } public function isMoved() : bool { return $this->moved; } /** * @throws RuntimeException if is moved or not ok */ private function validateActive() : void { if (\false === $this->isOk()) { throw new \RuntimeException('Cannot retrieve stream due to upload error'); } if ($this->isMoved()) { throw new \RuntimeException('Cannot retrieve stream after it has already been moved'); } } public function getStream() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface { $this->validateActive(); if ($this->stream instanceof \YoastSEO_Vendor\Psr\Http\Message\StreamInterface) { return $this->stream; } /** @var string $file */ $file = $this->file; return new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($file, 'r+'); } public function moveTo($targetPath) : void { $this->validateActive(); if (\false === self::isStringNotEmpty($targetPath)) { throw new \InvalidArgumentException('Invalid path provided for move operation; must be a non-empty string'); } if ($this->file) { $this->moved = \PHP_SAPI === 'cli' ? \rename($this->file, $targetPath) : \move_uploaded_file($this->file, $targetPath); } else { \YoastSEO_Vendor\GuzzleHttp\Psr7\Utils::copyToStream($this->getStream(), new \YoastSEO_Vendor\GuzzleHttp\Psr7\LazyOpenStream($targetPath, 'w')); $this->moved = \true; } if (\false === $this->moved) { throw new \RuntimeException(\sprintf('Uploaded file could not be moved to %s', $targetPath)); } } public function getSize() : ?int { return $this->size; } public function getError() : int { return $this->error; } public function getClientFilename() : ?string { return $this->clientFilename; } public function getClientMediaType() : ?string { return $this->clientMediaType; } } vendor_prefixed/guzzlehttp/psr7/src/UriComparator.php000064400000002402147206602470017137 0ustar00getHost(), $modified->getHost()) !== 0) { return \true; } if ($original->getScheme() !== $modified->getScheme()) { return \true; } if (self::computePort($original) !== self::computePort($modified)) { return \true; } return \false; } private static function computePort(\YoastSEO_Vendor\Psr\Http\Message\UriInterface $uri) : int { $port = $uri->getPort(); if (null !== $port) { return $port; } return 'https' === $uri->getScheme() ? 443 : 80; } private function __construct() { // cannot be instantiated } } vendor_prefixed/guzzlehttp/psr7/src/StreamWrapper.php000064400000010161147206602470017145 0ustar00isReadable()) { $mode = $stream->isWritable() ? 'r+' : 'r'; } elseif ($stream->isWritable()) { $mode = 'w'; } else { throw new \InvalidArgumentException('The stream must be readable, ' . 'writable, or both.'); } return \fopen('guzzle://stream', $mode, \false, self::createStreamContext($stream)); } /** * Creates a stream context that can be used to open a stream as a php stream resource. * * @return resource */ public static function createStreamContext(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $stream) { return \stream_context_create(['guzzle' => ['stream' => $stream]]); } /** * Registers the stream wrapper if needed */ public static function register() : void { if (!\in_array('guzzle', \stream_get_wrappers())) { \stream_wrapper_register('guzzle', __CLASS__); } } public function stream_open(string $path, string $mode, int $options, string &$opened_path = null) : bool { $options = \stream_context_get_options($this->context); if (!isset($options['guzzle']['stream'])) { return \false; } $this->mode = $mode; $this->stream = $options['guzzle']['stream']; return \true; } public function stream_read(int $count) : string { return $this->stream->read($count); } public function stream_write(string $data) : int { return $this->stream->write($data); } public function stream_tell() : int { return $this->stream->tell(); } public function stream_eof() : bool { return $this->stream->eof(); } public function stream_seek(int $offset, int $whence) : bool { $this->stream->seek($offset, $whence); return \true; } /** * @return resource|false */ public function stream_cast(int $cast_as) { $stream = clone $this->stream; $resource = $stream->detach(); return $resource ?? \false; } /** * @return array{ * dev: int, * ino: int, * mode: int, * nlink: int, * uid: int, * gid: int, * rdev: int, * size: int, * atime: int, * mtime: int, * ctime: int, * blksize: int, * blocks: int * } */ public function stream_stat() : array { static $modeMap = ['r' => 33060, 'rb' => 33060, 'r+' => 33206, 'w' => 33188, 'wb' => 33188]; return ['dev' => 0, 'ino' => 0, 'mode' => $modeMap[$this->mode], 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => $this->stream->getSize() ?: 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; } /** * @return array{ * dev: int, * ino: int, * mode: int, * nlink: int, * uid: int, * gid: int, * rdev: int, * size: int, * atime: int, * mtime: int, * ctime: int, * blksize: int, * blocks: int * } */ public function url_stat(string $path, int $flags) : array { return ['dev' => 0, 'ino' => 0, 'mode' => 0, 'nlink' => 0, 'uid' => 0, 'gid' => 0, 'rdev' => 0, 'size' => 0, 'atime' => 0, 'mtime' => 0, 'ctime' => 0, 'blksize' => 0, 'blocks' => 0]; } } vendor_prefixed/psr/log/Psr/Log/NullLogger.php000064400000001354147206602470015377 0ustar00logger) { }` * blocks. */ class NullLogger extends \YoastSEO_Vendor\Psr\Log\AbstractLogger { /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * * @return void * * @throws \Psr\Log\InvalidArgumentException */ public function log($level, $message, array $context = array()) { // noop } } vendor_prefixed/psr/log/Psr/Log/InvalidArgumentException.php000064400000000160147206602470020267 0ustar00log(\YoastSEO_Vendor\Psr\Log\LogLevel::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param array $context * * @return void */ public function alert($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param array $context * * @return void */ public function critical($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param array $context * * @return void */ public function error($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param array $context * * @return void */ public function warning($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param array $context * * @return void */ public function notice($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param array $context * * @return void */ public function info($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param array $context * * @return void */ public function debug($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::DEBUG, $message, $context); } /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * * @return void * * @throws \Psr\Log\InvalidArgumentException */ public abstract function log($level, $message, array $context = array()); } vendor_prefixed/psr/log/Psr/Log/LoggerInterface.php000064400000006062147206602470016366 0ustar00logger = $logger; } } vendor_prefixed/psr/log/Psr/Log/LoggerAwareInterface.php000064400000000522147206602470017341 0ustar00log(\YoastSEO_Vendor\Psr\Log\LogLevel::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param mixed[] $context * * @return void */ public function alert($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param mixed[] $context * * @return void */ public function critical($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param mixed[] $context * * @return void */ public function error($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param mixed[] $context * * @return void */ public function warning($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param mixed[] $context * * @return void */ public function notice($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param mixed[] $context * * @return void */ public function info($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param mixed[] $context * * @return void */ public function debug($message, array $context = array()) { $this->log(\YoastSEO_Vendor\Psr\Log\LogLevel::DEBUG, $message, $context); } } vendor_prefixed/psr/log/Psr/Log/LogLevel.php000064400000000511147206602470015030 0ustar00 * [user-info@]host[:port] * * * If the port component is not set or is the standard port for the current * scheme, it SHOULD NOT be included. * * @see https://tools.ietf.org/html/rfc3986#section-3.2 * @return string The URI authority, in "[user-info@]host[:port]" format. */ public function getAuthority() : string; /** * Retrieve the user information component of the URI. * * If no user information is present, this method MUST return an empty * string. * * If a user is present in the URI, this will return that value; * additionally, if the password is also present, it will be appended to the * user value, with a colon (":") separating the values. * * The trailing "@" character is not part of the user information and MUST * NOT be added. * * @return string The URI user information, in "username[:password]" format. */ public function getUserInfo() : string; /** * Retrieve the host component of the URI. * * If no host is present, this method MUST return an empty string. * * The value returned MUST be normalized to lowercase, per RFC 3986 * Section 3.2.2. * * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 * @return string The URI host. */ public function getHost() : string; /** * Retrieve the port component of the URI. * * If a port is present, and it is non-standard for the current scheme, * this method MUST return it as an integer. If the port is the standard port * used with the current scheme, this method SHOULD return null. * * If no port is present, and no scheme is present, this method MUST return * a null value. * * If no port is present, but a scheme is present, this method MAY return * the standard port for that scheme, but SHOULD return null. * * @return null|int The URI port. */ public function getPort() : ?int; /** * Retrieve the path component of the URI. * * The path can either be empty or absolute (starting with a slash) or * rootless (not starting with a slash). Implementations MUST support all * three syntaxes. * * Normally, the empty path "" and absolute path "/" are considered equal as * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically * do this normalization because in contexts with a trimmed base path, e.g. * the front controller, this difference becomes significant. It's the task * of the user to handle both "" and "/". * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.3. * * As an example, if the value should include a slash ("/") not intended as * delimiter between path segments, that value MUST be passed in encoded * form (e.g., "%2F") to the instance. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.3 * @return string The URI path. */ public function getPath() : string; /** * Retrieve the query string of the URI. * * If no query string is present, this method MUST return an empty string. * * The leading "?" character is not part of the query and MUST NOT be * added. * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.4. * * As an example, if a value in a key/value pair of the query string should * include an ampersand ("&") not intended as a delimiter between values, * that value MUST be passed in encoded form (e.g., "%26") to the instance. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.4 * @return string The URI query string. */ public function getQuery() : string; /** * Retrieve the fragment component of the URI. * * If no fragment is present, this method MUST return an empty string. * * The leading "#" character is not part of the fragment and MUST NOT be * added. * * The value returned MUST be percent-encoded, but MUST NOT double-encode * any characters. To determine what characters to encode, please refer to * RFC 3986, Sections 2 and 3.5. * * @see https://tools.ietf.org/html/rfc3986#section-2 * @see https://tools.ietf.org/html/rfc3986#section-3.5 * @return string The URI fragment. */ public function getFragment() : string; /** * Return an instance with the specified scheme. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified scheme. * * Implementations MUST support the schemes "http" and "https" case * insensitively, and MAY accommodate other schemes if required. * * An empty scheme is equivalent to removing the scheme. * * @param string $scheme The scheme to use with the new instance. * @return static A new instance with the specified scheme. * @throws \InvalidArgumentException for invalid or unsupported schemes. */ public function withScheme(string $scheme) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified user information. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified user information. * * Password is optional, but the user information MUST include the * user; an empty string for the user is equivalent to removing user * information. * * @param string $user The user name to use for authority. * @param null|string $password The password associated with $user. * @return static A new instance with the specified user information. */ public function withUserInfo(string $user, ?string $password = null) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified host. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified host. * * An empty host value is equivalent to removing the host. * * @param string $host The hostname to use with the new instance. * @return static A new instance with the specified host. * @throws \InvalidArgumentException for invalid hostnames. */ public function withHost(string $host) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified port. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified port. * * Implementations MUST raise an exception for ports outside the * established TCP and UDP port ranges. * * A null value provided for the port is equivalent to removing the port * information. * * @param null|int $port The port to use with the new instance; a null value * removes the port information. * @return static A new instance with the specified port. * @throws \InvalidArgumentException for invalid ports. */ public function withPort(?int $port) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified path. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified path. * * The path can either be empty or absolute (starting with a slash) or * rootless (not starting with a slash). Implementations MUST support all * three syntaxes. * * If the path is intended to be domain-relative rather than path relative then * it must begin with a slash ("/"). Paths not starting with a slash ("/") * are assumed to be relative to some base path known to the application or * consumer. * * Users can provide both encoded and decoded path characters. * Implementations ensure the correct encoding as outlined in getPath(). * * @param string $path The path to use with the new instance. * @return static A new instance with the specified path. * @throws \InvalidArgumentException for invalid paths. */ public function withPath(string $path) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified query string. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified query string. * * Users can provide both encoded and decoded query characters. * Implementations ensure the correct encoding as outlined in getQuery(). * * An empty query string value is equivalent to removing the query string. * * @param string $query The query string to use with the new instance. * @return static A new instance with the specified query string. * @throws \InvalidArgumentException for invalid query strings. */ public function withQuery(string $query) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return an instance with the specified URI fragment. * * This method MUST retain the state of the current instance, and return * an instance that contains the specified URI fragment. * * Users can provide both encoded and decoded fragment characters. * Implementations ensure the correct encoding as outlined in getFragment(). * * An empty fragment value is equivalent to removing the fragment. * * @param string $fragment The fragment to use with the new instance. * @return static A new instance with the specified fragment. */ public function withFragment(string $fragment) : \YoastSEO_Vendor\Psr\Http\Message\UriInterface; /** * Return the string representation as a URI reference. * * Depending on which components of the URI are present, the resulting * string is either a full URI or relative reference according to RFC 3986, * Section 4.1. The method concatenates the various components of the URI, * using the appropriate delimiters: * * - If a scheme is present, it MUST be suffixed by ":". * - If an authority is present, it MUST be prefixed by "//". * - The path can be concatenated without delimiters. But there are two * cases where the path has to be adjusted to make the URI reference * valid as PHP does not allow to throw an exception in __toString(): * - If the path is rootless and an authority is present, the path MUST * be prefixed by "/". * - If the path is starting with more than one "/" and no authority is * present, the starting slashes MUST be reduced to one. * - If a query is present, it MUST be prefixed by "?". * - If a fragment is present, it MUST be prefixed by "#". * * @see http://tools.ietf.org/html/rfc3986#section-4.1 * @return string */ public function __toString() : string; } vendor_prefixed/psr/http-message/src/StreamInterface.php000064400000011414147206602470017521 0ustar00getQuery()` * or from the `QUERY_STRING` server param. * * @return array */ public function getQueryParams() : array; /** * Return an instance with the specified query string arguments. * * These values SHOULD remain immutable over the course of the incoming * request. They MAY be injected during instantiation, such as from PHP's * $_GET superglobal, or MAY be derived from some other value such as the * URI. In cases where the arguments are parsed from the URI, the data * MUST be compatible with what PHP's parse_str() would return for * purposes of how duplicate query parameters are handled, and how nested * sets are handled. * * Setting query string arguments MUST NOT change the URI stored by the * request, nor the values in the server params. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated query string arguments. * * @param array $query Array of query string arguments, typically from * $_GET. * @return static */ public function withQueryParams(array $query) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface; /** * Retrieve normalized file upload data. * * This method returns upload metadata in a normalized tree, with each leaf * an instance of Psr\Http\Message\UploadedFileInterface. * * These values MAY be prepared from $_FILES or the message body during * instantiation, or MAY be injected via withUploadedFiles(). * * @return array An array tree of UploadedFileInterface instances; an empty * array MUST be returned if no data is present. */ public function getUploadedFiles() : array; /** * Create a new instance with the specified uploaded files. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated body parameters. * * @param array $uploadedFiles An array tree of UploadedFileInterface instances. * @return static * @throws \InvalidArgumentException if an invalid structure is provided. */ public function withUploadedFiles(array $uploadedFiles) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface; /** * Retrieve any parameters provided in the request body. * * If the request Content-Type is either application/x-www-form-urlencoded * or multipart/form-data, and the request method is POST, this method MUST * return the contents of $_POST. * * Otherwise, this method may return any results of deserializing * the request body content; as parsing returns structured content, the * potential types MUST be arrays or objects only. A null value indicates * the absence of body content. * * @return null|array|object The deserialized body parameters, if any. * These will typically be an array or object. */ public function getParsedBody(); /** * Return an instance with the specified body parameters. * * These MAY be injected during instantiation. * * If the request Content-Type is either application/x-www-form-urlencoded * or multipart/form-data, and the request method is POST, use this method * ONLY to inject the contents of $_POST. * * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of * deserializing the request body content. Deserialization/parsing returns * structured data, and, as such, this method ONLY accepts arrays or objects, * or a null value if nothing was available to parse. * * As an example, if content negotiation determines that the request data * is a JSON payload, this method could be used to create a request * instance with the deserialized parameters. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated body parameters. * * @param null|array|object $data The deserialized body data. This will * typically be in an array or object. * @return static * @throws \InvalidArgumentException if an unsupported argument type is * provided. */ public function withParsedBody($data) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface; /** * Retrieve attributes derived from the request. * * The request "attributes" may be used to allow injection of any * parameters derived from the request: e.g., the results of path * match operations; the results of decrypting cookies; the results of * deserializing non-form-encoded message bodies; etc. Attributes * will be application and request specific, and CAN be mutable. * * @return array Attributes derived from the request. */ public function getAttributes() : array; /** * Retrieve a single derived request attribute. * * Retrieves a single derived request attribute as described in * getAttributes(). If the attribute has not been previously set, returns * the default value as provided. * * This method obviates the need for a hasAttribute() method, as it allows * specifying a default value to return if the attribute is not found. * * @see getAttributes() * @param string $name The attribute name. * @param mixed $default Default value to return if the attribute does not exist. * @return mixed */ public function getAttribute(string $name, $default = null); /** * Return an instance with the specified derived request attribute. * * This method allows setting a single derived request attribute as * described in getAttributes(). * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * updated attribute. * * @see getAttributes() * @param string $name The attribute name. * @param mixed $value The value of the attribute. * @return static */ public function withAttribute(string $name, $value) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface; /** * Return an instance that removes the specified derived request attribute. * * This method allows removing a single derived request attribute as * described in getAttributes(). * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that removes * the attribute. * * @see getAttributes() * @param string $name The attribute name. * @return static */ public function withoutAttribute(string $name) : \YoastSEO_Vendor\Psr\Http\Message\ServerRequestInterface; } vendor_prefixed/psr/http-message/src/MessageInterface.php000064400000016275147206602470017664 0ustar00getHeaders() as $name => $values) { * echo $name . ": " . implode(", ", $values); * } * * // Emit headers iteratively: * foreach ($message->getHeaders() as $name => $values) { * foreach ($values as $value) { * header(sprintf('%s: %s', $name, $value), false); * } * } * * While header names are not case-sensitive, getHeaders() will preserve the * exact case in which headers were originally specified. * * @return string[][] Returns an associative array of the message's headers. Each * key MUST be a header name, and each value MUST be an array of strings * for that header. */ public function getHeaders() : array; /** * Checks if a header exists by the given case-insensitive name. * * @param string $name Case-insensitive header field name. * @return bool Returns true if any header names match the given header * name using a case-insensitive string comparison. Returns false if * no matching header name is found in the message. */ public function hasHeader(string $name) : bool; /** * Retrieves a message header value by the given case-insensitive name. * * This method returns an array of all the header values of the given * case-insensitive header name. * * If the header does not appear in the message, this method MUST return an * empty array. * * @param string $name Case-insensitive header field name. * @return string[] An array of string values as provided for the given * header. If the header does not appear in the message, this method MUST * return an empty array. */ public function getHeader(string $name) : array; /** * Retrieves a comma-separated string of the values for a single header. * * This method returns all of the header values of the given * case-insensitive header name as a string concatenated together using * a comma. * * NOTE: Not all header values may be appropriately represented using * comma concatenation. For such headers, use getHeader() instead * and supply your own delimiter when concatenating. * * If the header does not appear in the message, this method MUST return * an empty string. * * @param string $name Case-insensitive header field name. * @return string A string of values as provided for the given header * concatenated together using a comma. If the header does not appear in * the message, this method MUST return an empty string. */ public function getHeaderLine(string $name) : string; /** * Return an instance with the provided value replacing the specified header. * * While header names are case-insensitive, the casing of the header will * be preserved by this function, and returned from getHeaders(). * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * new and/or updated header and value. * * @param string $name Case-insensitive header field name. * @param string|string[] $value Header value(s). * @return static * @throws \InvalidArgumentException for invalid header names or values. */ public function withHeader(string $name, $value) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface; /** * Return an instance with the specified header appended with the given value. * * Existing values for the specified header will be maintained. The new * value(s) will be appended to the existing list. If the header did not * exist previously, it will be added. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that has the * new header and/or value. * * @param string $name Case-insensitive header field name to add. * @param string|string[] $value Header value(s). * @return static * @throws \InvalidArgumentException for invalid header names or values. */ public function withAddedHeader(string $name, $value) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface; /** * Return an instance without the specified header. * * Header resolution MUST be done without case-sensitivity. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return an instance that removes * the named header. * * @param string $name Case-insensitive header field name to remove. * @return static */ public function withoutHeader(string $name) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface; /** * Gets the body of the message. * * @return StreamInterface Returns the body as a stream. */ public function getBody() : \YoastSEO_Vendor\Psr\Http\Message\StreamInterface; /** * Return an instance with the specified message body. * * The body MUST be a StreamInterface object. * * This method MUST be implemented in such a way as to retain the * immutability of the message, and MUST return a new instance that has the * new body stream. * * @param StreamInterface $body Body. * @return static * @throws \InvalidArgumentException When the body is not valid. */ public function withBody(\YoastSEO_Vendor\Psr\Http\Message\StreamInterface $body) : \YoastSEO_Vendor\Psr\Http\Message\MessageInterface; } vendor_prefixed/psr/http-client/src/ClientInterface.php000064400000001150147206602470017332 0ustar00packages/js/images/wordproof-logo.svg000064400000006301147206602470013713 0ustar00packages/js/images/Yoast_SEO_Icon.svg000064400000002033147206602470013507 0ustar00packages/js/images/icon-twitter.svg000064400000001310147206602470013357 0ustar00packages/js/images/jetpack-logo.svg000064400000016574147206602470013330 0ustar00 image/svg+xml packages/js/images/star-rating-star.svg000064400000000542147206602470014137 0ustar00 packages/js/images/edd-logo.svg000064400000057547147206602470012450 0ustar00packages/js/images/icon-facebook.svg000064400000000775147206602470013444 0ustar00packages/js/images/ssp-logo.svg000064400000074161147206602470012510 0ustar00 packages/js/images/star-rating-half.svg000064400000001602147206602470014076 0ustar00 packages/js/images/x-logo.svg000064400000000630147206602470012140 0ustar00 packages/js/images/g2_logo_white_optm.svg000064400000001503147206602470014522 0ustar00packages/js/images/logo-g2-white.svg000064400000002146147206602470013323 0ustar00 packages/js/images/semrush-logo.svg000064400000007766147206602470013400 0ustar00 packages/js/images/wincher-logo.svg000064400000010773147206602470013341 0ustar00packages/js/images/succes_marieke_bubble_optm.svg000064400000016451147206602470016277 0ustar00packages/js/images/icon-arrow-down.svg000064400000000406147206602470013761 0ustar00packages/js/images/indexables_2_left_bubble_optm.svg000064400000026045147206602470016666 0ustar00packages/js/images/Yoast_icon_kader.svg000064400000002471147206602470014215 0ustar00packages/js/images/elementor-logo.svg000064400000013524147206602470013671 0ustar00packages/js/images/mastodon-logo.svg000064400000013071147206602470013520 0ustar00 packages/js/images/algolia-logo.svg000064400000012424147206602470013305 0ustar00 packages/js/images/indexables_1_left_bubble_optm.svg000064400000030602147206602470016657 0ustar00packages/js/images/woocommerce-seo-logo.svg000064400000013005147206602470014774 0ustar00packages/js/images/connection-assistant.svg000064400000042751147206602470015113 0ustar00 packages/js/images/wp-recipe-maker-logo.svg000064400000024241147206602470014665 0ustar00packages/js/images/tec-logo.svg000064400000035626147206602470012461 0ustar00 packages/js/images/motivated_bubble_woman_1_optim.svg000064400000016110147206602470017073 0ustar00 src/loggers/logger.php000064400000002057147206602470011001 0ustar00wrapped_logger = new NullLogger(); /** * Gives the possibility to set override the logger interface. * * @param LoggerInterface $logger Instance of NullLogger. * * @return LoggerInterface The logger object. */ $this->wrapped_logger = \apply_filters( 'wpseo_logger', $this->wrapped_logger ); } /** * Logs with an arbitrary level. * * @param mixed $level The log level. * @param string $message The log message. * @param array $context The log context. * * @return void */ public function log( $level, $message, array $context = [] ) { $this->wrapped_logger->log( $level, $message, $context ); } } src/surfaces/values/meta.php000064400000027624147206602470012127 0ustar00 Key is the property name. */ private $properties_bin = []; /** * Create a meta value object. * * @param Meta_Tags_Context $context The indexable presentation. * @param ContainerInterface $container The DI container. */ public function __construct( Meta_Tags_Context $context, ContainerInterface $container ) { $this->container = $container; $this->context = $context; $this->helpers = $this->container->get( Helpers_Surface::class ); $this->replace_vars = $this->container->get( WPSEO_Replace_Vars::class ); $this->front_end = $this->container->get( Front_End_Integration::class ); } /** * Returns the output as would be presented in the head. * * @return object The HTML and JSON presentation of the head metadata. */ public function get_head() { $presenters = $this->get_presenters(); /** This filter is documented in src/integrations/front-end-integration.php */ $presentation = \apply_filters( 'wpseo_frontend_presentation', $this->context->presentation, $this->context ); $html_output = ''; $json_head_fields = []; foreach ( $presenters as $presenter ) { $presenter->presentation = $presentation; $presenter->replace_vars = $this->replace_vars; $presenter->helpers = $this->helpers; $html_output .= $this->create_html_presentation( $presenter ); $json_field = $this->create_json_field( $presenter ); // Only use the output of presenters that could successfully present their data. if ( $json_field !== null && ! empty( $json_field->key ) ) { $json_head_fields[ $json_field->key ] = $json_field->value; } } $html_output = \trim( $html_output ); return (object) [ 'html' => $html_output, 'json' => $json_head_fields, ]; } /** * Magic getter for presenting values through the appropriate presenter, if it exists. * * @param string $name The property to get. * * @return mixed The value, as presented by the appropriate presenter. */ public function __get( $name ) { if ( \array_key_exists( $name, $this->properties_bin ) ) { return $this->properties_bin[ $name ]; } /** This filter is documented in src/integrations/front-end-integration.php */ $presentation = \apply_filters( 'wpseo_frontend_presentation', $this->context->presentation, $this->context ); if ( ! isset( $presentation->{$name} ) ) { if ( isset( $this->context->{$name} ) ) { $this->properties_bin[ $name ] = $this->context->{$name}; return $this->properties_bin[ $name ]; } return null; } $presenter_namespace = 'Yoast\WP\SEO\Presenters\\'; $parts = \explode( '_', $name ); if ( $parts[0] === 'twitter' ) { $presenter_namespace .= 'Twitter\\'; $parts = \array_slice( $parts, 1 ); } elseif ( $parts[0] === 'open' && $parts[1] === 'graph' ) { $presenter_namespace .= 'Open_Graph\\'; $parts = \array_slice( $parts, 2 ); } $presenter_class = $presenter_namespace . \implode( '_', \array_map( 'ucfirst', $parts ) ) . '_Presenter'; if ( \class_exists( $presenter_class ) ) { /** * The indexable presenter. * * @var Abstract_Indexable_Presenter */ $presenter = new $presenter_class(); $presenter->presentation = $presentation; $presenter->helpers = $this->helpers; $presenter->replace_vars = $this->replace_vars; $value = $presenter->get(); } else { $value = $presentation->{$name}; } $this->properties_bin[ $name ] = $value; return $this->properties_bin[ $name ]; } /** * Magic isset for ensuring properties on the presentation are recognised. * * @param string $name The property to get. * * @return bool Whether or not the requested property exists. */ public function __isset( $name ) { if ( \array_key_exists( $name, $this->properties_bin ) ) { return true; } return isset( $this->context->presentation->{$name} ); } /** * Prevents setting dynamic properties and overwriting the value of declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Strips all nested dependencies from the debug info. * * @return array */ public function __debugInfo() { return [ 'context' => $this->context ]; } /** * Returns all presenters. * * @return Abstract_Indexable_Presenter[] */ protected function get_presenters() { $presenters = $this->front_end->get_presenters( $this->context->page_type, $this->context ); if ( $this->context->page_type === 'Date_Archive' ) { /** * Define a filter that removes objects of type Rel_Next_Presenter or Rel_Prev_Presenter from a list. * * @param object $presenter The presenter to verify. * * @return bool True if the presenter is not a Rel_Next or Rel_Prev presenter. */ $callback = static function ( $presenter ) { return ! \is_a( $presenter, Rel_Next_Presenter::class ) && ! \is_a( $presenter, Rel_Prev_Presenter::class ); }; $presenters = \array_filter( $presenters, $callback ); } return $presenters; } /** * Uses the presenter to create a line of HTML. * * @param Abstract_Indexable_Presenter $presenter The presenter. * * @return string */ protected function create_html_presentation( $presenter ) { $presenter_output = $presenter->present(); if ( ! empty( $presenter_output ) ) { return $presenter_output . \PHP_EOL; } return ''; } /** * Converts a presenter's key and value to JSON. * * @param Abstract_Indexable_Presenter $presenter The presenter whose key and value are to be converted to JSON. * * @return object|null */ protected function create_json_field( $presenter ) { if ( $presenter->get_key() === 'NO KEY PROVIDED' ) { return null; } $value = $presenter->get(); if ( empty( $value ) ) { return null; } return (object) [ 'key' => $presenter->escape_key(), 'value' => $value, ]; } } src/surfaces/helpers-surface.php000064400000013100147206602470012752 0ustar00container = $container; $this->open_graph = $open_graph; $this->schema = $schema; $this->twitter = $twitter; } /** * Magic getter for getting helper classes. * * @param string $helper The helper to get. * * @return mixed The helper class. */ public function __get( $helper ) { return $this->container->get( $this->get_helper_class( $helper ) ); } /** * Magic isset for ensuring helper exists. * * @param string $helper The helper to get. * * @return bool Whether the helper exists. */ public function __isset( $helper ) { return $this->container->has( $this->get_helper_class( $helper ) ); } /** * Prevents setting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Get the class name from a helper slug * * @param string $helper The name of the helper. * * @return string */ protected function get_helper_class( $helper ) { $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) ); return "Yoast\WP\SEO\Helpers\\{$helper}_Helper"; } } src/surfaces/meta-surface.php000064400000024401147206602470012244 0ustar00container = $container; $this->context_memoizer = $context_memoizer; $this->repository = $indexable_repository; $this->wp_rewrite_wrapper = $wp_rewrite_wrapper; $this->indexable_helper = $indexable_helper; } /** * Returns the meta tags context for the current page. * * @return Meta The meta values. */ public function for_current_page() { return $this->build_meta( $this->context_memoizer->for_current_page() ); } /** * Returns the meta tags context for the home page. * * @return Meta|false The meta values. False if none could be found. */ public function for_home_page() { $front_page_id = (int) \get_option( 'page_on_front' ); if ( \get_option( 'show_on_front' ) === 'page' && $front_page_id !== 0 ) { $indexable = $this->repository->find_by_id_and_type( $front_page_id, 'post' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Static_Home_Page' ) ); } $indexable = $this->repository->find_for_home_page(); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Home_Page' ) ); } /** * Returns the meta tags context for the posts page. * * @return Meta|false The meta values. False if none could be found. */ public function for_posts_page() { $posts_page_id = (int) \get_option( 'page_for_posts' ); if ( $posts_page_id !== 0 ) { $indexable = $this->repository->find_by_id_and_type( $posts_page_id, 'post' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Static_Posts_Page' ) ); } $indexable = $this->repository->find_for_home_page(); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Home_Page' ) ); } /** * Returns the meta tags context for a post type archive. * * @param string|null $post_type Optional. The post type to get the archive meta for. Defaults to the current post type. * * @return Meta|false The meta values. False if none could be found. */ public function for_post_type_archive( $post_type = null ) { if ( $post_type === null ) { $post_type = \get_post_type(); } $indexable = $this->repository->find_for_post_type_archive( $post_type ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Post_Type_Archive' ) ); } /** * Returns the meta tags context for the search result page. * * @return Meta|false The meta values. False if none could be found. */ public function for_search_result() { $indexable = $this->repository->find_for_system_page( 'search-result' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Search_Result_Page' ) ); } /** * Returns the meta tags context for the search result page. * * @return Meta|false The meta values. False if none could be found. */ public function for_404() { $indexable = $this->repository->find_for_system_page( '404' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Error_Page' ) ); } /** * Returns the meta tags context for a post. * * @param int $id The ID of the post. * * @return Meta|false The meta values. False if none could be found. */ public function for_post( $id ) { $indexable = $this->repository->find_by_id_and_type( $id, 'post' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Post_Type' ) ); } /** * Returns the meta tags context for a number of posts. * * @param int[] $ids The IDs of the posts. * * @return Meta[]|false The meta values. False if none could be found. */ public function for_posts( $ids ) { $indexables = $this->repository->find_by_multiple_ids_and_type( $ids, 'post' ); if ( empty( $indexables ) ) { return false; } // Remove all false values. $indexables = \array_filter( $indexables ); return \array_map( function ( $indexable ) { return $this->build_meta( $this->context_memoizer->get( $indexable, 'Post_Type' ) ); }, $indexables ); } /** * Returns the meta tags context for a term. * * @param int $id The ID of the term. * * @return Meta|false The meta values. False if none could be found. */ public function for_term( $id ) { $indexable = $this->repository->find_by_id_and_type( $id, 'term' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Term_Archive' ) ); } /** * Returns the meta tags context for an author. * * @param int $id The ID of the author. * * @return Meta|false The meta values. False if none could be found. */ public function for_author( $id ) { $indexable = $this->repository->find_by_id_and_type( $id, 'user' ); if ( ! $indexable ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, 'Author_Archive' ) ); } /** * Returns the meta for an indexable. * * @param Indexable $indexable The indexable. * @param string|null $page_type Optional. The page type if already known. * * @return Meta|false The meta values. False if none could be found. */ public function for_indexable( $indexable, $page_type = null ) { if ( ! \is_a( $indexable, Indexable::class ) ) { return false; } if ( \is_null( $page_type ) ) { $page_type = $this->indexable_helper->get_page_type_for_indexable( $indexable ); } return $this->build_meta( $this->context_memoizer->get( $indexable, $page_type ) ); } /** * Returns the meta for an indexable. * * @param Indexable[] $indexables The indexables. * @param string|null $page_type Optional. The page type if already known. * * @return Meta|false The meta values. False if none could be found. */ public function for_indexables( $indexables, $page_type = null ) { $closure = function ( $indexable ) use ( $page_type ) { $this_page_type = $page_type; if ( \is_null( $this_page_type ) ) { $this_page_type = $this->indexable_helper->get_page_type_for_indexable( $indexable ); } return $this->build_meta( $this->context_memoizer->get( $indexable, $this_page_type ) ); }; return \array_map( $closure, $indexables ); } /** * Returns the meta tags context for a url. * * @param string $url The url of the page. Required to be relative to the site url. * * @return Meta|false The meta values. False if none could be found. */ public function for_url( $url ) { $url_parts = \wp_parse_url( $url ); $site_parts = \wp_parse_url( \site_url() ); if ( ( ! \is_array( $url_parts ) || ! \is_array( $site_parts ) ) || ! isset( $url_parts['host'], $url_parts['path'], $site_parts['host'], $site_parts['scheme'] ) ) { return false; } if ( $url_parts['host'] !== $site_parts['host'] ) { return false; } // Ensure the scheme is consistent with values in the DB. $url = $site_parts['scheme'] . '://' . $url_parts['host'] . $url_parts['path']; if ( $this->is_date_archive_url( $url ) ) { $indexable = $this->repository->find_for_date_archive(); } else { $indexable = $this->repository->find_by_permalink( $url ); } // If we still don't have an indexable abort, the WP globals could be anything so we can't use the unknown indexable. if ( ! $indexable ) { return false; } $page_type = $this->indexable_helper->get_page_type_for_indexable( $indexable ); if ( $page_type === false ) { return false; } return $this->build_meta( $this->context_memoizer->get( $indexable, $page_type ) ); } /** * Checks if a given URL is a date archive URL. * * @param string $url The url. * * @return bool */ protected function is_date_archive_url( $url ) { $path = \wp_parse_url( $url, \PHP_URL_PATH ); if ( $path === null ) { return false; } $path = \ltrim( $path, '/' ); $wp_rewrite = $this->wp_rewrite_wrapper->get(); $date_rewrite = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->get_date_permastruct(), \EP_DATE ); $date_rewrite = \apply_filters( 'date_rewrite_rules', $date_rewrite ); foreach ( (array) $date_rewrite as $match => $query ) { if ( \preg_match( "#^$match#", $path ) ) { return true; } } return false; } /** * Creates a new meta value object * * @param Meta_Tags_Context $context The meta tags context. * * @return Meta The meta value */ protected function build_meta( Meta_Tags_Context $context ) { return new Meta( $context, $this->container ); } } src/surfaces/schema-helpers-surface.php000064400000005546147206602470014227 0ustar00container = $container; } /** * Magic getter for getting helper classes. * * @param string $helper The helper to get. * * @return mixed The helper class. */ public function __get( $helper ) { return $this->container->get( $this->get_helper_class( $helper ) ); } /** * Magic isset for ensuring helper exists. * * @param string $helper The helper to get. * * @return bool Whether the helper exists. */ public function __isset( $helper ) { return $this->container->has( $this->get_helper_class( $helper ) ); } /** * Prevents setting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Get the class name from a helper slug * * @param string $helper The name of the helper. * * @return string */ protected function get_helper_class( $helper ) { if ( \in_array( $helper, $this->capitalized_helpers, true ) ) { $helper = \strtoupper( $helper ); } $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) ); return "Yoast\WP\SEO\Helpers\Schema\\{$helper}_Helper"; } } src/surfaces/twitter-helpers-surface.php000064400000004740147206602470014464 0ustar00container = $container; } /** * Magic getter for getting helper classes. * * @param string $helper The helper to get. * * @return mixed The helper class. */ public function __get( $helper ) { return $this->container->get( $this->get_helper_class( $helper ) ); } /** * Magic isset for ensuring helper exists. * * @param string $helper The helper to get. * * @return bool Whether the helper exists. */ public function __isset( $helper ) { return $this->container->has( $this->get_helper_class( $helper ) ); } /** * Prevents setting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Get the class name from a helper slug * * @param string $helper The name of the helper. * * @return string */ protected function get_helper_class( $helper ) { $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) ); return "Yoast\WP\SEO\Helpers\Twitter\\{$helper}_Helper"; } } src/surfaces/open-graph-helpers-surface.php000064400000004757147206602470015032 0ustar00container = $container; } /** * Magic getter for getting helper classes. * * @param string $helper The helper to get. * * @return mixed The helper class. */ public function __get( $helper ) { return $this->container->get( $this->get_helper_class( $helper ) ); } /** * Magic isset for ensuring helper exists. * * @param string $helper The helper to get. * * @return bool Whether the helper exists. */ public function __isset( $helper ) { return $this->container->has( $this->get_helper_class( $helper ) ); } /** * Prevents setting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * @param mixed $value The property value. * * @return void * * @throws Forbidden_Property_Mutation_Exception Set is never meant to be called. */ public function __set( $name, $value ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed -- __set must have a name and value - PHPCS #3715. throw Forbidden_Property_Mutation_Exception::cannot_set_because_property_is_immutable( $name ); } /** * Prevents unsetting dynamic properties and unsetting declared properties * from an inaccessible context. * * @param string $name The property name. * * @return void * * @throws Forbidden_Property_Mutation_Exception Unset is never meant to be called. */ public function __unset( $name ) { throw Forbidden_Property_Mutation_Exception::cannot_unset_because_property_is_immutable( $name ); } /** * Get the class name from a helper slug * * @param string $helper The name of the helper. * * @return string */ protected function get_helper_class( $helper ) { $helper = \implode( '_', \array_map( 'ucfirst', \explode( '_', $helper ) ) ); return "Yoast\WP\SEO\Helpers\Open_Graph\\{$helper}_Helper"; } } src/surfaces/classes-surface.php000064400000001456147206602470012760 0ustar00container = $container; } /** * Returns the instance of a class. Handy for unhooking things. * * @param string $class_name The class to get the instance of. * * @return mixed The instance of the class. */ public function get( $class_name ) { return $this->container->get( $class_name ); } } src/context/meta-tags-context.php000064400000045707147206602470013121 0ustar00options = $options; $this->url = $url; $this->image = $image; $this->id_helper = $id_helper; $this->replace_vars = $replace_vars; $this->site = $site; $this->user = $user; $this->permalink_helper = $permalink_helper; $this->indexable_helper = $indexable_helper; $this->indexable_repository = $indexable_repository; } /** * Generates the title. * * @return string the title */ public function generate_title() { return $this->replace_vars->replace( $this->presentation->title, $this->presentation->source ); } /** * Generates the description. * * @return string the description */ public function generate_description() { return $this->replace_vars->replace( $this->presentation->meta_description, $this->presentation->source ); } /** * Generates the canonical. * * @return string the canonical */ public function generate_canonical() { return $this->presentation->canonical; } /** * Generates the permalink. * * @return string */ public function generate_permalink() { if ( ! \is_search() ) { return $this->presentation->permalink; } return \add_query_arg( 's', \rawurlencode( \get_search_query() ), \trailingslashit( $this->site_url ) ); } /** * Generates the id. * * @return string the id */ public function generate_id() { return $this->indexable->object_id; } /** * Generates the site name. * * @return string The site name. */ public function generate_site_name() { $site_name = $this->options->get( 'website_name', '' ); if ( $site_name !== '' ) { return $site_name; } return \get_bloginfo( 'name' ); } /** * Generates the alternate site name. * * @return string The alternate site name. */ public function generate_alternate_site_name() { return (string) $this->options->get( 'alternate_website_name', '' ); } /** * Generates the site name from the WordPress options. * * @return string The site name from the WordPress options. */ public function generate_wordpress_site_name() { return $this->site->get_site_name(); } /** * Generates the site url. * * @return string The site url. */ public function generate_site_url() { $home_page_indexable = $this->indexable_repository->find_for_home_page(); if ( $this->indexable_helper->dynamic_permalinks_enabled() ) { return \trailingslashit( $this->permalink_helper->get_permalink_for_indexable( $home_page_indexable ) ); } return \trailingslashit( $home_page_indexable->permalink ); } /** * Generates the company name. * * @return string The company name. */ public function generate_company_name() { /** * Filter: 'wpseo_schema_company_name' - Allows filtering company name * * @param string $company_name. */ $company_name = \apply_filters( 'wpseo_schema_company_name', $this->options->get( 'company_name' ) ); if ( empty( $company_name ) ) { $company_name = $this->site_name; } return $company_name; } /** * Generates the alternate company name. * * @return string */ public function generate_company_alternate_name() { return (string) $this->options->get( 'company_alternate_name' ); } /** * Generates the person logo id. * * @return int|bool The company logo id. */ public function generate_person_logo_id() { $person_logo_id = $this->image->get_attachment_id_from_settings( 'person_logo' ); if ( empty( $person_logo_id ) ) { $person_logo_id = $this->fallback_to_site_logo(); } /** * Filter: 'wpseo_schema_person_logo_id' - Allows filtering person logo id. * * @param int $person_logo_id. */ return \apply_filters( 'wpseo_schema_person_logo_id', $person_logo_id ); } /** * Retrieve the person logo meta. * * @return array>|bool */ public function generate_person_logo_meta() { $person_logo_meta = $this->image->get_attachment_meta_from_settings( 'person_logo' ); if ( empty( $person_logo_meta ) ) { $person_logo_id = $this->fallback_to_site_logo(); $person_logo_meta = $this->image->get_best_attachment_variation( $person_logo_id ); } /** * Filter: 'wpseo_schema_person_logo_meta' - Allows filtering person logo meta. * * @param string $person_logo_meta. */ return \apply_filters( 'wpseo_schema_person_logo_meta', $person_logo_meta ); } /** * Generates the company logo id. * * @return int|bool The company logo id. */ public function generate_company_logo_id() { $company_logo_id = $this->image->get_attachment_id_from_settings( 'company_logo' ); if ( empty( $company_logo_id ) ) { $company_logo_id = $this->fallback_to_site_logo(); } /** * Filter: 'wpseo_schema_company_logo_id' - Allows filtering company logo id. * * @param int $company_logo_id. */ return \apply_filters( 'wpseo_schema_company_logo_id', $company_logo_id ); } /** * Retrieve the company logo meta. * * @return array>|bool */ public function generate_company_logo_meta() { $company_logo_meta = $this->image->get_attachment_meta_from_settings( 'company_logo' ); /** * Filter: 'wpseo_schema_company_logo_meta' - Allows filtering company logo meta. * * @param string $company_logo_meta. */ return \apply_filters( 'wpseo_schema_company_logo_meta', $company_logo_meta ); } /** * Generates the site user id. * * @return int The site user id. */ public function generate_site_user_id() { return (int) $this->options->get( 'company_or_person_user_id', false ); } /** * Determines what our site represents, and grabs their values. * * @return string|false Person or company. False if invalid value. */ public function generate_site_represents() { switch ( $this->options->get( 'company_or_person', false ) ) { case 'company': // Do not use a non-named company. if ( empty( $this->company_name ) ) { return false; } /* * Do not use a company without a logo. * The logic check is on `< 1` instead of `false` due to how `get_attachment_id_from_settings` works. */ if ( $this->company_logo_id < 1 ) { return false; } return 'company'; case 'person': // Do not use a non-existing user. if ( $this->site_user_id !== false && \get_user_by( 'id', $this->site_user_id ) === false ) { return false; } return 'person'; } return false; } /** * Returns the site represents reference. * * @return array|bool The site represents reference. False if none. */ public function generate_site_represents_reference() { if ( $this->site_represents === 'person' ) { return [ '@id' => $this->id_helper->get_user_schema_id( $this->site_user_id, $this ) ]; } if ( $this->site_represents === 'company' ) { return [ '@id' => $this->site_url . Schema_IDs::ORGANIZATION_HASH ]; } return false; } /** * Returns whether or not open graph is enabled. * * @return bool Whether or not open graph is enabled. */ public function generate_open_graph_enabled() { return $this->options->get( 'opengraph' ) === true; } /** * Returns the open graph publisher. * * @return string The open graph publisher. */ public function generate_open_graph_publisher() { if ( $this->site_represents === 'company' ) { return $this->options->get( 'facebook_site', '' ); } if ( $this->site_represents === 'person' ) { return $this->user->get_the_author_meta( 'facebook', $this->site_user_id ); } return $this->options->get( 'facebook_site', '' ); } /** * Returns the twitter card type. * * @return string The twitter card type. */ public function generate_twitter_card() { return 'summary_large_image'; } /** * Returns the schema page type. * * @return string|array The schema page type. */ public function generate_schema_page_type() { switch ( $this->indexable->object_type ) { case 'system-page': switch ( $this->indexable->object_sub_type ) { case 'search-result': $type = [ 'CollectionPage', 'SearchResultsPage' ]; break; default: $type = 'WebPage'; } break; case 'user': $type = 'ProfilePage'; break; case 'home-page': case 'date-archive': case 'term': case 'post-type-archive': $type = 'CollectionPage'; break; default: $additional_type = $this->indexable->schema_page_type; if ( \is_null( $additional_type ) ) { $additional_type = $this->options->get( 'schema-page-type-' . $this->indexable->object_sub_type ); } $type = [ 'WebPage', $additional_type ]; // Is this indexable set as a page for posts, e.g. in the WordPress reading settings as a static homepage? if ( (int) \get_option( 'page_for_posts' ) === $this->indexable->object_id ) { $type[] = 'CollectionPage'; } // Ensure we get only unique values, and remove any null values and the index. $type = \array_filter( \array_values( \array_unique( $type ) ) ); } /** * Filter: 'wpseo_schema_webpage_type' - Allow changing the WebPage type. * * @param string|array $type The WebPage type. */ return \apply_filters( 'wpseo_schema_webpage_type', $type ); } /** * Returns the schema article type. * * @return string|array The schema article type. */ public function generate_schema_article_type() { $additional_type = $this->indexable->schema_article_type; if ( \is_null( $additional_type ) ) { $additional_type = $this->options->get( 'schema-article-type-' . $this->indexable->object_sub_type ); } /** This filter is documented in inc/options/class-wpseo-option-titles.php */ $allowed_article_types = \apply_filters( 'wpseo_schema_article_types', Schema_Types::ARTICLE_TYPES ); if ( ! \array_key_exists( $additional_type, $allowed_article_types ) ) { $additional_type = $this->options->get_title_default( 'schema-article-type-' . $this->indexable->object_sub_type ); } // If the additional type is a subtype of Article, we're fine, and we can bail here. if ( \stripos( $additional_type, 'Article' ) !== false ) { /** * Filter: 'wpseo_schema_article_type' - Allow changing the Article type. * * @param string|string[] $type The Article type. * @param Indexable $indexable The indexable. */ return \apply_filters( 'wpseo_schema_article_type', $additional_type, $this->indexable ); } $type = 'Article'; /* * If `None` is set (either on the indexable or as a default), set type to 'None'. * This simplifies is_needed checks downstream. */ if ( $additional_type === 'None' ) { $type = $additional_type; } if ( $additional_type !== $type ) { $type = [ $type, $additional_type ]; } // Filter documented on line 499 above. return \apply_filters( 'wpseo_schema_article_type', $type, $this->indexable ); } /** * Returns the main schema id. * * The main schema id. * * @return string */ public function generate_main_schema_id() { return $this->permalink; } /** * Retrieves the main image URL. This is the featured image by default. * * @return string|null The main image URL. */ public function generate_main_image_url() { if ( $this->main_image_id !== null ) { return $this->image->get_attachment_image_url( $this->main_image_id, 'full' ); } if ( \wp_is_serving_rest_request() ) { return $this->get_main_image_url_for_rest_request(); } if ( ! \is_singular() ) { return null; } $url = $this->image->get_post_content_image( $this->id ); if ( $url === '' ) { return null; } return $url; } /** * Generates the main image ID. * * @return int|null The main image ID. */ public function generate_main_image_id() { if ( \wp_is_serving_rest_request() ) { return $this->get_main_image_id_for_rest_request(); } switch ( true ) { case \is_singular(): return $this->get_singular_post_image( $this->id ); case \is_author(): case \is_tax(): case \is_tag(): case \is_category(): case \is_search(): case \is_date(): case \is_post_type_archive(): if ( ! empty( $GLOBALS['wp_query']->posts ) ) { if ( $GLOBALS['wp_query']->get( 'fields', 'all' ) === 'ids' ) { return $this->get_singular_post_image( $GLOBALS['wp_query']->posts[0] ); } return $this->get_singular_post_image( $GLOBALS['wp_query']->posts[0]->ID ); } return null; default: return null; } } /** * Determines whether the current indexable has an image. * * @return bool Whether the current indexable has an image. */ public function generate_has_image() { return $this->main_image_url !== null; } /** * Strips all nested dependencies from the debug info. * * @return array */ public function __debugInfo() { return [ 'indexable' => $this->indexable, 'presentation' => $this->presentation, ]; } /** * Retrieve the site logo ID from WordPress settings. * * @return false|int */ public function fallback_to_site_logo() { $logo_id = \get_option( 'site_logo' ); if ( ! $logo_id ) { $logo_id = \get_theme_mod( 'custom_logo', false ); } return $logo_id; } /** * Get the ID for a post's featured image. * * @param int $id Post ID. * * @return int|null */ private function get_singular_post_image( $id ) { if ( \has_post_thumbnail( $id ) ) { $thumbnail_id = \get_post_thumbnail_id( $id ); // Prevent returning something else than an int or null. if ( \is_int( $thumbnail_id ) && $thumbnail_id > 0 ) { return $thumbnail_id; } } if ( \is_singular( 'attachment' ) ) { return \get_query_var( 'attachment_id' ); } return null; } /** * Gets the main image ID for REST requests. * * @return int|null The main image ID. */ private function get_main_image_id_for_rest_request() { switch ( $this->page_type ) { case 'Post_Type': if ( $this->post instanceof WP_Post ) { return $this->get_singular_post_image( $this->post->ID ); } return null; default: return null; } } /** * Gets the main image URL for REST requests. * * @return string|null The main image URL. */ private function get_main_image_url_for_rest_request() { switch ( $this->page_type ) { case 'Post_Type': if ( $this->post instanceof WP_Post ) { $url = $this->image->get_post_content_image( $this->post->ID ); if ( $url === '' ) { return null; } return $url; } return null; default: return null; } } } \class_alias( Meta_Tags_Context::class, 'WPSEO_Schema_Context' ); src/wordpress/wrapper.php000064400000002702147206602470011565 0ustar00options = $options; $this->version = $versions->get_latest_version_for_type( 'post-type-archive' ); $this->post_helper = $post_helper; $this->post_type_helper = $post_type_helper; } /** * Formats the data. * * @param string $post_type The post type to build the indexable for. * @param Indexable $indexable The indexable to format. * * @return Indexable The extended indexable. * @throws Post_Type_Not_Built_Exception Throws exception if the post type is excluded. */ public function build( $post_type, Indexable $indexable ) { if ( ! $this->post_type_helper->is_post_type_archive_indexable( $post_type ) ) { throw Post_Type_Not_Built_Exception::because_not_indexable( $post_type ); } $indexable->object_type = 'post-type-archive'; $indexable->object_sub_type = $post_type; $indexable->title = $this->options->get( 'title-ptarchive-' . $post_type ); $indexable->description = $this->options->get( 'metadesc-ptarchive-' . $post_type ); $indexable->breadcrumb_title = $this->get_breadcrumb_title( $post_type ); $indexable->permalink = \get_post_type_archive_link( $post_type ); $indexable->is_robots_noindex = $this->options->get( 'noindex-ptarchive-' . $post_type ); $indexable->is_public = ( (int) $indexable->is_robots_noindex !== 1 ); $indexable->blog_id = \get_current_blog_id(); $indexable->version = $this->version; $timestamps = $this->get_object_timestamps( $post_type ); $indexable->object_published_at = $timestamps->published_at; $indexable->object_last_modified = $timestamps->last_modified; return $indexable; } /** * Returns the fallback breadcrumb title for a given post. * * @param string $post_type The post type to get the fallback breadcrumb title for. * * @return string */ private function get_breadcrumb_title( $post_type ) { $options_breadcrumb_title = $this->options->get( 'bctitle-ptarchive-' . $post_type ); if ( $options_breadcrumb_title !== '' ) { return $options_breadcrumb_title; } $post_type_obj = \get_post_type_object( $post_type ); if ( ! \is_object( $post_type_obj ) ) { return ''; } if ( isset( $post_type_obj->label ) && $post_type_obj->label !== '' ) { return $post_type_obj->label; } if ( isset( $post_type_obj->labels->menu_name ) && $post_type_obj->labels->menu_name !== '' ) { return $post_type_obj->labels->menu_name; } return $post_type_obj->name; } /** * Returns the timestamps for a given post type. * * @param string $post_type The post type. * * @return object An object with last_modified and published_at timestamps. */ protected function get_object_timestamps( $post_type ) { global $wpdb; $post_statuses = $this->post_helper->get_public_post_statuses(); $replacements = []; $replacements[] = 'post_modified_gmt'; $replacements[] = 'post_date_gmt'; $replacements[] = $wpdb->posts; $replacements[] = 'post_status'; $replacements = \array_merge( $replacements, $post_statuses ); $replacements[] = 'post_password'; $replacements[] = 'post_type'; $replacements[] = $post_type; //phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized. //phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- We need to use a direct query here. //phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches. return $wpdb->get_row( $wpdb->prepare( ' SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at FROM %i AS p WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ") AND p.%i = '' AND p.%i = %s ", $replacements ) ); //phpcs:enable } } src/builders/primary-term-builder.php000064400000005222147206602470013742 0ustar00repository = $repository; $this->indexable_helper = $indexable_helper; $this->primary_term = $primary_term; $this->meta = $meta; } /** * Formats and saves the primary terms for the post with the given post id. * * @param int $post_id The post ID. * * @return void */ public function build( $post_id ) { foreach ( $this->primary_term->get_primary_term_taxonomies( $post_id ) as $taxonomy ) { $this->save_primary_term( $post_id, $taxonomy->name ); } } /** * Save the primary term for a specific taxonomy. * * @param int $post_id Post ID to save primary term for. * @param string $taxonomy Taxonomy to save primary term for. * * @return void */ protected function save_primary_term( $post_id, $taxonomy ) { $term_id = $this->meta->get_value( 'primary_' . $taxonomy, $post_id ); $term_selected = ! empty( $term_id ); $primary_term_indexable = $this->repository->find_by_post_id_and_taxonomy( $post_id, $taxonomy, $term_selected ); // Removes the indexable when no term found. if ( ! $term_selected ) { if ( $primary_term_indexable ) { $primary_term_indexable->delete(); } return; } $primary_term_indexable->term_id = $term_id; $primary_term_indexable->post_id = $post_id; $primary_term_indexable->taxonomy = $taxonomy; $primary_term_indexable->blog_id = \get_current_blog_id(); $this->indexable_helper->save_indexable( $primary_term_indexable ); } } src/builders/indexable-date-archive-builder.php000064400000003234147206602470015600 0ustar00options = $options; $this->version = $versions->get_latest_version_for_type( 'date-archive' ); } /** * Formats the data. * * @param Indexable $indexable The indexable to format. * * @return Indexable The extended indexable. */ public function build( $indexable ) { $indexable->object_type = 'date-archive'; $indexable->title = $this->options->get( 'title-archive-wpseo' ); $indexable->description = $this->options->get( 'metadesc-archive-wpseo' ); $indexable->is_robots_noindex = $this->options->get( 'noindex-archive-wpseo' ); $indexable->is_public = ( (int) $indexable->is_robots_noindex !== 1 ); $indexable->blog_id = \get_current_blog_id(); $indexable->permalink = null; $indexable->version = $this->version; return $indexable; } } src/builders/indexable-link-builder.php000064400000043550147206602470014206 0ustar00seo_links_repository = $seo_links_repository; $this->url_helper = $url_helper; $this->post_helper = $post_helper; $this->options_helper = $options_helper; $this->indexable_helper = $indexable_helper; $this->image_content_extractor = $image_content_extractor; } /** * Sets the indexable repository. * * @required * * @param Indexable_Repository $indexable_repository The indexable repository. * @param Image_Helper $image_helper The image helper. * * @return void */ public function set_dependencies( Indexable_Repository $indexable_repository, Image_Helper $image_helper ) { $this->indexable_repository = $indexable_repository; $this->image_helper = $image_helper; } /** * Builds the links for a post. * * @param Indexable $indexable The indexable. * @param string $content The content. Expected to be unfiltered. * * @return SEO_Links[] The created SEO links. */ public function build( $indexable, $content ) { if ( ! $this->indexable_helper->should_index_indexable( $indexable ) ) { return []; } global $post; if ( $indexable->object_type === 'post' ) { $post_backup = $post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- To setup the post we need to do this explicitly. $post = $this->post_helper->get_post( $indexable->object_id ); \setup_postdata( $post ); $content = \apply_filters( 'the_content', $content ); \wp_reset_postdata(); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- To setup the post we need to do this explicitly. $post = $post_backup; } $content = \str_replace( ']]>', ']]>', $content ); $links = $this->gather_links( $content ); $images = $this->image_content_extractor->gather_images( $content ); if ( empty( $links ) && empty( $images ) ) { $indexable->link_count = 0; $this->update_related_indexables( $indexable, [] ); return []; } if ( ! empty( $images ) && ( $indexable->open_graph_image_source === 'first-content-image' || $indexable->twitter_image_source === 'first-content-image' ) ) { $this->update_first_content_image( $indexable, $images ); } $links = $this->create_links( $indexable, $links, $images ); $this->update_related_indexables( $indexable, $links ); $indexable->link_count = $this->get_internal_link_count( $links ); return $links; } /** * Deletes all SEO links for an indexable. * * @param Indexable $indexable The indexable. * * @return void */ public function delete( $indexable ) { $links = ( $this->seo_links_repository->find_all_by_indexable_id( $indexable->id ) ); $this->seo_links_repository->delete_all_by_indexable_id( $indexable->id ); $linked_indexable_ids = []; foreach ( $links as $link ) { if ( $link->target_indexable_id ) { $linked_indexable_ids[] = $link->target_indexable_id; } } $this->update_incoming_links_for_related_indexables( $linked_indexable_ids ); } /** * Fixes existing SEO links that are supposed to have a target indexable but don't, because of prior indexable * cleanup. * * @param Indexable $indexable The indexable to be the target of SEO Links. * * @return void */ public function patch_seo_links( Indexable $indexable ) { if ( ! empty( $indexable->id ) && ! empty( $indexable->object_id ) ) { $links = $this->seo_links_repository->find_all_by_target_post_id( $indexable->object_id ); $updated_indexable = false; foreach ( $links as $link ) { if ( \is_a( $link, SEO_Links::class ) && empty( $link->target_indexable_id ) ) { // Since that post ID exists in an SEO link but has no target_indexable_id, it's probably because of prior indexable cleanup. $this->seo_links_repository->update_target_indexable_id( $link->id, $indexable->id ); $updated_indexable = true; } } if ( $updated_indexable ) { $updated_indexable_id = [ $indexable->id ]; $this->update_incoming_links_for_related_indexables( $updated_indexable_id ); } } } /** * Gathers all links from content. * * @param string $content The content. * * @return string[] An array of urls. */ protected function gather_links( $content ) { if ( \strpos( $content, 'href' ) === false ) { // Nothing to do. return []; } $links = []; $regexp = ']*href=("??)([^" >]*?)\1[^>]*>'; // Used modifiers iU to match case insensitive and make greedy quantifiers lazy. if ( \preg_match_all( "/$regexp/iU", $content, $matches, \PREG_SET_ORDER ) ) { foreach ( $matches as $match ) { $links[] = \trim( $match[2], "'" ); } } return $links; } /** * Creates link models from lists of URLs and image sources. * * @param Indexable $indexable The indexable. * @param string[] $links The link URLs. * @param int[] $images The image sources. * * @return SEO_Links[] The link models. */ protected function create_links( $indexable, $links, $images ) { $home_url = \wp_parse_url( \home_url() ); $current_url = \wp_parse_url( $indexable->permalink ); $links = \array_map( function ( $link ) use ( $home_url, $indexable ) { return $this->create_internal_link( $link, $home_url, $indexable ); }, $links ); // Filter out links to the same page with a fragment or query. $links = \array_filter( $links, function ( $link ) use ( $current_url ) { return $this->filter_link( $link, $current_url ); } ); $image_links = []; foreach ( $images as $image_url => $image_id ) { $image_links[] = $this->create_internal_link( $image_url, $home_url, $indexable, true, $image_id ); } return \array_merge( $links, $image_links ); } /** * Get the post ID based on the link's type and its target's permalink. * * @param string $type The type of link (either SEO_Links::TYPE_INTERNAL or SEO_Links::TYPE_INTERNAL_IMAGE). * @param string $permalink The permalink of the link's target. * * @return int The post ID. */ protected function get_post_id( $type, $permalink ) { if ( $type === SEO_Links::TYPE_INTERNAL ) { return \url_to_postid( $permalink ); } return $this->image_helper->get_attachment_by_url( $permalink ); } /** * Creates an internal link. * * @param string $url The url of the link. * @param array $home_url The home url, as parsed by wp_parse_url. * @param Indexable $indexable The indexable of the post containing the link. * @param bool $is_image Whether or not the link is an image. * @param int $image_id The ID of the internal image. * * @return SEO_Links The created link. */ protected function create_internal_link( $url, $home_url, $indexable, $is_image = false, $image_id = 0 ) { $parsed_url = \wp_parse_url( $url ); $link_type = $this->url_helper->get_link_type( $parsed_url, $home_url, $is_image ); /** * ORM representing a link in the SEO Links table. * * @var SEO_Links $model */ $model = $this->seo_links_repository->query()->create( [ 'url' => $url, 'type' => $link_type, 'indexable_id' => $indexable->id, 'post_id' => $indexable->object_id, ] ); $model->parsed_url = $parsed_url; if ( $model->type === SEO_Links::TYPE_INTERNAL ) { $permalink = $this->build_permalink( $url, $home_url ); return $this->enhance_link_from_indexable( $model, $permalink ); } if ( $model->type === SEO_Links::TYPE_INTERNAL_IMAGE ) { $permalink = $this->build_permalink( $url, $home_url ); /** The `wpseo_force_creating_and_using_attachment_indexables` filter is documented in indexable-link-builder.php */ if ( ! $this->options_helper->get( 'disable-attachment' ) || \apply_filters( 'wpseo_force_creating_and_using_attachment_indexables', false ) ) { $model = $this->enhance_link_from_indexable( $model, $permalink ); } else { $target_post_id = ( $image_id !== 0 ) ? $image_id : WPSEO_Image_Utils::get_attachment_by_url( $permalink ); if ( ! empty( $target_post_id ) ) { $model->target_post_id = $target_post_id; } } if ( $model->target_post_id ) { $file = \get_attached_file( $model->target_post_id ); if ( $file ) { if ( \file_exists( $file ) ) { $model->size = \filesize( $file ); } else { $model->size = null; } [ , $width, $height ] = \wp_get_attachment_image_src( $model->target_post_id, 'full' ); $model->width = $width; $model->height = $height; } else { $model->width = 0; $model->height = 0; $model->size = 0; } } } return $model; } /** * Enhances the link model with information from its indexable. * * @param SEO_Links $model The link's model. * @param string $permalink The link's permalink. * * @return SEO_Links The enhanced link model. */ protected function enhance_link_from_indexable( $model, $permalink ) { $target = $this->indexable_repository->find_by_permalink( $permalink ); if ( ! $target ) { // If target indexable cannot be found, create one based on the post's post ID. $post_id = $this->get_post_id( $model->type, $permalink ); if ( $post_id && $post_id !== 0 ) { $target = $this->indexable_repository->find_by_id_and_type( $post_id, 'post' ); } } if ( ! $target ) { return $model; } $model->target_indexable_id = $target->id; if ( $target->object_type === 'post' ) { $model->target_post_id = $target->object_id; } if ( $model->target_indexable_id ) { $model->language = $target->language; $model->region = $target->region; } return $model; } /** * Builds the link's permalink. * * @param string $url The url of the link. * @param array $home_url The home url, as parsed by wp_parse_url. * * @return string The link's permalink. */ protected function build_permalink( $url, $home_url ) { $permalink = $this->get_permalink( $url, $home_url ); if ( $this->url_helper->is_relative( $permalink ) ) { // Make sure we're checking against the absolute URL, and add a trailing slash if the site has a trailing slash in its permalink settings. $permalink = $this->url_helper->ensure_absolute_url( \user_trailingslashit( $permalink ) ); } return $permalink; } /** * Filters out links that point to the same page with a fragment or query. * * @param SEO_Links $link The link. * @param array $current_url The url of the page the link is on, as parsed by wp_parse_url. * * @return bool Whether or not the link should be filtered. */ protected function filter_link( SEO_Links $link, $current_url ) { $url = $link->parsed_url; // Always keep external links. if ( $link->type === SEO_Links::TYPE_EXTERNAL ) { return true; } // Always keep links with an empty path or pointing to other pages. if ( isset( $url['path'] ) ) { return empty( $url['path'] ) || $url['path'] !== $current_url['path']; } // Only keep links to the current page without a fragment or query. return ( ! isset( $url['fragment'] ) && ! isset( $url['query'] ) ); } /** * Updates the link counts for related indexables. * * @param Indexable $indexable The indexable. * @param SEO_Links[] $links The link models. * * @return void */ protected function update_related_indexables( $indexable, $links ) { // Old links were only stored by post id, so remove all old seo links for this post that have no indexable id. // This can be removed if we ever fully clear all seo links. if ( $indexable->object_type === 'post' ) { $this->seo_links_repository->delete_all_by_post_id_where_indexable_id_null( $indexable->object_id ); } $updated_indexable_ids = []; $old_links = $this->seo_links_repository->find_all_by_indexable_id( $indexable->id ); $links_to_remove = $this->links_diff( $old_links, $links ); $links_to_add = $this->links_diff( $links, $old_links ); if ( ! empty( $links_to_remove ) ) { $this->seo_links_repository->delete_many_by_id( \wp_list_pluck( $links_to_remove, 'id' ) ); } if ( ! empty( $links_to_add ) ) { $this->seo_links_repository->insert_many( $links_to_add ); } foreach ( $links_to_add as $link ) { if ( $link->target_indexable_id ) { $updated_indexable_ids[] = $link->target_indexable_id; } } foreach ( $links_to_remove as $link ) { if ( $link->target_indexable_id ) { $updated_indexable_ids[] = $link->target_indexable_id; } } $this->update_incoming_links_for_related_indexables( $updated_indexable_ids ); } /** * Creates a diff between two arrays of SEO links, based on urls. * * @param SEO_Links[] $links_a The array to compare. * @param SEO_Links[] $links_b The array to compare against. * * @return SEO_Links[] Links that are in $links_a, but not in $links_b. */ protected function links_diff( $links_a, $links_b ) { return \array_udiff( $links_a, $links_b, static function ( SEO_Links $link_a, SEO_Links $link_b ) { return \strcmp( $link_a->url, $link_b->url ); } ); } /** * Returns the number of internal links in an array of link models. * * @param SEO_Links[] $links The link models. * * @return int The number of internal links. */ protected function get_internal_link_count( $links ) { $internal_link_count = 0; foreach ( $links as $link ) { if ( $link->type === SEO_Links::TYPE_INTERNAL ) { ++$internal_link_count; } } return $internal_link_count; } /** * Returns a cleaned permalink for a given link. * * @param string $link The raw URL. * @param array $home_url The home URL, as parsed by wp_parse_url. * * @return string The cleaned permalink. */ protected function get_permalink( $link, $home_url ) { // Get rid of the #anchor. $url_split = \explode( '#', $link ); $link = $url_split[0]; // Get rid of URL ?query=string. $url_split = \explode( '?', $link ); $link = $url_split[0]; // Set the correct URL scheme. $link = \set_url_scheme( $link, $home_url['scheme'] ); // Add 'www.' if it is absent and should be there. if ( \strpos( $home_url['host'], 'www.' ) === 0 && \strpos( $link, '://www.' ) === false ) { $link = \str_replace( '://', '://www.', $link ); } // Strip 'www.' if it is present and shouldn't be. if ( \strpos( $home_url['host'], 'www.' ) !== 0 ) { $link = \str_replace( '://www.', '://', $link ); } return $link; } /** * Updates incoming link counts for related indexables. * * @param int[] $related_indexable_ids The IDs of all related indexables. * * @return void */ protected function update_incoming_links_for_related_indexables( $related_indexable_ids ) { if ( empty( $related_indexable_ids ) ) { return; } $counts = $this->seo_links_repository->get_incoming_link_counts_for_indexable_ids( $related_indexable_ids ); if ( \wp_cache_supports( 'flush_group' ) ) { \wp_cache_flush_group( 'orphaned_counts' ); } foreach ( $counts as $count ) { $this->indexable_repository->update_incoming_link_count( $count['target_indexable_id'], $count['incoming'] ); } } /** * Updates the image ids when the indexable images are marked as first content image. * * @param Indexable $indexable The indexable to change. * @param array $images The image array. * * @return void */ public function update_first_content_image( Indexable $indexable, array $images ): void { $current_open_graph_image = $indexable->open_graph_image; $current_twitter_image = $indexable->twitter_image; $first_content_image_url = \key( $images ); $first_content_image_id = \current( $images ); if ( $indexable->open_graph_image_source === 'first-content-image' && $current_open_graph_image === $first_content_image_url && ! empty( $first_content_image_id ) ) { $indexable->open_graph_image_id = $first_content_image_id; } if ( $indexable->twitter_image_source === 'first-content-image' && $current_twitter_image === $first_content_image_url && ! empty( $first_content_image_id ) ) { $indexable->twitter_image_id = $first_content_image_id; } } } src/builders/indexable-term-builder.php000064400000021030147206602470014205 0ustar00taxonomy_helper = $taxonomy_helper; $this->version = $versions->get_latest_version_for_type( 'term' ); $this->post_helper = $post_helper; } /** * Formats the data. * * @param int $term_id ID of the term to save data for. * @param Indexable $indexable The indexable to format. * * @return bool|Indexable The extended indexable. False when unable to build. * * @throws Invalid_Term_Exception When the term is invalid. * @throws Term_Not_Built_Exception When the term is not viewable. * @throws Term_Not_Found_Exception When the term is not found. */ public function build( $term_id, $indexable ) { $term = \get_term( $term_id ); if ( $term === null ) { throw new Term_Not_Found_Exception(); } if ( \is_wp_error( $term ) ) { throw new Invalid_Term_Exception( $term->get_error_message() ); } $indexable_taxonomies = $this->taxonomy_helper->get_indexable_taxonomies(); if ( ! \in_array( $term->taxonomy, $indexable_taxonomies, true ) ) { throw Term_Not_Built_Exception::because_not_indexable( $term_id ); } $term_link = \get_term_link( $term, $term->taxonomy ); if ( \is_wp_error( $term_link ) ) { throw new Invalid_Term_Exception( $term_link->get_error_message() ); } $term_meta = $this->taxonomy_helper->get_term_meta( $term ); $indexable->object_id = $term_id; $indexable->object_type = 'term'; $indexable->object_sub_type = $term->taxonomy; $indexable->permalink = $term_link; $indexable->blog_id = \get_current_blog_id(); $indexable->primary_focus_keyword_score = $this->get_keyword_score( $this->get_meta_value( 'wpseo_focuskw', $term_meta ), $this->get_meta_value( 'wpseo_linkdex', $term_meta ) ); $indexable->is_robots_noindex = $this->get_noindex_value( $this->get_meta_value( 'wpseo_noindex', $term_meta ) ); $indexable->is_public = ( $indexable->is_robots_noindex === null ) ? null : ! $indexable->is_robots_noindex; $this->reset_social_images( $indexable ); foreach ( $this->get_indexable_lookup() as $meta_key => $indexable_key ) { $indexable->{$indexable_key} = $this->get_meta_value( $meta_key, $term_meta ); } if ( empty( $indexable->breadcrumb_title ) ) { $indexable->breadcrumb_title = $term->name; } $this->handle_social_images( $indexable ); $indexable->is_cornerstone = $this->get_meta_value( 'wpseo_is_cornerstone', $term_meta ); // Not implemented yet. $indexable->is_robots_nofollow = null; $indexable->is_robots_noarchive = null; $indexable->is_robots_noimageindex = null; $indexable->is_robots_nosnippet = null; $timestamps = $this->get_object_timestamps( $term_id, $term->taxonomy ); $indexable->object_published_at = $timestamps->published_at; $indexable->object_last_modified = $timestamps->last_modified; $indexable->version = $this->version; return $indexable; } /** * Converts the meta noindex value to the indexable value. * * @param string $meta_value Term meta to base the value on. * * @return bool|null */ protected function get_noindex_value( $meta_value ) { if ( $meta_value === 'noindex' ) { return true; } if ( $meta_value === 'index' ) { return false; } return null; } /** * Determines the focus keyword score. * * @param string $keyword The focus keyword that is set. * @param int $score The score saved on the meta data. * * @return int|null Score to use. */ protected function get_keyword_score( $keyword, $score ) { if ( empty( $keyword ) ) { return null; } return $score; } /** * Retrieves the lookup table. * * @return array Lookup table for the indexable fields. */ protected function get_indexable_lookup() { return [ 'wpseo_canonical' => 'canonical', 'wpseo_focuskw' => 'primary_focus_keyword', 'wpseo_title' => 'title', 'wpseo_desc' => 'description', 'wpseo_content_score' => 'readability_score', 'wpseo_inclusive_language_score' => 'inclusive_language_score', 'wpseo_bctitle' => 'breadcrumb_title', 'wpseo_opengraph-title' => 'open_graph_title', 'wpseo_opengraph-description' => 'open_graph_description', 'wpseo_opengraph-image' => 'open_graph_image', 'wpseo_opengraph-image-id' => 'open_graph_image_id', 'wpseo_twitter-title' => 'twitter_title', 'wpseo_twitter-description' => 'twitter_description', 'wpseo_twitter-image' => 'twitter_image', 'wpseo_twitter-image-id' => 'twitter_image_id', ]; } /** * Retrieves a meta value from the given meta data. * * @param string $meta_key The key to extract. * @param array $term_meta The meta data. * * @return string|null The meta value. */ protected function get_meta_value( $meta_key, $term_meta ) { if ( ! $term_meta || ! \array_key_exists( $meta_key, $term_meta ) ) { return null; } $value = $term_meta[ $meta_key ]; if ( \is_string( $value ) && $value === '' ) { return null; } return $value; } /** * Finds an alternative image for the social image. * * @param Indexable $indexable The indexable. * * @return array|bool False when not found, array with data when found. */ protected function find_alternative_image( Indexable $indexable ) { $content_image = $this->image->get_term_content_image( $indexable->object_id ); if ( $content_image ) { return [ 'image' => $content_image, 'source' => 'first-content-image', ]; } return false; } /** * Returns the timestamps for a given term. * * @param int $term_id The term ID. * @param string $taxonomy The taxonomy. * * @return object An object with last_modified and published_at timestamps. */ protected function get_object_timestamps( $term_id, $taxonomy ) { global $wpdb; $post_statuses = $this->post_helper->get_public_post_statuses(); $replacements = []; $replacements[] = 'post_modified_gmt'; $replacements[] = 'post_date_gmt'; $replacements[] = $wpdb->posts; $replacements[] = $wpdb->term_relationships; $replacements[] = 'object_id'; $replacements[] = 'ID'; $replacements[] = $wpdb->term_taxonomy; $replacements[] = 'term_taxonomy_id'; $replacements[] = 'term_taxonomy_id'; $replacements[] = 'taxonomy'; $replacements[] = $taxonomy; $replacements[] = 'term_id'; $replacements[] = $term_id; $replacements[] = 'post_status'; $replacements = \array_merge( $replacements, $post_statuses ); $replacements[] = 'post_password'; //phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized. //phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way. //phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches. return $wpdb->get_row( $wpdb->prepare( ' SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at FROM %i AS p INNER JOIN %i AS term_rel ON term_rel.%i = p.%i INNER JOIN %i AS term_tax ON term_tax.%i = term_rel.%i AND term_tax.%i = %s AND term_tax.%i = %d WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ") AND p.%i = '' ", $replacements ) ); //phpcs:enable } } src/builders/indexable-hierarchy-builder.php000064400000026361147206602470015230 0ustar00 */ protected $saved_ancestors = []; /** * The indexable repository. * * @var Indexable_Repository */ private $indexable_repository; /** * The indexable hierarchy repository. * * @var Indexable_Hierarchy_Repository */ private $indexable_hierarchy_repository; /** * The primary term repository. * * @var Primary_Term_Repository */ private $primary_term_repository; /** * The options helper. * * @var Options_Helper */ private $options; /** * Holds the Post_Helper instance. * * @var Post_Helper */ private $post; /** * Holds the Indexable_Helper instance. * * @var Indexable_Helper */ private $indexable_helper; /** * Indexable_Author_Builder constructor. * * @param Indexable_Hierarchy_Repository $indexable_hierarchy_repository The indexable hierarchy repository. * @param Primary_Term_Repository $primary_term_repository The primary term repository. * @param Options_Helper $options The options helper. * @param Post_Helper $post The post helper. * @param Indexable_Helper $indexable_helper The indexable helper. */ public function __construct( Indexable_Hierarchy_Repository $indexable_hierarchy_repository, Primary_Term_Repository $primary_term_repository, Options_Helper $options, Post_Helper $post, Indexable_Helper $indexable_helper ) { $this->indexable_hierarchy_repository = $indexable_hierarchy_repository; $this->primary_term_repository = $primary_term_repository; $this->options = $options; $this->post = $post; $this->indexable_helper = $indexable_helper; } /** * Sets the indexable repository. Done to avoid circular dependencies. * * @required * * @param Indexable_Repository $indexable_repository The indexable repository. * * @return void */ public function set_indexable_repository( Indexable_Repository $indexable_repository ) { $this->indexable_repository = $indexable_repository; } /** * Builds the ancestor hierarchy for an indexable. * * @param Indexable $indexable The indexable. * * @return Indexable The indexable. */ public function build( Indexable $indexable ) { if ( $this->hierarchy_is_built( $indexable ) ) { return $indexable; } if ( ! $this->indexable_helper->should_index_indexable( $indexable ) ) { return $indexable; } $this->indexable_hierarchy_repository->clear_ancestors( $indexable->id ); $indexable_id = $this->get_indexable_id( $indexable ); $ancestors = []; if ( $indexable->object_type === 'post' ) { $this->add_ancestors_for_post( $indexable_id, $indexable->object_id, $ancestors ); } if ( $indexable->object_type === 'term' ) { $this->add_ancestors_for_term( $indexable_id, $indexable->object_id, $ancestors ); } $indexable->ancestors = \array_reverse( \array_values( $ancestors ) ); $indexable->has_ancestors = ! empty( $ancestors ); if ( $indexable->id ) { $this->save_ancestors( $indexable ); } return $indexable; } /** * Checks if a hierarchy is built already for the given indexable. * * @param Indexable $indexable The indexable to check. * * @return bool True when indexable has a built hierarchy. */ protected function hierarchy_is_built( Indexable $indexable ) { if ( \in_array( $indexable->id, $this->saved_ancestors, true ) ) { return true; } $this->saved_ancestors[] = $indexable->id; return false; } /** * Saves the ancestors. * * @param Indexable $indexable The indexable. * * @return void */ private function save_ancestors( $indexable ) { if ( empty( $indexable->ancestors ) ) { $this->indexable_hierarchy_repository->add_ancestor( $indexable->id, 0, 0 ); return; } $depth = \count( $indexable->ancestors ); foreach ( $indexable->ancestors as $ancestor ) { $this->indexable_hierarchy_repository->add_ancestor( $indexable->id, $ancestor->id, $depth ); --$depth; } } /** * Adds ancestors for a post. * * @param int $indexable_id The indexable id, this is the id of the original indexable. * @param int $post_id The post id, this is the id of the post currently being evaluated. * @param int[] $parents The indexable IDs of all parents. * * @return void */ private function add_ancestors_for_post( $indexable_id, $post_id, &$parents ) { $post = $this->post->get_post( $post_id ); if ( ! isset( $post->post_parent ) ) { return; } if ( $post->post_parent !== 0 && $this->post->get_post( $post->post_parent ) !== null ) { $ancestor = $this->indexable_repository->find_by_id_and_type( $post->post_parent, 'post' ); if ( $this->is_invalid_ancestor( $ancestor, $indexable_id, $parents ) ) { return; } $parents[ $this->get_indexable_id( $ancestor ) ] = $ancestor; $this->add_ancestors_for_post( $indexable_id, $ancestor->object_id, $parents ); return; } $primary_term_id = $this->find_primary_term_id_for_post( $post ); if ( $primary_term_id === 0 ) { return; } $ancestor = $this->indexable_repository->find_by_id_and_type( $primary_term_id, 'term' ); if ( $this->is_invalid_ancestor( $ancestor, $indexable_id, $parents ) ) { return; } $parents[ $this->get_indexable_id( $ancestor ) ] = $ancestor; $this->add_ancestors_for_term( $indexable_id, $ancestor->object_id, $parents ); } /** * Adds ancestors for a term. * * @param int $indexable_id The indexable id, this is the id of the original indexable. * @param int $term_id The term id, this is the id of the term currently being evaluated. * @param int[] $parents The indexable IDs of all parents. * * @return void */ private function add_ancestors_for_term( $indexable_id, $term_id, &$parents = [] ) { $term = \get_term( $term_id ); $term_parents = $this->get_term_parents( $term ); foreach ( $term_parents as $parent ) { $ancestor = $this->indexable_repository->find_by_id_and_type( $parent->term_id, 'term' ); if ( $this->is_invalid_ancestor( $ancestor, $indexable_id, $parents ) ) { continue; } $parents[ $this->get_indexable_id( $ancestor ) ] = $ancestor; } } /** * Gets the primary term ID for a post. * * @param WP_Post $post The post. * * @return int The primary term ID. 0 if none exists. */ private function find_primary_term_id_for_post( $post ) { $main_taxonomy = $this->options->get( 'post_types-' . $post->post_type . '-maintax' ); if ( ! $main_taxonomy || $main_taxonomy === '0' ) { return 0; } $primary_term_id = $this->get_primary_term_id( $post->ID, $main_taxonomy ); if ( $primary_term_id ) { $term = \get_term( $primary_term_id ); if ( $term !== null && ! \is_wp_error( $term ) ) { return $primary_term_id; } } $terms = \get_the_terms( $post->ID, $main_taxonomy ); if ( ! \is_array( $terms ) || empty( $terms ) ) { return 0; } return $this->find_deepest_term_id( $terms ); } /** * Find the deepest term in an array of term objects. * * @param array $terms Terms set. * * @return int The deepest term ID. */ private function find_deepest_term_id( $terms ) { /* * Let's find the deepest term in this array, by looping through and then * unsetting every term that is used as a parent by another one in the array. */ $terms_by_id = []; foreach ( $terms as $term ) { $terms_by_id[ $term->term_id ] = $term; } foreach ( $terms as $term ) { unset( $terms_by_id[ $term->parent ] ); } /* * As we could still have two subcategories, from different parent categories, * let's pick the one with the lowest ordered ancestor. */ $parents_count = -1; $term_order = 9999; // Because ASC. $deepest_term = \reset( $terms_by_id ); foreach ( $terms_by_id as $term ) { $parents = $this->get_term_parents( $term ); $new_parents_count = \count( $parents ); if ( $new_parents_count < $parents_count ) { continue; } $parent_order = 9999; // Set default order. foreach ( $parents as $parent ) { if ( $parent->parent === 0 && isset( $parent->term_order ) ) { $parent_order = $parent->term_order; } } // Check if parent has lowest order. if ( $new_parents_count > $parents_count || $parent_order < $term_order ) { $term_order = $parent_order; $deepest_term = $term; } $parents_count = $new_parents_count; } return $deepest_term->term_id; } /** * Get a term's parents. * * @param WP_Term $term Term to get the parents for. * * @return WP_Term[] An array of all this term's parents. */ private function get_term_parents( $term ) { $tax = $term->taxonomy; $parents = []; while ( (int) $term->parent !== 0 ) { $term = \get_term( $term->parent, $tax ); $parents[] = $term; } return $parents; } /** * Checks if an ancestor is valid to add. * * @param Indexable $ancestor The ancestor (presumed indexable) to check. * @param int $indexable_id The indexable id we're adding ancestors for. * @param int[] $parents The indexable ids of the parents already added. * * @return bool */ private function is_invalid_ancestor( $ancestor, $indexable_id, $parents ) { // If the ancestor is not an Indexable, it is invalid by default. if ( ! \is_a( $ancestor, 'Yoast\WP\SEO\Models\Indexable' ) ) { return true; } // Don't add ancestors if they're unindexed, already added or the same as the main object. if ( $ancestor->post_status === 'unindexed' ) { return true; } $ancestor_id = $this->get_indexable_id( $ancestor ); if ( \array_key_exists( $ancestor_id, $parents ) ) { return true; } if ( $ancestor_id === $indexable_id ) { return true; } return false; } /** * Returns the ID for an indexable. Catches situations where the id is null due to errors. * * @param Indexable $indexable The indexable. * * @return string|int A unique ID for the indexable. */ private function get_indexable_id( Indexable $indexable ) { if ( $indexable->id === 0 ) { return "{$indexable->object_type}:{$indexable->object_id}"; } return $indexable->id; } /** * Returns the primary term id of a post. * * @param int $post_id The post ID. * @param string $main_taxonomy The main taxonomy. * * @return int The ID of the primary term. */ private function get_primary_term_id( $post_id, $main_taxonomy ) { $primary_term = $this->primary_term_repository->find_by_post_id_and_taxonomy( $post_id, $main_taxonomy, false ); if ( $primary_term ) { return $primary_term->term_id; } return \get_post_meta( $post_id, WPSEO_Meta::$meta_prefix . 'primary_' . $main_taxonomy, true ); } } src/builders/indexable-social-image-trait.php000064400000011504147206602470015272 0ustar00image = $image; $this->open_graph_image = $open_graph_image; $this->twitter_image = $twitter_image; } /** * Sets the alternative on an indexable. * * @param array $alternative_image The alternative image to set. * @param Indexable $indexable The indexable to set image for. * * @return void */ protected function set_alternative_image( array $alternative_image, Indexable $indexable ) { if ( ! empty( $alternative_image['image_id'] ) ) { if ( ! $indexable->open_graph_image_source && ! $indexable->open_graph_image_id ) { $indexable->open_graph_image_id = $alternative_image['image_id']; $indexable->open_graph_image_source = $alternative_image['source']; $this->set_open_graph_image_meta_data( $indexable ); } if ( ! $indexable->twitter_image && ! $indexable->twitter_image_id ) { $indexable->twitter_image = $this->twitter_image->get_by_id( $alternative_image['image_id'] ); $indexable->twitter_image_id = $alternative_image['image_id']; $indexable->twitter_image_source = $alternative_image['source']; } } if ( ! empty( $alternative_image['image'] ) ) { if ( ! $indexable->open_graph_image_source && ! $indexable->open_graph_image_id ) { $indexable->open_graph_image = $alternative_image['image']; $indexable->open_graph_image_source = $alternative_image['source']; } if ( ! $indexable->twitter_image && ! $indexable->twitter_image_id ) { $indexable->twitter_image = $alternative_image['image']; $indexable->twitter_image_source = $alternative_image['source']; } } } /** * Sets the Open Graph image meta data for an og image * * @param Indexable $indexable The indexable. * * @return void */ protected function set_open_graph_image_meta_data( Indexable $indexable ) { if ( ! $indexable->open_graph_image_id ) { return; } $image = $this->open_graph_image->get_image_by_id( $indexable->open_graph_image_id ); if ( ! empty( $image ) ) { $indexable->open_graph_image = $image['url']; $indexable->open_graph_image_meta = WPSEO_Utils::format_json_encode( $image ); } } /** * Handles the social images. * * @param Indexable $indexable The indexable to handle. * * @return void */ protected function handle_social_images( Indexable $indexable ) { // When the image or image id is set. if ( $indexable->open_graph_image || $indexable->open_graph_image_id ) { $indexable->open_graph_image_source = 'set-by-user'; $this->set_open_graph_image_meta_data( $indexable ); } if ( $indexable->twitter_image || $indexable->twitter_image_id ) { $indexable->twitter_image_source = 'set-by-user'; } if ( $indexable->twitter_image_id ) { $indexable->twitter_image = $this->twitter_image->get_by_id( $indexable->twitter_image_id ); } // When image sources are set already. if ( $indexable->open_graph_image_source && $indexable->twitter_image_source ) { return; } $alternative_image = $this->find_alternative_image( $indexable ); if ( ! empty( $alternative_image ) ) { $this->set_alternative_image( $alternative_image, $indexable ); } } /** * Resets the social images. * * @param Indexable $indexable The indexable to set images for. * * @return void */ protected function reset_social_images( Indexable $indexable ) { $indexable->open_graph_image = null; $indexable->open_graph_image_id = null; $indexable->open_graph_image_source = null; $indexable->open_graph_image_meta = null; $indexable->twitter_image = null; $indexable->twitter_image_id = null; $indexable->twitter_image_source = null; } } src/builders/indexable-builder.php000064400000032106147206602470013246 0ustar00author_builder = $author_builder; $this->post_builder = $post_builder; $this->term_builder = $term_builder; $this->home_page_builder = $home_page_builder; $this->post_type_archive_builder = $post_type_archive_builder; $this->date_archive_builder = $date_archive_builder; $this->system_page_builder = $system_page_builder; $this->hierarchy_builder = $hierarchy_builder; $this->primary_term_builder = $primary_term_builder; $this->indexable_helper = $indexable_helper; $this->version_manager = $version_manager; $this->link_builder = $link_builder; } /** * Sets the indexable repository. Done to avoid circular dependencies. * * @required * * @param Indexable_Repository $indexable_repository The indexable repository. * * @return void */ public function set_indexable_repository( Indexable_Repository $indexable_repository ) { $this->indexable_repository = $indexable_repository; } /** * Creates a clean copy of an Indexable to allow for later database operations. * * @param Indexable $indexable The Indexable to copy. * * @return bool|Indexable */ protected function deep_copy_indexable( $indexable ) { return $this->indexable_repository ->query() ->create( $indexable->as_array() ); } /** * Creates an indexable by its ID and type. * * @param int $object_id The indexable object ID. * @param string $object_type The indexable object type. * @param Indexable|bool $indexable Optional. An existing indexable to overwrite. * * @return bool|Indexable Instance of indexable. False when unable to build. */ public function build_for_id_and_type( $object_id, $object_type, $indexable = false ) { $defaults = [ 'object_type' => $object_type, 'object_id' => $object_id, ]; $indexable = $this->build( $indexable, $defaults ); return $indexable; } /** * Creates an indexable for the homepage. * * @param Indexable|bool $indexable Optional. An existing indexable to overwrite. * * @return Indexable The home page indexable. */ public function build_for_home_page( $indexable = false ) { return $this->build( $indexable, [ 'object_type' => 'home-page' ] ); } /** * Creates an indexable for the date archive. * * @param Indexable|bool $indexable Optional. An existing indexable to overwrite. * * @return Indexable The date archive indexable. */ public function build_for_date_archive( $indexable = false ) { return $this->build( $indexable, [ 'object_type' => 'date-archive' ] ); } /** * Creates an indexable for a post type archive. * * @param string $post_type The post type. * @param Indexable|bool $indexable Optional. An existing indexable to overwrite. * * @return Indexable The post type archive indexable. */ public function build_for_post_type_archive( $post_type, $indexable = false ) { $defaults = [ 'object_type' => 'post-type-archive', 'object_sub_type' => $post_type, ]; return $this->build( $indexable, $defaults ); } /** * Creates an indexable for a system page. * * @param string $page_type The type of system page. * @param Indexable|bool $indexable Optional. An existing indexable to overwrite. * * @return Indexable The search result indexable. */ public function build_for_system_page( $page_type, $indexable = false ) { $defaults = [ 'object_type' => 'system-page', 'object_sub_type' => $page_type, ]; return $this->build( $indexable, $defaults ); } /** * Ensures we have a valid indexable. Creates one if false is passed. * * @param Indexable|false $indexable The indexable. * @param array $defaults The initial properties of the Indexable. * * @return Indexable The indexable. */ protected function ensure_indexable( $indexable, $defaults = [] ) { if ( ! $indexable ) { return $this->indexable_repository->query()->create( $defaults ); } return $indexable; } /** * Build and author indexable from an author id if it does not exist yet, or if the author indexable needs to be upgraded. * * @param int $author_id The author id. * * @return Indexable|false The author indexable if it has been built, `false` if it could not be built. */ protected function maybe_build_author_indexable( $author_id ) { $author_indexable = $this->indexable_repository->find_by_id_and_type( $author_id, 'user', false ); if ( ! $author_indexable || $this->version_manager->indexable_needs_upgrade( $author_indexable ) ) { // Try to build the author. $author_defaults = [ 'object_type' => 'user', 'object_id' => $author_id, ]; $author_indexable = $this->build( $author_indexable, $author_defaults ); } return $author_indexable; } /** * Checks if the indexable type is one that is not supposed to have object ID for. * * @param string $type The type of the indexable. * * @return bool Whether the indexable type is one that is not supposed to have object ID for. */ protected function is_type_with_no_id( $type ) { return \in_array( $type, [ 'home-page', 'date-archive', 'post-type-archive', 'system-page' ], true ); } // phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.Missing -- Exceptions are handled by the catch statement in the method. /** * Rebuilds an Indexable from scratch. * * @param Indexable $indexable The Indexable to (re)build. * @param array|null $defaults The object type of the Indexable. * * @return Indexable|false The resulting Indexable. */ public function build( $indexable, $defaults = null ) { // Backup the previous Indexable, if there was one. $indexable_before = ( $indexable ) ? $this->deep_copy_indexable( $indexable ) : null; // Make sure we have an Indexable to work with. $indexable = $this->ensure_indexable( $indexable, $defaults ); try { if ( $indexable->object_id === 0 ) { throw Not_Built_Exception::invalid_object_id( $indexable->object_id ); } switch ( $indexable->object_type ) { case 'post': $indexable = $this->post_builder->build( $indexable->object_id, $indexable ); // Save indexable, to make sure it can be queried when building related objects like the author indexable and hierarchy. $indexable = $this->indexable_helper->save_indexable( $indexable, $indexable_before ); // For attachments, we have to make sure to patch any potentially previously cleaned up SEO links. if ( \is_a( $indexable, Indexable::class ) && $indexable->object_sub_type === 'attachment' ) { $this->link_builder->patch_seo_links( $indexable ); } // Always rebuild the primary term. $this->primary_term_builder->build( $indexable->object_id ); // Always rebuild the hierarchy; this needs the primary term to run correctly. $this->hierarchy_builder->build( $indexable ); $this->maybe_build_author_indexable( $indexable->author_id ); // The indexable is already saved, so return early. return $indexable; case 'user': $indexable = $this->author_builder->build( $indexable->object_id, $indexable ); break; case 'term': $indexable = $this->term_builder->build( $indexable->object_id, $indexable ); // Save indexable, to make sure it can be queried when building hierarchy. $indexable = $this->indexable_helper->save_indexable( $indexable, $indexable_before ); $this->hierarchy_builder->build( $indexable ); // The indexable is already saved, so return early. return $indexable; case 'home-page': $indexable = $this->home_page_builder->build( $indexable ); break; case 'date-archive': $indexable = $this->date_archive_builder->build( $indexable ); break; case 'post-type-archive': $indexable = $this->post_type_archive_builder->build( $indexable->object_sub_type, $indexable ); break; case 'system-page': $indexable = $this->system_page_builder->build( $indexable->object_sub_type, $indexable ); break; } return $this->indexable_helper->save_indexable( $indexable, $indexable_before ); } catch ( Source_Exception $exception ) { if ( ! $this->is_type_with_no_id( $indexable->object_type ) && ( ! isset( $indexable->object_id ) || \is_null( $indexable->object_id ) ) ) { return false; } /** * The current indexable could not be indexed. Create a placeholder indexable, so we can * skip this indexable in future indexing runs. * * @var Indexable $indexable */ $indexable = $this->ensure_indexable( $indexable, [ 'object_id' => $indexable->object_id, 'object_type' => $indexable->object_type, 'post_status' => 'unindexed', 'version' => 0, ] ); // If we already had an existing indexable, mark it as unindexed. We cannot rely on its validity anymore. $indexable->post_status = 'unindexed'; // Make sure that the indexing process doesn't get stuck in a loop on this broken indexable. $indexable = $this->version_manager->set_latest( $indexable ); return $this->indexable_helper->save_indexable( $indexable, $indexable_before ); } catch ( Not_Built_Exception $exception ) { return false; } } // phpcs:enable } src/builders/indexable-home-page-builder.php000064400000010542147206602470015106 0ustar00options = $options; $this->url_helper = $url_helper; $this->version = $versions->get_latest_version_for_type( 'home-page' ); $this->post_helper = $post_helper; } /** * Formats the data. * * @param Indexable $indexable The indexable to format. * * @return Indexable The extended indexable. */ public function build( $indexable ) { $indexable->object_type = 'home-page'; $indexable->title = $this->options->get( 'title-home-wpseo' ); $indexable->breadcrumb_title = $this->options->get( 'breadcrumbs-home' ); $indexable->permalink = $this->url_helper->home(); $indexable->blog_id = \get_current_blog_id(); $indexable->description = $this->options->get( 'metadesc-home-wpseo' ); if ( empty( $indexable->description ) ) { $indexable->description = \get_bloginfo( 'description' ); } $indexable->is_robots_noindex = \get_option( 'blog_public' ) === '0'; $indexable->open_graph_title = $this->options->get( 'open_graph_frontpage_title' ); $indexable->open_graph_image = $this->options->get( 'open_graph_frontpage_image' ); $indexable->open_graph_image_id = $this->options->get( 'open_graph_frontpage_image_id' ); $indexable->open_graph_description = $this->options->get( 'open_graph_frontpage_desc' ); // Reset the OG image source & meta. $indexable->open_graph_image_source = null; $indexable->open_graph_image_meta = null; // When the image or image id is set. if ( $indexable->open_graph_image || $indexable->open_graph_image_id ) { $indexable->open_graph_image_source = 'set-by-user'; $this->set_open_graph_image_meta_data( $indexable ); } $timestamps = $this->get_object_timestamps(); $indexable->object_published_at = $timestamps->published_at; $indexable->object_last_modified = $timestamps->last_modified; $indexable->version = $this->version; return $indexable; } /** * Returns the timestamps for the homepage. * * @return object An object with last_modified and published_at timestamps. */ protected function get_object_timestamps() { global $wpdb; $post_statuses = $this->post_helper->get_public_post_statuses(); $replacements = []; $replacements[] = 'post_modified_gmt'; $replacements[] = 'post_date_gmt'; $replacements[] = $wpdb->posts; $replacements[] = 'post_status'; $replacements = \array_merge( $replacements, $post_statuses ); $replacements[] = 'post_password'; $replacements[] = 'post_type'; //phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized. //phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way. //phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches. return $wpdb->get_row( $wpdb->prepare( ' SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at FROM %i AS p WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ") AND p.%i = '' AND p.%i = 'post' ", $replacements ) ); //phpcs:enable } } src/builders/indexable-system-page-builder.php000064400000004155147206602470015505 0ustar00 [ 'title' => 'title-search-wpseo', ], '404' => [ 'title' => 'title-404-wpseo', 'breadcrumb_title' => 'breadcrumbs-404crumb', ], ]; /** * The options helper. * * @var Options_Helper */ protected $options; /** * The latest version of the Indexable_System_Page_Builder. * * @var int */ protected $version; /** * Indexable_System_Page_Builder constructor. * * @param Options_Helper $options The options helper. * @param Indexable_Builder_Versions $versions The latest version of each Indexable Builder. */ public function __construct( Options_Helper $options, Indexable_Builder_Versions $versions ) { $this->options = $options; $this->version = $versions->get_latest_version_for_type( 'system-page' ); } /** * Formats the data. * * @param string $object_sub_type The object sub type of the system page. * @param Indexable $indexable The indexable to format. * * @return Indexable The extended indexable. */ public function build( $object_sub_type, Indexable $indexable ) { $indexable->object_type = 'system-page'; $indexable->object_sub_type = $object_sub_type; $indexable->title = $this->options->get( static::OPTION_MAPPING[ $object_sub_type ]['title'] ); $indexable->is_robots_noindex = true; $indexable->blog_id = \get_current_blog_id(); if ( \array_key_exists( 'breadcrumb_title', static::OPTION_MAPPING[ $object_sub_type ] ) ) { $indexable->breadcrumb_title = $this->options->get( static::OPTION_MAPPING[ $object_sub_type ]['breadcrumb_title'] ); } $indexable->version = $this->version; return $indexable; } } src/builders/indexable-post-builder.php000064400000030307147206602470014232 0ustar00post_helper = $post_helper; $this->post_type_helper = $post_type_helper; $this->version = $versions->get_latest_version_for_type( 'post' ); $this->meta = $meta; } /** * Sets the indexable repository. Done to avoid circular dependencies. * * @required * * @param Indexable_Repository $indexable_repository The indexable repository. * * @return void */ public function set_indexable_repository( Indexable_Repository $indexable_repository ) { $this->indexable_repository = $indexable_repository; } /** * Formats the data. * * @param int $post_id The post ID to use. * @param Indexable $indexable The indexable to format. * * @return bool|Indexable The extended indexable. False when unable to build. * * @throws Post_Not_Found_Exception When the post could not be found. * @throws Post_Not_Built_Exception When the post should not be indexed. */ public function build( $post_id, $indexable ) { if ( ! $this->post_helper->is_post_indexable( $post_id ) ) { throw Post_Not_Built_Exception::because_not_indexable( $post_id ); } $post = $this->post_helper->get_post( $post_id ); if ( $post === null ) { throw new Post_Not_Found_Exception(); } if ( $this->should_exclude_post( $post ) ) { throw Post_Not_Built_Exception::because_post_type_excluded( $post_id ); } $indexable->object_id = $post_id; $indexable->object_type = 'post'; $indexable->object_sub_type = $post->post_type; $indexable->permalink = $this->get_permalink( $post->post_type, $post_id ); $indexable->primary_focus_keyword_score = $this->get_keyword_score( $this->meta->get_value( 'focuskw', $post_id ), (int) $this->meta->get_value( 'linkdex', $post_id ) ); $indexable->readability_score = (int) $this->meta->get_value( 'content_score', $post_id ); $indexable->inclusive_language_score = (int) $this->meta->get_value( 'inclusive_language_score', $post_id ); $indexable->is_cornerstone = ( $this->meta->get_value( 'is_cornerstone', $post_id ) === '1' ); $indexable->is_robots_noindex = $this->get_robots_noindex( (int) $this->meta->get_value( 'meta-robots-noindex', $post_id ) ); // Set additional meta-robots values. $indexable->is_robots_nofollow = ( $this->meta->get_value( 'meta-robots-nofollow', $post_id ) === '1' ); $noindex_advanced = $this->meta->get_value( 'meta-robots-adv', $post_id ); $meta_robots = \explode( ',', $noindex_advanced ); foreach ( $this->get_robots_options() as $meta_robots_option ) { $indexable->{'is_robots_' . $meta_robots_option} = \in_array( $meta_robots_option, $meta_robots, true ) ? 1 : null; } $this->reset_social_images( $indexable ); foreach ( $this->get_indexable_lookup() as $meta_key => $indexable_key ) { $indexable->{$indexable_key} = $this->empty_string_to_null( $this->meta->get_value( $meta_key, $post_id ) ); } if ( empty( $indexable->breadcrumb_title ) ) { $indexable->breadcrumb_title = \wp_strip_all_tags( \get_the_title( $post_id ), true ); } $this->handle_social_images( $indexable ); $indexable->author_id = $post->post_author; $indexable->post_parent = $post->post_parent; $indexable->number_of_pages = $this->get_number_of_pages_for_post( $post ); $indexable->post_status = $post->post_status; $indexable->is_protected = $post->post_password !== ''; $indexable->is_public = $this->is_public( $indexable ); $indexable->has_public_posts = $this->has_public_posts( $indexable ); $indexable->blog_id = \get_current_blog_id(); $indexable->schema_page_type = $this->empty_string_to_null( $this->meta->get_value( 'schema_page_type', $post_id ) ); $indexable->schema_article_type = $this->empty_string_to_null( $this->meta->get_value( 'schema_article_type', $post_id ) ); $indexable->object_last_modified = $post->post_modified_gmt; $indexable->object_published_at = $post->post_date_gmt; $indexable->version = $this->version; return $indexable; } /** * Retrieves the permalink for a post with the given post type and ID. * * @param string $post_type The post type. * @param int $post_id The post ID. * * @return false|string|WP_Error The permalink. */ protected function get_permalink( $post_type, $post_id ) { if ( $post_type !== 'attachment' ) { return \get_permalink( $post_id ); } return \wp_get_attachment_url( $post_id ); } /** * Determines the value of is_public. * * @param Indexable $indexable The indexable. * * @return bool|null Whether or not the post type is public. Null if no override is set. */ protected function is_public( $indexable ) { if ( $indexable->is_protected === true ) { return false; } if ( $indexable->is_robots_noindex === true ) { return false; } // Attachments behave differently than the other post types, since they inherit from their parent. if ( $indexable->object_sub_type === 'attachment' ) { return $this->is_public_attachment( $indexable ); } if ( ! \in_array( $indexable->post_status, $this->post_helper->get_public_post_statuses(), true ) ) { return false; } if ( $indexable->is_robots_noindex === false ) { return true; } return null; } /** * Determines the value of is_public for attachments. * * @param Indexable $indexable The indexable. * * @return bool|null False when it has no parent. Null when it has a parent. */ protected function is_public_attachment( $indexable ) { // If the attachment has no parent, it should not be public. if ( empty( $indexable->post_parent ) ) { return false; } // If the attachment has a parent, the is_public should be NULL. return null; } /** * Determines the value of has_public_posts. * * @param Indexable $indexable The indexable. * * @return bool|null Whether the attachment has a public parent, can be true, false and null. Null when it is not an attachment. */ protected function has_public_posts( $indexable ) { // Only attachments (and authors) have this value. if ( $indexable->object_sub_type !== 'attachment' ) { return null; } // The attachment should have a post parent. if ( empty( $indexable->post_parent ) ) { return false; } // The attachment should inherit the post status. if ( $indexable->post_status !== 'inherit' ) { return false; } // The post parent should be public. $post_parent_indexable = $this->indexable_repository->find_by_id_and_type( $indexable->post_parent, 'post' ); if ( $post_parent_indexable !== false ) { return $post_parent_indexable->is_public; } return false; } /** * Converts the meta robots noindex value to the indexable value. * * @param int $value Meta value to convert. * * @return bool|null True for noindex, false for index, null for default of parent/type. */ protected function get_robots_noindex( $value ) { $value = (int) $value; switch ( $value ) { case 1: return true; case 2: return false; } return null; } /** * Retrieves the robot options to search for. * * @return array List of robots values. */ protected function get_robots_options() { return [ 'noimageindex', 'noarchive', 'nosnippet' ]; } /** * Determines the focus keyword score. * * @param string $keyword The focus keyword that is set. * @param int $score The score saved on the meta data. * * @return int|null Score to use. */ protected function get_keyword_score( $keyword, $score ) { if ( empty( $keyword ) ) { return null; } return $score; } /** * Retrieves the lookup table. * * @return array Lookup table for the indexable fields. */ protected function get_indexable_lookup() { return [ 'focuskw' => 'primary_focus_keyword', 'canonical' => 'canonical', 'title' => 'title', 'metadesc' => 'description', 'bctitle' => 'breadcrumb_title', 'opengraph-title' => 'open_graph_title', 'opengraph-image' => 'open_graph_image', 'opengraph-image-id' => 'open_graph_image_id', 'opengraph-description' => 'open_graph_description', 'twitter-title' => 'twitter_title', 'twitter-image' => 'twitter_image', 'twitter-image-id' => 'twitter_image_id', 'twitter-description' => 'twitter_description', 'estimated-reading-time-minutes' => 'estimated_reading_time_minutes', ]; } /** * Finds an alternative image for the social image. * * @param Indexable $indexable The indexable. * * @return array|bool False when not found, array with data when found. */ protected function find_alternative_image( Indexable $indexable ) { if ( $indexable->object_sub_type === 'attachment' && $this->image->is_valid_attachment( $indexable->object_id ) ) { return [ 'image_id' => $indexable->object_id, 'source' => 'attachment-image', ]; } $featured_image_id = $this->image->get_featured_image_id( $indexable->object_id ); if ( $featured_image_id ) { return [ 'image_id' => $featured_image_id, 'source' => 'featured-image', ]; } $gallery_image = $this->image->get_gallery_image( $indexable->object_id ); if ( $gallery_image ) { return [ 'image' => $gallery_image, 'source' => 'gallery-image', ]; } $content_image = $this->image->get_post_content_image( $indexable->object_id ); if ( $content_image ) { return [ 'image' => $content_image, 'source' => 'first-content-image', ]; } return false; } /** * Gets the number of pages for a post. * * @param object $post The post object. * * @return int|null The number of pages or null if the post isn't paginated. */ protected function get_number_of_pages_for_post( $post ) { $number_of_pages = ( \substr_count( $post->post_content, '' ) + 1 ); if ( $number_of_pages <= 1 ) { return null; } return $number_of_pages; } /** * Checks whether an indexable should be built for this post. * * @param WP_Post $post The post for which an indexable should be built. * * @return bool `true` if the post should be excluded from building, `false` if not. */ protected function should_exclude_post( $post ) { return $this->post_type_helper->is_excluded( $post->post_type ); } /** * Transforms an empty string into null. Leaves non-empty strings intact. * * @param string $text The string. * * @return string|null The input string or null. */ protected function empty_string_to_null( $text ) { if ( ! \is_string( $text ) || $text === '' ) { return null; } return $text; } } src/builders/indexable-author-builder.php000064400000017117147206602470014553 0ustar00author_archive = $author_archive; $this->version = $versions->get_latest_version_for_type( 'user' ); $this->options_helper = $options_helper; $this->post_helper = $post_helper; } /** * Formats the data. * * @param int $user_id The user to retrieve the indexable for. * @param Indexable $indexable The indexable to format. * * @return Indexable The extended indexable. * * @throws Author_Not_Built_Exception When author is not built. */ public function build( $user_id, Indexable $indexable ) { $exception = $this->check_if_user_should_be_indexed( $user_id ); if ( $exception ) { throw $exception; } $meta_data = $this->get_meta_data( $user_id ); $indexable->object_id = $user_id; $indexable->object_type = 'user'; $indexable->permalink = \get_author_posts_url( $user_id ); $indexable->title = $meta_data['wpseo_title']; $indexable->description = $meta_data['wpseo_metadesc']; $indexable->is_cornerstone = false; $indexable->is_robots_noindex = ( $meta_data['wpseo_noindex_author'] === 'on' ); $indexable->is_robots_nofollow = null; $indexable->is_robots_noarchive = null; $indexable->is_robots_noimageindex = null; $indexable->is_robots_nosnippet = null; $indexable->is_public = ( $indexable->is_robots_noindex ) ? false : null; $indexable->has_public_posts = $this->author_archive->author_has_public_posts( $user_id ); $indexable->blog_id = \get_current_blog_id(); $this->reset_social_images( $indexable ); $this->handle_social_images( $indexable ); $timestamps = $this->get_object_timestamps( $user_id ); $indexable->object_published_at = $timestamps->published_at; $indexable->object_last_modified = $timestamps->last_modified; $indexable->version = $this->version; return $indexable; } /** * Retrieves the meta data for this indexable. * * @param int $user_id The user to retrieve the meta data for. * * @return array List of meta entries. */ protected function get_meta_data( $user_id ) { $keys = [ 'wpseo_title', 'wpseo_metadesc', 'wpseo_noindex_author', ]; $output = []; foreach ( $keys as $key ) { $output[ $key ] = $this->get_author_meta( $user_id, $key ); } return $output; } /** * Retrieves the author meta. * * @param int $user_id The user to retrieve the indexable for. * @param string $key The meta entry to retrieve. * * @return string|null The value of the meta field. */ protected function get_author_meta( $user_id, $key ) { $value = \get_the_author_meta( $key, $user_id ); if ( \is_string( $value ) && $value === '' ) { return null; } return $value; } /** * Finds an alternative image for the social image. * * @param Indexable $indexable The indexable. * * @return array|bool False when not found, array with data when found. */ protected function find_alternative_image( Indexable $indexable ) { $gravatar_image = \get_avatar_url( $indexable->object_id, [ 'size' => 500, 'scheme' => 'https', ] ); if ( $gravatar_image ) { return [ 'image' => $gravatar_image, 'source' => 'gravatar-image', ]; } return false; } /** * Returns the timestamps for a given author. * * @param int $author_id The author ID. * * @return object An object with last_modified and published_at timestamps. */ protected function get_object_timestamps( $author_id ) { global $wpdb; $post_statuses = $this->post_helper->get_public_post_statuses(); $replacements = []; $replacements[] = 'post_modified_gmt'; $replacements[] = 'post_date_gmt'; $replacements[] = $wpdb->posts; $replacements[] = 'post_status'; $replacements = \array_merge( $replacements, $post_statuses ); $replacements[] = 'post_password'; $replacements[] = 'post_author'; $replacements[] = $author_id; //phpcs:disable WordPress.DB.PreparedSQLPlaceholders -- %i placeholder is still not recognized. //phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way. //phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches. return $wpdb->get_row( $wpdb->prepare( ' SELECT MAX(p.%i) AS last_modified, MIN(p.%i) AS published_at FROM %i AS p WHERE p.%i IN (' . \implode( ', ', \array_fill( 0, \count( $post_statuses ), '%s' ) ) . ") AND p.%i = '' AND p.%i = %d ", $replacements ) ); //phpcs:enable } /** * Checks if the user should be indexed. * Returns an exception with an appropriate message if not. * * @param string $user_id The user id. * * @return Author_Not_Built_Exception|null The exception if it should not be indexed, or `null` if it should. */ protected function check_if_user_should_be_indexed( $user_id ) { $exception = null; if ( $this->author_archive->are_disabled() ) { $exception = Author_Not_Built_Exception::author_archives_are_disabled( $user_id ); } // We will check if the author has public posts the WP way, instead of the indexable way, to make sure we get proper results even if SEO optimization is not run. // In case the user has no public posts, we check if the user should be indexed anyway. if ( $this->options_helper->get( 'noindex-author-noposts-wpseo', false ) === true && $this->author_archive->author_has_public_posts_wp( $user_id ) === false ) { $exception = Author_Not_Built_Exception::author_archives_are_not_indexed_for_users_without_posts( $user_id ); } /** * Filter: Include or exclude a user from being build and saved as an indexable. * Return an `Author_Not_Built_Exception` when the indexable should not be build, with an appropriate message telling why it should not be built. * Return `null` if the indexable should be build. * * @param Author_Not_Built_Exception|null $exception An exception if the indexable is not being built, `null` if the indexable should be built. * @param string $user_id The ID of the user that should or should not be excluded. */ return \apply_filters( 'wpseo_should_build_and_save_user_indexable', $exception, $user_id ); } } src/wrappers/wp-rewrite-wrapper.php000064400000000444147206602470013504 0ustar00getHeaders() as $name => $values ) { $headers[ $name ] = \implode( ',', $values ); } $args = [ 'method' => $request->getMethod(), 'headers' => $headers, 'body' => (string) $request->getBody(), 'httpVersion' => $request->getProtocolVersion(), ]; if ( isset( $options['verify'] ) && $options['verify'] === false ) { $args['sslverify'] = false; } if ( isset( $options['timeout'] ) ) { $args['timeout'] = ( $options['timeout'] * 1000 ); } $raw_response = \wp_remote_request( (string) $request->getUri(), $args ); if ( \is_wp_error( $raw_response ) ) { $exception = new Exception( $raw_response->get_error_message() ); return new RejectedPromise( $exception ); } $response = new Response( $raw_response['response']['code'], $raw_response['headers']->getAll(), $raw_response['body'], $args['httpVersion'], $raw_response['response']['message'] ); return new FulfilledPromise( $response ); } } src/wrappers/wp-query-wrapper.php000064400000001554147206602470013173 0ustar00container = $container; } /** * Registers an integration. * * @param string $integration_class The class name of the integration to be loaded. * * @return void */ public function register_integration( $integration_class ) { $this->integrations[] = $integration_class; } /** * Registers an initializer. * * @param string $initializer_class The class name of the initializer to be loaded. * * @return void */ public function register_initializer( $initializer_class ) { $this->initializers[] = $initializer_class; } /** * Registers a route. * * @param string $route_class The class name of the route to be loaded. * * @return void */ public function register_route( $route_class ) { $this->routes[] = $route_class; } /** * Registers a command. * * @param string $command_class The class name of the command to be loaded. * * @return void */ public function register_command( $command_class ) { $this->commands[] = $command_class; } /** * Registers a migration. * * @param string $plugin The plugin the migration belongs to. * @param string $version The version of the migration. * @param string $migration_class The class name of the migration to be loaded. * * @return void */ public function register_migration( $plugin, $version, $migration_class ) { if ( ! \array_key_exists( $plugin, $this->migrations ) ) { $this->migrations[ $plugin ] = []; } $this->migrations[ $plugin ][ $version ] = $migration_class; } /** * Loads all registered classes if their conditionals are met. * * @return void */ public function load() { $this->load_initializers(); if ( ! \did_action( 'init' ) ) { \add_action( 'init', [ $this, 'load_integrations' ] ); } else { $this->load_integrations(); } \add_action( 'rest_api_init', [ $this, 'load_routes' ] ); if ( \defined( 'WP_CLI' ) && \WP_CLI ) { $this->load_commands(); } } /** * Returns all registered migrations. * * @param string $plugin The plugin to get the migrations for. * * @return string[]|false The registered migrations. False if no migrations were registered. */ public function get_migrations( $plugin ) { if ( ! \array_key_exists( $plugin, $this->migrations ) ) { return false; } return $this->migrations[ $plugin ]; } /** * Loads all registered commands. * * @return void */ protected function load_commands() { foreach ( $this->commands as $class ) { $command = $this->get_class( $class ); if ( $command === null ) { continue; } WP_CLI::add_command( $class::get_namespace(), $command ); } } /** * Loads all registered initializers if their conditionals are met. * * @return void */ protected function load_initializers() { foreach ( $this->initializers as $class ) { if ( ! $this->conditionals_are_met( $class ) ) { continue; } $initializer = $this->get_class( $class ); if ( $initializer === null ) { continue; } $initializer->initialize(); } } /** * Loads all registered integrations if their conditionals are met. * * @return void */ public function load_integrations() { foreach ( $this->integrations as $class ) { if ( ! $this->conditionals_are_met( $class ) ) { continue; } $integration = $this->get_class( $class ); if ( $integration === null ) { continue; } $integration->register_hooks(); } } /** * Loads all registered routes if their conditionals are met. * * @return void */ public function load_routes() { foreach ( $this->routes as $class ) { if ( ! $this->conditionals_are_met( $class ) ) { continue; } $route = $this->get_class( $class ); if ( $route === null ) { continue; } $route->register_routes(); } } /** * Checks if all conditionals of a given loadable are met. * * @param string $loadable_class The class name of the loadable. * * @return bool Whether all conditionals of the loadable are met. */ protected function conditionals_are_met( $loadable_class ) { // In production environments do not fatal if the class does not exist but log and fail gracefully. if ( \YOAST_ENVIRONMENT === 'production' && ! \class_exists( $loadable_class ) ) { if ( \defined( 'WP_DEBUG' ) && \WP_DEBUG ) { // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log \error_log( \sprintf( /* translators: %1$s expands to Yoast SEO, %2$s expands to the name of the class that could not be found. */ \__( '%1$s attempted to load the class %2$s but it could not be found.', 'wordpress-seo' ), 'Yoast SEO', $loadable_class ) ); } return false; } $conditionals = $loadable_class::get_conditionals(); foreach ( $conditionals as $class ) { $conditional = $this->get_class( $class ); if ( $conditional === null || ! $conditional->is_met() ) { return false; } } return true; } /** * Gets a class from the container. * * @param string $class_name The class name. * * @return object|null The class or, in production environments, null if it does not exist. * * @throws Throwable If the class does not exist in development environments. */ protected function get_class( $class_name ) { try { return $this->container->get( $class_name ); } catch ( Throwable $e ) { // In production environments do not fatal if the class could not be constructed but log and fail gracefully. if ( \YOAST_ENVIRONMENT === 'production' ) { if ( \defined( 'WP_DEBUG' ) && \WP_DEBUG ) { // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log \error_log( $e->getMessage() ); } return null; } throw $e; } } } src/presenters/rel-next-presenter.php000064400000003203147206602470014007 0ustar00presentation->robots, true ) ) { return ''; } /** * Filter: 'wpseo_adjacent_rel_url' - Allow filtering of the rel next URL put out by Yoast SEO. * * @param string $rel_next The rel next URL. * @param string $rel Link relationship, prev or next. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return (string) \trim( \apply_filters( 'wpseo_adjacent_rel_url', $this->presentation->rel_next, 'next', $this->presentation ) ); } } src/presenters/meta-description-presenter.php000064400000003531147206602470015524 0ustar00'; } return ''; } /** * Run the meta description content through replace vars, the `wpseo_metadesc` filter and sanitization. * * @return string The filtered meta description. */ public function get() { $meta_description = $this->replace_vars( $this->presentation->meta_description ); /** * Filter: 'wpseo_metadesc' - Allow changing the Yoast SEO meta description sentence. * * @param string $meta_description The description sentence. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $meta_description = \apply_filters( 'wpseo_metadesc', $meta_description, $this->presentation ); $meta_description = $this->helpers->string->strip_all_tags( \stripslashes( $meta_description ) ); return \trim( $meta_description ); } } src/presenters/abstract-indexable-presenter.php000064400000003063147206602470016011 0ustar00key === 'NO KEY PROVIDED' ) { return null; } return \str_replace( [ ':', ' ', '-' ], '_', $this->key ); } /** * Returns the metafield's property key. * * @return string The property key. */ public function get_key() { return $this->key; } /** * Replace replacement variables in a string. * * @param string $replacevar_string The string with replacement variables. * * @return string The string with replacement variables replaced. */ protected function replace_vars( $replacevar_string ) { return $this->replace_vars->replace( $replacevar_string, $this->presentation->source ); } } src/presenters/robots-txt-presenter.php000064400000010267147206602470014406 0ustar00robots_txt_helper = $robots_txt_helper; } /** * Generate content to be placed in a robots.txt file. * * @return string Content to be placed in a robots.txt file. */ public function present() { $robots_txt_content = self::YOAST_OUTPUT_BEFORE_COMMENT; $robots_txt_content = $this->handle_user_agents( $robots_txt_content ); $robots_txt_content = $this->handle_site_maps( $robots_txt_content ); return $robots_txt_content . self::YOAST_OUTPUT_AFTER_COMMENT; } /** * Adds user agent directives to the robots txt output string. * * @param array $user_agents The list if available user agents. * @param string $robots_txt_content The current working robots txt string. * * @return string */ private function add_user_agent_directives( $user_agents, $robots_txt_content ) { foreach ( $user_agents as $user_agent ) { $robots_txt_content .= self::USER_AGENT_FIELD . ': ' . $user_agent->get_user_agent() . \PHP_EOL; $robots_txt_content = $this->add_directive_path( $robots_txt_content, $user_agent->get_disallow_paths(), self::DISALLOW_DIRECTIVE ); $robots_txt_content = $this->add_directive_path( $robots_txt_content, $user_agent->get_allow_paths(), self::ALLOW_DIRECTIVE ); $robots_txt_content .= \PHP_EOL; } return $robots_txt_content; } /** * Adds user agent directives path content to the robots txt output string. * * @param string $robots_txt_content The current working robots txt string. * @param array $paths The list of paths for which to add a txt entry. * @param string $directive_identifier The identifier for the directives. (Disallow of Allow). * * @return string */ private function add_directive_path( $robots_txt_content, $paths, $directive_identifier ) { if ( \count( $paths ) > 0 ) { foreach ( $paths as $path ) { $robots_txt_content .= $directive_identifier . ': ' . $path . \PHP_EOL; } } return $robots_txt_content; } /** * Handles adding user agent content to the robots txt content if there is any. * * @param string $robots_txt_content The current working robots txt string. * * @return string */ private function handle_user_agents( $robots_txt_content ) { $user_agents = $this->robots_txt_helper->get_robots_txt_user_agents(); if ( ! isset( $user_agents['*'] ) ) { $robots_txt_content .= 'User-agent: *' . \PHP_EOL; $robots_txt_content .= 'Disallow:' . \PHP_EOL . \PHP_EOL; } $robots_txt_content = $this->add_user_agent_directives( $user_agents, $robots_txt_content ); return $robots_txt_content; } /** * Handles adding sitemap content to the robots txt content. * * @param string $robots_txt_content The current working robots txt string. * * @return string */ private function handle_site_maps( $robots_txt_content ) { $registered_sitemaps = $this->robots_txt_helper->get_sitemap_rules(); foreach ( $registered_sitemaps as $sitemap ) { $robots_txt_content .= self::SITEMAP_FIELD . ': ' . $sitemap . \PHP_EOL; } return $robots_txt_content; } } src/presenters/webmaster/bing-presenter.php000064400000001105147206602470015160 0ustar00helpers->options->get( 'msverify', '' ); } } src/presenters/webmaster/yandex-presenter.php000064400000001123147206602470015531 0ustar00helpers->options->get( 'yandexverify', '' ); } } src/presenters/webmaster/baidu-presenter.php000064400000001132147206602470015325 0ustar00helpers->options->get( 'baiduverify', '' ); } } src/presenters/webmaster/pinterest-presenter.php000064400000001130147206602470016254 0ustar00helpers->options->get( 'pinterestverify', '' ); } } src/presenters/webmaster/google-presenter.php000064400000001135147206602470015520 0ustar00helpers->options->get( 'googleverify', '' ); } } src/presenters/breadcrumbs-presenter.php000064400000017055147206602470014554 0ustar00get(); if ( ! \is_array( $breadcrumbs ) || empty( $breadcrumbs ) ) { return ''; } $links = []; $total = \count( $breadcrumbs ); foreach ( $breadcrumbs as $index => $breadcrumb ) { $links[ $index ] = $this->crumb_to_link( $breadcrumb, $index, $total ); } // Removes any effectively empty links. $links = \array_map( 'trim', $links ); $links = \array_filter( $links ); $output = \implode( $this->get_separator(), $links ); if ( empty( $output ) ) { return ''; } $output = '<' . $this->get_wrapper() . $this->get_id() . $this->get_class() . '>' . $output . 'get_wrapper() . '>'; $output = $this->filter( $output ); $prefix = $this->helpers->options->get( 'breadcrumbs-prefix' ); if ( $prefix !== '' ) { $output = "\t" . $prefix . "\n" . $output; } return $output; } /** * Gets the raw value of a presentation. * * @return array The raw value. */ public function get() { return $this->presentation->breadcrumbs; } /** * Filters the output. * * @param string $output The HTML output. * * @return string The filtered output. */ protected function filter( $output ) { /** * Filter: 'wpseo_breadcrumb_output' - Allow changing the HTML output of the Yoast SEO breadcrumbs class. * * @param string $output The HTML output. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return \apply_filters( 'wpseo_breadcrumb_output', $output, $this->presentation ); } /** * Create a breadcrumb element string. * * @param array $breadcrumb Link info array containing the keys: * 'text' => (string) link text. * 'url' => (string) link url. * (optional) 'title' => (string) link title attribute text. * @param int $index Index for the current breadcrumb. * @param int $total The total number of breadcrumbs. * * @return string The breadcrumb link. */ protected function crumb_to_link( $breadcrumb, $index, $total ) { $link = ''; if ( ! isset( $breadcrumb['text'] ) || ! \is_string( $breadcrumb['text'] ) || empty( $breadcrumb['text'] ) ) { return $link; } $text = \trim( $breadcrumb['text'] ); if ( $index < ( $total - 1 ) && isset( $breadcrumb['url'] ) && \is_string( $breadcrumb['url'] ) && ! empty( $breadcrumb['url'] ) ) { // If it's not the last element and we have a url. $link .= '<' . $this->get_element() . '>'; $title_attr = isset( $breadcrumb['title'] ) ? ' title="' . \esc_attr( $breadcrumb['title'] ) . '"' : ''; $link .= 'should_link_target_blank() ) { $link .= ' target="_blank"'; } $link .= ' href="' . \esc_url( $breadcrumb['url'] ) . '"' . $title_attr . '>' . $text . ''; $link .= 'get_element() . '>'; } elseif ( $index === ( $total - 1 ) ) { // If it's the last element. if ( $this->helpers->options->get( 'breadcrumbs-boldlast' ) === true ) { $text = '' . $text . ''; } $link .= '<' . $this->get_element() . ' class="breadcrumb_last" aria-current="page">' . $text . 'get_element() . '>'; } else { // It's not the last element and has no url. $link .= '<' . $this->get_element() . '>' . $text . 'get_element() . '>'; } /** * Filter: 'wpseo_breadcrumb_single_link' - Allow changing of each link being put out by the Yoast SEO breadcrumbs class. * * @param string $link_output The output string. * @param array $link The breadcrumb link array. */ return \apply_filters( 'wpseo_breadcrumb_single_link', $link, $breadcrumb ); } /** * Retrieves HTML ID attribute. * * @return string The id attribute. */ protected function get_id() { if ( ! $this->id ) { /** * Filter: 'wpseo_breadcrumb_output_id' - Allow changing the HTML ID on the Yoast SEO breadcrumbs wrapper element. * * @param string $unsigned ID to add to the wrapper element. */ $this->id = \apply_filters( 'wpseo_breadcrumb_output_id', '' ); if ( ! \is_string( $this->id ) ) { return ''; } if ( $this->id !== '' ) { $this->id = ' id="' . \esc_attr( $this->id ) . '"'; } } return $this->id; } /** * Retrieves HTML Class attribute. * * @return string The class attribute. */ protected function get_class() { if ( ! $this->class ) { /** * Filter: 'wpseo_breadcrumb_output_class' - Allow changing the HTML class on the Yoast SEO breadcrumbs wrapper element. * * @param string $unsigned Class to add to the wrapper element. */ $this->class = \apply_filters( 'wpseo_breadcrumb_output_class', '' ); if ( ! \is_string( $this->class ) ) { return ''; } if ( $this->class !== '' ) { $this->class = ' class="' . \esc_attr( $this->class ) . '"'; } } return $this->class; } /** * Retrieves the wrapper element name. * * @return string The wrapper element name. */ protected function get_wrapper() { if ( ! $this->wrapper ) { $this->wrapper = \apply_filters( 'wpseo_breadcrumb_output_wrapper', 'span' ); $this->wrapper = \tag_escape( $this->wrapper ); if ( ! \is_string( $this->wrapper ) || $this->wrapper === '' ) { $this->wrapper = 'span'; } } return $this->wrapper; } /** * Retrieves the separator. * * @return string The separator. */ protected function get_separator() { if ( ! $this->separator ) { $this->separator = \apply_filters( 'wpseo_breadcrumb_separator', $this->helpers->options->get( 'breadcrumbs-sep' ) ); $this->separator = ' ' . $this->separator . ' '; } return $this->separator; } /** * Retrieves the crumb element name. * * @return string The element to use. */ protected function get_element() { if ( ! $this->element ) { $this->element = \esc_attr( \apply_filters( 'wpseo_breadcrumb_single_link_wrapper', 'span' ) ); } return $this->element; } /** * This is needed because when the editor is loaded in an Iframe the link needs to open in a different browser window. * We don't want this behaviour in the front-end and the way to check this is to check if the block is rendered in a REST request with the `context` set as 'edit'. Thus being in the editor. * * @return bool returns if the breadcrumb should be opened in another window. */ private function should_link_target_blank(): bool { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['context'] ) && \is_string( $_GET['context'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form information, We are only strictly comparing. if ( \wp_unslash( $_GET['context'] ) === 'edit' ) { return true; } } return false; } } src/presenters/rel-prev-presenter.php000064400000003301147206602470014004 0ustar00presentation->robots, true ) ) { return ''; } /** * Filter: 'wpseo_adjacent_rel_url' - Allow filtering of the rel prev URL put out by Yoast SEO. * * @param string $canonical The rel prev URL. * @param string $rel Link relationship, prev or next. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return (string) \trim( \apply_filters( 'wpseo_adjacent_rel_url', $this->presentation->rel_prev, 'prev', $this->presentation ) ); } } src/presenters/canonical-presenter.php000064400000002175147206602470014207 0ustar00presentation->robots, true ) ) { return ''; } /** * Filter: 'wpseo_canonical' - Allow filtering of the canonical URL put out by Yoast SEO. * * @param string $canonical The canonical URL. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return \urldecode( (string) \trim( \apply_filters( 'wpseo_canonical', $this->presentation->canonical, $this->presentation ) ) ); } } src/presenters/title-presenter.php000064400000003344147206602470013400 0ustar00%s'; /** * The method of escaping to use. * * @var string */ protected $escaping = 'html'; /** * Gets the raw value of a presentation. * * @return string The raw value. */ public function get() { // This ensures backwards compatibility with other plugins using this filter as well. \add_filter( 'pre_get_document_title', [ $this, 'get_title' ], 15 ); $title = \wp_get_document_title(); \remove_filter( 'pre_get_document_title', [ $this, 'get_title' ], 15 ); return $title; } /** * Returns a tag in the head. * * @return string The tag. */ public function present() { $value = $this->get(); if ( \is_string( $value ) && $value !== '' ) { return \sprintf( $this->tag_format, $this->escape_value( $value ) ); } return ''; } /** * Returns the presentation title. * * @return string The title. */ public function get_title() { $title = $this->replace_vars( $this->presentation->title ); /** * Filter: 'wpseo_title' - Allow changing the Yoast SEO generated title. * * @param string $title The title. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $title = \apply_filters( 'wpseo_title', $title, $this->presentation ); $title = $this->helpers->string->strip_all_tags( $title ); return \trim( $title ); } } src/presenters/schema-presenter.php000064400000002710147206602470013513 0ustar00 'Please use the "wpseo_schema_*" filters to extend the Yoast SEO schema data - see the WPSEO_Schema class.', ]; /** * Filter: 'wpseo_json_ld_output' - Allows disabling Yoast's schema output entirely. * * @param mixed $deprecated If false or an empty array is returned, disable our output. * @param string $empty */ $return = \apply_filters( 'wpseo_json_ld_output', $deprecated_data, '' ); if ( $return === [] || $return === false ) { return ''; } /** * Action: 'wpseo_json_ld' - Output Schema before the main schema from Yoast SEO is output. */ \do_action( 'wpseo_json_ld' ); $schema = $this->get(); if ( \is_array( $schema ) ) { $output = WPSEO_Utils::format_json_encode( $schema ); $output = \str_replace( "\n", \PHP_EOL . "\t", $output ); return ''; } return ''; } /** * Gets the raw value of a presentation. * * @return array The raw value. */ public function get() { return $this->presentation->schema; } } src/presenters/url-list-presenter.php000064400000002431147206602470014026 0ustar00links = $links; $this->class_name = $class_name; $this->target_blank = $target_blank; } /** * Presents the URL list. * * @return string The URL list. */ public function present() { $output = ''; return $output; } } src/presenters/abstract-presenter.php000064400000000571147206602470014061 0ustar00present(); } } src/presenters/debug/marker-open-presenter.php000064400000003132147206602470015560 0ustar00helpers->product->is_premium() ) { $version_info = $this->construct_version_info(); } return \sprintf( '', \esc_html( $this->helpers->product->get_name() ), $version_info ); } /** * Gets the plugin version information, including the free version if Premium is used. * * @return string The constructed version information. */ private function construct_version_info() { /** * Filter: 'wpseo_hide_version' - can be used to hide the Yoast SEO version in the debug marker (only available in Yoast SEO Premium). * * @param bool $hide_version */ if ( \apply_filters( 'wpseo_hide_version', false ) ) { return ''; } return 'v' . \WPSEO_PREMIUM_VERSION . ' (Yoast SEO v' . \WPSEO_VERSION . ')'; } /** * Gets the raw value of a presentation. * * @return string The raw value. */ public function get() { return ''; } } src/presenters/debug/marker-close-presenter.php000064400000001505147206602470015726 0ustar00', \esc_html( $this->helpers->product->get_name() ) ); } /** * Gets the raw value of a presentation. * * @return string The raw value. */ public function get() { return ''; } } src/presenters/admin/premium-badge-presenter.php000064400000002510147206602470016057 0ustar00id = $id; $this->link = $link; } /** * Presents the Premium Badge. If a link has been passed, the badge is presented with the link. * Otherwise a static badge is presented. * * @return string The styled Premium Badge. */ public function present() { if ( $this->link !== '' ) { return \sprintf( '%3$s', \esc_attr( $this->id ), \esc_url( $this->link ), 'Premium' // We don't want this string to be translatable. ); } return \sprintf( '%2$s', \esc_attr( $this->id ), 'Premium' // We don't want this string to be translatable. ); } } src/presenters/admin/meta-fields-presenter.php000064400000003100147206602470015527 0ustar00post = $post; $this->meta_fields = WPSEO_Meta::get_meta_field_defs( $field_group, $post_type ); } /** * Presents the Meta Fields. * * @return string The styled Alert. */ public function present() { $output = ''; foreach ( $this->meta_fields as $key => $meta_field ) { $form_key = \esc_attr( WPSEO_Meta::$form_prefix . $key ); $meta_value = WPSEO_Meta::get_value( $key, $this->post->ID ); $default = ''; if ( isset( $meta_field['default'] ) ) { $default = \sprintf( ' data-default="%s"', \esc_attr( $meta_field['default'] ) ); } $output .= '' . "\n"; } return $output; } } src/presenters/admin/indexing-failed-notification-presenter.php000064400000005764147206602470021072 0ustar00class_addon_manager = $class_addon_manager; $this->short_link_helper = $short_link_helper; $this->product_helper = $product_helper; } /** * Returns the notification as an HTML string. * * @return string The notification in an HTML string representation. */ public function present() { $notification_text = \sprintf( /* Translators: %1$s expands to an opening anchor tag for a link leading to the Yoast SEO tools page, %2$s expands to a closing anchor tag. */ \esc_html__( 'Something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please %1$sre-start the process%2$s.', 'wordpress-seo' ), '', '' ); if ( $this->product_helper->is_premium() ) { if ( $this->has_valid_premium_subscription() ) { // Add a support message for premium customers. $notification_text .= ' '; $notification_text .= \esc_html__( 'If the problem persists, please contact support.', 'wordpress-seo' ); } else { // Premium plugin with inactive addon; overwrite the entire error message. $notification_text = \sprintf( /* Translators: %1$s expands to an opening anchor tag for a link leading to the Premium installation page, %2$s expands to a closing anchor tag. */ \esc_html__( 'Oops, something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please make sure to activate your subscription in MyYoast by completing %1$sthese steps%2$s.', 'wordpress-seo' ), '', '' ); } } return '

' . $notification_text . '

'; } /** * Determines if the site has a valid Premium subscription. * * @return bool */ protected function has_valid_premium_subscription() { return $this->class_addon_manager->has_valid_subscription( WPSEO_Addon_Manager::PREMIUM_SLUG ); } } src/presenters/admin/alert-presenter.php000064400000003063147206602470014454 0ustar00content = $content; $this->type = $type; if ( ! $this->asset_manager ) { $this->asset_manager = new WPSEO_Admin_Asset_Manager(); } $this->asset_manager->enqueue_style( 'alert' ); } /** * Presents the Alert. * * @return string The styled Alert. */ public function present() { $icon_file = 'images/alert-' . $this->type . '-icon.svg'; $out = '
'; $out .= ''; $out .= ''; $out .= ''; $out .= '' . $this->content . ''; $out .= '
'; return $out; } } src/presenters/admin/notice-presenter.php000064400000006462147206602470014634 0ustar00title = $title; $this->content = $content; $this->image_filename = $image_filename; $this->button = $button; $this->is_dismissible = $is_dismissible; $this->id = $id; if ( ! $this->asset_manager ) { $this->asset_manager = new WPSEO_Admin_Asset_Manager(); } $this->asset_manager->enqueue_style( 'notifications' ); } /** * Presents the Notice. * * @return string The styled Notice. */ public function present() { $dismissible = ( $this->is_dismissible ) ? ' is-dismissible' : ''; $id = ( $this->id ) ? ' id="' . $this->id . '"' : ''; // WordPress admin notice. $out = ''; $out .= '
'; // Header. $out .= '
'; $out .= '
'; $out .= ''; $out .= \sprintf( '

%s

', \esc_html( $this->title ) ); $out .= '
'; $out .= '
'; $out .= '

' . $this->content . '

'; if ( ! \is_null( $this->button ) ) { $out .= '

' . $this->button . '

'; } $out .= '
'; $out .= '
'; if ( ! \is_null( $this->image_filename ) ) { $out .= ''; } $out .= '
'; $out .= ''; return $out; } } src/presenters/admin/help-link-presenter.php000064400000004121147206602470015224 0ustar00link = $link; $this->link_text = $link_text; $this->opens_in_new_browser_tab = $opens_in_new_browser_tab; if ( ! $this->asset_manager ) { $this->asset_manager = new WPSEO_Admin_Asset_Manager(); } $this->asset_manager->enqueue_style( 'admin-global' ); } /** * Presents the Help link. * * @return string The styled Help link. */ public function present() { if ( $this->link === '' || $this->link_text === '' ) { return; } $target_blank_attribute = ''; $new_tab_message = ''; if ( $this->opens_in_new_browser_tab ) { $target_blank_attribute = ' target="_blank"'; /* translators: Hidden accessibility text. */ $new_tab_message = ' ' . \__( '(Opens in a new browser tab)', 'wordpress-seo' ); } return \sprintf( '%3$s', \esc_url( $this->link ), $target_blank_attribute, \esc_html( $this->link_text . $new_tab_message ) ); } } src/presenters/admin/indexing-error-presenter.php000064400000010463147206602470016303 0ustar00short_link_helper = $short_link_helper; $this->product_helper = $product_helper; $this->addon_manager = $addon_manager; } /** * Generates the first paragraph of the error message to show when indexing failed. * * The contents of the paragraph varies based on whether WordPress SEO Premium has a valid, activated subscription or not. * * @param bool $is_premium Whether WordPress SEO Premium is currently active. * @param bool $has_valid_premium_subscription Whether WordPress SEO Premium currently has a valid subscription. * * @return string */ protected function generate_first_paragraph( $is_premium, $has_valid_premium_subscription ) { $message = \__( 'Oops, something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please click the button again to re-start the process. ', 'wordpress-seo' ); if ( $is_premium ) { if ( $has_valid_premium_subscription ) { $message .= \__( 'If the problem persists, please contact support.', 'wordpress-seo' ); } else { $message = \sprintf( /* translators: %1$s expands to an opening anchor tag for a link leading to the Premium installation page, %2$s expands to a closing anchor tag. */ \__( 'Oops, something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please make sure to activate your subscription in MyYoast by completing %1$sthese steps%2$s.', 'wordpress-seo' ), '', '' ); } } return $message; } /** * Generates the second paragraph of the error message to show when indexing failed. * * The error message varies based on whether WordPress SEO Premium has a valid, activated subscription or not. * * @param bool $is_premium Whether WordPress SEO Premium is currently active. * @param bool $has_valid_premium_subscription Whether WordPress SEO Premium currently has a valid subscription. * * @return string The second paragraph of the error message. */ protected function generate_second_paragraph( $is_premium, $has_valid_premium_subscription ) { return \sprintf( /* translators: %1$s expands to an opening anchor tag for a link leading to the Premium installation page, %2$s expands to a closing anchor tag. */ \__( 'Below are the technical details for the error. See %1$sthis page%2$s for a more detailed explanation.', 'wordpress-seo' ), '', '' ); } /** * Presents the error message to show if SEO optimization failed. * * The error message varies based on whether WordPress SEO Premium has a valid, activated subscription or not. * * @return string The error message to show. */ public function present() { $is_premium = $this->product_helper->is_premium(); $has_valid_premium_subscription = $this->addon_manager->has_valid_subscription( WPSEO_Addon_Manager::PREMIUM_SLUG ); $output = '

' . $this->generate_first_paragraph( $is_premium, $has_valid_premium_subscription ) . '

'; $output .= '

' . $this->generate_second_paragraph( $is_premium, $has_valid_premium_subscription ) . '

'; return $output; } } src/presenters/admin/indexing-list-item-presenter.php000064400000003012147206602470017051 0ustar00short_link_helper = $short_link_helper; } /** * Presents the list item for the tools menu. * * @return string The list item HTML. */ public function present() { $output = \sprintf( '
  • %s
    ', \esc_html__( 'Optimize SEO Data', 'wordpress-seo' ) ); $output .= \sprintf( '%1$s %3$s', \esc_html__( 'You can speed up your site and get insight into your internal linking structure by letting us perform a few optimizations to the way SEO data is stored. If you have a lot of content it might take a while, but trust us, it\'s worth it.', 'wordpress-seo' ), \esc_url( $this->short_link_helper->get( 'https://yoa.st/3-z' ) ), \esc_html__( 'Learn more about the benefits of optimized SEO data.', 'wordpress-seo' ) ); $output .= '
    '; $output .= '
  • '; return $output; } } src/presenters/admin/beta-badge-presenter.php000064400000002447147206602470015325 0ustar00id = $id; $this->link = $link; } /** * Presents the Beta Badge. If a link has been passed, the badge is presented with the link. * Otherwise a static badge is presented. * * @return string The styled Beta Badge. */ public function present() { if ( $this->link !== '' ) { return \sprintf( '%3$s', \esc_attr( $this->id ), \esc_url( $this->link ), 'Beta' // We don't want this string to be translatable. ); } return \sprintf( '%2$s', \esc_attr( $this->id ), 'Beta' // We don't want this string to be translatable. ); } } src/presenters/admin/woocommerce-beta-editor-presenter.php000064400000003360147206602470020061 0ustar00short_link_helper = $short_link_helper; } /** * Returns the notification as an HTML string. * * @return string The notification in an HTML string representation. */ public function present() { $notification_text = '

    '; $notification_text .= $this->get_message(); $notification_text .= '

    '; return $notification_text; } /** * Returns the message to show. * * @return string The message. */ protected function get_message() { return \sprintf( '%1$s %2$s', \esc_html__( 'Compatibility issue: Yoast SEO is incompatible with the beta WooCommerce product editor.', 'wordpress-seo' ), \sprintf( /* translators: 1: Yoast SEO, 2: Link start tag to the Learn more link, 3: Link closing tag. */ \esc_html__( 'The %1$s interface is currently unavailable in the beta WooCommerce product editor. To resolve any issues, please disable the beta editor. %2$sLearn how to disable the beta WooCommerce product editor.%3$s', 'wordpress-seo' ), 'Yoast SEO', '', '' ) ); } } src/presenters/admin/light-switch-presenter.php000064400000010764147206602470015761 0ustar00var = $variable; $this->label = $label; $this->buttons = $buttons; $this->name = $name; $this->value = $value; $this->reverse = $reverse; $this->help = $help; $this->strong = $strong; $this->disabled_attribute = $disabled_attribute; } /** * Presents the light switch toggle. * * @return string The light switch's HTML. */ public function present() { if ( empty( $this->buttons ) ) { $this->buttons = [ \__( 'Disabled', 'wordpress-seo' ), \__( 'Enabled', 'wordpress-seo' ) ]; } list( $off_button, $on_button ) = $this->buttons; $class = 'switch-light switch-candy switch-yoast-seo'; if ( $this->reverse ) { $class .= ' switch-yoast-seo-reverse'; } $help_class = ! empty( $this->help ) ? ' switch-container__has-help' : ''; $strong_class = ( $this->strong ) ? ' switch-light-visual-label__strong' : ''; $output = '
    '; $output .= \sprintf( '%3$s%4$s', $strong_class, // phpcs:ignore WordPress.Security.EscapeOutput -- Reason: $strong_class output is hardcoded. \esc_attr( $this->var . '-label' ), \esc_html( $this->label ), $this->help // phpcs:ignore WordPress.Security.EscapeOutput -- Reason: The help contains HTML. ); $output .= '
    '; return $output; } } src/presenters/admin/migration-error-presenter.php000064400000004264147206602470016471 0ustar00migration_error = $migration_error; } /** * Presents the migration error that occurred. * * @return string The error HTML. */ public function present() { $header = \sprintf( /* translators: %s: Yoast SEO. */ \esc_html__( '%s is unable to create database tables', 'wordpress-seo' ), 'Yoast SEO' ); $message = \sprintf( /* translators: %s: Yoast SEO. */ \esc_html__( '%s had problems creating the database tables needed to speed up your site.', 'wordpress-seo' ), 'Yoast SEO' ); $support = \sprintf( /* translators: %1$s: link to help article about solving table issue. %2$s: is anchor closing. */ \esc_html__( 'Please read %1$sthis help article%2$s to find out how to resolve this problem.', 'wordpress-seo' ), '', '' ); $reassurance = \sprintf( /* translators: %s: Yoast SEO. */ \esc_html__( 'Your site will continue to work normally, but won\'t take full advantage of %s.', 'wordpress-seo' ), 'Yoast SEO' ); $debug_info = \sprintf( '
    %1$s

    %2$s

    ', \esc_html__( 'Show debug information', 'wordpress-seo' ), \esc_html( $this->migration_error['message'] ) ); return \sprintf( '

    %1$s

    %2$s

    %3$s

    %4$s

    %5$s
    ', $header, $message, $support, $reassurance, $debug_info ); } } src/presenters/admin/badge-presenter.php000064400000005221147206602470014405 0ustar00id = $id; $this->link = $link; $this->group = $group; if ( ! $badge_group_names instanceof Badge_Group_Names ) { $badge_group_names = new Badge_Group_Names(); } $this->badge_group_names = $badge_group_names; } /** * Presents the New Badge. If a link has been passed, the badge is presented with the link. * Otherwise a static badge is presented. * * @return string The styled New Badge. */ public function present() { if ( ! $this->is_group_still_new() ) { return ''; } if ( $this->link !== '' ) { return \sprintf( '%3$s', \esc_attr( $this->id ), \esc_url( $this->link ), \esc_html__( 'New', 'wordpress-seo' ) ); } return \sprintf( '%2$s', \esc_attr( $this->id ), \esc_html__( 'New', 'wordpress-seo' ) ); } /** * Check whether the new badge should be shown according to the group it is in. * * @return bool True if still new. */ public function is_group_still_new() { // If there's no group configured, the new badge is always active. if ( ! $this->group ) { return true; } return $this->badge_group_names->is_still_eligible_for_new_badge( $this->group ); } } src/presenters/admin/indexing-notification-presenter.php000064400000013141147206602470017634 0ustar00short_link_helper = $short_link_helper; $this->total_unindexed = $total_unindexed; $this->reason = $reason; } /** * Returns the notification as an HTML string. * * @return string The HTML string representation of the notification. */ public function present() { $notification_text = '

    ' . $this->get_message( $this->reason ); $notification_text .= $this->get_time_estimate( $this->total_unindexed ) . '

    '; $notification_text .= ''; $notification_text .= \esc_html__( 'Start SEO data optimization', 'wordpress-seo' ); $notification_text .= ''; return $notification_text; } /** * Determines the message to show in the indexing notification. * * @param string $reason The reason identifier. * * @return string The message to show in the notification. */ protected function get_message( $reason ) { switch ( $reason ) { case Indexing_Reasons::REASON_PERMALINK_SETTINGS: $text = \esc_html__( 'Because of a change in your permalink structure, some of your SEO data needs to be reprocessed.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_HOME_URL_OPTION: $text = \esc_html__( 'Because of a change in your home URL setting, some of your SEO data needs to be reprocessed.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_CATEGORY_BASE_PREFIX: $text = \esc_html__( 'Because of a change in your category base setting, some of your SEO data needs to be reprocessed.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_TAG_BASE_PREFIX: $text = \esc_html__( 'Because of a change in your tag base setting, some of your SEO data needs to be reprocessed.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_POST_TYPE_MADE_PUBLIC: $text = \esc_html__( 'We need to re-analyze some of your SEO data because of a change in the visibility of your post types. Please help us do that by running the SEO data optimization.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_TAXONOMY_MADE_PUBLIC: $text = \esc_html__( 'We need to re-analyze some of your SEO data because of a change in the visibility of your taxonomies. Please help us do that by running the SEO data optimization.', 'wordpress-seo' ); break; case Indexing_Reasons::REASON_ATTACHMENTS_MADE_ENABLED: $text = \esc_html__( 'It looks like you\'ve enabled media pages. We recommend that you help us to re-analyze your site by running the SEO data optimization.', 'wordpress-seo' ); break; default: $text = \esc_html__( 'You can speed up your site and get insight into your internal linking structure by letting us perform a few optimizations to the way SEO data is stored.', 'wordpress-seo' ); } /** * Filter: 'wpseo_indexables_indexation_alert' - Allow developers to filter the reason of the indexation * * @param string $text The text to show as reason. * @param string $reason The reason value. */ return (string) \apply_filters( 'wpseo_indexables_indexation_alert', $text, $reason ); } /** * Creates a time estimate based on the total number on unindexed objects. * * @param int $total_unindexed The total number of unindexed objects. * * @return string The time estimate as a HTML string. */ protected function get_time_estimate( $total_unindexed ) { if ( $total_unindexed < 400 ) { return \esc_html__( ' We estimate this will take less than a minute.', 'wordpress-seo' ); } if ( $total_unindexed < 2500 ) { return \esc_html__( ' We estimate this will take a couple of minutes.', 'wordpress-seo' ); } $estimate = \esc_html__( ' We estimate this could take a long time, due to the size of your site. As an alternative to waiting, you could:', 'wordpress-seo' ); $estimate .= ''; return $estimate; } } src/presenters/admin/search-engines-discouraged-presenter.php000064400000002666147206602470020537 0ustar00'; $notification_text .= $this->get_message(); $notification_text .= '

    '; return $notification_text; } /** * Returns the message to show. * * @return string The message. */ protected function get_message() { return \sprintf( '%1$s %2$s ', \esc_html__( 'Huge SEO Issue: You\'re blocking access to robots.', 'wordpress-seo' ), \sprintf( /* translators: 1: Link start tag to the WordPress Reading Settings page, 2: Link closing tag. */ \esc_html__( 'If you want search engines to show this site in their results, you must %1$sgo to your Reading Settings%2$s and uncheck the box for Search Engine Visibility.', 'wordpress-seo' ), '
    ', '' ), \esc_js( \wp_create_nonce( 'wpseo-ignore' ) ), \esc_html__( 'I don\'t want this site to show in the search results.', 'wordpress-seo' ) ); } } src/presenters/admin/sidebar-presenter.php000064400000015047147206602470014763 0ustar00 get() ); if ( \is_string( $robots ) && $robots !== '' ) { return \sprintf( '', \esc_attr( $robots ) ); } return ''; } /** * Gets the raw value of a presentation. * * @return array The raw value. */ public function get() { return $this->presentation->robots; } } src/presenters/abstract-indexable-tag-presenter.php000064400000003373147206602470016566 0ustar00'; public const META_NAME_CONTENT = ''; public const LINK_REL_HREF = ''; public const DEFAULT_TAG_FORMAT = self::META_NAME_CONTENT; /** * The tag format including placeholders. * * @var string */ protected $tag_format = self::DEFAULT_TAG_FORMAT; /** * The method of escaping to use. * * @var string */ protected $escaping = 'attribute'; /** * Returns a tag in the head. * * @return string The tag. */ public function present() { $value = $this->get(); if ( ! \is_string( $value ) || $value === '' ) { return ''; } /** * There may be some classes that are derived from this class that do not use the $key property * in their $tag_format string. In that case the key property will simply not be used. */ return \sprintf( $this->tag_format, $this->escape_value( $value ), $this->key, \is_admin_bar_showing() ? ' class="yoast-seo-meta-tag"' : '' ); } /** * Escaped the output. * * @param string $value The desired method of escaping; 'html', 'url' or 'attribute'. * * @return string The escaped value. */ protected function escape_value( $value ) { switch ( $this->escaping ) { case 'html': return \esc_html( $value ); case 'url': return \esc_url( $value, null, 'attribute' ); case 'attribute': default: return \esc_attr( $value ); } } } src/presenters/open-graph/article-publisher-presenter.php000064400000002270147206602470017732 0ustar00presentation->open_graph_article_publisher, $this->presentation ) ); } } src/presenters/open-graph/description-presenter.php000064400000002472147206602470016643 0ustar00replace_vars( $this->presentation->open_graph_description ); /** * Filter: 'wpseo_opengraph_desc' - Allow changing the Yoast SEO generated Open Graph description. * * @param string $description The description. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $meta_og_description = \apply_filters( 'wpseo_opengraph_desc', $meta_og_description, $this->presentation ); $meta_og_description = $this->helpers->string->strip_all_tags( \stripslashes( $meta_og_description ) ); return \trim( $meta_og_description ); } } src/presenters/open-graph/article-modified-time-presenter.php000064400000001244147206602470020451 0ustar00presentation->open_graph_article_modified_time; } } src/presenters/open-graph/type-presenter.php000064400000001762147206602470015302 0ustar00presentation->open_graph_type, $this->presentation ); } } src/presenters/open-graph/url-presenter.php000064400000002161147206602470015115 0ustar00presentation->open_graph_url, $this->presentation ) ); } } src/presenters/open-graph/article-author-presenter.php000064400000002251147206602470017236 0ustar00presentation->open_graph_article_author, $this->presentation ) ); } } src/presenters/open-graph/locale-presenter.php000064400000002007147206602470015551 0ustar00presentation->open_graph_locale, $this->presentation ) ); } } src/presenters/open-graph/title-presenter.php000064400000002215147206602470015434 0ustar00replace_vars( $this->presentation->open_graph_title ); /** * Filter: 'wpseo_opengraph_title' - Allow changing the Yoast SEO generated title. * * @param string $title The title. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $title = (string) \trim( \apply_filters( 'wpseo_opengraph_title', $title, $this->presentation ) ); return $this->helpers->string->strip_all_tags( $title ); } } src/presenters/open-graph/article-published-time-presenter.php000064400000001250147206602470020645 0ustar00presentation->open_graph_article_published_time; } } src/presenters/open-graph/image-presenter.php000064400000010174147206602470015400 0ustar00 */ protected static $image_tags = [ 'width' => 'width', 'height' => 'height', 'type' => 'type', ]; /** * Returns the image for a post. * * @return string The image tag. */ public function present() { $images = $this->get(); if ( empty( $images ) ) { return ''; } $return = ''; foreach ( $images as $image_meta ) { $image_url = $image_meta['url']; if ( \is_attachment() ) { global $wp; $image_url = \home_url( $wp->request ); } $class = \is_admin_bar_showing() ? ' class="yoast-seo-meta-tag"' : ''; $return .= ''; foreach ( static::$image_tags as $key => $value ) { if ( empty( $image_meta[ $key ] ) ) { continue; } $return .= \PHP_EOL . "\t" . ''; } } return $return; } /** * Gets the raw value of a presentation. * * @return array The raw value. */ public function get() { $images = []; foreach ( $this->presentation->open_graph_images as $open_graph_image ) { $images[] = \array_intersect_key( // First filter the object. $this->filter( $open_graph_image ), // Then strip all keys that aren't in the image tags or the url. \array_flip( \array_merge( static::$image_tags, [ 'url' ] ) ) ); } return \array_filter( $images ); } /** * Run the image content through the `wpseo_opengraph_image` filter. * * @param array $image The image. * * @return array The filtered image. */ protected function filter( $image ) { /** * Filter: 'wpseo_opengraph_image' - Allow changing the Open Graph image url. * * @param string $image_url The URL of the Open Graph image. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $image_url = \apply_filters( 'wpseo_opengraph_image', $image['url'], $this->presentation ); if ( ! empty( $image_url ) && \is_string( $image_url ) ) { $image['url'] = \trim( $image_url ); } $image_type = ( $image['type'] ?? '' ); /** * Filter: 'wpseo_opengraph_image_type' - Allow changing the Open Graph image type. * * @param string $image_type The type of the Open Graph image. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $image_type = \apply_filters( 'wpseo_opengraph_image_type', $image_type, $this->presentation ); if ( ! empty( $image_type ) && \is_string( $image_type ) ) { $image['type'] = \trim( $image_type ); } $image_width = ( $image['width'] ?? '' ); /** * Filter: 'wpseo_opengraph_image_width' - Allow changing the Open Graph image width. * * @param int $image_width The width of the Open Graph image. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $image_width = (int) \apply_filters( 'wpseo_opengraph_image_width', $image_width, $this->presentation ); if ( ! empty( $image_width ) && $image_width > 0 ) { $image['width'] = $image_width; } $image_height = ( $image['height'] ?? '' ); /** * Filter: 'wpseo_opengraph_image_height' - Allow changing the Open Graph image height. * * @param int $image_height The height of the Open Graph image. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $image_height = (int) \apply_filters( 'wpseo_opengraph_image_height', $image_height, $this->presentation ); if ( ! empty( $image_height ) && $image_height > 0 ) { $image['height'] = $image_height; } return $image; } } src/presenters/open-graph/site-name-presenter.php000064400000002066147206602470016201 0ustar00presentation->open_graph_site_name, $this->presentation ) ); } } src/presenters/twitter/description-presenter.php000064400000002020147206602470016272 0ustar00replace_vars( $this->presentation->twitter_description ), $this->presentation ); } } src/presenters/twitter/title-presenter.php000064400000001641147206602470015100 0ustar00replace_vars( $this->presentation->twitter_title ), $this->presentation ) ); } } src/presenters/twitter/site-presenter.php000064400000003223147206602470014721 0ustar00presentation->twitter_site, $this->presentation ); $twitter_site = $this->get_twitter_id( $twitter_site ); if ( ! \is_string( $twitter_site ) || $twitter_site === '' ) { return ''; } return '@' . $twitter_site; } /** * Checks if the given id is actually an id or a url and if url, distills the id from it. * * Solves issues with filters returning urls and theme's/other plugins also adding a user meta * twitter field which expects url rather than an id (which is what we expect). * * @param string $id Twitter ID or url. * * @return string|bool Twitter ID or false if it failed to get a valid Twitter ID. */ private function get_twitter_id( $id ) { if ( \preg_match( '`([A-Za-z0-9_]{1,25})$`', $id, $match ) ) { return $match[1]; } return false; } } src/presenters/twitter/creator-presenter.php000064400000000753147206602470015421 0ustar00presentation->twitter_creator; } } src/presenters/twitter/card-presenter.php000064400000001551147206602470014670 0ustar00presentation->twitter_card, $this->presentation ) ); } } src/presenters/twitter/image-presenter.php000064400000001743147206602470015044 0ustar00presentation->twitter_image, $this->presentation ); } } src/presenters/slack/enhanced-data-presenter.php000064400000004216147206602470016027 0ustar00get(); $twitter_tags = ''; $i = 1; $class = \is_admin_bar_showing() ? ' class="yoast-seo-meta-tag"' : ''; foreach ( $enhanced_data as $label => $value ) { $twitter_tags .= \sprintf( "\t" . '' . "\n", $i, \esc_attr( $label ) ); $twitter_tags .= \sprintf( "\t" . '' . "\n", $i, \esc_attr( $value ) ); ++$i; } return \trim( $twitter_tags ); } /** * Gets the enhanced data array. * * @return array The enhanced data array */ public function get() { $data = []; $author_id = $this->presentation->source->post_author; $estimated_reading_time = $this->presentation->estimated_reading_time_minutes; if ( $this->presentation->model->object_sub_type === 'post' && $author_id ) { $data[ \__( 'Written by', 'wordpress-seo' ) ] = \get_the_author_meta( 'display_name', $author_id ); } if ( ! empty( $estimated_reading_time ) ) { /* translators: %s expands to the reading time number, in minutes */ $data[ \__( 'Est. reading time', 'wordpress-seo' ) ] = \sprintf( \_n( '%s minute', '%s minutes', $estimated_reading_time, 'default' ), $estimated_reading_time ); } /** * Filter: 'wpseo_enhanced_slack_data' - Allows filtering of the enhanced data for sharing on Slack. * * @param array $data The enhanced Slack sharing data. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return \apply_filters( 'wpseo_enhanced_slack_data', $data, $this->presentation ); } } src/presenters/meta-author-presenter.php000064400000002541147206602470014503 0ustar00presentation->model->object_sub_type !== 'post' ) { return ''; } $user_data = \get_userdata( $this->presentation->context->post->post_author ); if ( ! $user_data instanceof WP_User ) { return ''; } /** * Filter: 'wpseo_meta_author' - Allow developers to filter the article's author meta tag. * * @param string $author_name The article author's display name. Return empty to disable the tag. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return \trim( $this->helpers->schema->html->smart_strip_tags( \apply_filters( 'wpseo_meta_author', $user_data->display_name, $this->presentation ) ) ); } } src/presenters/score-icon-presenter.php000064400000001660147206602470014317 0ustar00title = $title; $this->css_class = $css_class; } /** * Presents the score icon. * * @return string The score icon. */ public function present() { return \sprintf( '', \esc_attr( $this->title ), \esc_html( $this->title ), \esc_attr( $this->css_class ) ); } } src/services/importing/conflicting-plugins-service.php000064400000006224147206602470017327 0ustar00get_active_plugins(); // Search for active plugins. return $this->get_active_conflicting_plugins( $all_active_plugins ); } /** * Deactivates the specified plugin(s) if any, or the entire list of known conflicting plugins. * * @param string|array|false $plugins Optional. The plugin filename, or array of plugin filenames, to deactivate. * * @return void */ public function deactivate_conflicting_plugins( $plugins = false ) { // If no plugins are specified, deactivate any known conflicting plugins that are active. if ( ! $plugins ) { $plugins = $this->detect_conflicting_plugins(); } // In case of a single plugin, wrap it in an array. if ( \is_string( $plugins ) ) { $plugins = [ $plugins ]; } if ( ! \is_array( $plugins ) ) { return; } // Deactivate all specified plugins across the network, while retaining their deactivation hook. \deactivate_plugins( $plugins ); } /** * Loop through the list of known conflicting plugins to check if one of the plugins is active. * * @param array $all_active_plugins All plugins loaded by WordPress. * * @return array The array of activated conflicting plugins. */ protected function get_active_conflicting_plugins( $all_active_plugins ) { $active_conflicting_plugins = []; foreach ( Conflicting_Plugins::all_plugins() as $plugin ) { if ( \in_array( $plugin, $all_active_plugins, true ) ) { $active_conflicting_plugins[] = $plugin; } } return $active_conflicting_plugins; } /** * Get a list of all plugins active in the current WordPress instance. * * @return false|array The names of all active plugins. */ protected function get_active_plugins() { // Request a list of active plugins from WordPress. $all_active_plugins = \get_option( 'active_plugins' ); return $this->ignore_deactivating_plugin( $all_active_plugins ); } /** * While deactivating a plugin, we should ignore the plugin currently being deactivated. * * @param array $all_active_plugins All plugins currently loaded by WordPress. * * @return array The remaining active plugins. */ protected function ignore_deactivating_plugin( $all_active_plugins ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are strictly comparing only. if ( isset( $_GET['action'] ) && isset( $_GET['plugin'] ) && \is_string( $_GET['action'] ) && \is_string( $_GET['plugin'] ) && \wp_unslash( $_GET['action'] ) === 'deactivate' ) { $deactivated_plugin = \sanitize_text_field( \wp_unslash( $_GET['plugin'] ) ); \check_admin_referer( 'deactivate-plugin_' . $deactivated_plugin ); $key_to_remove = \array_search( $deactivated_plugin, $all_active_plugins, true ); if ( $key_to_remove !== false ) { unset( $all_active_plugins[ $key_to_remove ] ); } } return $all_active_plugins; } } src/services/importing/aioseo/aioseo-robots-provider-service.php000064400000003254147206602470021245 0ustar00aioseo_helper = $aioseo_helper; } /** * Retrieves the robot setting set globally in AIOSEO. * * @param string $setting_name The name of the robot setting, eg. noindex. * * @return bool Whether global robot settings enable or not the specific setting. */ public function get_global_robot_settings( $setting_name ) { $aioseo_settings = $this->aioseo_helper->get_global_option(); if ( empty( $aioseo_settings ) ) { return false; } $global_robot_settings = $aioseo_settings['searchAppearance']['advanced']['globalRobotsMeta']; if ( $global_robot_settings['default'] === true ) { return false; } return $global_robot_settings[ $setting_name ]; } /** * Gets the subtype's robot setting from the db. * * @param array $mapping The mapping of the setting we're working with. * * @return bool The robot setting. */ public function get_subtype_robot_setting( $mapping ) { $aioseo_settings = \json_decode( \get_option( $mapping['option_name'], '' ), true ); return $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta'][ $mapping['robot_type'] ]; } } src/services/importing/aioseo/aioseo-replacevar-service.php000064400000006637147206602470020241 0ustar00 '%%archive_title%%', '#archive_date' => '%%date%%', '#attachment_caption' => '%%caption%%', '#author_bio' => '%%user_description%%', '#author_first_name' => '%%author_first_name%%', '#author_last_name' => '%%author_last_name%%', '#author_name' => '%%name%%', '#blog_title' => '%%sitename%%', // Same with #site_title. '#categories' => '%%category%%', '#current_date' => '%%currentdate%%', '#current_day' => '%%currentday%%', '#current_month' => '%%currentmonth%%', '#current_year' => '%%currentyear%%', '#parent_title' => '%%parent_title%%', '#page_number' => '%%pagenumber%%', '#permalink' => '%%permalink%%', '#post_content' => '%%post_content%%', '#post_date' => '%%date%%', '#post_day' => '%%post_day%%', '#post_month' => '%%post_month%%', '#post_title' => '%%title%%', '#post_year' => '%%post_year%%', '#post_excerpt_only' => '%%excerpt_only%%', '#post_excerpt' => '%%excerpt%%', '#search_term' => '%%searchphrase%%', '#separator_sa' => '%%sep%%', '#site_title' => '%%sitename%%', '#tagline' => '%%sitedesc%%', '#taxonomy_title' => '%%category_title%%', '#taxonomy_description' => '%%term_description%%', ]; /** * Edits the replace_vars map of the class. * * @param string $aioseo_var The AIOSEO replacevar. * @param string $yoast_var The Yoast replacevar. * * @return void */ public function compose_map( $aioseo_var, $yoast_var ) { $map = $this->replace_vars_map; $map[ $aioseo_var ] = $yoast_var; $this->replace_vars_map = $map; } /** * Transforms AIOSEO replacevars into Yoast replacevars. * * @param string $aioseo_replacevar The AIOSEO replacevar. * * @return string The Yoast replacevar. */ public function transform( $aioseo_replacevar ) { $yoast_replacevar = \str_replace( \array_keys( $this->replace_vars_map ), \array_values( $this->replace_vars_map ), $aioseo_replacevar ); // Transform the '#custom_field-' tags into '%%cf_%%' ones. $yoast_replacevar = \preg_replace_callback( '/#custom_field-([a-zA-Z0-9_-]+)/', static function ( $cf_matches ) { return '%%cf_' . $cf_matches[1] . '%%'; }, $yoast_replacevar ); // Transform the '#tax_name-' tags into '%%ct_%%' ones. $yoast_replacevar = \preg_replace_callback( '/#tax_name-([a-zA-Z0-9_-]+)/', static function ( $ct_matches ) { return '%%ct_' . $ct_matches[1] . '%%'; }, $yoast_replacevar ); return $yoast_replacevar; } } src/services/importing/aioseo/aioseo-robots-transformer-service.php000064400000003326147206602470021755 0ustar00robots_provider = $robots_provider; } /** * Transforms the robot setting, taking into consideration whether they defer to global defaults. * * @param string $setting_name The name of the robot setting, eg. noindex. * @param bool $setting_value The value of the robot setting. * @param array $mapping The mapping of the setting we're working with. * * @return bool The transformed robot setting. */ public function transform_robot_setting( $setting_name, $setting_value, $mapping ) { $aioseo_settings = \json_decode( \get_option( $mapping['option_name'], '' ), true ); // Let's check first if it defers to global robot settings. if ( empty( $aioseo_settings ) || ! isset( $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta']['default'] ) ) { return $setting_value; } $defers_to_defaults = $aioseo_settings['searchAppearance'][ $mapping['type'] ][ $mapping['subtype'] ]['advanced']['robotsMeta']['default']; if ( $defers_to_defaults ) { return $this->robots_provider->get_global_robot_settings( $setting_name ); } return $setting_value; } } src/services/importing/aioseo/aioseo-social-images-provider-service.php000064400000010653147206602470022453 0ustar00aioseo_helper = $aioseo_helper; $this->image = $image; } /** * Retrieves the default source of social images. * * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The default source of social images. */ public function get_default_social_image_source( $social_setting ) { return $this->get_social_defaults( 'source', $social_setting ); } /** * Retrieves the default custom social image if there is any. * * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The global default social image. */ public function get_default_custom_social_image( $social_setting ) { return $this->get_social_defaults( 'custom_image', $social_setting ); } /** * Retrieves social defaults, be it Default Post Image Source or Default Post Image. * * @param string $setting The setting we want, eg. source or custom image. * @param string $social_setting The social settings we're working with, eg. open-graph or twitter. * * @return string The social default. */ public function get_social_defaults( $setting, $social_setting ) { switch ( $setting ) { case 'source': $setting_key = 'defaultImageSourcePosts'; break; case 'custom_image': $setting_key = 'defaultImagePosts'; break; default: return ''; } $aioseo_settings = $this->aioseo_helper->get_global_option(); if ( $social_setting === 'og' ) { $social_setting = 'facebook'; } if ( ! isset( $aioseo_settings['social'][ $social_setting ]['general'][ $setting_key ] ) ) { return ''; } return $aioseo_settings['social'][ $social_setting ]['general'][ $setting_key ]; } /** * Retrieves the url of the first image in content. * * @param int $post_id The post id to extract the image from. * * @return string The url of the first image in content. */ public function get_first_image_in_content( $post_id ) { $image = $this->image->get_gallery_image( $post_id ); if ( ! $image ) { $image = $this->image->get_post_content_image( $post_id ); } return $image; } /** * Retrieves the url of the first attached image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the first attached image. */ public function get_first_attached_image( $post_id ) { if ( \get_post_type( $post_id ) === 'attachment' ) { return $this->image->get_attachment_image_source( $post_id, 'fullsize' ); } $attachments = \get_children( [ 'post_parent' => $post_id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', ] ); if ( $attachments && ! empty( $attachments ) ) { return $this->image->get_attachment_image_source( \array_values( $attachments )[0]->ID, 'fullsize' ); } return ''; } /** * Retrieves the url of the featured image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the featured image. */ public function get_featured_image( $post_id ) { $feature_image_id = \get_post_thumbnail_id( $post_id ); if ( $feature_image_id ) { return $this->image->get_attachment_image_source( $feature_image_id, 'fullsize' ); } return ''; } /** * Retrieves the url of the first available image. Tries each image source to get one image. * * @param int $post_id The post id to extract the image from. * * @return string The url of the featured image. */ public function get_auto_image( $post_id ) { $image = $this->get_first_attached_image( $post_id ); if ( ! $image ) { $image = $this->get_first_image_in_content( $post_id ); } return $image; } } src/services/importing/importable-detector-service.php000064400000005031147206602470017311 0ustar00importers = $importers; } /** * Returns the detected importers that have data to work with. * * @param string|null $plugin The plugin name of the importer. * @param string|null $type The type of the importer. * * @return array The detected importers that have data to work with. */ public function detect_importers( $plugin = null, $type = null ) { $detectors = $this->filter_actions( $this->importers, $plugin, $type ); $detected = []; foreach ( $detectors as $detector ) { if ( $detector->is_enabled() && $detector->get_type() !== 'cleanup' && ! $detector->get_completed() && $detector->get_limited_unindexed_count( 1 ) > 0 ) { $detected[ $detector->get_plugin() ][] = $detector->get_type(); } } return $detected; } /** * Returns the detected cleanups that have data to work with. * * @param string|null $plugin The plugin name of the cleanup. * * @return array The detected importers that have data to work with. */ public function detect_cleanups( $plugin = null ) { $detectors = $this->filter_actions( $this->importers, $plugin, 'cleanup' ); $detected = []; foreach ( $detectors as $detector ) { if ( $detector->is_enabled() && ! $detector->get_completed() && $detector->get_limited_unindexed_count( 1 ) > 0 ) { $detected[ $detector->get_plugin() ][] = $detector->get_type(); } } return $detected; } /** * Filters all import actions from a list that do not match the given Plugin or Type. * * @param Importing_Action_Interface[] $all_actions The complete list of actions. * @param string|null $plugin The Plugin name whose actions to keep. * @param string|null $type The type of actions to keep. * * @return array */ public function filter_actions( $all_actions, $plugin = null, $type = null ) { return \array_filter( $all_actions, static function ( $action ) use ( $plugin, $type ) { return $action->is_compatible_with( $plugin, $type ); } ); } } src/services/health-check/postname-permalink-runner.php000064400000001614147206602470017336 0ustar00permalinks_contain_postname = false; } /** * Runs the health check. Checks if permalinks are set to contain the post name. * * @return void */ public function run() { $this->permalinks_contain_postname = ( \strpos( \get_option( 'permalink_structure' ), '%postname%' ) !== false ); } /** * Returns true if permalinks are set to contain the post name. * * @return bool True if permalinks are set to contain the post name. */ public function is_successful() { return $this->permalinks_contain_postname; } } src/services/health-check/links-table-runner.php000064400000004000147206602470015725 0ustar00migration_status = $migration_status; $this->options_helper = $options_helper; } /** * Runs the health check. Checks if the tagline is set to WordPress' default tagline, or to its set translation. * * @return void */ public function run() { if ( ! $this->should_run() ) { return; } $this->links_table_accessible = $this->migration_status->is_version( 'free', \WPSEO_VERSION ); } /** * Determines whether the health check should run or not. * * @return bool True if the text link counter feature is enabled. */ public function should_run() { $text_link_counter_enabled = $this->options_helper->get( 'enable_text_link_counter' ); if ( ! \is_bool( $text_link_counter_enabled ) ) { return false; } return $text_link_counter_enabled; } /** * Returns true if the links table is accessible * * @return bool The boolean indicating if the health check was succesful. */ public function is_successful() { return $this->links_table_accessible; } } src/services/health-check/page-comments-runner.php000064400000001503147206602470016264 0ustar00comments_on_single_page = false; } /** * Runs the health check. Checks if comments are displayed on a single page. * * @return void */ public function run() { $this->comments_on_single_page = \get_option( 'page_comments' ) !== '1'; } /** * Returns true if comments are displayed on a single page. * * @return bool True if comments are displayed on a single page. */ public function is_successful() { return $this->comments_on_single_page; } } src/services/health-check/myyoast-api-request-factory.php000064400000000751147206602470017631 0ustar00runner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns a human-readable label for this health check. * * @return string The human-readable label. */ public function get_test_label() { return \__( 'Postname permalink', 'wordpress-seo' ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_no_postname_in_permalink_result(); } } src/services/health-check/links-table-check.php000064400000002647147206602470015510 0ustar00runner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns a human-readable label for this health check. * * @return string The human-readable label. */ public function get_test_label() { return \__( 'Links table', 'wordpress-seo' ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( ! $this->runner->should_run() ) { return []; } if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_links_table_not_accessible_result(); } } src/services/health-check/health-check.php000064400000004660147206602470014545 0ustar00runner = $runner; } /** * Returns the identifier of health check implementation. WordPress needs this to manage the health check (https://developer.wordpress.org/reference/hooks/site_status_tests/). * * @return string The identifier that WordPress requires. */ public function get_test_identifier() { $full_class_name = static::class; $class_name_backslash_index = \strrpos( $full_class_name, '\\' ); $class_name = $full_class_name; if ( $class_name_backslash_index ) { $class_name_index = ( $class_name_backslash_index + 1 ); $class_name = \substr( $full_class_name, $class_name_index ); } $lowercase = \strtolower( $class_name ); $whitespace_as_dashes = \str_replace( '_', '-', $lowercase ); $with_prefix = self::TEST_IDENTIFIER_PREFIX . $whitespace_as_dashes; return $with_prefix; } /** * Returns the name of health check implementation that the user can see. WordPress needs this to manage the health check (https://developer.wordpress.org/reference/hooks/site_status_tests/). * * @return string A human-readable label for the health check. */ abstract public function get_test_label(); /** * Runs the health check, and returns its result in the format that WordPress requires to show the results to the user (https://developer.wordpress.org/reference/hooks/site_status_test_result/). * * @return string[] The array containing a WordPress site status report. */ public function run_and_get_result() { $this->runner->run(); return $this->get_result(); } /** * Gets the result from the health check implementation. * * @return string[] The array containing a WordPress site status report. */ abstract protected function get_result(); } src/services/health-check/postname-permalink-reports.php000064400000005247147206602470017531 0ustar00report_builder_factory = $report_builder_factory; } /** * Returns the report for when permalinks are set to contain the post name. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \esc_html__( 'Your permalink structure includes the post name', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'You do have your postname in the URL of your posts and pages.', 'wordpress-seo' ) ) ->build(); } /** * Returns the report for when permalinks are not set to contain the post name. * * @return string[] The message as a WordPress site status report. */ public function get_has_no_postname_in_permalink_result() { return $this->get_report_builder() ->set_label( \__( 'You do not have your postname in the URL of your posts and pages', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( $this->get_has_no_postname_in_permalink_description() ) ->set_actions( $this->get_has_no_postname_in_permalink_actions() ) ->build(); } /** * Returns the description for when permalinks are not set to contain the post name. * * @return string The description as a string. */ private function get_has_no_postname_in_permalink_description() { return \sprintf( /* translators: %s expands to '/%postname%/' */ \__( 'It\'s highly recommended to have your postname in the URL of your posts and pages. Consider setting your permalink structure to %s.', 'wordpress-seo' ), '/%postname%/' ); } /** * Returns the actions for when permalinks are not set to contain the post name. * * @return string The actions as a string. */ private function get_has_no_postname_in_permalink_actions() { return \sprintf( /* translators: %1$s is a link start tag to the permalink settings page, %2$s is the link closing tag. */ \__( 'You can fix this on the %1$sPermalink settings page%2$s.', 'wordpress-seo' ), '', '' ); } } src/services/health-check/page-comments-reports.php000064400000004611147206602470016454 0ustar00report_builder_factory = $report_builder_factory; } /** * Returns the report for when comments are set to be all on one page. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \esc_html__( 'Comments are displayed on a single page', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'Comments on your posts are displayed on a single page. This is just like we\'d suggest it. You\'re doing well!', 'wordpress-seo' ) ) ->build(); } /** * Returns the report for when comments are set to be broken up across multiple pages. * * @return string[] The message as a WordPress site status report. */ public function get_has_comments_on_multiple_pages_result() { return $this->get_report_builder() ->set_label( \__( 'Comments break into multiple pages', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( \__( 'Comments on your posts break into multiple pages. As this is not needed in 999 out of 1000 cases, we recommend you disable it. To fix this, uncheck "Break comments into pages..." on the Discussion Settings page.', 'wordpress-seo' ) ) ->set_actions( $this->get_has_comments_on_multiple_pages_actions() ) ->build(); } /** * Returns the actions for when the comments are set to be broken up across multiple pages. * * @return string The actions as a string. */ private function get_has_comments_on_multiple_pages_actions() { return \sprintf( /* translators: 1: Opening tag of the link to the discussion settings page, 2: Link closing tag. */ \esc_html__( '%1$sGo to the Discussion Settings page%2$s', 'wordpress-seo' ), '', '' ); } } src/services/health-check/links-table-reports.php000064400000006650147206602470016127 0ustar00report_builder_factory = $report_builder_factory; $this->shortlinker = $shortlinker; } /** * Returns the message for a successful health check. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \__( 'The text link counter is working as expected', 'wordpress-seo' ) ) ->set_status_good() ->set_description( $this->get_success_description() ) ->build(); } /** * Returns the message for a failed health check. * * @return string[] The message as a WordPress site status report. */ public function get_links_table_not_accessible_result() { return $this->get_report_builder() ->set_label( \__( 'The text link counter feature is not working as expected', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( $this->get_links_table_not_accessible_description() ) ->set_actions( $this->get_actions() ) ->build(); } /** * Returns the description for when the health check was successful. * * @return string The description as a string. */ private function get_success_description() { return \sprintf( /* translators: 1: Link to the Yoast SEO blog, 2: Link closing tag. */ \esc_html__( 'The text link counter helps you improve your site structure. %1$sFind out how the text link counter can enhance your SEO%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); } /** * Returns the description for when the health couldn't access the links table. * * @return string The description as a string. */ private function get_links_table_not_accessible_description() { return \sprintf( /* translators: 1: Yoast SEO. */ \__( 'For this feature to work, %1$s needs to create a table in your database. We were unable to create this table automatically.', 'wordpress-seo' ), 'Yoast SEO' ); } /** * Returns the actions that the user should take when the links table is not accessible. * * @return string The actions as a string. */ private function get_actions() { return \sprintf( /* translators: 1: Link to the Yoast help center, 2: Link closing tag. */ \esc_html__( '%1$sFind out how to solve this problem on our help center%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); } } src/services/health-check/page-comments-check.php000064400000002614147206602470016034 0ustar00runner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns a human-readable label for this health check. * * @return string The human-readable label. */ public function get_test_label() { return \__( 'Page comments', 'wordpress-seo' ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_comments_on_multiple_pages_result(); } } src/services/health-check/report-builder.php000064400000011667147206602470015171 0ustar00label = $label; return $this; } /** * Sets the name for the test that the plugin uses to identify the test. * * @param string $test_identifier The identifier for the health check. * @return Report_Builder This builder. */ public function set_test_identifier( $test_identifier ) { $this->test_identifier = $test_identifier; return $this; } /** * Sets the status of the test result to GOOD (green label). * * @return Report_Builder This builder. */ public function set_status_good() { $this->status = self::STATUS_GOOD; return $this; } /** * Sets the status of the test result to RECOMMENDED (orange label). * * @return Report_Builder This builder. */ public function set_status_recommended() { $this->status = self::STATUS_RECOMMENDED; return $this; } /** * Sets the status of the test result to CRITICAL (red label). * * @return Report_Builder This builder. */ public function set_status_critical() { $this->status = self::STATUS_CRITICAL; return $this; } /** * Sets a description for the test result. This will be the heading for the result in the user interface. * * @param string $description The description for the test result. * @return Report_Builder This builder. */ public function set_description( $description ) { $this->description = $description; return $this; } /** * Sets a text that describes how the user can solve the failed health check. * * @param string $actions The descriptive text. * @return Report_Builder This builder. */ public function set_actions( $actions ) { $this->actions = $actions; return $this; } /** * Builds an array of strings in the format that WordPress uses to display health checks (https://developer.wordpress.org/reference/hooks/site_status_test_result/). * * @return array The report in WordPress' site status report format. */ public function build() { return [ 'label' => $this->label, 'status' => $this->status, 'badge' => $this->get_badge(), 'description' => $this->description, 'actions' => $this->get_actions_with_signature(), 'test' => $this->test_identifier, ]; } /** * Generates a badge that the user can see. * * @return string[] The badge. */ private function get_badge() { return [ 'label' => $this->get_badge_label(), 'color' => $this->get_badge_color(), ]; } /** * Generates the label for a badge. * * @return string The badge label. */ private function get_badge_label() { return \__( 'SEO', 'wordpress-seo' ); } /** * Generates the color for the badge using the current status. * * @return string The color for the badge's outline. */ private function get_badge_color() { if ( $this->status === self::STATUS_CRITICAL || $this->status === self::STATUS_RECOMMENDED ) { return 'red'; } return 'blue'; } /** * Concatenates the set actions with Yoast's signature. * * @return string A string containing the set actions and Yoast's signature. */ private function get_actions_with_signature() { return $this->actions . $this->get_signature(); } /** * Generates Yoast's signature that's displayed at the bottom of the health check result. * * @return string Yoast's signature as an HTML string. */ private function get_signature() { return \sprintf( /* translators: 1: Start of a paragraph beginning with the Yoast icon, 2: Expands to 'Yoast SEO', 3: Paragraph closing tag. */ \esc_html__( '%1$sThis was reported by the %2$s plugin%3$s', 'wordpress-seo' ), '

    ', 'Yoast SEO', '

    ' ); } } src/services/health-check/default-tagline-check.php000064400000002661147206602470016344 0ustar00runner = $runner; $this->reports = $reports; $this->reports->set_test_identifier( $this->get_test_identifier() ); $this->set_runner( $this->runner ); } /** * Returns a human-readable label for this health check. * * @return string The human-readable label. */ public function get_test_label() { return \__( 'Default tagline', 'wordpress-seo' ); } /** * Returns the WordPress-friendly health check result. * * @return string[] The WordPress-friendly health check result. */ protected function get_result() { if ( $this->runner->is_successful() ) { return $this->reports->get_success_result(); } return $this->reports->get_has_default_tagline_result(); } } src/services/health-check/default-tagline-reports.php000064400000004410147206602470016757 0ustar00report_builder_factory = $report_builder_factory; } /** * Returns the message for a successful health check. * * @return string[] The message as a WordPress site status report. */ public function get_success_result() { return $this->get_report_builder() ->set_label( \__( 'You changed the default WordPress tagline', 'wordpress-seo' ) ) ->set_status_good() ->set_description( \__( 'You are using a custom tagline or an empty one.', 'wordpress-seo' ) ) ->build(); } /** * Returns the message for a failed health check. In this case, when the user still has the default WordPress tagline set. * * @return string[] The message as a WordPress site status report. */ public function get_has_default_tagline_result() { return $this->get_report_builder() ->set_label( \__( 'You should change the default WordPress tagline', 'wordpress-seo' ) ) ->set_status_recommended() ->set_description( \__( 'You still have the default WordPress tagline. Even an empty one is probably better.', 'wordpress-seo' ) ) ->set_actions( $this->get_actions() ) ->build(); } /** * Returns the actions that the user should take when his tagline is still set to the WordPress default. * * @return string The actions as an HTML string. */ private function get_actions() { $query_args = [ 'autofocus[control]' => 'blogdescription', ]; $customize_url = \add_query_arg( $query_args, \wp_customize_url() ); return \sprintf( /* translators: 1: link open tag; 2: link close tag. */ \esc_html__( '%1$sYou can change the tagline in the customizer%2$s.', 'wordpress-seo' ), '', '' ); } } src/services/health-check/reports-trait.php000064400000001637147206602470015045 0ustar00test_identifier = $test_identifier; } /** * Returns a new Report_Builder instance using the set test identifier. * * @return Report_Builder */ private function get_report_builder() { return $this->report_builder_factory->create( $this->test_identifier ); } } src/services/health-check/default-tagline-runner.php000064400000002165147206602470016577 0ustar00has_default_tagline = $translated_blog_description === $blog_description || $blog_description === self::DEFAULT_BLOG_DESCRIPTION; } /** * Returns true if the tagline is set to a non-default tagline. * * @return bool The boolean indicating if the health check was succesful. */ public function is_successful() { return ! $this->has_default_tagline; } } src/services/health-check/runner-interface.php000064400000000425147206602470015467 0ustar00set_test_identifier( $test_identifier ); } } src/services/indexables/indexable-version-manager.php000064400000004440147206602470017045 0ustar00indexable_builder_versions = $indexable_builder_versions; } /** * Determines if an Indexable has a lower version than the builder for that Indexable's type. * * @param Indexable $indexable The Indexable to check. * * @return bool True if the given version is older than the current latest version. */ public function indexable_needs_upgrade( $indexable ) { if ( ( ! $indexable ) || ( ! \is_a( $indexable, Indexable::class ) ) ) { return false; } return $this->needs_upgrade( $indexable->object_type, $indexable->version ); } /** * Determines if an Indexable version for the type is lower than the current version for that Indexable type. * * @param string $object_type The Indexable's object type. * @param int $indexable_version The Indexable's version. * * @return bool True if the given version is older than the current latest version. */ protected function needs_upgrade( $object_type, $indexable_version ) { $current_indexable_builder_version = $this->indexable_builder_versions->get_latest_version_for_type( $object_type ); // If the Indexable's version is below the current version, that Indexable needs updating. return $indexable_version < $current_indexable_builder_version; } /** * Sets an Indexable's version to the latest version. * * @param Indexable $indexable The Indexable to update. * * @return Indexable */ public function set_latest( $indexable ) { if ( ! $indexable ) { return $indexable; } $indexable->version = $this->indexable_builder_versions->get_latest_version_for_type( $indexable->object_type ); return $indexable; } } src/models/seo-meta.php000064400000001030147206602470011043 0ustar00indexable === null ) { $this->indexable = $this->belongs_to( 'Indexable', 'indexable_id', 'id' )->find_one(); } return $this->indexable; } } src/models/indexable.php000064400000012413147206602470011273 0ustar00loaded_extensions[ $class_name ] ) { $this->loaded_extensions[ $class_name ] = $this->has_one( $class_name, 'indexable_id', 'id' )->find_one(); } return $this->loaded_extensions[ $class_name ]; } /** * Enhances the save method. * * @return bool True on success. */ public function save() { if ( $this->permalink ) { $this->sanitize_permalink(); $this->permalink_hash = \strlen( $this->permalink ) . ':' . \md5( $this->permalink ); } if ( \is_string( $this->primary_focus_keyword ) && \mb_strlen( $this->primary_focus_keyword ) > 191 ) { $this->primary_focus_keyword = \mb_substr( $this->primary_focus_keyword, 0, 191, 'UTF-8' ); } return parent::save(); } /** * Sanitizes the permalink. * * @return void */ protected function sanitize_permalink() { if ( $this->permalink === 'unindexed' ) { return; } $permalink_structure = \get_option( 'permalink_structure' ); $permalink_parts = \wp_parse_url( $this->permalink ); if ( ! isset( $permalink_parts['path'] ) ) { $permalink_parts['path'] = '/'; } if ( \substr( $permalink_structure, -1, 1 ) === '/' && \strpos( \substr( $permalink_parts['path'], -5 ), '.' ) === false ) { $permalink_parts['path'] = \trailingslashit( $permalink_parts['path'] ); } $permalink = ''; if ( isset( $permalink_parts['scheme'] ) ) { $permalink .= $permalink_parts['scheme'] . '://'; } if ( isset( $permalink_parts['host'] ) ) { $permalink .= $permalink_parts['host']; } if ( isset( $permalink_parts['port'] ) ) { $permalink .= ':' . $permalink_parts['port']; } if ( isset( $permalink_parts['path'] ) ) { $permalink .= $permalink_parts['path']; } if ( isset( $permalink_parts['query'] ) ) { $permalink .= '?' . $permalink_parts['query']; } // We never set the fragment as the fragment is intended to be client-only. $this->permalink = $permalink; } } src/models/primary-term.php000064400000001234147206602470011767 0ustar00import_cursor = $import_cursor; $this->options = $options; $this->sanitization = $sanitization; $this->replacevar_handler = $replacevar_handler; $this->robots_provider = $robots_provider; $this->robots_transformer = $robots_transformer; } /** * Sets the AIOSEO helper. * * @required * * @param Aioseo_Helper $aioseo_helper The AIOSEO helper. * * @return void */ public function set_aioseo_helper( Aioseo_Helper $aioseo_helper ) { $this->aioseo_helper = $aioseo_helper; } /** * The name of the plugin we import from. * * @return string The plugin we import from. * * @throws Exception If the PLUGIN constant is not set in the child class. */ public function get_plugin() { $class = static::class; $plugin = $class::PLUGIN; if ( $plugin === null ) { throw new Exception( 'Importing action without explicit plugin' ); } return $plugin; } /** * The data type we import from the plugin. * * @return string The data type we import from the plugin. * * @throws Exception If the TYPE constant is not set in the child class. */ public function get_type() { $class = static::class; $type = $class::TYPE; if ( $type === null ) { throw new Exception( 'Importing action without explicit type' ); } return $type; } /** * Can the current action import the data from plugin $plugin of type $type? * * @param string|null $plugin The plugin to import from. * @param string|null $type The type of data to import. * * @return bool True if this action can handle the combination of Plugin and Type. * * @throws Exception If the TYPE constant is not set in the child class. */ public function is_compatible_with( $plugin = null, $type = null ) { if ( empty( $plugin ) && empty( $type ) ) { return true; } if ( $plugin === $this->get_plugin() && empty( $type ) ) { return true; } if ( empty( $plugin ) && $type === $this->get_type() ) { return true; } if ( $plugin === $this->get_plugin() && $type === $this->get_type() ) { return true; } return false; } /** * Gets the completed id (to be used as a key for the importing_completed option). * * @return string The completed id. */ public function get_completed_id() { return $this->get_cursor_id(); } /** * Returns the stored state of completedness. * * @return int The stored state of completedness. */ public function get_completed() { $completed_id = $this->get_completed_id(); $importers_completions = $this->options->get( 'importing_completed', [] ); return ( isset( $importers_completions[ $completed_id ] ) ) ? $importers_completions[ $completed_id ] : false; } /** * Stores the current state of completedness. * * @param bool $completed Whether the importer is completed. * * @return void */ public function set_completed( $completed ) { $completed_id = $this->get_completed_id(); $current_importers_completions = $this->options->get( 'importing_completed', [] ); $current_importers_completions[ $completed_id ] = $completed; $this->options->set( 'importing_completed', $current_importers_completions ); } /** * Returns whether the importing action is enabled. * * @return bool True by default unless a child class overrides it. */ public function is_enabled() { return true; } /** * Gets the cursor id. * * @return string The cursor id. */ protected function get_cursor_id() { return $this->get_plugin() . '_' . $this->get_type(); } /** * Minimally transforms data to be imported. * * @param string $meta_data The meta data to be imported. * * @return string The transformed meta data. */ public function simple_import( $meta_data ) { // Transform the replace vars into Yoast replace vars. $transformed_data = $this->replacevar_handler->transform( $meta_data ); return $this->sanitization->sanitize_text_field( \html_entity_decode( $transformed_data ) ); } /** * Transforms URL to be imported. * * @param string $meta_data The meta data to be imported. * * @return string The transformed URL. */ public function url_import( $meta_data ) { // We put null as the allowed protocols here, to have the WP default allowed protocols, see https://developer.wordpress.org/reference/functions/wp_allowed_protocols. return $this->sanitization->sanitize_url( $meta_data, null ); } } src/actions/importing/importing-action-interface.php000064400000001614147206602470016747 0ustar00conflicting_plugins = $conflicting_plugins_service; $this->detected_plugins = []; } /** * Get the total number of conflicting plugins. * * @return int */ public function get_total_unindexed() { return \count( $this->get_detected_plugins() ); } /** * Returns whether the updated importer framework is enabled. * * @return bool True if the updated importer framework is enabled. */ public function is_enabled() { $updated_importer_framework_conditional = \YoastSEO()->classes->get( Updated_Importer_Framework_Conditional::class ); return $updated_importer_framework_conditional->is_met(); } /** * Deactivate conflicting plugins. * * @return array */ public function index() { $detected_plugins = $this->get_detected_plugins(); $this->conflicting_plugins->deactivate_conflicting_plugins( $detected_plugins ); // We need to conform to the interface, so we report that no indexables were created. return []; } /** * {@inheritDoc} */ public function get_limit() { return \count( Conflicting_Plugins::all_plugins() ); } /** * Returns the total number of unindexed objects up to a limit. * * @param int $limit The maximum. * * @return int The total number of unindexed objects. */ public function get_limited_unindexed_count( $limit ) { $count = \count( $this->get_detected_plugins() ); return ( $count <= $limit ) ? $count : $limit; } /** * Returns all detected plugins. * * @return array The detected plugins. */ protected function get_detected_plugins() { // The active plugins won't change much. We can reuse the result for the duration of the request. if ( \count( $this->detected_plugins ) < 1 ) { $this->detected_plugins = $this->conflicting_plugins->detect_conflicting_plugins(); } return $this->detected_plugins; } } src/actions/importing/importing-indexation-action-interface.php000064400000001445147206602470021111 0ustar00 '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_archive_post_type_format' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_archive_post_type_name' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_author_display_name' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_author_first_name' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_blog_page_title' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_label' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_link' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_search_result_format' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_search_string' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_separator' => '', // Empty string, as AIOSEO shows nothing for that tag. '#breadcrumb_taxonomy_title' => '', // Empty string, as AIOSEO shows nothing for that tag. '#taxonomy_title' => '%%term_title%%', ]; /** * Builds the mapping that ties AOISEO option keys with Yoast ones and their data transformation method. * * @return void */ protected function build_mapping() { $taxonomy_objects = \get_taxonomies( [ 'public' => true ], 'object' ); foreach ( $taxonomy_objects as $tax ) { // Use all the public taxonomies. $this->aioseo_options_to_yoast_map[ '/' . $tax->name . '/title' ] = [ 'yoast_name' => 'title-tax-' . $tax->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $tax->name . '/metaDescription' ] = [ 'yoast_name' => 'metadesc-tax-' . $tax->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $tax->name . '/advanced/robotsMeta/noindex' ] = [ 'yoast_name' => 'noindex-tax-' . $tax->name, 'transform_method' => 'import_noindex', 'type' => 'taxonomies', 'subtype' => $tax->name, 'option_name' => 'aioseo_options_dynamic', ]; } } /** * Returns a setting map of the robot setting for post category taxonomies. * * @return array The setting map of the robot setting for post category taxonomies. */ public function pluck_robot_setting_from_mapping() { $this->build_mapping(); foreach ( $this->aioseo_options_to_yoast_map as $setting ) { // Return the first archive setting map. if ( $setting['transform_method'] === 'import_noindex' && isset( $setting['subtype'] ) && $setting['subtype'] === 'category' ) { return $setting; } } return []; } } src/actions/importing/aioseo/aioseo-posttype-defaults-settings-importing-action.php000064400000005540147206602470025077 0ustar00 true ], 'objects' ); foreach ( $post_type_objects as $pt ) { // Use all the custom post types that are public. $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/title' ] = [ 'yoast_name' => 'title-' . $pt->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/metaDescription' ] = [ 'yoast_name' => 'metadesc-' . $pt->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/advanced/showMetaBox' ] = [ 'yoast_name' => 'display-metabox-pt-' . $pt->name, 'transform_method' => 'simple_boolean_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/advanced/robotsMeta/noindex' ] = [ 'yoast_name' => 'noindex-' . $pt->name, 'transform_method' => 'import_noindex', 'type' => 'postTypes', 'subtype' => $pt->name, 'option_name' => 'aioseo_options_dynamic', ]; if ( $pt->name === 'attachment' ) { $this->aioseo_options_to_yoast_map['/attachment/redirectAttachmentUrls'] = [ 'yoast_name' => 'disable-attachment', 'transform_method' => 'import_redirect_attachment', ]; } } } /** * Transforms the redirect_attachment setting. * * @param string $redirect_attachment The redirect_attachment setting. * * @return bool The transformed redirect_attachment setting. */ public function import_redirect_attachment( $redirect_attachment ) { switch ( $redirect_attachment ) { case 'disabled': return false; case 'attachment': case 'attachment_parent': default: return true; } } } src/actions/importing/aioseo/aioseo-custom-archive-settings-importing-action.php000064400000007366147206602470024344 0ustar00post_type = $post_type; } /** * Builds the mapping that ties AOISEO option keys with Yoast ones and their data transformation method. * * @return void */ protected function build_mapping() { $post_type_objects = \get_post_types( [ 'public' => true ], 'objects' ); foreach ( $post_type_objects as $pt ) { // Use all the custom post types that have archives. if ( ! $pt->_builtin && $this->post_type->has_archive( $pt ) ) { $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/title' ] = [ 'yoast_name' => 'title-ptarchive-' . $pt->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/metaDescription' ] = [ 'yoast_name' => 'metadesc-ptarchive-' . $pt->name, 'transform_method' => 'simple_import', ]; $this->aioseo_options_to_yoast_map[ '/' . $pt->name . '/advanced/robotsMeta/noindex' ] = [ 'yoast_name' => 'noindex-ptarchive-' . $pt->name, 'transform_method' => 'import_noindex', 'type' => 'archives', 'subtype' => $pt->name, 'option_name' => 'aioseo_options_dynamic', ]; } } } } src/actions/importing/aioseo/aioseo-posts-importing-action.php000064400000054742147206602470020725 0ustar00 [ 'yoast_name' => 'title', 'transform_method' => 'simple_import_post', ], 'description' => [ 'yoast_name' => 'description', 'transform_method' => 'simple_import_post', ], 'og_title' => [ 'yoast_name' => 'open_graph_title', 'transform_method' => 'simple_import_post', ], 'og_description' => [ 'yoast_name' => 'open_graph_description', 'transform_method' => 'simple_import_post', ], 'twitter_title' => [ 'yoast_name' => 'twitter_title', 'transform_method' => 'simple_import_post', 'twitter_import' => true, ], 'twitter_description' => [ 'yoast_name' => 'twitter_description', 'transform_method' => 'simple_import_post', 'twitter_import' => true, ], 'canonical_url' => [ 'yoast_name' => 'canonical', 'transform_method' => 'url_import_post', ], 'keyphrases' => [ 'yoast_name' => 'primary_focus_keyword', 'transform_method' => 'keyphrase_import', ], 'og_image_url' => [ 'yoast_name' => 'open_graph_image', 'social_image_import' => true, 'social_setting_prefix_aioseo' => 'og_', 'social_setting_prefix_yoast' => 'open_graph_', 'transform_method' => 'social_image_url_import', ], 'twitter_image_url' => [ 'yoast_name' => 'twitter_image', 'social_image_import' => true, 'social_setting_prefix_aioseo' => 'twitter_', 'social_setting_prefix_yoast' => 'twitter_', 'transform_method' => 'social_image_url_import', ], 'robots_noindex' => [ 'yoast_name' => 'is_robots_noindex', 'transform_method' => 'post_robots_noindex_import', 'robots_import' => true, ], 'robots_nofollow' => [ 'yoast_name' => 'is_robots_nofollow', 'transform_method' => 'post_general_robots_import', 'robots_import' => true, 'robot_type' => 'nofollow', ], 'robots_noarchive' => [ 'yoast_name' => 'is_robots_noarchive', 'transform_method' => 'post_general_robots_import', 'robots_import' => true, 'robot_type' => 'noarchive', ], 'robots_nosnippet' => [ 'yoast_name' => 'is_robots_nosnippet', 'transform_method' => 'post_general_robots_import', 'robots_import' => true, 'robot_type' => 'nosnippet', ], 'robots_noimageindex' => [ 'yoast_name' => 'is_robots_noimageindex', 'transform_method' => 'post_general_robots_import', 'robots_import' => true, 'robot_type' => 'noimageindex', ], ]; /** * Represents the indexables repository. * * @var Indexable_Repository */ protected $indexable_repository; /** * The WordPress database instance. * * @var wpdb */ protected $wpdb; /** * The image helper. * * @var Image_Helper */ protected $image; /** * The indexable_to_postmeta helper. * * @var Indexable_To_Postmeta_Helper */ protected $indexable_to_postmeta; /** * The indexable helper. * * @var Indexable_Helper */ protected $indexable_helper; /** * The social images provider service. * * @var Aioseo_Social_Images_Provider_Service */ protected $social_images_provider; /** * Class constructor. * * @param Indexable_Repository $indexable_repository The indexables repository. * @param wpdb $wpdb The WordPress database instance. * @param Import_Cursor_Helper $import_cursor The import cursor helper. * @param Indexable_Helper $indexable_helper The indexable helper. * @param Indexable_To_Postmeta_Helper $indexable_to_postmeta The indexable_to_postmeta helper. * @param Options_Helper $options The options helper. * @param Image_Helper $image The image helper. * @param Sanitization_Helper $sanitization The sanitization helper. * @param Aioseo_Replacevar_Service $replacevar_handler The replacevar handler. * @param Aioseo_Robots_Provider_Service $robots_provider The robots provider service. * @param Aioseo_Robots_Transformer_Service $robots_transformer The robots transfomer service. * @param Aioseo_Social_Images_Provider_Service $social_images_provider The social images provider service. */ public function __construct( Indexable_Repository $indexable_repository, wpdb $wpdb, Import_Cursor_Helper $import_cursor, Indexable_Helper $indexable_helper, Indexable_To_Postmeta_Helper $indexable_to_postmeta, Options_Helper $options, Image_Helper $image, Sanitization_Helper $sanitization, Aioseo_Replacevar_Service $replacevar_handler, Aioseo_Robots_Provider_Service $robots_provider, Aioseo_Robots_Transformer_Service $robots_transformer, Aioseo_Social_Images_Provider_Service $social_images_provider ) { parent::__construct( $import_cursor, $options, $sanitization, $replacevar_handler, $robots_provider, $robots_transformer ); $this->indexable_repository = $indexable_repository; $this->wpdb = $wpdb; $this->image = $image; $this->indexable_helper = $indexable_helper; $this->indexable_to_postmeta = $indexable_to_postmeta; $this->social_images_provider = $social_images_provider; } // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared -- Reason: They are already prepared. /** * Returns the total number of unimported objects. * * @return int The total number of unimported objects. */ public function get_total_unindexed() { if ( ! $this->aioseo_helper->aioseo_exists() ) { return 0; } $limit = false; $just_detect = true; $indexables_to_create = $this->wpdb->get_col( $this->query( $limit, $just_detect ) ); $number_of_indexables_to_create = \count( $indexables_to_create ); $completed = $number_of_indexables_to_create === 0; $this->set_completed( $completed ); return $number_of_indexables_to_create; } /** * Returns the limited number of unimported objects. * * @param int $limit The maximum number of unimported objects to be returned. * * @return int|false The limited number of unindexed posts. False if the query fails. */ public function get_limited_unindexed_count( $limit ) { if ( ! $this->aioseo_helper->aioseo_exists() ) { return 0; } $just_detect = true; $indexables_to_create = $this->wpdb->get_col( $this->query( $limit, $just_detect ) ); $number_of_indexables_to_create = \count( $indexables_to_create ); $completed = $number_of_indexables_to_create === 0; $this->set_completed( $completed ); return $number_of_indexables_to_create; } /** * Imports AIOSEO meta data and creates the respective Yoast indexables and postmeta. * * @return Indexable[]|false An array of created indexables or false if aioseo data was not found. */ public function index() { if ( ! $this->aioseo_helper->aioseo_exists() ) { return false; } $limit = $this->get_limit(); $aioseo_indexables = $this->wpdb->get_results( $this->query( $limit ), \ARRAY_A ); $created_indexables = []; $completed = \count( $aioseo_indexables ) === 0; $this->set_completed( $completed ); // Let's build the list of fields to check their defaults, to identify whether we're gonna import AIOSEO data in the indexable or not. $check_defaults_fields = []; foreach ( $this->aioseo_to_yoast_map as $yoast_mapping ) { // We don't want to check all the imported fields. if ( ! \in_array( $yoast_mapping['yoast_name'], [ 'open_graph_image', 'twitter_image' ], true ) ) { $check_defaults_fields[] = $yoast_mapping['yoast_name']; } } $last_indexed_aioseo_id = 0; foreach ( $aioseo_indexables as $aioseo_indexable ) { $last_indexed_aioseo_id = $aioseo_indexable['id']; $indexable = $this->indexable_repository->find_by_id_and_type( $aioseo_indexable['post_id'], 'post' ); // Let's ensure that the current post id represents something that we want to index (eg. *not* shop_order). if ( ! \is_a( $indexable, 'Yoast\WP\SEO\Models\Indexable' ) ) { continue; } if ( $this->indexable_helper->check_if_default_indexable( $indexable, $check_defaults_fields ) ) { $indexable = $this->map( $indexable, $aioseo_indexable ); $this->indexable_helper->save_indexable( $indexable ); // To ensure that indexables can be rebuild after a reset, we have to store the data in the postmeta table too. $this->indexable_to_postmeta->map_to_postmeta( $indexable ); } $last_indexed_aioseo_id = $aioseo_indexable['id']; $created_indexables[] = $indexable; } $cursor_id = $this->get_cursor_id(); $this->import_cursor->set_cursor( $cursor_id, $last_indexed_aioseo_id ); return $created_indexables; } // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared /** * Maps AIOSEO meta data to Yoast meta data. * * @param Indexable $indexable The Yoast indexable. * @param array $aioseo_indexable The AIOSEO indexable. * * @return Indexable The created indexables. */ public function map( $indexable, $aioseo_indexable ) { foreach ( $this->aioseo_to_yoast_map as $aioseo_key => $yoast_mapping ) { // For robots import. if ( isset( $yoast_mapping['robots_import'] ) && $yoast_mapping['robots_import'] ) { $yoast_mapping['subtype'] = $indexable->object_sub_type; $indexable->{$yoast_mapping['yoast_name']} = $this->transform_import_data( $yoast_mapping['transform_method'], $aioseo_indexable, $aioseo_key, $yoast_mapping, $indexable ); continue; } // For social images, like open graph and twitter image. if ( isset( $yoast_mapping['social_image_import'] ) && $yoast_mapping['social_image_import'] ) { $image_url = $this->transform_import_data( $yoast_mapping['transform_method'], $aioseo_indexable, $aioseo_key, $yoast_mapping, $indexable ); // Update the indexable's social image only where there's actually a url to import, so as not to lose the social images that we came up with when we originally built the indexable. if ( ! empty( $image_url ) ) { $indexable->{$yoast_mapping['yoast_name']} = $image_url; $image_source_key = $yoast_mapping['social_setting_prefix_yoast'] . 'image_source'; $indexable->$image_source_key = 'imported'; $image_id_key = $yoast_mapping['social_setting_prefix_yoast'] . 'image_id'; $indexable->$image_id_key = $this->image->get_attachment_by_url( $image_url ); if ( $yoast_mapping['yoast_name'] === 'open_graph_image' ) { $indexable->open_graph_image_meta = null; } } continue; } // For twitter import, take the respective open graph data if the appropriate setting is enabled. if ( isset( $yoast_mapping['twitter_import'] ) && $yoast_mapping['twitter_import'] && $aioseo_indexable['twitter_use_og'] ) { $aioseo_indexable['twitter_title'] = $aioseo_indexable['og_title']; $aioseo_indexable['twitter_description'] = $aioseo_indexable['og_description']; } if ( ! empty( $aioseo_indexable[ $aioseo_key ] ) ) { $indexable->{$yoast_mapping['yoast_name']} = $this->transform_import_data( $yoast_mapping['transform_method'], $aioseo_indexable, $aioseo_key, $yoast_mapping, $indexable ); } } return $indexable; } /** * Transforms the data to be imported. * * @param string $transform_method The method that is going to be used for transforming the data. * @param array $aioseo_indexable The data of the AIOSEO indexable data that is being imported. * @param string $aioseo_key The name of the specific set of data that is going to be transformed. * @param array $yoast_mapping Extra details for the import of the specific data that is going to be transformed. * @param Indexable $indexable The Yoast indexable that we are going to import the transformed data into. * * @return string|bool|null The transformed data to be imported. */ protected function transform_import_data( $transform_method, $aioseo_indexable, $aioseo_key, $yoast_mapping, $indexable ) { return \call_user_func( [ $this, $transform_method ], $aioseo_indexable, $aioseo_key, $yoast_mapping, $indexable ); } /** * Returns the number of objects that will be imported in a single importing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_aioseo_post_indexation_limit' - Allow filtering the number of posts indexed during each indexing pass. * * @param int $max_posts The maximum number of posts indexed. */ $limit = \apply_filters( 'wpseo_aioseo_post_indexation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } /** * Populates the needed data array based on which columns we use from the AIOSEO indexable table. * * @return array The needed data array that contains all the needed columns. */ public function get_needed_data() { $needed_data = \array_keys( $this->aioseo_to_yoast_map ); \array_push( $needed_data, 'id', 'post_id', 'robots_default', 'og_image_custom_url', 'og_image_type', 'twitter_image_custom_url', 'twitter_image_type', 'twitter_use_og' ); return $needed_data; } /** * Populates the needed robot data array to be used in validating against its structure. * * @return array The needed data array that contains all the needed columns. */ public function get_needed_robot_data() { $needed_robot_data = []; foreach ( $this->aioseo_to_yoast_map as $yoast_mapping ) { if ( isset( $yoast_mapping['robot_type'] ) ) { $needed_robot_data[] = $yoast_mapping['robot_type']; } } return $needed_robot_data; } /** * Creates a query for gathering AiOSEO data from the database. * * @param int $limit The maximum number of unimported objects to be returned. * @param bool $just_detect Whether we want to just detect if there are unimported objects. If false, we want to actually import them too. * * @return string The query to use for importing or counting the number of items to import. */ public function query( $limit = false, $just_detect = false ) { $table = $this->aioseo_helper->get_table(); $select_statement = 'id'; if ( ! $just_detect ) { // If we want to import too, we need the actual needed data from AIOSEO indexables. $needed_data = $this->get_needed_data(); $select_statement = \implode( ', ', $needed_data ); } $cursor_id = $this->get_cursor_id(); $cursor = $this->import_cursor->get_cursor( $cursor_id ); /** * Filter 'wpseo_aioseo_post_cursor' - Allow filtering the value of the aioseo post import cursor. * * @param int $import_cursor The value of the aioseo post import cursor. */ $cursor = \apply_filters( 'wpseo_aioseo_post_import_cursor', $cursor ); $replacements = [ $cursor ]; $limit_statement = ''; if ( ! empty( $limit ) ) { $replacements[] = $limit; $limit_statement = ' LIMIT %d'; } // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Reason: There is no unescaped user input. return $this->wpdb->prepare( "SELECT {$select_statement} FROM {$table} WHERE id > %d ORDER BY id{$limit_statement}", $replacements ); // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared } /** * Minimally transforms data to be imported. * * @param array $aioseo_data All of the AIOSEO data to be imported. * @param string $aioseo_key The AIOSEO key that contains the setting we're working with. * * @return string The transformed meta data. */ public function simple_import_post( $aioseo_data, $aioseo_key ) { return $this->simple_import( $aioseo_data[ $aioseo_key ] ); } /** * Transforms URL to be imported. * * @param array $aioseo_data All of the AIOSEO data to be imported. * @param string $aioseo_key The AIOSEO key that contains the setting we're working with. * * @return string The transformed URL. */ public function url_import_post( $aioseo_data, $aioseo_key ) { return $this->url_import( $aioseo_data[ $aioseo_key ] ); } /** * Plucks the keyphrase to be imported from the AIOSEO array of keyphrase meta data. * * @param array $aioseo_data All of the AIOSEO data to be imported. * @param string $aioseo_key The AIOSEO key that contains the setting we're working with, aka keyphrases. * * @return string|null The plucked keyphrase. */ public function keyphrase_import( $aioseo_data, $aioseo_key ) { $meta_data = \json_decode( $aioseo_data[ $aioseo_key ], true ); if ( ! isset( $meta_data['focus']['keyphrase'] ) ) { return null; } return $this->sanitization->sanitize_text_field( $meta_data['focus']['keyphrase'] ); } /** * Imports the post's noindex setting. * * @param bool $aioseo_robots_settings AIOSEO's set of robot settings for the post. * * @return bool|null The value of Yoast's noindex setting for the post. */ public function post_robots_noindex_import( $aioseo_robots_settings ) { // If robot settings defer to default settings, we have null in the is_robots_noindex field. if ( $aioseo_robots_settings['robots_default'] ) { return null; } return $aioseo_robots_settings['robots_noindex']; } /** * Imports the post's robots setting. * * @param bool $aioseo_robots_settings AIOSEO's set of robot settings for the post. * @param string $aioseo_key The AIOSEO key that contains the robot setting we're working with. * @param array $mapping The mapping of the setting we're working with. * * @return bool|null The value of Yoast's noindex setting for the post. */ public function post_general_robots_import( $aioseo_robots_settings, $aioseo_key, $mapping ) { $mapping = $this->enhance_mapping( $mapping ); if ( $aioseo_robots_settings['robots_default'] ) { // Let's first get the subtype's setting value and then transform it taking into consideration whether it defers to global defaults. $subtype_setting = $this->robots_provider->get_subtype_robot_setting( $mapping ); return $this->robots_transformer->transform_robot_setting( $mapping['robot_type'], $subtype_setting, $mapping ); } return $aioseo_robots_settings[ $aioseo_key ]; } /** * Enhances the mapping of the setting we're working with, with type and the option name, so that we can retrieve the settings for the object we're working with. * * @param array $mapping The mapping of the setting we're working with. * * @return array The enhanced mapping. */ public function enhance_mapping( $mapping = [] ) { $mapping['type'] = 'postTypes'; $mapping['option_name'] = 'aioseo_options_dynamic'; return $mapping; } /** * Imports the og and twitter image url. * * @param bool $aioseo_social_image_settings AIOSEO's set of social image settings for the post. * @param string $aioseo_key The AIOSEO key that contains the robot setting we're working with. * @param array $mapping The mapping of the setting we're working with. * @param Indexable $indexable The Yoast indexable we're importing into. * * @return bool|null The url of the social image we're importing, null if there's none. */ public function social_image_url_import( $aioseo_social_image_settings, $aioseo_key, $mapping, $indexable ) { if ( $mapping['social_setting_prefix_aioseo'] === 'twitter_' && $aioseo_social_image_settings['twitter_use_og'] ) { $mapping['social_setting_prefix_aioseo'] = 'og_'; } $social_setting = \rtrim( $mapping['social_setting_prefix_aioseo'], '_' ); $image_type = $aioseo_social_image_settings[ $mapping['social_setting_prefix_aioseo'] . 'image_type' ]; if ( $image_type === 'default' ) { $image_type = $this->social_images_provider->get_default_social_image_source( $social_setting ); } switch ( $image_type ) { case 'attach': $image_url = $this->social_images_provider->get_first_attached_image( $indexable->object_id ); break; case 'auto': if ( $this->social_images_provider->get_featured_image( $indexable->object_id ) ) { // If there's a featured image, lets not import it, as our indexable calculation has already set that as active social image. That way we achieve dynamicality. return null; } $image_url = $this->social_images_provider->get_auto_image( $indexable->object_id ); break; case 'content': $image_url = $this->social_images_provider->get_first_image_in_content( $indexable->object_id ); break; case 'custom_image': $image_url = $aioseo_social_image_settings[ $mapping['social_setting_prefix_aioseo'] . 'image_custom_url' ]; break; case 'featured': return null; // Our auto-calculation when the indexable was built/updated has taken care of it, so it's not needed to transfer any data now. case 'author': return null; case 'custom': return null; case 'default': $image_url = $this->social_images_provider->get_default_custom_social_image( $social_setting ); break; default: $image_url = $aioseo_social_image_settings[ $mapping['social_setting_prefix_aioseo'] . 'image_url' ]; break; } if ( empty( $image_url ) ) { $image_url = $this->social_images_provider->get_default_custom_social_image( $social_setting ); } if ( empty( $image_url ) ) { return null; } return $this->sanitization->sanitize_url( $image_url, null ); } } src/actions/importing/aioseo/aioseo-general-settings-importing-action.php000064400000013752147206602470023024 0ustar00image = $image; } /** * Builds the mapping that ties AOISEO option keys with Yoast ones and their data transformation method. * * @return void */ protected function build_mapping() { $this->aioseo_options_to_yoast_map = [ '/separator' => [ 'yoast_name' => 'separator', 'transform_method' => 'transform_separator', ], '/siteTitle' => [ 'yoast_name' => 'title-home-wpseo', 'transform_method' => 'simple_import', ], '/metaDescription' => [ 'yoast_name' => 'metadesc-home-wpseo', 'transform_method' => 'simple_import', ], '/schema/siteRepresents' => [ 'yoast_name' => 'company_or_person', 'transform_method' => 'transform_site_represents', ], '/schema/person' => [ 'yoast_name' => 'company_or_person_user_id', 'transform_method' => 'simple_import', ], '/schema/organizationName' => [ 'yoast_name' => 'company_name', 'transform_method' => 'simple_import', ], '/schema/organizationLogo' => [ 'yoast_name' => 'company_logo', 'transform_method' => 'import_company_logo', ], '/schema/personLogo' => [ 'yoast_name' => 'person_logo', 'transform_method' => 'import_person_logo', ], ]; } /** * Imports the organization logo while also accounting for the id of the log to be saved in the separate Yoast option. * * @param string $logo_url The company logo url coming from AIOSEO settings. * * @return string The transformed company logo url. */ public function import_company_logo( $logo_url ) { $logo_id = $this->image->get_attachment_by_url( $logo_url ); $this->options->set( 'company_logo_id', $logo_id ); $this->options->set( 'company_logo_meta', false ); $logo_meta = $this->image->get_attachment_meta_from_settings( 'company_logo' ); $this->options->set( 'company_logo_meta', $logo_meta ); return $this->url_import( $logo_url ); } /** * Imports the person logo while also accounting for the id of the log to be saved in the separate Yoast option. * * @param string $logo_url The person logo url coming from AIOSEO settings. * * @return string The transformed person logo url. */ public function import_person_logo( $logo_url ) { $logo_id = $this->image->get_attachment_by_url( $logo_url ); $this->options->set( 'person_logo_id', $logo_id ); $this->options->set( 'person_logo_meta', false ); $logo_meta = $this->image->get_attachment_meta_from_settings( 'person_logo' ); $this->options->set( 'person_logo_meta', $logo_meta ); return $this->url_import( $logo_url ); } /** * Transforms the site represents setting. * * @param string $site_represents The site represents setting. * * @return string The transformed site represents setting. */ public function transform_site_represents( $site_represents ) { switch ( $site_represents ) { case 'person': return 'person'; case 'organization': default: return 'company'; } } /** * Transforms the separator setting. * * @param string $separator The separator setting. * * @return string The transformed separator. */ public function transform_separator( $separator ) { switch ( $separator ) { case '-': return 'sc-dash'; case '–': return 'sc-ndash'; case '—': return 'sc-mdash'; case '»': return 'sc-raquo'; case '«': return 'sc-laquo'; case '>': return 'sc-gt'; case '•': return 'sc-bull'; case '|': return 'sc-pipe'; default: return 'sc-dash'; } } } src/actions/importing/aioseo/aioseo-cleanup-action.php000064400000011022147206602470017156 0ustar00wpdb = $wpdb; $this->options = $options; } /** * Retrieves the postmeta along with the db prefix. * * @return string The postmeta table name along with the db prefix. */ protected function get_postmeta_table() { return $this->wpdb->prefix . 'postmeta'; } /** * Just checks if the cleanup has been completed in the past. * * @return int The total number of unimported objects. */ public function get_total_unindexed() { if ( ! $this->aioseo_helper->aioseo_exists() ) { return 0; } return ( ! $this->get_completed() ) ? 1 : 0; } /** * Just checks if the cleanup has been completed in the past. * * @param int $limit The maximum number of unimported objects to be returned. * * @return int|false The limited number of unindexed posts. False if the query fails. */ public function get_limited_unindexed_count( $limit ) { if ( ! $this->aioseo_helper->aioseo_exists() ) { return 0; } return ( ! $this->get_completed() ) ? 1 : 0; } /** * Cleans up AIOSEO data. * * @return Indexable[]|false An array of created indexables or false if aioseo data was not found. */ public function index() { if ( $this->get_completed() ) { return []; } // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared -- Reason: There is no unescaped user input. $meta_data = $this->wpdb->query( $this->cleanup_postmeta_query() ); $aioseo_table_truncate_done = $this->wpdb->query( $this->truncate_query() ); // phpcs:enable WordPress.DB.PreparedSQL.NotPrepared if ( $meta_data === false && $aioseo_table_truncate_done === false ) { return false; } $this->set_completed( true ); return [ 'metadata_cleanup' => $meta_data, 'indexables_cleanup' => $aioseo_table_truncate_done, ]; } /** * Creates a DELETE query string for deleting AIOSEO postmeta data. * * @return string The query to use for importing or counting the number of items to import. */ public function cleanup_postmeta_query() { $table = $this->get_postmeta_table(); $meta_keys_to_delete = $this->aioseo_postmeta_keys; // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Reason: There is no unescaped user input. return $this->wpdb->prepare( "DELETE FROM {$table} WHERE meta_key IN (" . \implode( ', ', \array_fill( 0, \count( $meta_keys_to_delete ), '%s' ) ) . ')', $meta_keys_to_delete ); // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared } /** * Creates a TRUNCATE query string for emptying the AIOSEO indexable table, if it exists. * * @return string The query to use for importing or counting the number of items to import. */ public function truncate_query() { if ( ! $this->aioseo_helper->aioseo_exists() ) { // If the table doesn't exist, we need a string that will amount to a quick query that doesn't return false when ran. return 'SELECT 1'; } $table = $this->aioseo_helper->get_table(); return "TRUNCATE TABLE {$table}"; } /** * Used nowhere. Exists to comply with the interface. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_aioseo_cleanup_limit' - Allow filtering the number of posts indexed during each indexing pass. * * @param int $max_posts The maximum number of posts cleaned up. */ $limit = \apply_filters( 'wpseo_aioseo_cleanup_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } } src/actions/importing/aioseo/aioseo-default-archive-settings-importing-action.php000064400000005610147206602470024444 0ustar00aioseo_options_to_yoast_map = [ '/author/title' => [ 'yoast_name' => 'title-author-wpseo', 'transform_method' => 'simple_import', ], '/author/metaDescription' => [ 'yoast_name' => 'metadesc-author-wpseo', 'transform_method' => 'simple_import', ], '/date/title' => [ 'yoast_name' => 'title-archive-wpseo', 'transform_method' => 'simple_import', ], '/date/metaDescription' => [ 'yoast_name' => 'metadesc-archive-wpseo', 'transform_method' => 'simple_import', ], '/search/title' => [ 'yoast_name' => 'title-search-wpseo', 'transform_method' => 'simple_import', ], '/author/advanced/robotsMeta/noindex' => [ 'yoast_name' => 'noindex-author-wpseo', 'transform_method' => 'import_noindex', 'type' => 'archives', 'subtype' => 'author', 'option_name' => 'aioseo_options', ], '/date/advanced/robotsMeta/noindex' => [ 'yoast_name' => 'noindex-archive-wpseo', 'transform_method' => 'import_noindex', 'type' => 'archives', 'subtype' => 'date', 'option_name' => 'aioseo_options', ], ]; } /** * Returns a setting map of the robot setting for author archives. * * @return array The setting map of the robot setting for author archives. */ public function pluck_robot_setting_from_mapping() { $this->build_mapping(); foreach ( $this->aioseo_options_to_yoast_map as $setting ) { // Return the first archive setting map. if ( $setting['transform_method'] === 'import_noindex' && isset( $setting['subtype'] ) && $setting['subtype'] === 'author' ) { return $setting; } } return []; } } src/actions/importing/aioseo/aioseo-validate-data-action.php000064400000021157147206602470020241 0ustar00wpdb = $wpdb; $this->options = $options; $this->post_importing_action = $post_importing_action; $this->settings_importing_actions = [ $custom_archive_action, $default_archive_action, $general_settings_action, $posttype_defaults_settings_action, $taxonomy_settings_action, ]; } /** * Just checks if the action has been completed in the past. * * @return int 1 if it hasn't been completed in the past, 0 if it has. */ public function get_total_unindexed() { return ( ! $this->get_completed() ) ? 1 : 0; } /** * Just checks if the action has been completed in the past. * * @param int $limit The maximum number of unimported objects to be returned. Not used, exists to comply with the interface. * * @return int 1 if it hasn't been completed in the past, 0 if it has. */ public function get_limited_unindexed_count( $limit ) { return ( ! $this->get_completed() ) ? 1 : 0; } /** * Validates AIOSEO data. * * @return array An array of validated data or false if aioseo data did not pass validation. * * @throws Aioseo_Validation_Exception If the validation fails. */ public function index() { if ( $this->get_completed() ) { return []; } $validated_aioseo_table = $this->validate_aioseo_table(); $validated_aioseo_settings = $this->validate_aioseo_settings(); $validated_robot_settings = $this->validate_robot_settings(); if ( $validated_aioseo_table === false || $validated_aioseo_settings === false || $validated_robot_settings === false ) { throw new Aioseo_Validation_Exception(); } $this->set_completed( true ); return [ 'validated_aioseo_table' => $validated_aioseo_table, 'validated_aioseo_settings' => $validated_aioseo_settings, 'validated_robot_settings' => $validated_robot_settings, ]; } /** * Validates the AIOSEO indexable table. * * @return bool Whether the AIOSEO table exists and has the structure we expect. */ public function validate_aioseo_table() { if ( ! $this->aioseo_helper->aioseo_exists() ) { return false; } $table = $this->aioseo_helper->get_table(); $needed_data = $this->post_importing_action->get_needed_data(); $aioseo_columns = $this->wpdb->get_col( "SHOW COLUMNS FROM {$table}", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Reason: There is no unescaped user input. 0 ); return $needed_data === \array_intersect( $needed_data, $aioseo_columns ); } /** * Validates the AIOSEO settings from the options table. * * @return bool Whether the AIOSEO settings from the options table exist and have the structure we expect. */ public function validate_aioseo_settings() { foreach ( $this->settings_importing_actions as $settings_import_action ) { $aioseo_settings = \json_decode( \get_option( $settings_import_action->get_source_option_name(), '' ), true ); if ( ! $settings_import_action->isset_settings_tab( $aioseo_settings ) ) { return false; } } return true; } /** * Validates the AIOSEO robots settings from the options table. * * @return bool Whether the AIOSEO robots settings from the options table exist and have the structure we expect. */ public function validate_robot_settings() { if ( $this->validate_post_robot_settings() && $this->validate_default_robot_settings() ) { return true; } return false; } /** * Validates the post AIOSEO robots settings from the options table. * * @return bool Whether the post AIOSEO robots settings from the options table exist and have the structure we expect. */ public function validate_post_robot_settings() { $post_robot_mapping = $this->post_importing_action->enhance_mapping(); // We're gonna validate against posttype robot settings only for posts, assuming the robot settings stay the same for other post types. $post_robot_mapping['subtype'] = 'post'; // Let's get both the aioseo_options and the aioseo_options_dynamic options. $aioseo_global_settings = $this->aioseo_helper->get_global_option(); $aioseo_posts_settings = \json_decode( \get_option( $post_robot_mapping['option_name'], '' ), true ); $needed_robots_data = $this->post_importing_action->get_needed_robot_data(); \array_push( $needed_robots_data, 'default', 'noindex' ); foreach ( $needed_robots_data as $robot_setting ) { // Validate against global settings. if ( ! isset( $aioseo_global_settings['searchAppearance']['advanced']['globalRobotsMeta'][ $robot_setting ] ) ) { return false; } // Validate against posttype settings. if ( ! isset( $aioseo_posts_settings['searchAppearance'][ $post_robot_mapping['type'] ][ $post_robot_mapping['subtype'] ]['advanced']['robotsMeta'][ $robot_setting ] ) ) { return false; } } return true; } /** * Validates the default AIOSEO robots settings for search appearance settings from the options table. * * @return bool Whether the AIOSEO robots settings for search appearance settings from the options table exist and have the structure we expect. */ public function validate_default_robot_settings() { foreach ( $this->settings_importing_actions as $settings_import_action ) { $robot_setting_map = $settings_import_action->pluck_robot_setting_from_mapping(); // Some actions return empty robot settings, let's not validate against those. if ( ! empty( $robot_setting_map ) ) { $aioseo_settings = \json_decode( \get_option( $robot_setting_map['option_name'], '' ), true ); if ( ! isset( $aioseo_settings['searchAppearance'][ $robot_setting_map['type'] ][ $robot_setting_map['subtype'] ]['advanced']['robotsMeta']['default'] ) ) { return false; } } } return true; } /** * Used nowhere. Exists to comply with the interface. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_aioseo_cleanup_limit' - Allow filtering the number of validations during each action pass. * * @param int $limit The maximum number of validations. */ $limit = \apply_filters( 'wpseo_aioseo_validation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } } src/actions/importing/aioseo/abstract-aioseo-settings-importing-action.php000064400000024610147206602470023205 0ustar00import_helper = $import_helper; } /** * Retrieves the source option_name. * * @return string The source option_name. * * @throws Exception If the SOURCE_OPTION_NAME constant is not set in the child class. */ public function get_source_option_name() { $source_option_name = static::SOURCE_OPTION_NAME; if ( empty( $source_option_name ) ) { throw new Exception( 'Importing settings action without explicit source option_name' ); } return $source_option_name; } /** * Returns the total number of unimported objects. * * @return int The total number of unimported objects. */ public function get_total_unindexed() { return $this->get_unindexed_count(); } /** * Returns the limited number of unimported objects. * * @param int $limit The maximum number of unimported objects to be returned. * * @return int The limited number of unindexed posts. */ public function get_limited_unindexed_count( $limit ) { return $this->get_unindexed_count( $limit ); } /** * Returns the number of unimported objects (limited if limit is applied). * * @param int|null $limit The maximum number of unimported objects to be returned. * * @return int The number of unindexed posts. */ protected function get_unindexed_count( $limit = null ) { if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = null; } $settings_to_create = $this->query( $limit ); $number_of_settings_to_create = \count( $settings_to_create ); $completed = $number_of_settings_to_create === 0; $this->set_completed( $completed ); return $number_of_settings_to_create; } /** * Imports AIOSEO settings. * * @return array|false An array of the AIOSEO settings that were imported or false if aioseo data was not found. */ public function index() { $limit = $this->get_limit(); $aioseo_settings = $this->query( $limit ); $created_settings = []; $completed = \count( $aioseo_settings ) === 0; $this->set_completed( $completed ); // Prepare the setting keys mapping. $this->build_mapping(); // Prepare the replacement var mapping. foreach ( $this->replace_vars_edited_map as $aioseo_var => $yoast_var ) { $this->replacevar_handler->compose_map( $aioseo_var, $yoast_var ); } $last_imported_setting = ''; try { foreach ( $aioseo_settings as $setting => $setting_value ) { // Map and import the values of the setting we're working with (eg. post, book-category, etc.) to the respective Yoast option. $this->map( $setting_value, $setting ); // Save the type of the settings that were just imported, so that we can allow chunked imports. $last_imported_setting = $setting; $created_settings[] = $setting; } } finally { $cursor_id = $this->get_cursor_id(); $this->import_cursor->set_cursor( $cursor_id, $last_imported_setting ); } return $created_settings; } /** * Checks if the settings tab subsetting is set in the AIOSEO option. * * @param string $aioseo_settings The AIOSEO option. * * @return bool Whether the settings are set. */ public function isset_settings_tab( $aioseo_settings ) { return isset( $aioseo_settings['searchAppearance'][ $this->settings_tab ] ); } /** * Queries the database and retrieves unimported AiOSEO settings (in chunks if a limit is applied). * * @param int|null $limit The maximum number of unimported objects to be returned. * * @return array The (maybe chunked) unimported AiOSEO settings to import. */ protected function query( $limit = null ) { $aioseo_settings = \json_decode( \get_option( $this->get_source_option_name(), '' ), true ); if ( empty( $aioseo_settings ) ) { return []; } // We specifically want the setttings of the tab we're working with, eg. postTypes, taxonomies, etc. $settings_values = $aioseo_settings['searchAppearance'][ $this->settings_tab ]; if ( ! \is_array( $settings_values ) ) { return []; } $flattened_settings = $this->import_helper->flatten_settings( $settings_values ); return $this->get_unimported_chunk( $flattened_settings, $limit ); } /** * Retrieves (a chunk of, if limit is applied) the unimported AIOSEO settings. * To apply a chunk, we manipulate the cursor to the keys of the AIOSEO settings. * * @param array $importable_data All of the available AIOSEO settings. * @param int $limit The maximum number of unimported objects to be returned. * * @return array The (chunk of, if limit is applied)) unimported AIOSEO settings. */ protected function get_unimported_chunk( $importable_data, $limit ) { \ksort( $importable_data ); $cursor_id = $this->get_cursor_id(); $cursor = $this->import_cursor->get_cursor( $cursor_id, '' ); /** * Filter 'wpseo_aioseo__import_cursor' - Allow filtering the value of the aioseo settings import cursor. * * @param int $import_cursor The value of the aioseo posttype default settings import cursor. */ $cursor = \apply_filters( 'wpseo_aioseo_' . $this->get_type() . '_import_cursor', $cursor ); if ( $cursor === '' ) { return \array_slice( $importable_data, 0, $limit, true ); } // Let's find the position of the cursor in the alphabetically sorted importable data, so we can return only the unimported data. $keys = \array_flip( \array_keys( $importable_data ) ); // If the stored cursor now no longer exists in the data, we have no choice but to start over. $position = ( isset( $keys[ $cursor ] ) ) ? ( $keys[ $cursor ] + 1 ) : 0; return \array_slice( $importable_data, $position, $limit, true ); } /** * Returns the number of objects that will be imported in a single importing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_aioseo__indexation_limit' - Allow filtering the number of settings imported during each importing pass. * * @param int $max_posts The maximum number of posts indexed. */ $limit = \apply_filters( 'wpseo_aioseo_' . $this->get_type() . '_indexation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } /** * Maps/imports AIOSEO settings into the respective Yoast settings. * * @param string|array $setting_value The value of the AIOSEO setting at hand. * @param string $setting The setting at hand, eg. post or movie-category, separator etc. * * @return void */ protected function map( $setting_value, $setting ) { $aioseo_options_to_yoast_map = $this->aioseo_options_to_yoast_map; if ( isset( $aioseo_options_to_yoast_map[ $setting ] ) ) { $this->import_single_setting( $setting, $setting_value, $aioseo_options_to_yoast_map[ $setting ] ); } } /** * Imports a single setting in the db after transforming it to adhere to Yoast conventions. * * @param string $setting The name of the setting. * @param string $setting_value The values of the setting. * @param array $setting_mapping The mapping of the setting to Yoast formats. * * @return void */ protected function import_single_setting( $setting, $setting_value, $setting_mapping ) { $yoast_key = $setting_mapping['yoast_name']; // Check if we're supposed to save the setting. if ( $this->options->get_default( 'wpseo_titles', $yoast_key ) !== null ) { // Then, do any needed data transfomation before actually saving the incoming data. $transformed_data = \call_user_func( [ $this, $setting_mapping['transform_method'] ], $setting_value, $setting_mapping ); $this->options->set( $yoast_key, $transformed_data ); } } /** * Minimally transforms boolean data to be imported. * * @param bool $meta_data The boolean meta data to be imported. * * @return bool The transformed boolean meta data. */ public function simple_boolean_import( $meta_data ) { return $meta_data; } /** * Imports the noindex setting, taking into consideration whether they defer to global defaults. * * @param bool $noindex The noindex of the type, without taking into consideration whether the type defers to global defaults. * @param array $mapping The mapping of the setting we're working with. * * @return bool The noindex setting. */ public function import_noindex( $noindex, $mapping ) { return $this->robots_transformer->transform_robot_setting( 'noindex', $noindex, $mapping ); } /** * Returns a setting map of the robot setting for one subset of post types/taxonomies/archives. * For custom archives, it returns an empty array because AIOSEO excludes some custom archives from this option structure, eg. WooCommerce's products and we don't want to raise a false alarm. * * @return array The setting map of the robot setting for one subset of post types/taxonomies/archives or an empty array. */ public function pluck_robot_setting_from_mapping() { return []; } } src/actions/integrations-action.php000064400000002366147206602470013504 0ustar00options_helper = $options_helper; } /** * Sets an integration state. * * @param string $integration_name The name of the integration to activate/deactivate. * @param bool $value The value to store. * * @return object The response object. */ public function set_integration_active( $integration_name, $value ) { $option_name = $integration_name . '_integration_active'; $success = true; $option_value = $this->options_helper->get( $option_name ); if ( $option_value !== $value ) { $success = $this->options_helper->set( $option_name, $value ); } if ( $success ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not save the option in the database', ]; } } src/actions/wincher/wincher-account-action.php000064400000004743147206602470015527 0ustar00client = $client; $this->options_helper = $options_helper; } /** * Checks the account limit for tracking keyphrases. * * @return object The response object. */ public function check_limit() { // Code has already been validated at this point. No need to do that again. try { $results = $this->client->get( self::ACCOUNT_URL ); $usage = $results['limits']['keywords']['usage']; $limit = $results['limits']['keywords']['limit']; $history = $results['limits']['history_days']; return (object) [ 'canTrack' => \is_null( $limit ) || $usage < $limit, 'limit' => $limit, 'usage' => $usage, 'historyDays' => $history, 'status' => 200, ]; } catch ( Exception $e ) { return (object) [ 'status' => $e->getCode(), 'error' => $e->getMessage(), ]; } } /** * Gets the upgrade campaign. * * @return object The response object. */ public function get_upgrade_campaign() { try { $result = $this->client->get( self::UPGRADE_CAMPAIGN_URL ); $type = ( $result['type'] ?? null ); $months = ( $result['months'] ?? null ); $discount = ( $result['value'] ?? null ); // We display upgrade discount only if it's a rate discount and positive months/discount. if ( $type === 'RATE' && $months && $discount ) { return (object) [ 'discount' => $discount, 'months' => $months, 'status' => 200, ]; } return (object) [ 'discount' => null, 'months' => null, 'status' => 200, ]; } catch ( Exception $e ) { return (object) [ 'status' => $e->getCode(), 'error' => $e->getMessage(), ]; } } } src/actions/wincher/wincher-keyphrases-action.php000064400000022227147206602470016246 0ustar00client = $client; $this->options_helper = $options_helper; $this->indexable_repository = $indexable_repository; } /** * Sends the tracking API request for one or more keyphrases. * * @param string|array $keyphrases One or more keyphrases that should be tracked. * @param Object $limits The limits API call response data. * * @return Object The reponse object. */ public function track_keyphrases( $keyphrases, $limits ) { try { $endpoint = \sprintf( self::KEYPHRASES_ADD_URL, $this->options_helper->get( 'wincher_website_id' ) ); // Enforce arrrays to ensure a consistent way of preparing the request. if ( ! \is_array( $keyphrases ) ) { $keyphrases = [ $keyphrases ]; } // Calculate if the user would exceed their limit. // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- To ensure JS code style, this can be ignored. if ( ! $limits->canTrack || $this->would_exceed_limits( $keyphrases, $limits ) ) { $response = [ 'limit' => $limits->limit, 'error' => 'Account limit exceeded', 'status' => 400, ]; return $this->to_result_object( $response ); } $formatted_keyphrases = \array_values( \array_map( static function ( $keyphrase ) { return [ 'keyword' => $keyphrase, 'groups' => [], ]; }, $keyphrases ) ); $results = $this->client->post( $endpoint, WPSEO_Utils::format_json_encode( $formatted_keyphrases ) ); if ( ! \array_key_exists( 'data', $results ) ) { return $this->to_result_object( $results ); } // The endpoint returns a lot of stuff that we don't want/need. $results['data'] = \array_map( static function ( $keyphrase ) { return [ 'id' => $keyphrase['id'], 'keyword' => $keyphrase['keyword'], ]; }, $results['data'] ); $results['data'] = \array_combine( \array_column( $results['data'], 'keyword' ), \array_values( $results['data'] ) ); return $this->to_result_object( $results ); } catch ( Exception $e ) { return (object) [ 'error' => $e->getMessage(), 'status' => $e->getCode(), ]; } } /** * Sends an untrack request for the passed keyword ID. * * @param int $keyphrase_id The ID of the keyphrase to untrack. * * @return object The response object. */ public function untrack_keyphrase( $keyphrase_id ) { try { $endpoint = \sprintf( self::KEYPHRASE_DELETE_URL, $this->options_helper->get( 'wincher_website_id' ), $keyphrase_id ); $this->client->delete( $endpoint ); return (object) [ 'status' => 200, ]; } catch ( Exception $e ) { return (object) [ 'error' => $e->getMessage(), 'status' => $e->getCode(), ]; } } /** * Gets the keyphrase data for the passed keyphrases. * Retrieves all available data if no keyphrases are provided. * * @param array|null $used_keyphrases The currently used keyphrases. Optional. * @param string|null $permalink The current permalink. Optional. * @param string|null $start_at The position start date. Optional. * * @return object The keyphrase chart data. */ public function get_tracked_keyphrases( $used_keyphrases = null, $permalink = null, $start_at = null ) { try { if ( $used_keyphrases === null ) { $used_keyphrases = $this->collect_all_keyphrases(); } // If we still have no keyphrases the API will return an error, so // don't even bother sending a request. if ( empty( $used_keyphrases ) ) { return $this->to_result_object( [ 'data' => [], 'status' => 200, ] ); } $endpoint = \sprintf( self::KEYPHRASES_URL, $this->options_helper->get( 'wincher_website_id' ) ); $results = $this->client->post( $endpoint, WPSEO_Utils::format_json_encode( [ 'keywords' => $used_keyphrases, 'url' => $permalink, 'start_at' => $start_at, ] ), [ 'timeout' => 60, ] ); if ( ! \array_key_exists( 'data', $results ) ) { return $this->to_result_object( $results ); } $results['data'] = $this->filter_results_by_used_keyphrases( $results['data'], $used_keyphrases ); // Extract the positional data and assign it to the keyphrase. $results['data'] = \array_combine( \array_column( $results['data'], 'keyword' ), \array_values( $results['data'] ) ); return $this->to_result_object( $results ); } catch ( Exception $e ) { return (object) [ 'error' => $e->getMessage(), 'status' => $e->getCode(), ]; } } /** * Collects the keyphrases associated with the post. * * @param WP_Post $post The post object. * * @return array The keyphrases. */ public function collect_keyphrases_from_post( $post ) { $keyphrases = []; $primary_keyphrase = $this->indexable_repository ->query() ->select( 'primary_focus_keyword' ) ->where( 'object_id', $post->ID ) ->find_one(); if ( $primary_keyphrase ) { $keyphrases[] = $primary_keyphrase->primary_focus_keyword; } /** * Filters the keyphrases collected by the Wincher integration from the post. * * @param array $keyphrases The keyphrases array. * @param int $post_id The ID of the post. */ return \apply_filters( 'wpseo_wincher_keyphrases_from_post', $keyphrases, $post->ID ); } /** * Collects all keyphrases known to Yoast. * * @return array */ protected function collect_all_keyphrases() { // Collect primary keyphrases first. $keyphrases = \array_column( $this->indexable_repository ->query() ->select( 'primary_focus_keyword' ) ->where_not_null( 'primary_focus_keyword' ) ->where( 'object_type', 'post' ) ->where_not_equal( 'post_status', 'trash' ) ->distinct() ->find_array(), 'primary_focus_keyword' ); /** * Filters the keyphrases collected by the Wincher integration from all the posts. * * @param array $keyphrases The keyphrases array. */ $keyphrases = \apply_filters( 'wpseo_wincher_all_keyphrases', $keyphrases ); // Filter out empty entries. return \array_filter( $keyphrases ); } /** * Filters the results based on the passed keyphrases. * * @param array $results The results to filter. * @param array $used_keyphrases The used keyphrases. * * @return array The filtered results. */ protected function filter_results_by_used_keyphrases( $results, $used_keyphrases ) { return \array_filter( $results, static function ( $result ) use ( $used_keyphrases ) { return \in_array( $result['keyword'], \array_map( 'strtolower', $used_keyphrases ), true ); } ); } /** * Determines whether the amount of keyphrases would mean the user exceeds their account limits. * * @param string|array $keyphrases The keyphrases to be added. * @param object $limits The current account limits. * * @return bool Whether the limit is exceeded. */ protected function would_exceed_limits( $keyphrases, $limits ) { if ( ! \is_array( $keyphrases ) ) { $keyphrases = [ $keyphrases ]; } if ( \is_null( $limits->limit ) ) { return false; } return ( \count( $keyphrases ) + $limits->usage ) > $limits->limit; } /** * Converts the passed dataset to an object. * * @param array $result The result dataset to convert to an object. * * @return object The result object. */ protected function to_result_object( $result ) { if ( \array_key_exists( 'data', $result ) ) { $result['results'] = (object) $result['data']; unset( $result['data'] ); } if ( \array_key_exists( 'message', $result ) ) { $result['error'] = $result['message']; unset( $result['message'] ); } return (object) $result; } } src/actions/wincher/wincher-login-action.php000064400000003336147206602470015200 0ustar00client = $client; $this->options_helper = $options_helper; } /** * Returns the authorization URL. * * @return object The response object. */ public function get_authorization_url() { return (object) [ 'status' => 200, 'url' => $this->client->get_authorization_url(), ]; } /** * Authenticates with Wincher to request the necessary tokens. * * @param string $code The authentication code to use to request a token with. * @param string $website_id The website id associated with the code. * * @return object The response object. */ public function authenticate( $code, $website_id ) { // Code has already been validated at this point. No need to do that again. try { $tokens = $this->client->request_tokens( $code ); $this->options_helper->set( 'wincher_website_id', $website_id ); return (object) [ 'tokens' => $tokens->to_array(), 'status' => 200, ]; } catch ( Authentication_Failed_Exception $e ) { return $e->get_response(); } } } src/actions/indexing/indexation-action-interface.php000064400000001432147206602470016674 0ustar00get_select_query( $limit ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_count_query returns a prepared query. $unindexed_object_ids = ( $query === '' ) ? [] : $this->wpdb->get_col( $query ); $count = (int) \count( $unindexed_object_ids ); \set_transient( static::UNINDEXED_LIMITED_COUNT_TRANSIENT, $count, ( \MINUTE_IN_SECONDS * 15 ) ); return $count; } /** * Returns the total number of unindexed posts. * * @return int|false The total number of unindexed posts. False if the query fails. */ public function get_total_unindexed() { $transient = \get_transient( static::UNINDEXED_COUNT_TRANSIENT ); if ( $transient !== false ) { return (int) $transient; } // Store transient before doing the query so multiple requests won't make multiple queries. // Only store this for 15 minutes to ensure that if the query doesn't complete a wrong count is not kept too long. \set_transient( static::UNINDEXED_COUNT_TRANSIENT, 0, ( \MINUTE_IN_SECONDS * 15 ) ); $query = $this->get_count_query(); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_count_query returns a prepared query. $count = ( $query === '' ) ? 0 : $this->wpdb->get_var( $query ); if ( \is_null( $count ) ) { return false; } \set_transient( static::UNINDEXED_COUNT_TRANSIENT, $count, \DAY_IN_SECONDS ); /** * Action: 'wpseo_indexables_unindexed_calculated' - sets an option to timestamp when there are no unindexed indexables left. * * @internal */ \do_action( 'wpseo_indexables_unindexed_calculated', static::UNINDEXED_COUNT_TRANSIENT, $count ); return (int) $count; } } src/actions/indexing/post-link-indexing-action.php000064400000007532147206602470016326 0ustar00post_type_helper = $post_type_helper; } /** * Returns objects to be indexed. * * @return array Objects to be indexed. */ protected function get_objects() { $query = $this->get_select_query( $this->get_limit() ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_select_query returns a prepared query. $posts = $this->wpdb->get_results( $query ); return \array_map( static function ( $post ) { return (object) [ 'id' => (int) $post->ID, 'type' => 'post', 'content' => $post->post_content, ]; }, $posts ); } /** * Builds a query for counting the number of unindexed post links. * * @return string The prepared query string. */ protected function get_count_query() { $public_post_types = $this->post_type_helper->get_indexable_post_types(); $indexable_table = Model::get_table_name( 'Indexable' ); $links_table = Model::get_table_name( 'SEO_Links' ); // Warning: If this query is changed, makes sure to update the query in get_select_query as well. return $this->wpdb->prepare( "SELECT COUNT(P.ID) FROM {$this->wpdb->posts} AS P LEFT JOIN $indexable_table AS I ON P.ID = I.object_id AND I.link_count IS NOT NULL AND I.object_type = 'post' LEFT JOIN $links_table AS L ON L.post_id = P.ID AND L.target_indexable_id IS NULL AND L.type = 'internal' AND L.target_post_id IS NOT NULL AND L.target_post_id != 0 WHERE ( I.object_id IS NULL OR L.post_id IS NOT NULL ) AND P.post_status = 'publish' AND P.post_type IN (" . \implode( ', ', \array_fill( 0, \count( $public_post_types ), '%s' ) ) . ')', $public_post_types ); } /** * Builds a query for selecting the ID's of unindexed post links. * * @param int|false $limit The maximum number of post link IDs to return. * * @return string The prepared query string. */ protected function get_select_query( $limit = false ) { $public_post_types = $this->post_type_helper->get_indexable_post_types(); $indexable_table = Model::get_table_name( 'Indexable' ); $links_table = Model::get_table_name( 'SEO_Links' ); $replacements = $public_post_types; $limit_query = ''; if ( $limit ) { $limit_query = 'LIMIT %d'; $replacements[] = $limit; } // Warning: If this query is changed, makes sure to update the query in get_count_query as well. return $this->wpdb->prepare( " SELECT P.ID, P.post_content FROM {$this->wpdb->posts} AS P LEFT JOIN $indexable_table AS I ON P.ID = I.object_id AND I.link_count IS NOT NULL AND I.object_type = 'post' LEFT JOIN $links_table AS L ON L.post_id = P.ID AND L.target_indexable_id IS NULL AND L.type = 'internal' AND L.target_post_id IS NOT NULL AND L.target_post_id != 0 WHERE ( I.object_id IS NULL OR L.post_id IS NOT NULL ) AND P.post_status = 'publish' AND P.post_type IN (" . \implode( ', ', \array_fill( 0, \count( $public_post_types ), '%s' ) ) . ") $limit_query", $replacements ); } } src/actions/indexing/limited-indexing-action-interface.php000064400000000763147206602470017772 0ustar00post_type_helper = $post_type_helper; $this->repository = $repository; $this->wpdb = $wpdb; $this->version = $builder_versions->get_latest_version_for_type( 'post' ); $this->post_helper = $post_helper; } /** * Creates indexables for unindexed posts. * * @return Indexable[] The created indexables. */ public function index() { $query = $this->get_select_query( $this->get_limit() ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_select_query returns a prepared query. $post_ids = $this->wpdb->get_col( $query ); $indexables = []; foreach ( $post_ids as $post_id ) { $indexables[] = $this->repository->find_by_id_and_type( (int) $post_id, 'post' ); } if ( \count( $indexables ) > 0 ) { \delete_transient( static::UNINDEXED_COUNT_TRANSIENT ); \delete_transient( static::UNINDEXED_LIMITED_COUNT_TRANSIENT ); } return $indexables; } /** * Returns the number of posts that will be indexed in a single indexing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_post_indexation_limit' - Allow filtering the amount of posts indexed during each indexing pass. * * @param int $limit The maximum number of posts indexed. */ $limit = \apply_filters( 'wpseo_post_indexation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } /** * Builds a query for counting the number of unindexed posts. * * @return string The prepared query string. */ protected function get_count_query() { $indexable_table = Model::get_table_name( 'Indexable' ); $post_types = $this->post_type_helper->get_indexable_post_types(); $excluded_post_statuses = $this->post_helper->get_excluded_post_statuses(); $replacements = \array_merge( $post_types, $excluded_post_statuses ); $replacements[] = $this->version; // Warning: If this query is changed, makes sure to update the query in get_select_query as well. // @phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber return $this->wpdb->prepare( " SELECT COUNT(P.ID) FROM {$this->wpdb->posts} AS P WHERE P.post_type IN (" . \implode( ', ', \array_fill( 0, \count( $post_types ), '%s' ) ) . ') AND P.post_status NOT IN (' . \implode( ', ', \array_fill( 0, \count( $excluded_post_statuses ), '%s' ) ) . ") AND P.ID not in ( SELECT I.object_id from $indexable_table as I WHERE I.object_type = 'post' AND I.version = %d )", $replacements ); } /** * Builds a query for selecting the ID's of unindexed posts. * * @param bool $limit The maximum number of post IDs to return. * * @return string The prepared query string. */ protected function get_select_query( $limit = false ) { $indexable_table = Model::get_table_name( 'Indexable' ); $post_types = $this->post_type_helper->get_indexable_post_types(); $excluded_post_statuses = $this->post_helper->get_excluded_post_statuses(); $replacements = \array_merge( $post_types, $excluded_post_statuses ); $replacements[] = $this->version; $limit_query = ''; if ( $limit ) { $limit_query = 'LIMIT %d'; $replacements[] = $limit; } // Warning: If this query is changed, makes sure to update the query in get_count_query as well. // @phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber return $this->wpdb->prepare( " SELECT P.ID FROM {$this->wpdb->posts} AS P WHERE P.post_type IN (" . \implode( ', ', \array_fill( 0, \count( $post_types ), '%s' ) ) . ') AND P.post_status NOT IN (' . \implode( ', ', \array_fill( 0, \count( $excluded_post_statuses ), '%s' ) ) . ") AND P.ID not in ( SELECT I.object_id from $indexable_table as I WHERE I.object_type = 'post' AND I.version = %d ) $limit_query", $replacements ); } } src/actions/indexing/indexable-indexing-complete-action.php000064400000001316147206602470020141 0ustar00indexable_helper = $indexable_helper; } /** * Wraps up the indexing process. * * @return void */ public function complete() { $this->indexable_helper->finish_indexing(); } } src/actions/indexing/term-link-indexing-action.php000064400000006677147206602470016321 0ustar00taxonomy_helper = $taxonomy_helper; } /** * Returns objects to be indexed. * * @return array Objects to be indexed. */ protected function get_objects() { $query = $this->get_select_query( $this->get_limit() ); if ( $query === '' ) { return []; } // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_select_query returns a prepared query. $terms = $this->wpdb->get_results( $query ); return \array_map( static function ( $term ) { return (object) [ 'id' => (int) $term->term_id, 'type' => 'term', 'content' => $term->description, ]; }, $terms ); } /** * Builds a query for counting the number of unindexed term links. * * @return string The prepared query string. */ protected function get_count_query() { $public_taxonomies = $this->taxonomy_helper->get_indexable_taxonomies(); if ( empty( $public_taxonomies ) ) { return ''; } $placeholders = \implode( ', ', \array_fill( 0, \count( $public_taxonomies ), '%s' ) ); $indexable_table = Model::get_table_name( 'Indexable' ); // Warning: If this query is changed, makes sure to update the query in get_select_query as well. return $this->wpdb->prepare( " SELECT COUNT(T.term_id) FROM {$this->wpdb->term_taxonomy} AS T LEFT JOIN $indexable_table AS I ON T.term_id = I.object_id AND I.object_type = 'term' AND I.link_count IS NOT NULL WHERE I.object_id IS NULL AND T.taxonomy IN ($placeholders)", $public_taxonomies ); } /** * Builds a query for selecting the ID's of unindexed term links. * * @param int|false $limit The maximum number of term link IDs to return. * * @return string The prepared query string. */ protected function get_select_query( $limit = false ) { $public_taxonomies = $this->taxonomy_helper->get_indexable_taxonomies(); if ( empty( $public_taxonomies ) ) { return ''; } $indexable_table = Model::get_table_name( 'Indexable' ); $replacements = $public_taxonomies; $limit_query = ''; if ( $limit ) { $limit_query = 'LIMIT %d'; $replacements[] = $limit; } // Warning: If this query is changed, makes sure to update the query in get_count_query as well. return $this->wpdb->prepare( " SELECT T.term_id, T.description FROM {$this->wpdb->term_taxonomy} AS T LEFT JOIN $indexable_table AS I ON T.term_id = I.object_id AND I.object_type = 'term' AND I.link_count IS NOT NULL WHERE I.object_id IS NULL AND T.taxonomy IN (" . \implode( ', ', \array_fill( 0, \count( $public_taxonomies ), '%s' ) ) . ") $limit_query", $replacements ); } } src/actions/indexing/abstract-link-indexing-action.php000064400000006166147206602470017146 0ustar00link_builder = $link_builder; $this->indexable_helper = $indexable_helper; $this->repository = $repository; $this->wpdb = $wpdb; } /** * Builds links for indexables which haven't had their links indexed yet. * * @return SEO_Links[] The created SEO links. */ public function index() { $objects = $this->get_objects(); $indexables = []; foreach ( $objects as $object ) { $indexable = $this->repository->find_by_id_and_type( $object->id, $object->type ); if ( $indexable ) { $this->link_builder->build( $indexable, $object->content ); $this->indexable_helper->save_indexable( $indexable ); $indexables[] = $indexable; } } if ( \count( $indexables ) > 0 ) { \delete_transient( static::UNINDEXED_COUNT_TRANSIENT ); \delete_transient( static::UNINDEXED_LIMITED_COUNT_TRANSIENT ); } return $indexables; } /** * In the case of term-links and post-links we want to use the total unindexed count, because using * the limited unindexed count actually leads to worse performance. * * @param int|bool $limit Unused. * * @return int The total number of unindexed links. */ public function get_limited_unindexed_count( $limit = false ) { return $this->get_total_unindexed(); } /** * Returns the number of texts that will be indexed in a single link indexing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_link_indexing_limit' - Allow filtering the number of texts indexed during each link indexing pass. * * @param int $limit The maximum number of texts indexed. */ return \apply_filters( 'wpseo_link_indexing_limit', 5 ); } /** * Returns objects to be indexed. * * @return array Objects to be indexed, should be an array of objects with object_id, object_type and content. */ abstract protected function get_objects(); } src/actions/indexing/indexing-prepare-action.php000064400000001264147206602470016040 0ustar00indexing_helper = $indexing_helper; } /** * Prepares the indexing routine. * * @return void */ public function prepare() { $this->indexing_helper->prepare(); } } src/actions/indexing/indexable-term-indexation-action.php000064400000012163147206602470017637 0ustar00taxonomy = $taxonomy; $this->repository = $repository; $this->wpdb = $wpdb; $this->version = $builder_versions->get_latest_version_for_type( 'term' ); } /** * Creates indexables for unindexed terms. * * @return Indexable[] The created indexables. */ public function index() { $query = $this->get_select_query( $this->get_limit() ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Function get_select_query returns a prepared query. $term_ids = ( $query === '' ) ? [] : $this->wpdb->get_col( $query ); $indexables = []; foreach ( $term_ids as $term_id ) { $indexables[] = $this->repository->find_by_id_and_type( (int) $term_id, 'term' ); } if ( \count( $indexables ) > 0 ) { \delete_transient( static::UNINDEXED_COUNT_TRANSIENT ); \delete_transient( static::UNINDEXED_LIMITED_COUNT_TRANSIENT ); } return $indexables; } /** * Returns the number of terms that will be indexed in a single indexing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_term_indexation_limit' - Allow filtering the number of terms indexed during each indexing pass. * * @param int $limit The maximum number of terms indexed. */ $limit = \apply_filters( 'wpseo_term_indexation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } /** * Builds a query for counting the number of unindexed terms. * * @return string The prepared query string. */ protected function get_count_query() { $indexable_table = Model::get_table_name( 'Indexable' ); $taxonomy_table = $this->wpdb->term_taxonomy; $public_taxonomies = $this->taxonomy->get_indexable_taxonomies(); if ( empty( $public_taxonomies ) ) { return ''; } $taxonomies_placeholders = \implode( ', ', \array_fill( 0, \count( $public_taxonomies ), '%s' ) ); $replacements = [ $this->version ]; \array_push( $replacements, ...$public_taxonomies ); // Warning: If this query is changed, makes sure to update the query in get_count_query as well. return $this->wpdb->prepare( " SELECT COUNT(term_id) FROM {$taxonomy_table} AS T LEFT JOIN $indexable_table AS I ON T.term_id = I.object_id AND I.object_type = 'term' AND I.version = %d WHERE I.object_id IS NULL AND taxonomy IN ($taxonomies_placeholders)", $replacements ); } /** * Builds a query for selecting the ID's of unindexed terms. * * @param bool $limit The maximum number of term IDs to return. * * @return string The prepared query string. */ protected function get_select_query( $limit = false ) { $indexable_table = Model::get_table_name( 'Indexable' ); $taxonomy_table = $this->wpdb->term_taxonomy; $public_taxonomies = $this->taxonomy->get_indexable_taxonomies(); if ( empty( $public_taxonomies ) ) { return ''; } $placeholders = \implode( ', ', \array_fill( 0, \count( $public_taxonomies ), '%s' ) ); $replacements = [ $this->version ]; \array_push( $replacements, ...$public_taxonomies ); $limit_query = ''; if ( $limit ) { $limit_query = 'LIMIT %d'; $replacements[] = $limit; } // Warning: If this query is changed, makes sure to update the query in get_count_query as well. return $this->wpdb->prepare( " SELECT term_id FROM {$taxonomy_table} AS T LEFT JOIN $indexable_table AS I ON T.term_id = I.object_id AND I.object_type = 'term' AND I.version = %d WHERE I.object_id IS NULL AND taxonomy IN ($placeholders) $limit_query", $replacements ); } } src/actions/indexing/indexable-post-type-archive-indexation-action.php000064400000013737147206602470022263 0ustar00repository = $repository; $this->builder = $builder; $this->post_type = $post_type; $this->version = $versions->get_latest_version_for_type( 'post-type-archive' ); } /** * Returns the total number of unindexed post type archives. * * @param int $limit Limit the number of counted objects. * * @return int The total number of unindexed post type archives. */ public function get_total_unindexed( $limit = false ) { $transient = \get_transient( static::UNINDEXED_COUNT_TRANSIENT ); if ( $transient !== false ) { return (int) $transient; } \set_transient( static::UNINDEXED_COUNT_TRANSIENT, 0, \DAY_IN_SECONDS ); $result = \count( $this->get_unindexed_post_type_archives( $limit ) ); \set_transient( static::UNINDEXED_COUNT_TRANSIENT, $result, \DAY_IN_SECONDS ); /** * Action: 'wpseo_indexables_unindexed_calculated' - sets an option to timestamp when there are no unindexed indexables left. * * @internal */ \do_action( 'wpseo_indexables_unindexed_calculated', static::UNINDEXED_COUNT_TRANSIENT, $result ); return $result; } /** * Creates indexables for post type archives. * * @return Indexable[] The created indexables. */ public function index() { $unindexed_post_type_archives = $this->get_unindexed_post_type_archives( $this->get_limit() ); $indexables = []; foreach ( $unindexed_post_type_archives as $post_type_archive ) { $indexables[] = $this->builder->build_for_post_type_archive( $post_type_archive ); } if ( \count( $indexables ) > 0 ) { \delete_transient( static::UNINDEXED_COUNT_TRANSIENT ); } return $indexables; } /** * Returns the number of post type archives that will be indexed in a single indexing pass. * * @return int The limit. */ public function get_limit() { /** * Filter 'wpseo_post_type_archive_indexation_limit' - Allow filtering the number of posts indexed during each indexing pass. * * @param int $limit The maximum number of posts indexed. */ $limit = \apply_filters( 'wpseo_post_type_archive_indexation_limit', 25 ); if ( ! \is_int( $limit ) || $limit < 1 ) { $limit = 25; } return $limit; } /** * Retrieves the list of post types for which no indexable for its archive page has been made yet. * * @param int|false $limit Limit the number of retrieved indexables to this number. * * @return array The list of post types for which no indexable for its archive page has been made yet. */ protected function get_unindexed_post_type_archives( $limit = false ) { $post_types_with_archive_pages = $this->get_post_types_with_archive_pages(); $indexed_post_types = $this->get_indexed_post_type_archives(); $unindexed_post_types = \array_diff( $post_types_with_archive_pages, $indexed_post_types ); if ( $limit ) { return \array_slice( $unindexed_post_types, 0, $limit ); } return $unindexed_post_types; } /** * Returns the names of all the post types that have archive pages. * * @return array The list of names of all post types that have archive pages. */ protected function get_post_types_with_archive_pages() { // We only want to index archive pages of public post types that have them. $post_types_with_archive = $this->post_type->get_indexable_post_archives(); // We only need the post type names, not the objects. $post_types = []; foreach ( $post_types_with_archive as $post_type_with_archive ) { $post_types[] = $post_type_with_archive->name; } return $post_types; } /** * Retrieves the list of post type names for which an archive indexable exists. * * @return array The list of names of post types with unindexed archive pages. */ protected function get_indexed_post_type_archives() { $results = $this->repository->query() ->select( 'object_sub_type' ) ->where( 'object_type', 'post-type-archive' ) ->where_equal( 'version', $this->version ) ->find_array(); if ( $results === false ) { return []; } $callback = static function ( $result ) { return $result['object_sub_type']; }; return \array_map( $callback, $results ); } /** * Returns a limited number of unindexed posts. * * @param int $limit Limit the maximum number of unindexed posts that are counted. * * @return int|false The limited number of unindexed posts. False if the query fails. */ public function get_limited_unindexed_count( $limit ) { return $this->get_total_unindexed( $limit ); } } src/actions/indexing/indexing-complete-action.php000064400000001227147206602470016211 0ustar00indexing_helper = $indexing_helper; } /** * Wraps up the indexing process. * * @return void */ public function complete() { $this->indexing_helper->complete(); } } src/actions/indexing/indexable-general-indexation-action.php000064400000007601147206602470020306 0ustar00indexable_repository = $indexable_repository; } /** * Returns the total number of unindexed objects. * * @return int The total number of unindexed objects. */ public function get_total_unindexed() { $transient = \get_transient( static::UNINDEXED_COUNT_TRANSIENT ); if ( $transient !== false ) { return (int) $transient; } $indexables_to_create = $this->query(); $result = \count( $indexables_to_create ); \set_transient( static::UNINDEXED_COUNT_TRANSIENT, $result, \DAY_IN_SECONDS ); /** * Action: 'wpseo_indexables_unindexed_calculated' - sets an option to timestamp when there are no unindexed indexables left. * * @internal */ \do_action( 'wpseo_indexables_unindexed_calculated', static::UNINDEXED_COUNT_TRANSIENT, $result ); return $result; } /** * Returns a limited number of unindexed posts. * * @param int $limit Limit the maximum number of unindexed posts that are counted. * * @return int|false The limited number of unindexed posts. False if the query fails. */ public function get_limited_unindexed_count( $limit ) { return $this->get_total_unindexed(); } /** * Creates indexables for unindexed system pages, the date archive, and the homepage. * * @return Indexable[] The created indexables. */ public function index() { $indexables = []; $indexables_to_create = $this->query(); if ( isset( $indexables_to_create['404'] ) ) { $indexables[] = $this->indexable_repository->find_for_system_page( '404' ); } if ( isset( $indexables_to_create['search'] ) ) { $indexables[] = $this->indexable_repository->find_for_system_page( 'search-result' ); } if ( isset( $indexables_to_create['date_archive'] ) ) { $indexables[] = $this->indexable_repository->find_for_date_archive(); } if ( isset( $indexables_to_create['home_page'] ) ) { $indexables[] = $this->indexable_repository->find_for_home_page(); } \set_transient( static::UNINDEXED_COUNT_TRANSIENT, 0, \DAY_IN_SECONDS ); return $indexables; } /** * Returns the number of objects that will be indexed in a single indexing pass. * * @return int The limit. */ public function get_limit() { // This matches the maximum number of indexables created by this action. return 4; } /** * Check which indexables already exist and return the values of the ones to create. * * @return array The indexable types to create. */ private function query() { $indexables_to_create = []; if ( ! $this->indexable_repository->find_for_system_page( '404', false ) ) { $indexables_to_create['404'] = true; } if ( ! $this->indexable_repository->find_for_system_page( 'search-result', false ) ) { $indexables_to_create['search'] = true; } if ( ! $this->indexable_repository->find_for_date_archive( false ) ) { $indexables_to_create['date_archive'] = true; } $need_home_page_indexable = ( (int) \get_option( 'page_on_front' ) === 0 && \get_option( 'show_on_front' ) === 'posts' ); if ( $need_home_page_indexable && ! $this->indexable_repository->find_for_home_page( false ) ) { $indexables_to_create['home_page'] = true; } return $indexables_to_create; } } src/actions/alert-dismissal-action.php000064400000012576147206602470014077 0ustar00user = $user; } /** * Dismisses an alert. * * @param string $alert_identifier Alert identifier. * * @return bool Whether the dismiss was successful or not. */ public function dismiss( $alert_identifier ) { $user_id = $this->user->get_current_user_id(); if ( $user_id === 0 ) { return false; } if ( $this->is_allowed( $alert_identifier ) === false ) { return false; } $dismissed_alerts = $this->get_dismissed_alerts( $user_id ); if ( $dismissed_alerts === false ) { return false; } if ( \array_key_exists( $alert_identifier, $dismissed_alerts ) === true ) { // The alert is already dismissed. return true; } // Add this alert to the dismissed alerts. $dismissed_alerts[ $alert_identifier ] = true; // Save. return $this->user->update_meta( $user_id, static::USER_META_KEY, $dismissed_alerts ) !== false; } /** * Resets an alert. * * @param string $alert_identifier Alert identifier. * * @return bool Whether the reset was successful or not. */ public function reset( $alert_identifier ) { $user_id = $this->user->get_current_user_id(); if ( $user_id === 0 ) { return false; } if ( $this->is_allowed( $alert_identifier ) === false ) { return false; } $dismissed_alerts = $this->get_dismissed_alerts( $user_id ); if ( $dismissed_alerts === false ) { return false; } $amount_of_dismissed_alerts = \count( $dismissed_alerts ); if ( $amount_of_dismissed_alerts === 0 ) { // No alerts: nothing to reset. return true; } if ( \array_key_exists( $alert_identifier, $dismissed_alerts ) === false ) { // Alert not found: nothing to reset. return true; } if ( $amount_of_dismissed_alerts === 1 ) { // The 1 remaining dismissed alert is the alert to reset: delete the alerts user meta row. return $this->user->delete_meta( $user_id, static::USER_META_KEY, $dismissed_alerts ); } // Remove this alert from the dismissed alerts. unset( $dismissed_alerts[ $alert_identifier ] ); // Save. return $this->user->update_meta( $user_id, static::USER_META_KEY, $dismissed_alerts ) !== false; } /** * Returns if an alert is dismissed or not. * * @param string $alert_identifier Alert identifier. * * @return bool Whether the alert has been dismissed. */ public function is_dismissed( $alert_identifier ) { $user_id = $this->user->get_current_user_id(); if ( $user_id === 0 ) { return false; } if ( $this->is_allowed( $alert_identifier ) === false ) { return false; } $dismissed_alerts = $this->get_dismissed_alerts( $user_id ); if ( $dismissed_alerts === false ) { return false; } return \array_key_exists( $alert_identifier, $dismissed_alerts ); } /** * Returns an object with all alerts dismissed by current user. * * @return array|false An array with the keys of all Alerts that have been dismissed * by the current user or `false`. */ public function all_dismissed() { $user_id = $this->user->get_current_user_id(); if ( $user_id === 0 ) { return false; } $dismissed_alerts = $this->get_dismissed_alerts( $user_id ); if ( $dismissed_alerts === false ) { return false; } return $dismissed_alerts; } /** * Returns if an alert is allowed or not. * * @param string $alert_identifier Alert identifier. * * @return bool Whether the alert is allowed. */ public function is_allowed( $alert_identifier ) { return \in_array( $alert_identifier, $this->get_allowed_dismissable_alerts(), true ); } /** * Retrieves the dismissed alerts. * * @param int $user_id User ID. * * @return string[]|false The dismissed alerts. False for an invalid $user_id. */ protected function get_dismissed_alerts( $user_id ) { $dismissed_alerts = $this->user->get_meta( $user_id, static::USER_META_KEY, true ); if ( $dismissed_alerts === false ) { // Invalid user ID. return false; } if ( $dismissed_alerts === '' ) { /* * When no database row exists yet, an empty string is returned because of the `single` parameter. * We do want a single result returned, but the default should be an empty array instead. */ return []; } return $dismissed_alerts; } /** * Retrieves the allowed dismissable alerts. * * @return string[] The allowed dismissable alerts. */ protected function get_allowed_dismissable_alerts() { /** * Filter: 'wpseo_allowed_dismissable_alerts' - List of allowed dismissable alerts. * * @param string[] $allowed_dismissable_alerts Allowed dismissable alerts list. */ $allowed_dismissable_alerts = \apply_filters( 'wpseo_allowed_dismissable_alerts', [] ); if ( \is_array( $allowed_dismissable_alerts ) === false ) { return []; } // Only allow strings. $allowed_dismissable_alerts = \array_filter( $allowed_dismissable_alerts, 'is_string' ); // Filter unique and reorder indices. $allowed_dismissable_alerts = \array_values( \array_unique( $allowed_dismissable_alerts ) ); return $allowed_dismissable_alerts; } } src/actions/addon-installation/addon-install-action.php000064400000007562147206602470017316 0ustar00addon_manager = $addon_manager; $this->require_file_helper = $require_file_helper; } /** * Installs the plugin based on the given slug. * * @param string $plugin_slug The plugin slug to install. * @param string $download_url The plugin download URL. * * @return bool True when install is successful. * * @throws Addon_Already_Installed_Exception When the addon is already installed. * @throws Addon_Installation_Error_Exception When the installation encounters an error. * @throws User_Cannot_Install_Plugins_Exception When the user does not have the permissions to install plugins. */ public function install_addon( $plugin_slug, $download_url ) { if ( ! \current_user_can( 'install_plugins' ) ) { throw new User_Cannot_Install_Plugins_Exception( $plugin_slug ); } if ( $this->is_installed( $plugin_slug ) ) { throw new Addon_Already_Installed_Exception( $plugin_slug ); } $this->load_wordpress_classes(); $install_result = $this->install( $download_url ); if ( \is_wp_error( $install_result ) ) { throw new Addon_Installation_Error_Exception( $install_result->get_error_message() ); } return $install_result; } /** * Requires the files needed from WordPress itself. * * @codeCoverageIgnore * * @return void */ protected function load_wordpress_classes() { if ( ! \class_exists( 'WP_Upgrader' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); } if ( ! \class_exists( 'Plugin_Upgrader' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php' ); } if ( ! \class_exists( 'WP_Upgrader_Skin' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php' ); } if ( ! \function_exists( 'get_plugin_data' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/plugin.php' ); } if ( ! \function_exists( 'request_filesystem_credentials' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/file.php' ); } } /** * Checks is a plugin is installed. * * @param string $plugin_slug The plugin to check. * * @return bool True when plugin is installed. */ protected function is_installed( $plugin_slug ) { return $this->addon_manager->get_plugin_file( $plugin_slug ) !== false; } /** * Runs the installation by using the WordPress installation routine. * * @codeCoverageIgnore Contains WordPress specific logic. * * @param string $plugin_download The url to the download. * * @return bool|WP_Error True when success, WP_Error when something went wrong. */ protected function install( $plugin_download ) { $plugin_upgrader = new Plugin_Upgrader(); return $plugin_upgrader->install( $plugin_download ); } } src/actions/addon-installation/addon-activate-action.php000064400000004522147206602470017441 0ustar00addon_manager = $addon_manager; $this->require_file_helper = $require_file_helper; } /** * Activates the plugin based on the given plugin file. * * @param string $plugin_slug The plugin slug to get download url for. * * @return bool True when activation is successful. * * @throws Addon_Activation_Error_Exception Exception when the activation encounters an error. * @throws User_Cannot_Activate_Plugins_Exception Exception when the user is not allowed to activate. */ public function activate_addon( $plugin_slug ) { if ( ! \current_user_can( 'activate_plugins' ) ) { throw new User_Cannot_Activate_Plugins_Exception(); } if ( $this->addon_manager->is_installed( $plugin_slug ) ) { return true; } $this->load_wordpress_classes(); $plugin_file = $this->addon_manager->get_plugin_file( $plugin_slug ); $activation_result = \activate_plugin( $plugin_file ); if ( $activation_result !== null && \is_wp_error( $activation_result ) ) { throw new Addon_Activation_Error_Exception( $activation_result->get_error_message() ); } return true; } /** * Requires the files needed from WordPress itself. * * @codeCoverageIgnore Only loads a WordPress file. * * @return void */ protected function load_wordpress_classes() { if ( ! \function_exists( 'get_plugins' ) ) { $this->require_file_helper->require_file_once( \ABSPATH . 'wp-admin/includes/plugin.php' ); } } } src/actions/configuration/first-time-configuration-action.php000064400000021147147206602470020573 0ustar00options_helper = $options_helper; $this->social_profiles_helper = $social_profiles_helper; } /** * Stores the values for the site representation. * * @param array $params The values to store. * * @return object The response object. */ public function set_site_representation( $params ) { $failures = []; $old_values = $this->get_old_values( self::SITE_REPRESENTATION_FIELDS ); foreach ( self::SITE_REPRESENTATION_FIELDS as $field_name ) { if ( isset( $params[ $field_name ] ) ) { $result = $this->options_helper->set( $field_name, $params[ $field_name ] ); if ( ! $result ) { $failures[] = $field_name; } } } // Delete cached logos in the db. $this->options_helper->set( 'company_logo_meta', false ); $this->options_helper->set( 'person_logo_meta', false ); /** * Action: 'wpseo_post_update_site_representation' - Allows for Hiive event tracking. * * @param array $params The new values of the options. * @param array $old_values The old values of the options. * @param array $failures The options that failed to be saved. * * @internal */ \do_action( 'wpseo_ftc_post_update_site_representation', $params, $old_values, $failures ); if ( \count( $failures ) === 0 ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not save some options in the database', 'failures' => $failures, ]; } /** * Stores the values for the social profiles. * * @param array $params The values to store. * * @return object The response object. */ public function set_social_profiles( $params ) { $old_values = $this->get_old_values( \array_keys( $this->social_profiles_helper->get_organization_social_profile_fields() ) ); $failures = $this->social_profiles_helper->set_organization_social_profiles( $params ); /** * Action: 'wpseo_post_update_social_profiles' - Allows for Hiive event tracking. * * @param array $params The new values of the options. * @param array $old_values The old values of the options. * @param array $failures The options that failed to be saved. * * @internal */ \do_action( 'wpseo_ftc_post_update_social_profiles', $params, $old_values, $failures ); if ( empty( $failures ) ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 200, 'error' => 'Could not save some options in the database', 'failures' => $failures, ]; } /** * Stores the values for the social profiles. * * @param array $params The values to store. * * @return object The response object. */ public function set_person_social_profiles( $params ) { $social_profiles = \array_filter( $params, static function ( $key ) { return $key !== 'user_id'; }, \ARRAY_FILTER_USE_KEY ); $failures = $this->social_profiles_helper->set_person_social_profiles( $params['user_id'], $social_profiles ); if ( \count( $failures ) === 0 ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 200, 'error' => 'Could not save some options in the database', 'failures' => $failures, ]; } /** * Gets the values for the social profiles. * * @param int $user_id The person ID. * * @return object The response object. */ public function get_person_social_profiles( $user_id ) { return (object) [ 'success' => true, 'status' => 200, 'social_profiles' => $this->social_profiles_helper->get_person_social_profiles( $user_id ), ]; } /** * Stores the values to enable/disable tracking. * * @param array $params The values to store. * * @return object The response object. */ public function set_enable_tracking( $params ) { $success = true; $option_value = $this->options_helper->get( 'tracking' ); if ( $option_value !== $params['tracking'] ) { $this->options_helper->set( 'toggled_tracking', true ); $success = $this->options_helper->set( 'tracking', $params['tracking'] ); } /** * Action: 'wpseo_post_update_enable_tracking' - Allows for Hiive event tracking. * * @param array $new_value The new value. * @param array $old_value The old value. * @param bool $failure Whether the option failed to be stored. * * @internal */ // $success is negated to be aligned with the other two actions which pass $failures. \do_action( 'wpseo_ftc_post_update_enable_tracking', $params['tracking'], $option_value, ! $success ); if ( $success ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not save the option in the database', ]; } /** * Checks if the current user has the capability a specific user. * * @param int $user_id The id of the user to be edited. * * @return object The response object. */ public function check_capability( $user_id ) { if ( $this->can_edit_profile( $user_id ) ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 403, ]; } /** * Stores the first time configuration state. * * @param array $params The values to store. * * @return object The response object. */ public function save_configuration_state( $params ) { // If the finishedSteps param is not present in the REST request, it's a malformed request. if ( ! isset( $params['finishedSteps'] ) ) { return (object) [ 'success' => false, 'status' => 400, 'error' => 'Bad request', ]; } // Sanitize input. $finished_steps = \array_map( '\sanitize_text_field', \wp_unslash( $params['finishedSteps'] ) ); $success = $this->options_helper->set( 'configuration_finished_steps', $finished_steps ); if ( ! $success ) { return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not save the option in the database', ]; } // If all the five steps of the configuration have been completed, set first_time_install option to false. if ( \count( $params['finishedSteps'] ) === 3 ) { $this->options_helper->set( 'first_time_install', false ); } return (object) [ 'success' => true, 'status' => 200, ]; } /** * Gets the first time configuration state. * * @return object The response object. */ public function get_configuration_state() { $configuration_option = $this->options_helper->get( 'configuration_finished_steps' ); if ( ! \is_null( $configuration_option ) ) { return (object) [ 'success' => true, 'status' => 200, 'data' => $configuration_option, ]; } return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not get data from the database', ]; } /** * Checks if the current user has the capability to edit a specific user. * * @param int $person_id The id of the person to edit. * * @return bool */ private function can_edit_profile( $person_id ) { return \current_user_can( 'edit_user', $person_id ); } /** * Gets the old values for the given fields. * * @param array $fields_names The fields to get the old values for. * * @return array The old values. */ private function get_old_values( array $fields_names ): array { $old_values = []; foreach ( $fields_names as $field_name ) { $old_values[ $field_name ] = $this->options_helper->get( $field_name ); } return $old_values; } } src/actions/indexables/indexable-head-action.php000064400000007417147206602470015750 0ustar00meta_surface = $meta_surface; } /** * Retrieves the head for a url. * * @param string $url The url to get the head for. * * @return object Object with head and status properties. */ public function for_url( $url ) { if ( $url === \trailingslashit( \get_home_url() ) ) { return $this->with_404_fallback( $this->with_cache( 'home_page' ) ); } return $this->with_404_fallback( $this->with_cache( 'url', $url ) ); } /** * Retrieves the head for a post. * * @param int $id The id. * * @return object Object with head and status properties. */ public function for_post( $id ) { return $this->with_404_fallback( $this->with_cache( 'post', $id ) ); } /** * Retrieves the head for a term. * * @param int $id The id. * * @return object Object with head and status properties. */ public function for_term( $id ) { return $this->with_404_fallback( $this->with_cache( 'term', $id ) ); } /** * Retrieves the head for an author. * * @param int $id The id. * * @return object Object with head and status properties. */ public function for_author( $id ) { return $this->with_404_fallback( $this->with_cache( 'author', $id ) ); } /** * Retrieves the head for a post type archive. * * @param int $type The id. * * @return object Object with head and status properties. */ public function for_post_type_archive( $type ) { return $this->with_404_fallback( $this->with_cache( 'post_type_archive', $type ) ); } /** * Retrieves the head for the posts page. * * @return object Object with head and status properties. */ public function for_posts_page() { return $this->with_404_fallback( $this->with_cache( 'posts_page' ) ); } /** * Retrieves the head for the 404 page. Always sets the status to 404. * * @return object Object with head and status properties. */ public function for_404() { $meta = $this->with_cache( '404' ); if ( ! $meta ) { return (object) [ 'html' => '', 'json' => [], 'status' => 404, ]; } $head = $meta->get_head(); return (object) [ 'html' => $head->html, 'json' => $head->json, 'status' => 404, ]; } /** * Retrieves the head for a successful page load. * * @param object $head The calculated Yoast head. * * @return object The presentations and status code 200. */ protected function for_200( $head ) { return (object) [ 'html' => $head->html, 'json' => $head->json, 'status' => 200, ]; } /** * Returns the head with 404 fallback * * @param Meta|false $meta The meta object. * * @return object The head response. */ protected function with_404_fallback( $meta ) { if ( $meta === false ) { return $this->for_404(); } else { return $this->for_200( $meta->get_head() ); } } /** * Retrieves a value from the meta surface cached. * * @param string $type The type of value to retrieve. * @param string $argument Optional. The argument for the value. * * @return Meta The meta object. */ protected function with_cache( $type, $argument = '' ) { if ( ! isset( $this->cache[ $type ][ $argument ] ) ) { $this->cache[ $type ][ $argument ] = \call_user_func( [ $this->meta_surface, "for_$type" ], $argument ); } return $this->cache[ $type ][ $argument ]; } } src/actions/semrush/semrush-login-action.php000064400000002360147206602470015252 0ustar00client = $client; } /** * Authenticates with SEMrush to request the necessary tokens. * * @param string $code The authentication code to use to request a token with. * * @return object The response object. */ public function authenticate( $code ) { // Code has already been validated at this point. No need to do that again. try { $tokens = $this->client->request_tokens( $code ); return (object) [ 'tokens' => $tokens->to_array(), 'status' => 200, ]; } catch ( Authentication_Failed_Exception $e ) { return $e->get_response(); } } /** * Performs the login request, if necessary. * * @return void */ public function login() { if ( $this->client->has_valid_tokens() ) { return; } // Prompt with login screen. } } src/actions/semrush/semrush-options-action.php000064400000002140147206602470015631 0ustar00options_helper = $options_helper; } /** * Stores SEMrush country code in the WPSEO options. * * @param string $country_code The country code to store. * * @return object The response object. */ public function set_country_code( $country_code ) { // The country code has already been validated at this point. No need to do that again. $success = $this->options_helper->set( 'semrush_country_code', $country_code ); if ( $success ) { return (object) [ 'success' => true, 'status' => 200, ]; } return (object) [ 'success' => false, 'status' => 500, 'error' => 'Could not save option in the database', ]; } } src/actions/semrush/semrush-phrases-action.php000064400000004441147206602470015611 0ustar00client = $client; } /** * Gets the related keyphrases and data based on the passed keyphrase and database country code. * * @param string $keyphrase The keyphrase to search for. * @param string $database The database's country code. * * @return object The response object. */ public function get_related_keyphrases( $keyphrase, $database ) { try { $transient_key = \sprintf( static::TRANSIENT_CACHE_KEY, $keyphrase, $database ); $transient = \get_transient( $transient_key ); if ( $transient !== false && isset( $transient['data']['columnNames'] ) && \count( $transient['data']['columnNames'] ) === 5 ) { return $this->to_result_object( $transient ); } $options = [ 'params' => [ 'phrase' => $keyphrase, 'database' => $database, 'export_columns' => 'Ph,Nq,Td,In,Kd', 'display_limit' => 10, 'display_offset' => 0, 'display_sort' => 'nq_desc', 'display_filter' => '%2B|Nq|Lt|1000', ], ]; $results = $this->client->get( self::KEYPHRASES_URL, $options ); \set_transient( $transient_key, $results, \DAY_IN_SECONDS ); return $this->to_result_object( $results ); } catch ( Exception $e ) { return (object) [ 'error' => $e->getMessage(), 'status' => $e->getCode(), ]; } } /** * Converts the passed dataset to an object. * * @param array $result The result dataset to convert to an object. * * @return object The result object. */ protected function to_result_object( $result ) { return (object) [ 'results' => $result['data'], 'status' => $result['status'], ]; } } src/memoizers/meta-tags-context-memoizer.php000064400000012063147206602470015261 0ustar00blocks = $blocks; $this->current_page = $current_page; $this->repository = $repository; $this->context_prototype = $context_prototype; $this->presentation_memoizer = $presentation_memoizer; } /** * Gets the meta tags context for the current page. * This function is memoized so every call will return the same result. * * @return Meta_Tags_Context The meta tags context. */ public function for_current_page() { if ( ! isset( $this->cache['current_page'] ) ) { // First reset the query to ensure we actually have the current page. global $wp_query, $post; $old_wp_query = $wp_query; $old_post = $post; // phpcs:ignore WordPress.WP.DiscouragedFunctions.wp_reset_query_wp_reset_query -- Reason: The recommended function, wp_reset_postdata, doesn't reset wp_query. \wp_reset_query(); $indexable = $this->repository->for_current_page(); $page_type = $this->current_page->get_page_type(); if ( $page_type === 'Fallback' ) { // Do not cache the context if it's a fallback page. // The likely cause for this is that this function was called before the query was loaded. $context = $this->get( $indexable, $page_type ); // Restore the previous query. // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the query. $GLOBALS['wp_query'] = $old_wp_query; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the post. $GLOBALS['post'] = $old_post; return $context; } $this->cache['current_page'] = $this->get( $indexable, $page_type ); // Restore the previous query. // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the query. $GLOBALS['wp_query'] = $old_wp_query; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the post. $GLOBALS['post'] = $old_post; } return $this->cache['current_page']; } /** * Gets the meta tags context given an indexable. * This function is memoized by the indexable so every call with the same indexable will yield the same result. * * @param Indexable $indexable The indexable. * @param string $page_type The page type. * * @return Meta_Tags_Context The meta tags context. */ public function get( Indexable $indexable, $page_type ) { if ( ! isset( $this->cache[ $indexable->id ] ) ) { $blocks = []; $post = null; if ( $indexable->object_type === 'post' ) { $post = \get_post( $indexable->object_id ); $blocks = $this->blocks->get_all_blocks_from_content( $post->post_content ); } $context = $this->context_prototype->of( [ 'indexable' => $indexable, 'blocks' => $blocks, 'post' => $post, 'page_type' => $page_type, ] ); $context->presentation = $this->presentation_memoizer->get( $indexable, $context, $page_type ); $this->cache[ $indexable->id ] = $context; } return $this->cache[ $indexable->id ]; } /** * Clears the memoization of either a specific indexable or all indexables. * * @param Indexable|int|string|null $indexable Optional. The indexable or indexable id to clear the memoization of. * * @return void */ public function clear( $indexable = null ) { if ( $indexable instanceof Indexable ) { unset( $this->cache[ $indexable->id ] ); return; } if ( $indexable !== null ) { unset( $this->cache[ $indexable ] ); return; } $this->cache = []; } } src/memoizers/presentation-memoizer.php000064400000004542147206602470014433 0ustar00container = $service_container; } /** * Gets the presentation of an indexable for a specific page type. * This function is memoized by the indexable so every call with the same indexable will yield the same result. * * @param Indexable $indexable The indexable to get a presentation of. * @param Meta_Tags_Context $context The current meta tags context. * @param string $page_type The page type. * * @return Indexable_Presentation The indexable presentation. */ public function get( Indexable $indexable, Meta_Tags_Context $context, $page_type ) { if ( ! isset( $this->cache[ $indexable->id ] ) ) { $presentation = $this->container->get( "Yoast\WP\SEO\Presentations\Indexable_{$page_type}_Presentation", ContainerInterface::NULL_ON_INVALID_REFERENCE ); if ( ! $presentation ) { $presentation = $this->container->get( Indexable_Presentation::class ); } $context->presentation = $presentation->of( [ 'model' => $indexable, 'context' => $context, ] ); $this->cache[ $indexable->id ] = $context->presentation; } return $this->cache[ $indexable->id ]; } /** * Clears the memoization of either a specific indexable or all indexables. * * @param Indexable|int|null $indexable Optional. The indexable or indexable id to clear the memoization of. * * @return void */ public function clear( $indexable = null ) { if ( $indexable instanceof Indexable ) { unset( $this->cache[ $indexable->id ] ); return; } if ( \is_int( $indexable ) ) { unset( $this->cache[ $indexable ] ); return; } if ( $indexable === null ) { $this->cache = []; } } } src/user-profiles-additions/user-interface/user-profiles-additions-ui.php000064400000004330147206602470022731 0ustar00asset_manager = $asset_manager; $this->product_helper = $product_helper; } /** * Returns the conditionals based in which this loadable should be active. * * @return array */ public static function get_conditionals() { return [ User_Profile_Conditional::class ]; } /** * Initializes the integration. * * This is the place to register hooks and filters. * * @return void */ public function register_hooks() { \add_action( 'show_user_profile', [ $this, 'add_hook_to_user_profile' ] ); \add_action( 'edit_user_profile', [ $this, 'add_hook_to_user_profile' ] ); } /** * Enqueues the assets needed for this integration. * * @return void */ public function enqueue_assets() { if ( $this->product_helper->is_premium() ) { $this->asset_manager->enqueue_style( 'introductions' ); } } /** * Add the inputs needed for SEO values to the User Profile page. * * @param WP_User $user User instance to output for. * * @return void */ public function add_hook_to_user_profile( $user ) { $this->enqueue_assets(); echo '
    '; /** * Fires in the user profile. * * @internal * * @param WP_User $user The current WP_User object. */ \do_action( 'wpseo_user_profile_additions', $user ); echo '
    '; } } src/values/images.php000064400000005420147206602470010621 0ustar00image = $image; $this->url = $url; } /** * Adds an image to the list by image ID. * * @param int $image_id The image ID to add. * * @return void */ public function add_image_by_id( $image_id ) { $image = $this->image->get_attachment_image_source( $image_id, $this->image_size ); if ( $image ) { $this->add_image( $image ); } } /** * Adds an image to the list by image ID. * * @param string $image_meta JSON encoded image meta. * * @return void */ public function add_image_by_meta( $image_meta ) { $this->add_image( (array) \json_decode( $image_meta ) ); } /** * Return the images array. * * @return array The images. */ public function get_images() { return $this->images; } /** * Check whether we have images or not. * * @return bool True if we have images, false if we don't. */ public function has_images() { return ! empty( $this->images ); } /** * Adds an image based on a given URL. * * @param string $url The given URL. * * @return number|null Returns the found image ID if it exists. Otherwise -1. * If the URL is empty we return null. */ public function add_image_by_url( $url ) { if ( empty( $url ) ) { return null; } $image_id = $this->image->get_attachment_by_url( $url ); if ( $image_id ) { $this->add_image_by_id( $image_id ); return $image_id; } $this->add_image( $url ); return -1; } /** * Adds an image to the list of images. * * @param string|array $image Image array. * * @return void */ public function add_image( $image ) { if ( \is_string( $image ) ) { $image = [ 'url' => $image ]; } if ( ! \is_array( $image ) || empty( $image['url'] ) || ! \is_string( $image['url'] ) ) { return; } if ( $this->url->is_relative( $image['url'] ) && $image['url'][0] === '/' ) { $image['url'] = $this->url->build_absolute_url( $image['url'] ); } if ( \array_key_exists( $image['url'], $this->images ) ) { return; } $this->images[ $image['url'] ] = $image; } } src/values/oauth/oauth-token.php000064400000006223147206602470012734 0ustar00access_token = $access_token; if ( empty( $refresh_token ) ) { throw new Empty_Property_Exception( 'refresh_token' ); } $this->refresh_token = $refresh_token; if ( empty( $expires ) ) { throw new Empty_Property_Exception( 'expires' ); } $this->expires = $expires; if ( \is_null( $has_expired ) ) { throw new Empty_Property_Exception( 'has_expired' ); } $this->has_expired = $has_expired; $this->created_at = $created_at; $this->error_count = $error_count; } /** * Creates a new instance based on the passed response. * * @param AccessTokenInterface $response The response object to create a new instance from. * * @return OAuth_Token The token object. * * @throws Empty_Property_Exception Exception thrown if a token property is empty. */ public static function from_response( AccessTokenInterface $response ) { return new self( $response->getToken(), $response->getRefreshToken(), $response->getExpires(), $response->hasExpired(), \time() ); } /** * Determines whether or not the token has expired. * * @return bool Whether or not the token has expired. */ public function has_expired() { return ( \time() >= $this->expires ) || $this->has_expired === true; } /** * Converts the object to an array. * * @return array The converted object. */ public function to_array() { return [ 'access_token' => $this->access_token, 'refresh_token' => $this->refresh_token, 'expires' => $this->expires, 'has_expired' => $this->has_expired(), 'created_at' => $this->created_at, 'error_count' => $this->error_count, ]; } } src/values/robots/user-agent-list.php000064400000003410147206602470013704 0ustar00user_agent_list = []; } /** * Checks if given user_agent is already registered. * * @param string $user_agent The user agent identifier. * * @return bool */ public function has_user_agent( $user_agent ) { return \array_key_exists( $user_agent, $this->user_agent_list ); } /** * Gets the user agent object. If it is not yet registered it creates it. * * @param string $user_agent The user agent identifier. * * @return User_Agent */ public function get_user_agent( $user_agent ) { if ( $this->has_user_agent( $user_agent ) ) { return $this->user_agent_list[ $user_agent ]; } $this->user_agent_list[ $user_agent ] = new User_Agent( $user_agent ); return $this->user_agent_list[ $user_agent ]; } /** * Gets the list of user agents. * * @return array */ public function get_user_agents() { return $this->user_agent_list; } /** * Gets a list of all disallow directives by user agent. * * @return array */ public function get_disallow_directives() { $directives = []; foreach ( $this->user_agent_list as $user_agent ) { $directives[ $user_agent->get_user_agent() ] = $user_agent->get_disallow_paths(); } return $directives; } /** * Gets a list of all sallow directives by user agent. * * @return array */ public function get_allow_directives() { $directives = []; foreach ( $this->user_agent_list as $user_agent ) { $directives[ $user_agent->get_user_agent() ] = $user_agent->get_allow_paths(); } return $directives; } } src/values/robots/user-agent.php000064400000003226147206602470012740 0ustar00user_agent = $user_agent; $this->allow_directive = new Directive(); $this->disallow_directive = new Directive(); } /** * Gets the user agent identifier. * * @return string */ public function get_user_agent() { return $this->user_agent; } /** * Adds a path to the directive object. * * @param string $path The path to add to the disallow directive. * * @return void */ public function add_disallow_directive( $path ) { $this->disallow_directive->add_path( $path ); } /** * Adds a path to the directive object. * * @param string $path The path to add to the allow directive. * * @return void */ public function add_allow_directive( $path ) { $this->allow_directive->add_path( $path ); } /** * Gets all disallow paths for this user agent. * * @return array */ public function get_disallow_paths() { return $this->disallow_directive->get_paths(); } /** * Gets all sallow paths for this user agent. * * @return array */ public function get_allow_paths() { return $this->allow_directive->get_paths(); } } src/values/robots/directive.php000064400000001225147206602470012641 0ustar00paths = []; } /** * Adds a path to the directive path list. * * @param string $path A path to add in the path list. * * @return void */ public function add_path( $path ) { if ( ! \in_array( $path, $this->paths, true ) ) { $this->paths[] = $path; } } /** * Returns all paths. * * @return array */ public function get_paths() { return $this->paths; } } src/values/open-graph/images.php000064400000002232147206602470012657 0ustar00open_graph_image = $open_graph_image; } /** * Outputs the images. * * @codeCoverageIgnore - The method is empty, nothing to test. * * @return void */ public function show() {} /** * Adds an image to the list by image ID. * * @param int $image_id The image ID to add. * * @return void */ public function add_image_by_id( $image_id ) { $attachment = $this->open_graph_image->get_image_by_id( $image_id ); if ( $attachment ) { $this->add_image( $attachment ); } } } src/values/twitter/images.php000064400000001720147206602470012322 0ustar00twitter_image = $twitter_image; } /** * Adds an image to the list by image ID. * * @param int $image_id The image ID to add. * * @return void */ public function add_image_by_id( $image_id ) { $attachment = $this->twitter_image->get_by_id( $image_id ); if ( $attachment ) { $this->add_image( $attachment ); } } } src/values/indexables/indexable-builder-versions.php000064400000002606147206602470016722 0ustar00 self::DEFAULT_INDEXABLE_BUILDER_VERSION, 'general' => self::DEFAULT_INDEXABLE_BUILDER_VERSION, 'home-page' => 2, 'post' => 2, 'post-type-archive' => 2, 'term' => 2, 'user' => 2, 'system-page' => self::DEFAULT_INDEXABLE_BUILDER_VERSION, ]; /** * Provides the most recent version number for an Indexable's object type. * * @param string $object_type The Indexable type for which you want to know the most recent version. * * @return int The most recent version number for the type, or 1 if the version doesn't exist. */ public function get_latest_version_for_type( $object_type ) { if ( ! \array_key_exists( $object_type, $this->indexable_builder_versions_by_type ) ) { return self::DEFAULT_INDEXABLE_BUILDER_VERSION; } return $this->indexable_builder_versions_by_type[ $object_type ]; } } src/user-meta/user-interface/cleanup-integration.php000064400000002516147206602470016646 0ustar00cleanup_service = $cleanup_service; } /** * Registers action hook. * * @return void */ public function register_hooks(): void { \add_filter( 'wpseo_misc_cleanup_tasks', [ $this, 'add_user_meta_cleanup_tasks' ] ); } /** * Adds cleanup tasks for the cleanup integration. * * @param Closure[] $tasks Array of tasks to be added. * * @return Closure[] An associative array of tasks to be added to the cleanup integration. */ public function add_user_meta_cleanup_tasks( $tasks ) { return \array_merge( $tasks, [ 'clean_selected_empty_usermeta' => function ( $limit ) { return $this->cleanup_service->cleanup_selected_empty_usermeta( $limit ); }, ] ); } } src/user-meta/user-interface/additional-contactmethods-integration.php000064400000005362147206602470022346 0ustar00additional_contactmethods_collector = $additional_contactmethods_collector; } /** * Registers action hook. * * @return void */ public function register_hooks(): void { \add_filter( 'user_contactmethods', [ $this, 'update_contactmethods' ] ); \add_filter( 'update_user_metadata', [ $this, 'stop_storing_empty_metadata' ], 10, 4 ); } /** * Updates the contactmethods with an additional set of social profiles. * * These are used with the Facebook author, rel="author", Twitter cards implementation, but also in the `sameAs` schema attributes. * * @param array $contactmethods Currently set contactmethods. * * @return array Contactmethods with added contactmethods. */ public function update_contactmethods( $contactmethods ) { $additional_contactmethods = $this->additional_contactmethods_collector->get_additional_contactmethods_objects(); return \array_merge( ( $contactmethods ?? [] ), $additional_contactmethods ); } /** * Returns a check value, which will stop empty contactmethods from going into the database. * * @param bool|null $check Whether to allow updating metadata for the given type. * @param int $object_id ID of the object metadata is for. * @param string $meta_key Metadata key. * @param mixed $meta_value Metadata value. Must be serializable if non-scalar. * * @return false|null False for when we are to filter out empty metadata, null for no filtering. */ public function stop_storing_empty_metadata( $check, $object_id, $meta_key, $meta_value ) { $additional_contactmethods = $this->additional_contactmethods_collector->get_additional_contactmethods_keys(); if ( \in_array( $meta_key, $additional_contactmethods, true ) && $meta_value === '' ) { \delete_user_meta( $object_id, $meta_key ); return false; } return $check; } } src/user-meta/user-interface/custom-meta-integration.php000064400000006355147206602470017462 0ustar00custom_meta_collector = $custom_meta_collector; } /** * Retrieves the conditionals for the integration. * * @return array The conditionals. */ public static function get_conditionals() { return [ Admin_Conditional::class, User_Can_Edit_Users_Conditional::class, User_Edit_Conditional::class, ]; } /** * Registers action hook. * * @return void */ public function register_hooks(): void { \add_action( 'show_user_profile', [ $this, 'user_profile' ] ); \add_action( 'edit_user_profile', [ $this, 'user_profile' ] ); \add_action( 'personal_options_update', [ $this, 'process_user_option_update' ] ); \add_action( 'edit_user_profile_update', [ $this, 'process_user_option_update' ] ); } /** * Updates the user metas that (might) have been set on the user profile page. * * @param int $user_id User ID of the updated user. * * @return void */ public function process_user_option_update( $user_id ) { \update_user_meta( $user_id, '_yoast_wpseo_profile_updated', \time() ); if ( ! \check_admin_referer( 'wpseo_user_profile_update', 'wpseo_nonce' ) ) { return; } foreach ( $this->custom_meta_collector->get_custom_meta() as $meta ) { if ( ! $meta->is_setting_enabled() ) { continue; } $meta_field_id = $meta->get_field_id(); $user_input_to_store = isset( $_POST[ $meta_field_id ] ) ? \sanitize_text_field( \wp_unslash( $_POST[ $meta_field_id ] ) ) : ''; if ( $meta->is_empty_allowed() || $user_input_to_store !== '' ) { \update_user_meta( $user_id, $meta->get_key(), $user_input_to_store ); continue; } \delete_user_meta( $user_id, $meta->get_key() ); } } /** * Adds the inputs needed for SEO values to the User Profile page. * * @param WP_User $user User instance to output for. * * @return void */ public function user_profile( $user ) { \wp_nonce_field( 'wpseo_user_profile_update', 'wpseo_nonce' ); /* translators: %1$s expands to Yoast SEO */ $yoast_user_settings_header = \sprintf( \__( '%1$s settings', 'wordpress-seo' ), 'Yoast SEO' ); echo '

    ' . \esc_html( $yoast_user_settings_header ) . '

    '; foreach ( $this->custom_meta_collector->get_sorted_custom_meta() as $meta ) { if ( ! $meta->is_setting_enabled() ) { continue; } $meta->render_field( $user->ID ); } \do_action( 'wpseo_render_user_profile', $user ); echo '
    '; } } src/user-meta/framework/custom-meta/inclusive-language-analysis-disable.php000064400000006046147206602470023223 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 600; } /** * Returns the db key of the Inclusive_Language_Analysis_Disable custom meta. * * @return string The db key of the Inclusive_Language_Analysis_Disable custom meta. */ public function get_key(): string { return 'wpseo_inclusive_language_analysis_disable'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_inclusive_language_analysis_disable'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( $this->options_helper->get( 'inclusive_language_analysis_active', false ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return true; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' get_value( $user_id ), 'on', false ) . '/>'; echo '
    '; echo '

    ' . \esc_html__( 'Removes the inclusive language analysis section from the metabox and disables all inclusive language-related suggestions.', 'wordpress-seo' ) . '

    '; } } src/user-meta/framework/custom-meta/content-analysis-disable.php000064400000005704147206602470021113 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 500; } /** * Returns the db key of the Content_Analysis_Disable custom meta. * * @return string The db key of the Content_Analysis_Disable custom meta. */ public function get_key(): string { return 'wpseo_content_analysis_disable'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_content_analysis_disable'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( $this->options_helper->get( 'content_analysis_active', false ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return true; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' get_value( $user_id ), 'on', false ) . '/>'; echo '
    '; echo '

    ' . \esc_html__( 'Removes the readability analysis section from the metabox and disables all readability-related suggestions.', 'wordpress-seo' ) . '

    '; } } src/user-meta/framework/custom-meta/author-title.php000064400000004765147206602470016646 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 100; } /** * Returns the db key of the Author_Title custom meta. * * @return string The db key of the Author_Title custom meta. */ public function get_key(): string { return 'wpseo_title'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_author_title'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( ! $this->options_helper->get( 'disable-author' ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return true; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' '; echo '
    '; } } src/user-meta/framework/custom-meta/author-metadesc.php000064400000005100147206602470017272 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 200; } /** * Returns the db key of the Author_Metadesc custom meta. * * @return string The db key of the Author_Metadesc custom meta. */ public function get_key(): string { return 'wpseo_metadesc'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_author_metadesc'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( ! $this->options_helper->get( 'disable-author' ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return true; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' '; echo '
    '; } } src/user-meta/framework/custom-meta/noindex-author.php000064400000005155147206602470017163 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 300; } /** * Returns the db key of the Noindex_Author custom meta. * * @return string The db key of the Noindex_Author custom meta. */ public function get_key(): string { return 'wpseo_noindex_author'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_noindex_author'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( ! $this->options_helper->get( 'disable-author' ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return false; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' get_value( $user_id ), 'on', false ) . '/>'; echo '
    '; } } src/user-meta/framework/custom-meta/keyword-analysis-disable.php000064400000005657147206602470021134 0ustar00options_helper = $options_helper; } /** * Returns the priority which the custom meta's form field should be rendered with. * * @return int The priority which the custom meta's form field should be rendered with. */ public function get_render_priority(): int { return 400; } /** * Returns the db key of the Keyword_Analysis_Disable custom meta. * * @return string The db key of the Keyword_Analysis_Disable custom meta. */ public function get_key(): string { return 'wpseo_keyword_analysis_disable'; } /** * Returns the id of the custom meta's form field. * * @return string The id of the custom meta's form field. */ public function get_field_id(): string { return 'wpseo_keyword_analysis_disable'; } /** * Returns the meta value. * * @param int $user_id The user ID. * * @return string The meta value. */ public function get_value( $user_id ): string { return \get_the_author_meta( $this->get_key(), $user_id ); } /** * Returns whether the respective global setting is enabled. * * @return bool Whether the respective global setting is enabled. */ public function is_setting_enabled(): bool { return ( $this->options_helper->get( 'keyword_analysis_active', false ) ); } /** * Returns whether the custom meta is allowed to be empty. * * @return bool Whether the custom meta is allowed to be empty. */ public function is_empty_allowed(): bool { return true; } /** * Renders the custom meta's field in the user form. * * @param int $user_id The user ID. * * @return void */ public function render_field( $user_id ): void { echo ' get_value( $user_id ), 'on', false ) . '/>'; echo '
    '; echo '

    ' . \esc_html__( 'Removes the focus keyphrase section from the metabox and disables all SEO-related suggestions.', 'wordpress-seo' ) . '

    '; } } src/user-meta/framework/additional-contactmethods/youtube.php000064400000001300147206602470020566 0ustar00' . \__( '(if one exists)', 'wordpress-seo' ) . ''; } } src/user-meta/framework/additional-contactmethods/pinterest.php000064400000001320147206602470021111 0ustar00 $meta_keys The meta to be potentially deleted. * @param int $limit The number of maximum deletions. * * @return int|false The number of rows that was deleted or false if the query failed. */ public function delete_empty_usermeta_query( $meta_keys, $limit ) { global $wpdb; // phpcs:disable WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber -- Reason: we're passing an array instead. $delete_query = $wpdb->prepare( 'DELETE FROM %i WHERE meta_key IN ( ' . \implode( ', ', \array_fill( 0, \count( $meta_keys ), '%s' ) ) . ' ) AND meta_value = "" ORDER BY user_id LIMIT %d', \array_merge( [ $wpdb->usermeta ], $meta_keys, [ $limit ] ) ); // phpcs:enable // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching -- Reason: No relevant caches. // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery -- Reason: Most performant way. // phpcs:disable WordPress.DB.PreparedSQL.NotPrepared -- Reason: Is it prepared already. return $wpdb->query( $delete_query ); // phpcs:enable } } src/user-meta/application/custom-meta-collector.php000064400000003113147206602470016501 0ustar00 $custom_meta */ private $custom_meta; /** * The constructor. * * @param Custom_Meta_Interface ...$custom_meta All custom meta. */ public function __construct( Custom_Meta_Interface ...$custom_meta ) { $this->custom_meta = $custom_meta; } /** * Returns all the custom meta. * * @return array All the custom meta. */ public function get_custom_meta(): array { return $this->custom_meta; } /** * Returns all the custom meta, sorted by rendering priority. * * @return array All the custom meta, sorted by rendering priority. */ public function get_sorted_custom_meta(): array { $custom_meta = $this->get_custom_meta(); \usort( $custom_meta, static function ( Custom_Meta_Interface $a, Custom_Meta_Interface $b ) { return ( $a->get_render_priority() <=> $b->get_render_priority() ); } ); return $custom_meta; } /** * Returns the custom meta that can't be empty. * * @return array The custom meta that can't be empty. */ public function get_non_empty_custom_meta(): array { $non_empty_custom_meta = []; foreach ( $this->custom_meta as $custom_meta ) { if ( ! $custom_meta->is_empty_allowed() ) { $non_empty_custom_meta[] = $custom_meta->get_key(); } } return $non_empty_custom_meta; } } src/user-meta/application/cleanup-service.php000064400000004551147206602470015353 0ustar00additional_contactmethods_collector = $additional_contactmethods_collector; $this->custom_meta_collector = $custom_meta_collector; $this->cleanup_repository = $cleanup_repository; } /** * Deletes selected empty usermeta. * * @param int $limit The limit we'll apply to the cleanups. * * @return int|bool The number of rows that was deleted or false if the query failed. */ public function cleanup_selected_empty_usermeta( int $limit ) { $meta_to_check = $this->get_meta_to_check(); return $this->cleanup_repository->delete_empty_usermeta_query( $meta_to_check, $limit ); } /** * Gets which meta are going to be checked for emptiness. * * @return array The meta to be checked for emptiness. */ private function get_meta_to_check() { $additional_contactmethods = $this->additional_contactmethods_collector->get_additional_contactmethods_keys(); $custom_meta = $this->custom_meta_collector->get_non_empty_custom_meta(); return \array_merge( $additional_contactmethods, $custom_meta ); } } src/user-meta/application/additional-contactmethods-collector.php000064400000004565147206602470021404 0ustar00 $additional_contactmethods */ private $additional_contactmethods; /** * The constructor. * * @param Additional_Contactmethod_Interface ...$additional_contactmethods All additional contactmethods. */ public function __construct( Additional_Contactmethod_Interface ...$additional_contactmethods ) { $this->additional_contactmethods = $additional_contactmethods; } /** * Returns all the additional contactmethods. * * @return array All the additional contactmethods. */ public function get_additional_contactmethods(): array { $additional_contactmethods = $this->additional_contactmethods; /** * Filter: Adds the possibility to add more additional contactmethods in the user profile. * * @param array $additional_contactmethods Array with additional contact method classes. */ return \apply_filters( 'wpseo_additional_contactmethods', $additional_contactmethods ); } /** * Returns the additional contactmethods key/value pairs. * * @return array The additional contactmethods key/value pairs. */ public function get_additional_contactmethods_objects(): array { $additional_contactmethods_objects = []; $additional_contactmethods = $this->get_additional_contactmethods(); foreach ( $additional_contactmethods as $additional_contactmethod ) { $additional_contactmethods_objects[ $additional_contactmethod->get_key() ] = $additional_contactmethod->get_label(); } return $additional_contactmethods_objects; } /** * Returns the additional contactmethods keys. * * @return array The additional contactmethods keys. */ public function get_additional_contactmethods_keys(): array { $additional_contactmethods_keys = []; $additional_contactmethods = $this->get_additional_contactmethods(); foreach ( $additional_contactmethods as $additional_contactmethod ) { $additional_contactmethods_keys[] = $additional_contactmethod->get_key(); } return $additional_contactmethods_keys; } } src/user-meta/domain/additional-contactmethod-interface.php000064400000000615147206602470020127 0ustar00get_table_name(); $indexable_table = $this->create_table( $table_name ); $indexable_table->column( 'post_id', 'integer', [ 'unsigned' => true, 'null' => false, 'limit' => 11, ] ); $indexable_table->column( 'term_id', 'integer', [ 'unsigned' => true, 'null' => false, 'limit' => 11, ] ); $indexable_table->column( 'taxonomy', 'string', [ 'null' => false, 'limit' => 32, ] ); // Executes the SQL to create the table. $indexable_table->finish(); $this->add_index( $table_name, [ 'post_id', 'taxonomy', ], [ 'name' => 'post_taxonomy', ] ); $this->add_index( $table_name, [ 'post_id', 'term_id', ], [ 'name' => 'post_term', ] ); $this->add_timestamps( $table_name ); } /** * Migration down. * * @return void */ public function down() { $this->drop_table( $this->get_table_name() ); } /** * Retrieves the table name to use. * * @return string Table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Primary_Term' ); } } src/config/migrations/20201216124002_ExpandIndexableIDColumnLengths.php000064400000002023147206602470021073 0ustar00change_column( $this->get_table_name(), $column, 'biginteger', [ 'limit' => 20 ] ); } } /** * Migration down. * * @return void */ public function down() { } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20210817092415_AddVersionColumnToIndexables.php000064400000001547147206602470020673 0ustar00add_column( $this->get_table_name(), 'version', 'integer', [ 'default' => 1, ] ); } /** * Migration down. * * @return void */ public function down() { $this->remove_column( $this->get_table_name(), 'version' ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200420073606_AddColumnsToIndexables.php000064400000004124147206602470017470 0ustar00get_tables(); $blog_id = \get_current_blog_id(); foreach ( $tables as $table ) { $this->add_column( $table, 'blog_id', 'biginteger', [ 'null' => false, 'limit' => 20, 'default' => $blog_id, ] ); } $attr_limit_32 = [ 'null' => true, 'limit' => 32, ]; $attr_limit_64 = [ 'null' => true, 'limit' => 64, ]; $indexable_table = $this->get_indexable_table(); $this->add_column( $indexable_table, 'language', 'string', $attr_limit_32 ); $this->add_column( $indexable_table, 'region', 'string', $attr_limit_32 ); $this->add_column( $indexable_table, 'schema_page_type', 'string', $attr_limit_64 ); $this->add_column( $indexable_table, 'schema_article_type', 'string', $attr_limit_64 ); } /** * Migration down. * * @return void */ public function down() { $tables = $this->get_tables(); foreach ( $tables as $table ) { $this->remove_column( $table, 'blog_id' ); } $indexable_table = $this->get_indexable_table(); $this->remove_column( $indexable_table, 'language' ); $this->remove_column( $indexable_table, 'region' ); $this->remove_column( $indexable_table, 'schema_page_type' ); $this->remove_column( $indexable_table, 'schema_article_type' ); } /** * Retrieves the Indexable table. * * @return string The Indexable table name. */ protected function get_indexable_table() { return Model::get_table_name( 'Indexable' ); } /** * Retrieves the table names to use. * * @return string[] The table names to use. */ protected function get_tables() { return [ $this->get_indexable_table(), Model::get_table_name( 'Indexable_Hierarchy' ), Model::get_table_name( 'Primary_Term' ), ]; } } src/config/migrations/20200429105310_TruncateIndexableTables.php000064400000002065147206602470017670 0ustar00query( 'TRUNCATE TABLE ' . $this->get_indexable_table_name() ); $this->query( 'TRUNCATE TABLE ' . $this->get_indexable_hierarchy_table_name() ); } /** * Migration down. * * @return void */ public function down() { // Nothing to do. } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_indexable_table_name() { return Model::get_table_name( 'Indexable' ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_indexable_hierarchy_table_name() { return Model::get_table_name( 'Indexable_Hierarchy' ); } } src/config/migrations/20201216141134_ExpandPrimaryTermIDColumnLengths.php000064400000002005147206602470021460 0ustar00change_column( $this->get_table_name(), $column, 'biginteger', [ 'limit' => 20 ] ); } } /** * Migration down. * * @return void */ public function down() { } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Primary_Term' ); } } src/config/migrations/20200430150130_ClearIndexableTables.php000064400000002057147206602470017122 0ustar00query( 'TRUNCATE TABLE ' . $this->get_indexable_table_name() ); $this->query( 'TRUNCATE TABLE ' . $this->get_indexable_hierarchy_table_name() ); } /** * Migration down. * * @return void */ public function down() { // Nothing to do. } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_indexable_table_name() { return Model::get_table_name( 'Indexable' ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_indexable_hierarchy_table_name() { return Model::get_table_name( 'Indexable_Hierarchy' ); } } src/config/migrations/20200702141921_CreateIndexableSubpagesIndex.php000064400000002354147206602470020640 0ustar00change_column( $this->get_table_name(), 'post_status', 'string', [ 'null' => true, 'limit' => 20, ] ); $this->add_index( $this->get_table_name(), [ 'post_parent', 'object_type', 'post_status', 'object_id' ], [ 'name' => 'subpages' ] ); } /** * Migration down. * * @return void */ public function down() { $this->change_column( $this->get_table_name(), 'post_status', 'string', [ 'null' => true, 'limit' => 191, ] ); $this->remove_index( $this->get_table_name(), [ 'post_parent', 'object_type', 'post_status', 'object_id' ], [ 'name' => 'subpages' ] ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200609154515_AddHasAncestorsColumn.php000064400000001661147206602470017334 0ustar00add_column( Model::get_table_name( 'Indexable' ), 'has_ancestors', 'boolean', [ 'default' => false, ] ); Wrapper::get_wpdb()->query( ' UPDATE ' . Model::get_table_name( 'Indexable' ) . ' SET has_ancestors = 1 WHERE id IN ( SELECT indexable_id FROM ' . Model::get_table_name( 'Indexable_Hierarchy' ) . ' ) ' ); } /** * Migration down. * * @return void */ public function down() { $this->remove_column( Model::get_table_name( 'Indexable' ), 'has_ancestors' ); } } src/config/migrations/20200428123747_BreadcrumbTitleAndHierarchyReset.php000064400000002356147206602470021511 0ustar00change_column( $this->get_indexable_table_name(), 'breadcrumb_title', 'text', [ 'null' => true ] ); $this->query( 'DELETE FROM ' . $this->get_indexable_hierarchy_table_name() ); } /** * Migration down. * * @return void */ public function down() { $this->change_column( $this->get_indexable_table_name(), 'breadcrumb_title', 'string', [ 'null' => true, 'limit' => 191, ] ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_indexable_table_name() { return Model::get_table_name( 'Indexable' ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_indexable_hierarchy_table_name() { return Model::get_table_name( 'Indexable_Hierarchy' ); } } src/config/migrations/20200408101900_AddCollationToTables.php000064400000001676147206602470017134 0ustar00get_charset_collate(); if ( empty( $charset_collate ) ) { return; } $tables = [ Model::get_table_name( 'migrations' ), Model::get_table_name( 'Indexable' ), Model::get_table_name( 'Indexable_Hierarchy' ), Model::get_table_name( 'Primary_Term' ), ]; foreach ( $tables as $table ) { $this->query( 'ALTER TABLE ' . $table . ' CONVERT TO ' . \str_replace( 'DEFAULT ', '', $charset_collate ) ); } } /** * Migration down. * * @return void */ public function down() { // No down required. } } src/config/migrations/20200728095334_AddIndexesForProminentWordsOnIndexables.php000064400000002265147206602470023044 0ustar00get_table_name(); $adapter = $this->get_adapter(); if ( ! $adapter->has_index( $table_name, $this->columns_with_index, [ 'name' => 'prominent_words' ] ) ) { $this->add_index( $table_name, $this->columns_with_index, [ 'name' => 'prominent_words', ] ); } } /** * Migration down. * * @return void */ public function down() { } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20201202144329_AddEstimatedReadingTime.php000064400000001703147206602470017576 0ustar00get_table_name(); $this->add_column( $table_name, 'estimated_reading_time_minutes', 'integer', [ 'null' => true, 'default' => null, ] ); } /** * Migration down. * * @return void */ public function down() { $table_name = $this->get_table_name(); $this->remove_column( $table_name, 'estimated_reading_time_minutes' ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20190529075038_WpYoastDropIndexableMetaTableIfExists.php000064400000001573147206602470022472 0ustar00get_table_name(); // This can be done safely as it executes a DROP IF EXISTS. $this->drop_table( $table_name ); } /** * Migration down. * * @return void */ public function down() { // No down required. This specific table should never exist. } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable_Meta' ); } } src/config/migrations/20200616130143_ReplacePermalinkHashIndex.php000064400000004365147206602470020153 0ustar00get_table_name(); $adapter = $this->get_adapter(); if ( ! $adapter->has_table( $table_name ) ) { return; } $this->change_column( $table_name, 'permalink_hash', 'string', [ 'null' => true, 'limit' => 40, ] ); if ( $adapter->has_index( $table_name, [ 'permalink_hash' ], [ 'name' => 'permalink_hash' ] ) ) { $this->remove_index( $table_name, [ 'permalink_hash', ], [ 'name' => 'permalink_hash', ] ); } if ( ! $adapter->has_index( $table_name, [ 'permalink_hash', 'object_type' ], [ 'name' => 'permalink_hash_and_object_type' ] ) ) { $this->add_index( $table_name, [ 'permalink_hash', 'object_type', ], [ 'name' => 'permalink_hash_and_object_type', ] ); } } /** * Migration down. * * @return void */ public function down() { $table_name = $this->get_table_name(); $adapter = $this->get_adapter(); if ( ! $adapter->has_table( $table_name ) ) { return; } if ( $adapter->has_index( $table_name, [ 'permalink_hash', 'object_type' ], [ 'name' => 'permalink_hash_and_object_type' ] ) ) { $this->remove_index( $table_name, [ 'permalink_hash', 'object_type', ], [ 'name' => 'permalink_hash_and_object_type', ] ); } $this->change_column( $table_name, 'permalink_hash', 'string', [ 'null' => true, 'limit' => 191, ] ); if ( ! $adapter->has_index( $table_name, [ 'permalink_hash' ], [ 'name' => 'permalink_hash' ] ) ) { $this->add_index( $table_name, [ 'permalink_hash', ], [ 'name' => 'permalink_hash', ] ); } } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20171228151840_WpYoastIndexable.php000064400000014256147206602470016400 0ustar00add_table(); } /** * Migration down. * * @return void */ public function down() { $this->drop_table( $this->get_table_name() ); } /** * Creates the indexable table. * * @return void */ private function add_table() { $table_name = $this->get_table_name(); $indexable_table = $this->create_table( $table_name ); // Permalink. $indexable_table->column( 'permalink', 'mediumtext', [ 'null' => true ] ); $indexable_table->column( 'permalink_hash', 'string', [ 'null' => true, 'limit' => 191, ] ); // Object information. $indexable_table->column( 'object_id', 'integer', [ 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); $indexable_table->column( 'object_type', 'string', [ 'null' => false, 'limit' => 32, ] ); $indexable_table->column( 'object_sub_type', 'string', [ 'null' => true, 'limit' => 32, ] ); // Ownership. $indexable_table->column( 'author_id', 'integer', [ 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); $indexable_table->column( 'post_parent', 'integer', [ 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); // Title and description. $indexable_table->column( 'title', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'description', 'text', [ 'null' => true ] ); $indexable_table->column( 'breadcrumb_title', 'string', [ 'null' => true, 'limit' => 191, ] ); // Post metadata: status, public, protected. $indexable_table->column( 'post_status', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'is_public', 'boolean', [ 'null' => true, 'default' => null, ] ); $indexable_table->column( 'is_protected', 'boolean', [ 'default' => false ] ); $indexable_table->column( 'has_public_posts', 'boolean', [ 'null' => true, 'default' => null, ] ); $indexable_table->column( 'number_of_pages', 'integer', [ 'unsigned' => true, 'null' => true, 'default' => null, 'limit' => 11, ] ); $indexable_table->column( 'canonical', 'mediumtext', [ 'null' => true ] ); // SEO and readability analysis. $indexable_table->column( 'primary_focus_keyword', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'primary_focus_keyword_score', 'integer', [ 'null' => true, 'limit' => 3, ] ); $indexable_table->column( 'readability_score', 'integer', [ 'null' => true, 'limit' => 3, ] ); $indexable_table->column( 'is_cornerstone', 'boolean', [ 'default' => false ] ); // Robots. $indexable_table->column( 'is_robots_noindex', 'boolean', [ 'null' => true, 'default' => false, ] ); $indexable_table->column( 'is_robots_nofollow', 'boolean', [ 'null' => true, 'default' => false, ] ); $indexable_table->column( 'is_robots_noarchive', 'boolean', [ 'null' => true, 'default' => false, ] ); $indexable_table->column( 'is_robots_noimageindex', 'boolean', [ 'null' => true, 'default' => false, ] ); $indexable_table->column( 'is_robots_nosnippet', 'boolean', [ 'null' => true, 'default' => false, ] ); // Twitter. $indexable_table->column( 'twitter_title', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'twitter_image', 'mediumtext', [ 'null' => true ] ); $indexable_table->column( 'twitter_description', 'mediumtext', [ 'null' => true ] ); $indexable_table->column( 'twitter_image_id', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'twitter_image_source', 'string', [ 'null' => true, 'limit' => 191, ] ); // Open-Graph. $indexable_table->column( 'open_graph_title', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'open_graph_description', 'mediumtext', [ 'null' => true ] ); $indexable_table->column( 'open_graph_image', 'mediumtext', [ 'null' => true ] ); $indexable_table->column( 'open_graph_image_id', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'open_graph_image_source', 'string', [ 'null' => true, 'limit' => 191, ] ); $indexable_table->column( 'open_graph_image_meta', 'text', [ 'null' => true ] ); // Link count. $indexable_table->column( 'link_count', 'integer', [ 'null' => true, 'limit' => 11, ] ); $indexable_table->column( 'incoming_link_count', 'integer', [ 'null' => true, 'limit' => 11, ] ); // Prominent words. $indexable_table->column( 'prominent_words_version', 'integer', [ 'null' => true, 'limit' => 11, 'unsigned' => true, 'default' => null, ] ); $indexable_table->finish(); $this->add_indexes( $table_name ); $this->add_timestamps( $table_name ); } /** * Adds indexes to the indexable table. * * @param string $indexable_table_name The name of the indexable table. * * @return void */ private function add_indexes( $indexable_table_name ) { $this->add_index( $indexable_table_name, [ 'object_type', 'object_sub_type', ], [ 'name' => 'object_type_and_sub_type', ] ); $this->add_index( $indexable_table_name, 'permalink_hash', [ 'name' => 'permalink_hash', ] ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200428194858_ExpandIndexableColumnLengths.php000064400000003413147206602470020720 0ustar00change_column( $this->get_table_name(), 'title', 'text', [ 'null' => true ] ); $this->change_column( $this->get_table_name(), 'open_graph_title', 'text', [ 'null' => true ] ); $this->change_column( $this->get_table_name(), 'twitter_title', 'text', [ 'null' => true ] ); $this->change_column( $this->get_table_name(), 'open_graph_image_source', 'text', [ 'null' => true ] ); $this->change_column( $this->get_table_name(), 'twitter_image_source', 'text', [ 'null' => true ] ); } /** * Migration down. * * @return void */ public function down() { $attr_limit_191 = [ 'null' => true, 'limit' => 191, ]; $this->change_column( $this->get_table_name(), 'title', 'string', $attr_limit_191 ); $this->change_column( $this->get_table_name(), 'opengraph_title', 'string', $attr_limit_191 ); $this->change_column( $this->get_table_name(), 'twitter_title', 'string', $attr_limit_191 ); $this->change_column( $this->get_table_name(), 'open_graph_image_source', 'string', $attr_limit_191 ); $this->change_column( $this->get_table_name(), 'twitter_image_source', 'string', $attr_limit_191 ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200617122511_CreateSEOLinksTable.php000064400000004735147206602470016666 0ustar00get_table_name(); $adapter = $this->get_adapter(); // The table may already have been created by legacy code. // If not, create it exactly as it was. if ( ! $adapter->table_exists( $table_name ) ) { $table = $this->create_table( $table_name, [ 'id' => false ] ); $table->column( 'id', 'biginteger', [ 'primary_key' => true, 'limit' => 20, 'unsigned' => true, 'auto_increment' => true, ] ); $table->column( 'url', 'string', [ 'limit' => 255 ] ); $table->column( 'post_id', 'biginteger', [ 'limit' => 20, 'unsigned' => true, ] ); $table->column( 'target_post_id', 'biginteger', [ 'limit' => 20, 'unsigned' => true, ] ); $table->column( 'type', 'string', [ 'limit' => 8 ] ); $table->finish(); } if ( ! $adapter->has_index( $table_name, [ 'post_id', 'type' ], [ 'name' => 'link_direction' ] ) ) { $this->add_index( $table_name, [ 'post_id', 'type' ], [ 'name' => 'link_direction' ] ); } // Add these columns outside of the initial table creation as these did not exist on the legacy table. $this->add_column( $table_name, 'indexable_id', 'integer', [ 'unsigned' => true ] ); $this->add_column( $table_name, 'target_indexable_id', 'integer', [ 'unsigned' => true ] ); $this->add_column( $table_name, 'height', 'integer', [ 'unsigned' => true ] ); $this->add_column( $table_name, 'width', 'integer', [ 'unsigned' => true ] ); $this->add_column( $table_name, 'size', 'integer', [ 'unsigned' => true ] ); $this->add_column( $table_name, 'language', 'string', [ 'limit' => 32 ] ); $this->add_column( $table_name, 'region', 'string', [ 'limit' => 32 ] ); $this->add_index( $table_name, [ 'indexable_id', 'type' ], [ 'name' => 'indexable_link_direction' ] ); } /** * Migration down. * * @return void */ public function down() { $this->drop_table( $this->get_table_name() ); } /** * Returns the SEO Links table name. * * @return string */ private function get_table_name() { return Model::get_table_name( 'SEO_Links' ); } } src/config/migrations/20230417083836_AddInclusiveLanguageScore.php000064400000001662147206602470020172 0ustar00get_table_name(); $this->add_column( $table_name, 'inclusive_language_score', 'integer', [ 'null' => true, 'limit' => 3, ] ); } /** * Migration down. * * @return void */ public function down() { $table_name = $this->get_table_name(); $this->remove_column( $table_name, 'inclusive_language_score' ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20211020091404_AddObjectTimestamps.php000064400000003007147206602470017014 0ustar00add_column( $this->get_table_name(), 'object_last_modified', 'datetime', [ 'null' => true, 'default' => null, ] ); $this->add_column( $this->get_table_name(), 'object_published_at', 'datetime', [ 'null' => true, 'default' => null, ] ); $this->add_index( $this->get_table_name(), [ 'object_published_at', 'is_robots_noindex', 'object_type', 'object_sub_type', ], [ 'name' => 'published_sitemap_index', ] ); } /** * Migration down. * * @return void */ public function down() { $this->remove_column( $this->get_table_name(), 'object_last_modified' ); $this->remove_column( $this->get_table_name(), 'object_published_at' ); $this->remove_index( $this->get_table_name(), [ 'object_published_at', 'is_robots_noindex', 'object_type', 'object_sub_type', ], [ 'name' => 'published_sitemap_index', ] ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200513133401_ResetIndexableHierarchyTable.php000064400000001366147206602470020640 0ustar00query( 'TRUNCATE TABLE ' . $this->get_table_name() ); } /** * Migration down. * * @return void */ public function down() { // Nothing to do. } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable_Hierarchy' ); } } src/config/migrations/20191011111109_WpYoastIndexableHierarchy.php000064400000003072147206602470020213 0ustar00get_table_name(); $indexable_table = $this->create_table( $table_name, [ 'id' => false ] ); $indexable_table->column( 'indexable_id', 'integer', [ 'primary_key' => true, 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); $indexable_table->column( 'ancestor_id', 'integer', [ 'primary_key' => true, 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); $indexable_table->column( 'depth', 'integer', [ 'unsigned' => true, 'null' => true, 'limit' => 11, ] ); $indexable_table->finish(); $this->add_index( $table_name, 'indexable_id', [ 'name' => 'indexable_id' ] ); $this->add_index( $table_name, 'ancestor_id', [ 'name' => 'ancestor_id' ] ); $this->add_index( $table_name, 'depth', [ 'name' => 'depth' ] ); } /** * Migration up. * * @return void */ public function down() { $this->drop_table( $this->get_table_name() ); } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable_Hierarchy' ); } } src/config/migrations/20200430075614_AddIndexableObjectIdAndTypeIndex.php000064400000001737147206602470021333 0ustar00add_index( $this->get_table_name(), [ 'object_id', 'object_type', ], [ 'name' => 'object_id_and_type', ] ); } /** * Migration down. * * @return void */ public function down() { $this->remove_index( $this->get_table_name(), [ 'object_id', 'object_type', ], [ 'name' => 'object_id_and_type', ] ); } /** * Retrieves the table name to use for storing indexables. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/migrations/20200507054848_DeleteDuplicateIndexables.php000064400000002113147206602470020202 0ustar00get_table_name(); /* * Deletes duplicate indexables that have the same object_id and object_type. * The rows with a higher ID are deleted as those should be unused and could be outdated. */ $this->query( 'DELETE wyi FROM ' . $table_name . ' wyi INNER JOIN ' . $table_name . ' wyi2 WHERE wyi2.object_id = wyi.object_id AND wyi2.object_type = wyi.object_type AND wyi2.id < wyi.id;' ); } /** * Migration down. * * @return void */ public function down() { // Nothing to do. } /** * Retrieves the table name to use. * * @return string The table name to use. */ protected function get_table_name() { return Model::get_table_name( 'Indexable' ); } } src/config/wincher-client.php000064400000007531147206602470012242 0ustar00 'yoast', 'redirectUri' => 'https://auth.wincher.com/yoast/setup', 'urlAuthorize' => 'https://auth.wincher.com/connect/authorize', 'urlAccessToken' => 'https://auth.wincher.com/connect/token', 'urlResourceOwnerDetails' => 'https://api.wincher.com/beta/user', 'scopes' => [ 'profile', 'account', 'websites:read', 'websites:write', 'offline_access' ], 'scopeSeparator' => ' ', 'pkceMethod' => 'S256', ], [ 'httpClient' => new Client( [ 'handler' => $wp_remote_handler ] ), ] ); parent::__construct( self::TOKEN_OPTION, $provider, $options_helper ); } /** * Return the authorization URL. * * @return string The authentication URL. */ public function get_authorization_url() { $parsed_site_url = \wp_parse_url( \get_site_url() ); $url = $this->provider->getAuthorizationUrl( [ 'state' => WPSEO_Utils::format_json_encode( [ 'domain' => $parsed_site_url['host'] ] ), ] ); $pkce_code = $this->provider->getPkceCode(); // Store a transient value with the PKCE code that we need in order to // exchange the returned code for a token after authorization. \set_transient( self::PKCE_TRANSIENT_NAME, $pkce_code, \DAY_IN_SECONDS ); return $url; } /** * Requests the access token and refresh token based on the passed code. * * @param string $code The code to send. * * @return OAuth_Token The requested tokens. * * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. */ public function request_tokens( $code ) { $pkce_code = \get_transient( self::PKCE_TRANSIENT_NAME ); if ( $pkce_code ) { $this->provider->setPkceCode( $pkce_code ); } return parent::request_tokens( $code ); } /** * Performs the specified request. * * @codeCoverageIgnore * * @param string $method The HTTP method to use. * @param string $url The URL to send the request to. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ protected function do_request( $method, $url, array $options ) { $options['headers'] = [ 'Content-Type' => 'application/json' ]; return parent::do_request( $method, $url, $options ); } } src/config/indexing-reasons.php000064400000002443147206602470012601 0ustar00 'yoast', 'clientSecret' => 'YdqNsWwnP4vE54WO1ugThKEjGMxMAHJt', 'redirectUri' => 'https://oauth.semrush.com/oauth2/yoast/success', 'urlAuthorize' => 'https://oauth.semrush.com/oauth2/authorize', 'urlAccessToken' => 'https://oauth.semrush.com/oauth2/access_token', 'urlResourceOwnerDetails' => 'https://oauth.semrush.com/oauth2/resource', ], [ 'httpClient' => new Client( [ 'handler' => $wp_remote_handler ] ), ] ); parent::__construct( self::TOKEN_OPTION, $provider, $options_helper ); } /** * Performs the specified request. * * @codeCoverageIgnore * * @param string $method The HTTP method to use. * @param string $url The URL to send the request to. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ public function do_request( $method, $url, array $options ) { // Add the access token to the GET parameters as well since this is what // the SEMRush API expects. $options = \array_merge_recursive( $options, [ 'params' => [ 'access_token' => $this->get_tokens()->access_token, ], ] ); return parent::do_request( $method, $url, $options ); } } src/config/badge-group-names.php000064400000002771147206602470012625 0ustar00 '16.7-beta0', ]; /** * The current plugin version. * * @var string */ protected $version; /** * Badge_Group_Names constructor. * * @param string|null $version Optional: the current plugin version. */ public function __construct( $version = null ) { if ( ! $version ) { $version = \WPSEO_VERSION; } $this->version = $version; } /** * Check whether a group of badges is still eligible for a "new" badge. * * @param string $group One of the GROUP_* constants. * @param string|null $current_version The current version of the plugin that's being checked. * * @return bool Whether a group of badges is still eligible for a "new" badge. */ public function is_still_eligible_for_new_badge( $group, $current_version = null ) { if ( ! \array_key_exists( $group, $this::GROUP_NAMES ) ) { return false; } $group_version = $this::GROUP_NAMES[ $group ]; if ( \is_null( $current_version ) ) { $current_version = $this->version; } return (bool) \version_compare( $group_version, $current_version, '>' ); } } src/config/researcher-languages.php000064400000000523147206602470013410 0ustar00provider = $provider; $this->token_option = $token_option; $this->options_helper = $options_helper; $tokens = $this->options_helper->get( $this->token_option ); if ( ! empty( $tokens ) ) { $this->token = new OAuth_Token( $tokens['access_token'], $tokens['refresh_token'], $tokens['expires'], $tokens['has_expired'], $tokens['created_at'], ( $tokens['error_count'] ?? 0 ) ); } } /** * Requests the access token and refresh token based on the passed code. * * @param string $code The code to send. * * @return OAuth_Token The requested tokens. * * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. */ public function request_tokens( $code ) { try { $response = $this->provider ->getAccessToken( 'authorization_code', [ 'code' => $code, ] ); $token = OAuth_Token::from_response( $response ); return $this->store_token( $token ); } catch ( Exception $exception ) { throw new Authentication_Failed_Exception( $exception ); } } /** * Performs an authenticated GET request to the desired URL. * * @param string $url The URL to send the request to. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ public function get( $url, $options = [] ) { return $this->do_request( 'GET', $url, $options ); } /** * Performs an authenticated POST request to the desired URL. * * @param string $url The URL to send the request to. * @param mixed $body The data to send along in the request's body. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ public function post( $url, $body, $options = [] ) { $options['body'] = $body; return $this->do_request( 'POST', $url, $options ); } /** * Performs an authenticated DELETE request to the desired URL. * * @param string $url The URL to send the request to. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ public function delete( $url, $options = [] ) { return $this->do_request( 'DELETE', $url, $options ); } /** * Determines whether there are valid tokens available. * * @return bool Whether there are valid tokens. */ public function has_valid_tokens() { return ! empty( $this->token ) && $this->token->has_expired() === false; } /** * Gets the stored tokens and refreshes them if they've expired. * * @return OAuth_Token The stored tokens. * * @throws Empty_Token_Exception Exception thrown if the token is empty. */ public function get_tokens() { if ( empty( $this->token ) ) { throw new Empty_Token_Exception(); } if ( $this->token->has_expired() ) { $this->token = $this->refresh_tokens( $this->token ); } return $this->token; } /** * Stores the passed token. * * @param OAuth_Token $token The token to store. * * @return OAuth_Token The stored token. * * @throws Failed_Storage_Exception Exception thrown if storing of the token fails. */ public function store_token( OAuth_Token $token ) { $saved = $this->options_helper->set( $this->token_option, $token->to_array() ); if ( $saved === false ) { throw new Failed_Storage_Exception(); } return $token; } /** * Clears the stored token from storage. * * @return bool The stored token. * * @throws Failed_Storage_Exception Exception thrown if clearing of the token fails. */ public function clear_token() { $saved = $this->options_helper->set( $this->token_option, [] ); if ( $saved === false ) { throw new Failed_Storage_Exception(); } return true; } /** * Performs the specified request. * * @param string $method The HTTP method to use. * @param string $url The URL to send the request to. * @param array $options The options to pass along to the request. * * @return mixed The parsed API response. * * @throws IdentityProviderException Exception thrown if there's something wrong with the identifying data. * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. * @throws Empty_Token_Exception Exception thrown if the token is empty. */ protected function do_request( $method, $url, array $options ) { $defaults = [ 'headers' => $this->provider->getHeaders( $this->get_tokens()->access_token ), ]; $options = \array_merge_recursive( $defaults, $options ); if ( \array_key_exists( 'params', $options ) ) { $url .= '?' . \http_build_query( $options['params'] ); unset( $options['params'] ); } $request = $this->provider ->getAuthenticatedRequest( $method, $url, null, $options ); return $this->provider->getParsedResponse( $request ); } /** * Refreshes the outdated tokens. * * @param OAuth_Token $tokens The outdated tokens. * * @return OAuth_Token The refreshed tokens. * * @throws Authentication_Failed_Exception Exception thrown if authentication has failed. */ protected function refresh_tokens( OAuth_Token $tokens ) { // We do this dance with transients since we need to make sure we don't // delete valid tokens because of a race condition when two calls are // made simultaneously to this function and refresh token rotation is // turned on in the OAuth server. This is not 100% safe, but should at // least be much better than not having any lock at all. $lock_name = \sprintf( 'lock:%s', $this->token_option ); $can_lock = \get_transient( $lock_name ) === false; $has_lock = $can_lock && \set_transient( $lock_name, true, 30 ); try { $new_tokens = $this->provider->getAccessToken( 'refresh_token', [ 'refresh_token' => $tokens->refresh_token, ] ); $token_obj = OAuth_Token::from_response( $new_tokens ); return $this->store_token( $token_obj ); } catch ( Exception $exception ) { // If we tried to refresh but the refresh token is invalid, delete // the tokens so that we don't try again. Only do this if we got the // lock at the beginning of the call. if ( $has_lock && $exception->getMessage() === 'invalid_grant' ) { try { // To protect from race conditions, only do this if we've // seen an error before with the same token. if ( $tokens->error_count >= 1 ) { $this->clear_token(); } else { $tokens->error_count += 1; $this->store_token( $tokens ); } } catch ( Exception $e ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch // Pass through. } } throw new Authentication_Failed_Exception( $exception ); } finally { \delete_transient( $lock_name ); } } } src/config/wincher-pkce-provider.php000064400000016020147206602470013527 0ustar00pkceCode = $pkce_code; return $this; } /** * Returns the current value of the pkceCode parameter. * * This can be accessed by the redirect handler during authorization. * * @return string */ public function getPkceCode() { return $this->pkceCode; } /** * Returns a new random string to use as PKCE code_verifier and * hashed as code_challenge parameters in an authorization flow. * Must be between 43 and 128 characters long. * * @param int $length Length of the random string to be generated. * * @return string * * @throws Exception Throws exception if an invalid value is passed to random_bytes. */ protected function getRandomPkceCode( $length = 64 ) { return \substr( \strtr( // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode \base64_encode( \random_bytes( $length ) ), '+/', '-_' ), 0, $length ); } /** * Returns the current value of the pkceMethod parameter. * * @return string|null */ protected function getPkceMethod() { return $this->pkceMethod; } /** * Returns authorization parameters based on provided options. * * @param array $options The options to use in the authorization parameters. * * @return array The authorization parameters * * @throws InvalidArgumentException Throws exception if an invalid PCKE method is passed in the options. * @throws Exception When something goes wrong with generating the PKCE code. */ protected function getAuthorizationParameters( array $options ) { if ( empty( $options['state'] ) ) { $options['state'] = $this->getRandomState(); } if ( empty( $options['scope'] ) ) { $options['scope'] = $this->getDefaultScopes(); } $options += [ 'response_type' => 'code', ]; if ( \is_array( $options['scope'] ) ) { $separator = $this->getScopeSeparator(); $options['scope'] = \implode( $separator, $options['scope'] ); } // Store the state as it may need to be accessed later on. $this->state = $options['state']; $pkce_method = $this->getPkceMethod(); if ( ! empty( $pkce_method ) ) { $this->pkceCode = $this->getRandomPkceCode(); if ( $pkce_method === 'S256' ) { $options['code_challenge'] = \trim( \strtr( // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode \base64_encode( \hash( 'sha256', $this->pkceCode, true ) ), '+/', '-_' ), '=' ); } elseif ( $pkce_method === 'plain' ) { $options['code_challenge'] = $this->pkceCode; } else { throw new InvalidArgumentException( 'Unknown PKCE method "' . $pkce_method . '".' ); } $options['code_challenge_method'] = $pkce_method; } // Business code layer might set a different redirect_uri parameter. // Depending on the context, leave it as-is. if ( ! isset( $options['redirect_uri'] ) ) { $options['redirect_uri'] = $this->redirectUri; } $options['client_id'] = $this->clientId; return $options; } /** * Requests an access token using a specified grant and option set. * * @param mixed $grant The grant to request access for. * @param array $options The options to use with the current request. * * @return AccessToken|AccessTokenInterface The access token. * * @throws UnexpectedValueException Exception thrown if the provider response contains errors. */ public function getAccessToken( $grant, array $options = [] ) { $grant = $this->verifyGrant( $grant ); $params = [ 'client_id' => $this->clientId, 'client_secret' => $this->clientSecret, 'redirect_uri' => $this->redirectUri, ]; if ( ! empty( $this->pkceCode ) ) { $params['code_verifier'] = $this->pkceCode; } $params = $grant->prepareRequestParameters( $params, $options ); $request = $this->getAccessTokenRequest( $params ); $response = $this->getParsedResponse( $request ); if ( \is_array( $response ) === false ) { throw new UnexpectedValueException( 'Invalid response received from Authorization Server. Expected JSON.' ); } $prepared = $this->prepareAccessTokenResponse( $response ); $token = $this->createAccessToken( $prepared, $grant ); return $token; } /** * Returns all options that can be configured. * * @return array The configurable options. */ protected function getConfigurableOptions() { return \array_merge( $this->getRequiredOptions(), [ 'accessTokenMethod', 'accessTokenResourceOwnerId', 'scopeSeparator', 'responseError', 'responseCode', 'responseResourceOwnerId', 'scopes', 'pkceMethod', ] ); } /** * Parses the request response. * * @param RequestInterface $request The request interface. * * @return array The parsed response. * * @throws IdentityProviderException Exception thrown if there is no proper identity provider. */ public function getParsedResponse( RequestInterface $request ) { try { $response = $this->getResponse( $request ); } catch ( BadResponseException $e ) { $response = $e->getResponse(); } $parsed = $this->parseResponse( $response ); $this->checkResponse( $response, $parsed ); // We always expect an array from the API except for on DELETE requests. // We convert to an array here to prevent problems with array_key_exists on PHP8. if ( ! \is_array( $parsed ) ) { $parsed = [ 'data' => [] ]; } // Add the response code as this is omitted from Winchers API. if ( ! \array_key_exists( 'status', $parsed ) ) { $parsed['status'] = $response->getStatusCode(); } return $parsed; } } src/config/conflicting-plugins.php000064400000012443147206602470013303 0ustar00 '', 'ItemPage' => '', 'AboutPage' => '', 'FAQPage' => '', 'QAPage' => '', 'ProfilePage' => '', 'ContactPage' => '', 'MedicalWebPage' => '', 'CollectionPage' => '', 'CheckoutPage' => '', 'RealEstateListing' => '', 'SearchResultsPage' => '', ]; /** * Holds the possible schema article types. * * Capitalized in this way so the value can be directly used in the schema output. * * @var string[] */ public const ARTICLE_TYPES = [ 'Article' => '', 'BlogPosting' => '', 'SocialMediaPosting' => '', 'NewsArticle' => '', 'AdvertiserContentArticle' => '', 'SatiricalArticle' => '', 'ScholarlyArticle' => '', 'TechArticle' => '', 'Report' => '', 'None' => '', ]; /** * Gets the page type options. * * @return array[] The schema page type options. */ public function get_page_type_options() { return [ [ 'name' => \__( 'Web Page', 'wordpress-seo' ), 'value' => 'WebPage', ], [ 'name' => \__( 'Item Page', 'wordpress-seo' ), 'value' => 'ItemPage', ], [ 'name' => \__( 'About Page', 'wordpress-seo' ), 'value' => 'AboutPage', ], [ 'name' => \__( 'FAQ Page', 'wordpress-seo' ), 'value' => 'FAQPage', ], [ 'name' => \__( 'QA Page', 'wordpress-seo' ), 'value' => 'QAPage', ], [ 'name' => \__( 'Profile Page', 'wordpress-seo' ), 'value' => 'ProfilePage', ], [ 'name' => \__( 'Contact Page', 'wordpress-seo' ), 'value' => 'ContactPage', ], [ 'name' => \__( 'Medical Web Page', 'wordpress-seo' ), 'value' => 'MedicalWebPage', ], [ 'name' => \__( 'Collection Page', 'wordpress-seo' ), 'value' => 'CollectionPage', ], [ 'name' => \__( 'Checkout Page', 'wordpress-seo' ), 'value' => 'CheckoutPage', ], [ 'name' => \__( 'Real Estate Listing', 'wordpress-seo' ), 'value' => 'RealEstateListing', ], [ 'name' => \__( 'Search Results Page', 'wordpress-seo' ), 'value' => 'SearchResultsPage', ], ]; } /** * Gets the article type options. * * @return array[] The schema article type options. */ public function get_article_type_options() { /** * Filter: 'wpseo_schema_article_types_labels' - Allow developers to filter the available article types and their labels. * * Make sure when you filter this to also filter `wpseo_schema_article_types`. * * @param array $schema_article_types_labels The available schema article types and their labels. */ return \apply_filters( 'wpseo_schema_article_types_labels', [ [ 'name' => \__( 'Article', 'wordpress-seo' ), 'value' => 'Article', ], [ 'name' => \__( 'Blog Post', 'wordpress-seo' ), 'value' => 'BlogPosting', ], [ 'name' => \__( 'Social Media Posting', 'wordpress-seo' ), 'value' => 'SocialMediaPosting', ], [ 'name' => \__( 'News Article', 'wordpress-seo' ), 'value' => 'NewsArticle', ], [ 'name' => \__( 'Advertiser Content Article', 'wordpress-seo' ), 'value' => 'AdvertiserContentArticle', ], [ 'name' => \__( 'Satirical Article', 'wordpress-seo' ), 'value' => 'SatiricalArticle', ], [ 'name' => \__( 'Scholarly Article', 'wordpress-seo' ), 'value' => 'ScholarlyArticle', ], [ 'name' => \__( 'Tech Article', 'wordpress-seo' ), 'value' => 'TechArticle', ], [ 'name' => \__( 'Report', 'wordpress-seo' ), 'value' => 'Report', ], [ 'name' => \__( 'None', 'wordpress-seo' ), 'value' => 'None', ], ] ); } } src/config/migration-status.php000064400000012227147206602470012637 0ustar00get_migration_status( $name ); // Check if we've attempted to run this migration in the past 10 minutes. If so, it may still be running. if ( \array_key_exists( 'lock', $migration_status ) ) { $timestamp = \strtotime( '-10 minutes' ); return $timestamp > $migration_status['lock']; } // Is the migration version less than the current version. return \version_compare( $migration_status['version'], $version, '<' ); } /** * Checks whether or not the given migration is at least the given version, defaults to checking for the latest version. * * @param string $name The name of the migration. * @param string $version The version to check, defaults to the latest version. * * @return bool Whether or not the requested migration is at least the requested version. */ public function is_version( $name, $version = \WPSEO_VERSION ) { $migration_status = $this->get_migration_status( $name ); return \version_compare( $version, $migration_status['version'], '<=' ); } /** * Gets the error of a given migration if it exists. * * @param string $name The name of the migration. * * @return bool|array False if there is no error, otherwise the error. */ public function get_error( $name ) { $migration_status = $this->get_migration_status( $name ); if ( ! isset( $migration_status['error'] ) ) { return false; } return $migration_status['error']; } /** * Sets an error for the migration. * * @param string $name The name of the migration. * @param string $message Message explaining the reason for the error. * @param string $version The current version. * * @return void */ public function set_error( $name, $message, $version = \WPSEO_VERSION ) { $migration_status = $this->get_migration_status( $name ); $migration_status['error'] = [ 'time' => \strtotime( 'now' ), 'version' => $version, 'message' => $message, ]; $this->set_migration_status( $name, $migration_status ); } /** * Updates the migration version to the latest version. * * @param string $name The name of the migration. * @param string $version The current version. * * @return void */ public function set_success( $name, $version = \WPSEO_VERSION ) { $migration_status = $this->get_migration_status( $name ); unset( $migration_status['lock'] ); unset( $migration_status['error'] ); $migration_status['version'] = $version; $this->set_migration_status( $name, $migration_status ); } /** * Locks the migration status. * * @param string $name The name of the migration. * * @return bool Whether or not the migration was succesfully locked. */ public function lock_migration( $name ) { $migration_status = $this->get_migration_status( $name ); $migration_status['lock'] = \strtotime( 'now' ); return $this->set_migration_status( $name, $migration_status ); } /** * Retrieves the migration option. * * @param string $name The name of the migration. * * @return bool|array The status of the migration, false if no status exists. */ protected function get_migration_status( $name ) { $current_blog_id = \get_current_blog_id(); if ( ! isset( $this->migration_options[ $current_blog_id ][ $name ] ) ) { $migration_status = \get_option( self::MIGRATION_OPTION_KEY . $name ); if ( ! \is_array( $migration_status ) || ! isset( $migration_status['version'] ) ) { $migration_status = [ 'version' => '0.0' ]; } if ( ! isset( $this->migration_options[ $current_blog_id ] ) ) { $this->migration_options[ $current_blog_id ] = []; } $this->migration_options[ $current_blog_id ][ $name ] = $migration_status; } return $this->migration_options[ $current_blog_id ][ $name ]; } /** * Retrieves the migration option. * * @param string $name The name of the migration. * @param array $migration_status The migration status. * * @return bool True if the status was succesfully updated, false otherwise. */ protected function set_migration_status( $name, $migration_status ) { if ( ! \is_array( $migration_status ) || ! isset( $migration_status['version'] ) ) { return false; } $current_blog_id = \get_current_blog_id(); if ( ! isset( $this->migration_options[ $current_blog_id ] ) ) { $this->migration_options[ $current_blog_id ] = []; } $this->migration_options[ $current_blog_id ][ $name ] = $migration_status; return \update_option( self::MIGRATION_OPTION_KEY . $name, $migration_status ); } } src/initializers/woocommerce.php000064400000001417147206602470013104 0ustar00options_helper = $options_helper; $this->url_helper = $url_helper; $this->redirect_helper = $redirect_helper; $this->crawl_cleanup_helper = $crawl_cleanup_helper; } /** * Initializes the integration. * * @return void */ public function initialize() { // We need to hook after 10 because otherwise our options helper isn't available yet. \add_action( 'plugins_loaded', [ $this, 'register_hooks' ], 15 ); } /** * Hooks our required hooks. * * This is the place to register hooks and filters. * * @return void */ public function register_hooks() { if ( $this->options_helper->get( 'clean_campaign_tracking_urls' ) && ! empty( \get_option( 'permalink_structure' ) ) ) { \add_action( 'template_redirect', [ $this, 'utm_redirect' ], 0 ); } if ( $this->options_helper->get( 'clean_permalinks' ) && ! empty( \get_option( 'permalink_structure' ) ) ) { \add_action( 'template_redirect', [ $this, 'clean_permalinks' ], 1 ); } } /** * Returns the conditionals based in which this loadable should be active. * * @return array The array of conditionals. */ public static function get_conditionals() { return [ Front_End_Conditional::class ]; } /** * Redirect utm variables away. * * @return void */ public function utm_redirect() { // Prevents WP CLI from throwing an error. // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! isset( $_SERVER['REQUEST_URI'] ) || \strpos( $_SERVER['REQUEST_URI'], '?' ) === false ) { return; } // phpcs:ignore WordPress.Security.ValidatedSanitizedInput if ( ! \stripos( $_SERVER['REQUEST_URI'], 'utm_' ) ) { return; } // phpcs:ignore WordPress.Security.ValidatedSanitizedInput $parsed = \wp_parse_url( $_SERVER['REQUEST_URI'] ); $query = \explode( '&', $parsed['query'] ); $utms = []; $other_args = []; foreach ( $query as $query_arg ) { if ( \stripos( $query_arg, 'utm_' ) === 0 ) { $utms[] = $query_arg; continue; } $other_args[] = $query_arg; } if ( empty( $utms ) ) { return; } $other_args_str = ''; if ( \count( $other_args ) > 0 ) { $other_args_str = '?' . \implode( '&', $other_args ); } $new_path = $parsed['path'] . $other_args_str . '#' . \implode( '&', $utms ); $message = \sprintf( /* translators: %1$s: Yoast SEO */ \__( '%1$s: redirect utm variables to #', 'wordpress-seo' ), 'Yoast SEO' ); $this->redirect_helper->do_safe_redirect( \trailingslashit( $this->url_helper->recreate_current_url( false ) ) . \ltrim( $new_path, '/' ), 301, $message ); } /** * Removes unneeded query variables from the URL. * * @return void */ public function clean_permalinks() { if ( $this->crawl_cleanup_helper->should_avoid_redirect() ) { return; } $current_url = $this->url_helper->recreate_current_url(); $allowed_params = $this->crawl_cleanup_helper->allowed_params( $current_url ); // If we had only allowed params, let's just bail out, no further processing needed. if ( empty( $allowed_params['query'] ) ) { return; } $url_type = $this->crawl_cleanup_helper->get_url_type(); switch ( $url_type ) { case 'singular_url': $proper_url = $this->crawl_cleanup_helper->singular_url(); break; case 'front_page_url': $proper_url = $this->crawl_cleanup_helper->front_page_url(); break; case 'page_for_posts_url': $proper_url = $this->crawl_cleanup_helper->page_for_posts_url(); break; case 'taxonomy_url': $proper_url = $this->crawl_cleanup_helper->taxonomy_url(); break; case 'search_url': $proper_url = $this->crawl_cleanup_helper->search_url(); break; case 'page_not_found_url': $proper_url = $this->crawl_cleanup_helper->page_not_found_url( $current_url ); break; default: $proper_url = ''; } if ( $this->crawl_cleanup_helper->is_query_var_page( $proper_url ) ) { $proper_url = $this->crawl_cleanup_helper->query_var_page_url( $proper_url ); } $proper_url = \add_query_arg( $allowed_params['allowed_query'], $proper_url ); if ( empty( $proper_url ) || $current_url === $proper_url ) { return; } $this->crawl_cleanup_helper->do_clean_redirect( $proper_url ); } } src/initializers/initializer-interface.php000064400000000531147206602470015042 0ustar00options = $options; $this->redirect = $redirect; } /** * Disable the WP core XML sitemaps. * * @return void */ public function initialize() { // This needs to be on priority 15 as that is after our options initialize. \add_action( 'plugins_loaded', [ $this, 'maybe_disable_core_sitemaps' ], 15 ); } /** * Disables the core sitemaps if Yoast SEO sitemaps are enabled. * * @return void */ public function maybe_disable_core_sitemaps() { if ( $this->options->get( 'enable_xml_sitemap' ) ) { \add_filter( 'wp_sitemaps_enabled', '__return_false' ); \add_action( 'template_redirect', [ $this, 'template_redirect' ], 0 ); } } /** * Redirects requests to the WordPress sitemap to the Yoast sitemap. * * @return void */ public function template_redirect() { // If there is no path, nothing to do. if ( empty( $_SERVER['REQUEST_URI'] ) ) { return; } $path = \sanitize_text_field( \wp_unslash( $_SERVER['REQUEST_URI'] ) ); // If it's not a wp-sitemap request, nothing to do. if ( \substr( $path, 0, 11 ) !== '/wp-sitemap' ) { return; } $redirect = $this->get_redirect_url( $path ); if ( ! $redirect ) { return; } $this->redirect->do_safe_redirect( \home_url( $redirect ), 301 ); } /** * Returns the relative sitemap URL to redirect to. * * @param string $path The original path. * * @return string|false The path to redirct to. False if no redirect should be done. */ private function get_redirect_url( $path ) { // Start with the simple string comparison so we avoid doing unnecessary regexes. if ( $path === '/wp-sitemap.xml' ) { return '/sitemap_index.xml'; } if ( \preg_match( '/^\/wp-sitemap-(posts|taxonomies)-(\w+)-(\d+)\.xml$/', $path, $matches ) ) { $index = ( (int) $matches[3] - 1 ); $index = ( $index === 0 ) ? '' : (string) $index; return '/' . $matches[2] . '-sitemap' . $index . '.xml'; } if ( \preg_match( '/^\/wp-sitemap-users-(\d+)\.xml$/', $path, $matches ) ) { $index = ( (int) $matches[1] - 1 ); $index = ( $index === 0 ) ? '' : (string) $index; return '/author-sitemap' . $index . '.xml'; } return false; } } src/initializers/migration-runner.php000064400000010156147206602470014065 0ustar00migration_status = $migration_status; $this->loader = $loader; $this->adapter = $adapter; } /** * Runs this initializer. * * @return void * * @throws Exception When a migration errored. */ public function initialize() { $this->run_free_migrations(); // The below actions is used for when queries fail, this may happen in a multisite environment when switch_to_blog is used. \add_action( '_yoast_run_migrations', [ $this, 'run_free_migrations' ] ); } /** * Runs the free migrations. * * @return void * * @throws Exception When a migration errored. */ public function run_free_migrations() { $this->run_migrations( 'free' ); } /** * Initializes the migrations. * * @param string $name The name of the migration. * @param string $version The current version. * * @return bool True on success, false on failure. * * @throws Exception If the migration fails and YOAST_ENVIRONMENT is not production. */ public function run_migrations( $name, $version = \WPSEO_VERSION ) { if ( ! $this->migration_status->should_run_migration( $name, $version ) ) { return true; } if ( ! $this->migration_status->lock_migration( $name ) ) { return false; } $migrations = $this->loader->get_migrations( $name ); if ( $migrations === false ) { $this->migration_status->set_error( $name, "Could not perform $name migrations. No migrations found.", $version ); return false; } try { $this->adapter->create_schema_version_table(); $all_versions = \array_keys( $migrations ); $migrated_versions = $this->adapter->get_migrated_versions(); $to_do_versions = \array_diff( $all_versions, $migrated_versions ); \sort( $to_do_versions, \SORT_STRING ); foreach ( $to_do_versions as $to_do_version ) { $class = $migrations[ $to_do_version ]; $this->run_migration( $to_do_version, $class ); } } catch ( Exception $exception ) { // Something went wrong... $this->migration_status->set_error( $name, $exception->getMessage(), $version ); if ( \defined( 'YOAST_ENVIRONMENT' ) && \YOAST_ENVIRONMENT !== 'production' ) { throw $exception; } return false; } $this->migration_status->set_success( $name, $version ); return true; } /** * Runs a single migration. * * @param string $version The version. * @param string $migration_class The migration class. * * @return void * * @throws Exception If the migration failed. Caught by the run_migrations function. */ protected function run_migration( $version, $migration_class ) { /** * The migration to run. * * @var Migration */ $migration = new $migration_class( $this->adapter ); try { $this->adapter->start_transaction(); $migration->up(); $this->adapter->add_version( $version ); $this->adapter->commit_transaction(); } catch ( Exception $e ) { $this->adapter->rollback_transaction(); throw new Exception( \sprintf( '%s - %s', $migration_class, $e->getMessage() ), 0, $e ); } } } src/initializers/plugin-headers.php000064400000001344147206602470013473 0ustar00 $headers The headers. * * @return array The updated headers. */ public function add_requires_yoast_seo_header( $headers ) { $headers[] = 'Requires Yoast SEO'; return $headers; } } src/commands/cleanup-command.php000064400000012425147206602470012724 0ustar00cleanup_integration = $cleanup_integration; } /** * Returns the namespace of this command. * * @return string */ public static function get_namespace() { return Main::WP_CLI_NAMESPACE; } /** * Performs a cleanup of custom Yoast tables. * * This removes unused, unwanted or orphaned database records, which ensures the best performance. Including: * - Indexables * - Indexable hierarchy * - SEO links * * ## OPTIONS * * [--batch-size=] * : The number of database records to clean up in a single sql query. * --- * default: 1000 * --- * * [--interval=] * : The number of microseconds (millionths of a second) to wait between cleanup batches. * --- * default: 500000 * --- * * [--network] * : Performs the cleanup on all sites within the network. * * ## EXAMPLES * * wp yoast cleanup * * @when after_wp_load * * @param array|null $args The arguments. * @param array|null $assoc_args The associative arguments. * * @return void * * @throws ExitException When the input args are invalid. */ public function cleanup( $args = null, $assoc_args = null ) { if ( isset( $assoc_args['interval'] ) && (int) $assoc_args['interval'] < 0 ) { WP_CLI::error( \__( 'The value for \'interval\' must be a positive integer.', 'wordpress-seo' ) ); } if ( isset( $assoc_args['batch-size'] ) && (int) $assoc_args['batch-size'] < 1 ) { WP_CLI::error( \__( 'The value for \'batch-size\' must be a positive integer higher than equal to 1.', 'wordpress-seo' ) ); } if ( isset( $assoc_args['network'] ) && \is_multisite() ) { $total_removed = $this->cleanup_network( $assoc_args ); } else { $total_removed = $this->cleanup_current_site( $assoc_args ); } WP_CLI::success( \sprintf( /* translators: %1$d is the number of records that are removed. */ \_n( 'Cleaned up %1$d record.', 'Cleaned up %1$d records.', $total_removed, 'wordpress-seo' ), $total_removed ) ); } /** * Performs the cleanup for the entire network. * * @param array|null $assoc_args The associative arguments. * * @return int The number of cleaned up records. */ private function cleanup_network( $assoc_args ) { $criteria = [ 'fields' => 'ids', 'spam' => 0, 'deleted' => 0, 'archived' => 0, ]; $blog_ids = \get_sites( $criteria ); $total_removed = 0; foreach ( $blog_ids as $blog_id ) { \switch_to_blog( $blog_id ); $total_removed += $this->cleanup_current_site( $assoc_args ); \restore_current_blog(); } return $total_removed; } /** * Performs the cleanup for a single site. * * @param array|null $assoc_args The associative arguments. * * @return int The number of cleaned up records. */ private function cleanup_current_site( $assoc_args ) { $site_url = \site_url(); $total_removed = 0; if ( ! \is_plugin_active( \WPSEO_BASENAME ) ) { /* translators: %1$s is the site url of the site that is skipped. %2$s is Yoast SEO. */ WP_CLI::warning( \sprintf( \__( 'Skipping %1$s. %2$s is not active on this site.', 'wordpress-seo' ), $site_url, 'Yoast SEO' ) ); return $total_removed; } // Make sure the DB is up to date first. \do_action( '_yoast_run_migrations' ); $tasks = $this->cleanup_integration->get_cleanup_tasks(); $limit = (int) $assoc_args['batch-size']; $interval = (int) $assoc_args['interval']; /* translators: %1$s is the site url of the site that is cleaned up. %2$s is the name of the cleanup task that is currently running. */ $progress_bar_title_format = \__( 'Cleaning up %1$s [%2$s]', 'wordpress-seo' ); $progress = Utils\make_progress_bar( \sprintf( $progress_bar_title_format, $site_url, \key( $tasks ) ), \count( $tasks ) ); foreach ( $tasks as $task_name => $task ) { // Update the progressbar title with the current task name. $progress->tick( 0, \sprintf( $progress_bar_title_format, $site_url, $task_name ) ); do { $items_cleaned = $task( $limit ); if ( \is_int( $items_cleaned ) ) { $total_removed += $items_cleaned; } \usleep( $interval ); // Update the timer. $progress->tick( 0 ); } while ( $items_cleaned !== false && $items_cleaned > 0 ); $progress->tick(); } $progress->finish(); $this->cleanup_integration->reset_cleanup(); WP_CLI::log( \sprintf( /* translators: %1$d is the number of records that were removed. %2$s is the site url. */ \_n( 'Cleaned up %1$d record from %2$s.', 'Cleaned up %1$d records from %2$s.', $total_removed, 'wordpress-seo' ), $total_removed, $site_url ) ); return $total_removed; } } src/commands/command-interface.php000064400000000464147206602470013235 0ustar00post_indexation_action = $post_indexation_action; $this->term_indexation_action = $term_indexation_action; $this->post_type_archive_indexation_action = $post_type_archive_indexation_action; $this->general_indexation_action = $general_indexation_action; $this->complete_indexation_action = $complete_indexation_action; $this->prepare_indexing_action = $prepare_indexing_action; $this->post_link_indexing_action = $post_link_indexing_action; $this->term_link_indexing_action = $term_link_indexing_action; $this->indexable_helper = $indexable_helper; } /** * Gets the namespace. * * @return string */ public static function get_namespace() { return Main::WP_CLI_NAMESPACE; } /** * Indexes all your content to ensure the best performance. * * ## OPTIONS * * [--network] * : Performs the indexation on all sites within the network. * * [--reindex] * : Removes all existing indexables and then reindexes them. * * [--skip-confirmation] * : Skips the confirmations (for automated systems). * * [--interval=] * : The number of microseconds (millionths of a second) to wait between index actions. * --- * default: 500000 * --- * * ## EXAMPLES * * wp yoast index * * @when after_wp_load * * @param array|null $args The arguments. * @param array|null $assoc_args The associative arguments. * * @return void */ public function index( $args = null, $assoc_args = null ) { if ( ! $this->indexable_helper->should_index_indexables() ) { WP_CLI::log( \__( 'Your WordPress environment is running on a non-production site. Indexables can only be created on production environments. Please check your `WP_ENVIRONMENT_TYPE` settings.', 'wordpress-seo' ) ); return; } if ( ! isset( $assoc_args['network'] ) ) { $this->run_indexation_actions( $assoc_args ); return; } $criteria = [ 'fields' => 'ids', 'spam' => 0, 'deleted' => 0, 'archived' => 0, ]; $blog_ids = \get_sites( $criteria ); foreach ( $blog_ids as $blog_id ) { \switch_to_blog( $blog_id ); \do_action( '_yoast_run_migrations' ); $this->run_indexation_actions( $assoc_args ); \restore_current_blog(); } } /** * Runs all indexation actions. * * @param array $assoc_args The associative arguments. * * @return void */ protected function run_indexation_actions( $assoc_args ) { // See if we need to clear all indexables before repopulating. if ( isset( $assoc_args['reindex'] ) ) { // Argument --skip-confirmation to prevent confirmation (for automated systems). if ( ! isset( $assoc_args['skip-confirmation'] ) ) { WP_CLI::confirm( 'This will clear all previously indexed objects. Are you certain you wish to proceed?' ); } // Truncate the tables. $this->clear(); // Delete the transients to make sure re-indexing runs every time. \delete_transient( Indexable_Post_Indexation_Action::UNINDEXED_COUNT_TRANSIENT ); \delete_transient( Indexable_Post_Type_Archive_Indexation_Action::UNINDEXED_COUNT_TRANSIENT ); \delete_transient( Indexable_Term_Indexation_Action::UNINDEXED_COUNT_TRANSIENT ); } $indexation_actions = [ 'posts' => $this->post_indexation_action, 'terms' => $this->term_indexation_action, 'post type archives' => $this->post_type_archive_indexation_action, 'general objects' => $this->general_indexation_action, 'post links' => $this->post_link_indexing_action, 'term links' => $this->term_link_indexing_action, ]; $this->prepare_indexing_action->prepare(); $interval = (int) $assoc_args['interval']; foreach ( $indexation_actions as $name => $indexation_action ) { $this->run_indexation_action( $name, $indexation_action, $interval ); } $this->complete_indexation_action->complete(); } /** * Runs an indexation action. * * @param string $name The name of the object to be indexed. * @param Indexation_Action_Interface $indexation_action The indexation action. * @param int $interval Number of microseconds (millionths of a second) to wait between index actions. * * @return void */ protected function run_indexation_action( $name, Indexation_Action_Interface $indexation_action, $interval ) { $total = $indexation_action->get_total_unindexed(); if ( $total > 0 ) { $limit = $indexation_action->get_limit(); $progress = Utils\make_progress_bar( 'Indexing ' . $name, $total ); do { $indexables = $indexation_action->index(); $count = \count( $indexables ); $progress->tick( $count ); \usleep( $interval ); Utils\wp_clear_object_cache(); } while ( $count >= $limit ); $progress->finish(); } } /** * Clears the database related to the indexables. * * @return void */ protected function clear() { global $wpdb; // For the PreparedSQLPlaceholders issue, see: https://github.com/WordPress/WordPress-Coding-Standards/issues/1903. // For the DirectDBQuery issue, see: https://github.com/WordPress/WordPress-Coding-Standards/issues/1947. // phpcs:disable WordPress.DB -- Table names should not be quoted and truncate queries can not be cached. $wpdb->query( $wpdb->prepare( 'TRUNCATE TABLE %1$s', Model::get_table_name( 'Indexable' ) ) ); $wpdb->query( $wpdb->prepare( 'TRUNCATE TABLE %1$s', Model::get_table_name( 'Indexable_Hierarchy' ) ) ); // phpcs:enable } } src/main.php000064400000003513147206602470007002 0ustar00is_development() && \class_exists( '\Yoast\WP\SEO\Dependency_Injection\Container_Compiler' ) ) { // Exception here is unhandled as it will only occur in development. Container_Compiler::compile( $this->is_development(), __DIR__ . '/generated/container.php', __DIR__ . '/../config/dependency-injection/services.php', __DIR__ . '/../vendor/composer/autoload_classmap.php', 'Yoast\WP\SEO\Generated' ); } if ( \file_exists( __DIR__ . '/generated/container.php' ) ) { require_once __DIR__ . '/generated/container.php'; return new Cached_Container(); } return null; } /** * {@inheritDoc} */ protected function get_name() { return 'yoast-seo'; } /** * {@inheritDoc} */ protected function get_surfaces() { return [ 'classes' => Classes_Surface::class, 'meta' => Meta_Surface::class, 'helpers' => Helpers_Surface::class, ]; } } src/analytics/user-interface/last-completed-indexation-integration.php000064400000003334147206602470022360 0ustar00options_helper = $options_helper; } /** * Registers action hook to maybe save an option. * * @return void */ public function register_hooks(): void { \add_action( 'wpseo_indexables_unindexed_calculated', [ $this, 'maybe_set_indexables_unindexed_calculated', ], 10, 2 ); } /** * Saves a timestamp option when there are no unindexed indexables. * * @param string $indexable_name The name of the indexable that is being checked. * @param int $count The amount of missing indexables. * * @return void */ public function maybe_set_indexables_unindexed_calculated( string $indexable_name, int $count ): void { if ( $count === 0 ) { $no_index = $this->options_helper->get( 'last_known_no_unindexed', [] ); $no_index[ $indexable_name ] = \time(); \remove_action( 'update_option_wpseo', [ 'WPSEO_Utils', 'clear_cache' ] ); $this->options_helper->set( 'last_known_no_unindexed', $no_index ); \add_action( 'update_option_wpseo', [ 'WPSEO_Utils', 'clear_cache' ] ); } } } src/analytics/application/missing-indexables-collector.php000064400000004521147206602470020121 0ustar00 */ private $indexation_actions; /** * The collector constructor. * * @param Indexation_Action_Interface ...$indexation_actions All the Indexation actions. */ public function __construct( Indexation_Action_Interface ...$indexation_actions ) { $this->indexation_actions = $indexation_actions; $this->add_additional_indexing_actions(); } /** * Gets the data for the tracking collector. * * @return array The list of missing indexables. */ public function get() { $missing_indexable_bucket = new Missing_Indexable_Bucket(); foreach ( $this->indexation_actions as $indexation_action ) { $missing_indexable_count = new Missing_Indexable_Count( \get_class( $indexation_action ), $indexation_action->get_total_unindexed() ); $missing_indexable_bucket->add_missing_indexable_count( $missing_indexable_count ); } return [ 'missing_indexables' => $missing_indexable_bucket->to_array() ]; } /** * Adds additional indexing actions to count from the 'wpseo_indexable_collector_add_indexation_actions' filter. * * @return void */ private function add_additional_indexing_actions() { /** * Filter: Adds the possibility to add additional indexation actions to be included in the count routine. * * @internal * @param Indexation_Action_Interface $actions This filter expects a list of Indexation_Action_Interface instances * and expects only Indexation_Action_Interface implementations to be * added to the list. */ $indexing_actions = (array) \apply_filters( 'wpseo_indexable_collector_add_indexation_actions', $this->indexation_actions ); $this->indexation_actions = \array_filter( $indexing_actions, static function ( $indexing_action ) { return \is_a( $indexing_action, Indexation_Action_Interface::class ); } ); } } src/analytics/application/to-be-cleaned-indexables-collector.php000064400000010124147206602470021043 0ustar00indexable_cleanup_repository = $indexable_cleanup_repository; } /** * Gets the data for the collector. * * @return array */ public function get() { $to_be_cleaned_indexable_bucket = new To_Be_Cleaned_Indexable_Bucket(); $cleanup_tasks = [ 'indexables_with_post_object_type_and_shop_order_object_sub_type' => $this->indexable_cleanup_repository->count_indexables_with_object_type_and_object_sub_type( 'post', 'shop_order' ), 'indexables_with_auto-draft_post_status' => $this->indexable_cleanup_repository->count_indexables_with_post_status( 'auto-draft' ), 'indexables_for_non_publicly_viewable_post' => $this->indexable_cleanup_repository->count_indexables_for_non_publicly_viewable_post(), 'indexables_for_non_publicly_viewable_taxonomies' => $this->indexable_cleanup_repository->count_indexables_for_non_publicly_viewable_taxonomies(), 'indexables_for_non_publicly_viewable_post_type_archive_pages' => $this->indexable_cleanup_repository->count_indexables_for_non_publicly_post_type_archive_pages(), 'indexables_for_authors_archive_disabled' => $this->indexable_cleanup_repository->count_indexables_for_authors_archive_disabled(), 'indexables_for_authors_without_archive' => $this->indexable_cleanup_repository->count_indexables_for_authors_without_archive(), 'indexables_for_object_type_and_source_table_users' => $this->indexable_cleanup_repository->count_indexables_for_orphaned_users(), 'indexables_for_object_type_and_source_table_posts' => $this->indexable_cleanup_repository->count_indexables_for_object_type_and_source_table( 'posts', 'ID', 'post' ), 'indexables_for_object_type_and_source_table_terms' => $this->indexable_cleanup_repository->count_indexables_for_object_type_and_source_table( 'terms', 'term_id', 'term' ), 'orphaned_from_table_indexable_hierarchy' => $this->indexable_cleanup_repository->count_orphaned_from_table( 'Indexable_Hierarchy', 'indexable_id' ), 'orphaned_from_table_indexable_id' => $this->indexable_cleanup_repository->count_orphaned_from_table( 'SEO_Links', 'indexable_id' ), 'orphaned_from_table_target_indexable_id' => $this->indexable_cleanup_repository->count_orphaned_from_table( 'SEO_Links', 'target_indexable_id' ), ]; foreach ( $cleanup_tasks as $name => $count ) { if ( $count !== null ) { $count_object = new To_Be_Cleaned_Indexable_Count( $name, $count ); $to_be_cleaned_indexable_bucket->add_to_be_cleaned_indexable_count( $count_object ); } } $this->add_additional_counts( $to_be_cleaned_indexable_bucket ); return [ 'to_be_cleaned_indexables' => $to_be_cleaned_indexable_bucket->to_array() ]; } /** * Allows additional tasks to be added via the 'wpseo_add_cleanup_counts_to_indexable_bucket' action. * * @param To_Be_Cleaned_Indexable_Bucket $to_be_cleaned_indexable_bucket The current bucket with data. * * @return void */ private function add_additional_counts( $to_be_cleaned_indexable_bucket ) { /** * Action: Adds the possibility to add additional to be cleaned objects. * * @internal * @param To_Be_Cleaned_Indexable_Bucket $bucket An indexable cleanup bucket. New values are instances of To_Be_Cleaned_Indexable_Count. */ \do_action( 'wpseo_add_cleanup_counts_to_indexable_bucket', $to_be_cleaned_indexable_bucket ); } } src/analytics/domain/missing-indexable-bucket.php000064400000001731147206602470016171 0ustar00 */ private $missing_indexable_counts; /** * The constructor. */ public function __construct() { $this->missing_indexable_counts = []; } /** * Adds a missing indexable count object to this bucket. * * @param Missing_Indexable_Count $missing_indexable_count The missing indexable count object. * * @return void */ public function add_missing_indexable_count( Missing_Indexable_Count $missing_indexable_count ): void { $this->missing_indexable_counts[] = $missing_indexable_count; } /** * Returns the array representation of all indexable counts. * * @return array */ public function to_array() { return \array_map( static function ( $item ) { return $item->to_array(); }, $this->missing_indexable_counts ); } } src/analytics/domain/missing-indexable-count.php000064400000002336147206602470016046 0ustar00indexable_type = $indexable_type; $this->count = $count; } /** * Returns an array representation of the data. * * @return array Returns both values in an array format. */ public function to_array() { return [ 'indexable_type' => $this->get_indexable_type(), 'count' => $this->get_count(), ]; } /** * Gets the indexable type. * * @return string Returns the indexable type. */ public function get_indexable_type() { return $this->indexable_type; } /** * Gets the count. * * @return int Returns the amount of missing indexables. */ public function get_count() { return $this->count; } } src/analytics/domain/to-be-cleaned-indexable-bucket.php000064400000002062147206602470017115 0ustar00 */ private $to_be_cleaned_indexable_counts; /** * The constructor. */ public function __construct() { $this->to_be_cleaned_indexable_counts = []; } /** * Adds a 'to be cleaned' indexable count object to this bucket. * * @param To_Be_Cleaned_Indexable_Count $to_be_cleaned_indexable_counts The to be cleaned indexable count object. * * @return void */ public function add_to_be_cleaned_indexable_count( To_Be_Cleaned_Indexable_Count $to_be_cleaned_indexable_counts ) { $this->to_be_cleaned_indexable_counts[] = $to_be_cleaned_indexable_counts; } /** * Returns the array representation of all indexable counts. * * @return array */ public function to_array() { return \array_map( static function ( $item ) { return $item->to_array(); }, $this->to_be_cleaned_indexable_counts ); } } src/analytics/domain/to-be-cleaned-indexable-count.php000064400000002231147206602470016766 0ustar00cleanup_name = $cleanup_name; $this->count = $count; } /** * Returns an array representation of the data. * * @return array Returns both values in an array format. */ public function to_array() { return [ 'cleanup_name' => $this->get_cleanup_name(), 'count' => $this->get_count(), ]; } /** * Gets the name. * * @return string */ public function get_cleanup_name() { return $this->cleanup_name; } /** * Gets the count. * * @return int Returns the amount of missing indexables. */ public function get_count() { return $this->count; } } src/generated/assets/externals.php000064400000007317147206602470013331 0ustar00 array('dependencies' => array('wp-polyfill', 'yoast-seo-redux-package'), 'version' => '425acbd30b98c737df6e'), 'analysisReport.js' => array('dependencies' => array('lodash', 'react', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => 'e8b88d5e061686ebc3cb'), 'componentsNew.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-a11y', 'wp-i18n', 'wp-polyfill', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-select', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '898e7a63226507fb9afc'), 'featureFlag.js' => array('dependencies' => array('wp-polyfill'), 'version' => '91e54e3dd01f59a724ae'), 'helpers.js' => array('dependencies' => array('lodash', 'react', 'wp-i18n', 'wp-polyfill', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => 'f38a5f8b9a9ba801e722'), 'relatedKeyphraseSuggestions.js' => array('dependencies' => array('lodash', 'react', 'wp-i18n', 'wp-polyfill', 'yoast-seo-prop-types-package', 'yoast-seo-ui-library-package'), 'version' => '6b14b591d9b325d0e9b2'), 'replacementVariableEditor.js' => array('dependencies' => array('lodash', 'react', 'wp-a11y', 'wp-components', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-draft-js-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '3ef02d0813043f65de66'), 'searchMetadataPreviews.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-i18n', 'wp-polyfill', 'yoast-seo-analysis-package', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '732af9131c98940bc630'), 'socialMetadataForms.js' => array('dependencies' => array('lodash', 'react', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-redux-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '6c538797b828b87a5419'), 'styleGuide.js' => array('dependencies' => array('wp-polyfill', 'yoast-seo-helpers-package', 'yoast-seo-styled-components-package'), 'version' => 'a65ddb8de826da5fea4d'), 'uiLibrary.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-polyfill', 'yoast-seo-prop-types-package', 'yoast-seo-redux-js-toolkit-package'), 'version' => '10d91e84649f91e0f22c'), 'chart.js.js' => array('dependencies' => array('wp-polyfill'), 'version' => '196fb6740f0ef8ce192a'), 'draftJs.js' => array('dependencies' => array('react', 'react-dom', 'wp-polyfill'), 'version' => 'f03ff0ae2ee1cf6bbc54'), 'jed.js' => array('dependencies' => array('wp-polyfill'), 'version' => '28697086e82ae1cd0e88'), 'propTypes.js' => array('dependencies' => array('wp-polyfill'), 'version' => '4c546a0c9e97b70d3fe0'), 'reactHelmet.js' => array('dependencies' => array('react', 'wp-polyfill', 'yoast-seo-prop-types-package'), 'version' => 'b7d9f84f1dc499388f58'), 'redux.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'e83451c8529be91b4af7'), 'styledComponents.js' => array('dependencies' => array('react', 'wp-polyfill'), 'version' => 'f030a78c47ee9be46c07'), 'analysis.js' => array('dependencies' => array('lodash', 'wp-i18n', 'wp-polyfill', 'yoast-seo-feature-flag-package'), 'version' => 'a46d1a15d754cfb2d13e')); src/generated/assets/languages.php000064400000006034147206602470013265 0ustar00 array('dependencies' => array('wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'dcd5887e134799f6ade3'), 'ar.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '0d834af7f322c207067e'), 'ca.js' => array('dependencies' => array('wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '469209f8725d57e2dd13'), 'cs.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '8e4aac0747a3c7dddf8a'), 'de.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'a6f42ad6f8355317a56c'), 'el.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'd72edcab364d544c2469'), 'en.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '7fa3d8125ee3410b54d2'), 'es.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'ff82c0b2cbb874d38d66'), 'fa.js' => array('dependencies' => array('wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '5afc40a75db2d68cacf2'), 'fr.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'a23c2630b045abc90aec'), 'he.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '081c52437d052c9cad74'), 'hu.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'd173d9d977c5b068443b'), 'id.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'ca63950fdd7d6938e7f0'), 'it.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'fb28921dba0da6614c80'), 'ja.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'f08d46a7f98fa0b3d579'), 'nb.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '04746196da02bb736987'), 'nl.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'c324d67321be4de5dba8'), 'pl.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '5908ab61bfa52f1abf82'), 'pt.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => '1b29b34cd8ec54326129'), 'ru.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'f57759f2e75aed95a722'), 'sk.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'be3d5afc018c7be19ca5'), 'sv.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'aa3c53ba0e8c760d56ec'), 'tr.js' => array('dependencies' => array('lodash', 'wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'bcd0ead95eae50bee792')); src/generated/assets/plugin.php000064400000032524147206602470012620 0ustar00 array('dependencies' => array('react', 'wp-components', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => 'b9f59c3fa79d3c219f77'), 'admin-global.js' => array('dependencies' => array('jquery', 'wp-polyfill'), 'version' => 'ee3745f3fdc45e43fb51'), 'admin-modules.js' => array('dependencies' => array('react', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package'), 'version' => 'fdbe5d62f7cf6543e337'), 'analysis-worker.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'aa04978fbd423b404462'), 'api-client.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'f56d7de163fa219c67e2'), 'block-editor.js' => array('dependencies' => array('lodash', 'moment', 'react', 'wp-annotations', 'wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-edit-post', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-plugins', 'wp-polyfill', 'wp-rich-text', 'wp-sanitize', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-chart.js-package', 'yoast-seo-components-new-package', 'yoast-seo-externals-components', 'yoast-seo-externals-contexts', 'yoast-seo-externals-redux', 'yoast-seo-feature-flag-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-related-keyphrase-suggestions-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-search-metadata-previews-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '7f5f93b89077ef523ddd'), 'bulk-editor.js' => array('dependencies' => array('jquery', 'wp-polyfill'), 'version' => '308d4f19cc8fcb346d3d'), 'classic-editor.js' => array('dependencies' => array('jquery', 'lodash', 'moment', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-sanitize', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-chart.js-package', 'yoast-seo-components-new-package', 'yoast-seo-externals-components', 'yoast-seo-externals-contexts', 'yoast-seo-externals-redux', 'yoast-seo-feature-flag-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-related-keyphrase-suggestions-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-search-metadata-previews-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '30e05093dc17f89a7408'), 'crawl-settings.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'd511931b46d0b74648b4'), 'dashboard-widget.js' => array('dependencies' => array('react', 'wp-element', 'wp-polyfill', 'yoast-seo-analysis-report-package', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-style-guide-package'), 'version' => 'ad6147e367cc50376cc5'), 'wincher-dashboard-widget.js' => array('dependencies' => array('lodash', 'moment', 'react', 'wp-api-fetch', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '3e855acf6ae73ab6d1ed'), 'dynamic-blocks.js' => array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-polyfill', 'wp-server-side-render'), 'version' => '739ebde8b3e418b9886a'), 'edit-page.js' => array('dependencies' => array('jquery', 'wp-polyfill'), 'version' => 'afab9d8fdff1d98c8ca9'), 'editor-modules.js' => array('dependencies' => array('lodash', 'moment', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-sanitize', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-analysis-report-package', 'yoast-seo-chart.js-package', 'yoast-seo-components-new-package', 'yoast-seo-externals-contexts', 'yoast-seo-externals-redux', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-related-keyphrase-suggestions-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '0fb1105580e4de7be377'), 'elementor.js' => array('dependencies' => array('lodash', 'moment', 'react', 'react-dom', 'wp-annotations', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-rich-text', 'wp-sanitize', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-chart.js-package', 'yoast-seo-components-new-package', 'yoast-seo-externals-components', 'yoast-seo-externals-contexts', 'yoast-seo-externals-redux', 'yoast-seo-feature-flag-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-related-keyphrase-suggestions-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-search-metadata-previews-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => 'd692099b48a5aed351b3'), 'externals-components.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-analysis-report-package', 'yoast-seo-components-new-package', 'yoast-seo-externals-contexts', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '16b432fd37372c711b4c'), 'externals-contexts.js' => array('dependencies' => array('react', 'wp-element', 'wp-polyfill', 'yoast-seo-prop-types-package'), 'version' => '10ecaeb7fee15b420938'), 'externals-redux.js' => array('dependencies' => array('lodash', 'react', 'wp-api-fetch', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-sanitize', 'wp-url', 'yoast-seo-helpers-package', 'yoast-seo-redux-js-toolkit-package'), 'version' => 'e54d3b4018ee82e36dac'), 'filter-explanation.js' => array('dependencies' => array('wp-polyfill'), 'version' => '8b3042cee26c58eb9be7'), 'first-time-configuration.js' => array('dependencies' => array('lodash', 'react', 'wp-api-fetch', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-ui-library-package'), 'version' => '00bcbab7209b574e7eac'), 'help-scout-beacon.js' => array('dependencies' => array('react', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-styled-components-package'), 'version' => '4cff4f48af6493046757'), 'import.js' => array('dependencies' => array('jquery', 'lodash', 'wp-i18n', 'wp-polyfill'), 'version' => 'cbe848d7253c616f3a75'), 'indexation.js' => array('dependencies' => array('jquery', 'react', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-style-guide-package', 'yoast-seo-styled-components-package'), 'version' => '06817d20ccce29675844'), 'installation-success.js' => array('dependencies' => array('lodash', 'react', 'wp-components', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-externals-contexts', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => '1aab6f9200a2aa6de4bd'), 'integrations-page.js' => array('dependencies' => array('lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-externals-contexts', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => 'fa7eed1ce031aa8ded1d'), 'introductions.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-ui-library-package'), 'version' => 'bb8fee94b79758a69355'), 'network-admin.js' => array('dependencies' => array('jquery', 'wp-polyfill'), 'version' => 'c28de4314d03147fca4a'), 'post-edit.js' => array('dependencies' => array('jquery', 'lodash', 'react', 'react-dom', 'wp-annotations', 'wp-api', 'wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-rich-text', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-externals-redux', 'yoast-seo-feature-flag-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '4b5a10f35a3db2f0e432'), 'quick-edit-handler.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'e7d3f8a9873afbfd1425'), 'reindex-links.js' => array('dependencies' => array('jquery', 'wp-polyfill'), 'version' => 'e4694eb7292052d53fc4'), 'redirect-old-features-tab.js' => array('dependencies' => array('wp-polyfill'), 'version' => 'a792fdd4c0d1c2ef737c'), 'settings.js' => array('dependencies' => array('jquery', 'lodash', 'react', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-externals-redux', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => 'a934c1f028984ebfafd9'), 'new-settings.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-externals-redux', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-replacement-variable-editor-package', 'yoast-seo-styled-components-package', 'yoast-seo-ui-library-package'), 'version' => '01b27973bddbda6e9c69'), 'academy.js' => array('dependencies' => array('lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-ui-library-package'), 'version' => 'd0588094e6ca789bd521'), 'general-page.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-externals-redux', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-social-metadata-forms-package', 'yoast-seo-ui-library-package'), 'version' => 'ef70b0b4ec9f15f1bf21'), 'support.js' => array('dependencies' => array('lodash', 'react', 'react-dom', 'wp-api-fetch', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-url', 'yoast-seo-externals-redux', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-ui-library-package'), 'version' => '343e5edd16acdf36d5c4'), 'how-to-block.js' => array('dependencies' => array('lodash', 'react', 'wp-a11y', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => '3c48eb9c2bda3f650887'), 'faq-block.js' => array('dependencies' => array('react', 'wp-a11y', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'yoast-seo-prop-types-package'), 'version' => '34ebc93abf046084fe1c'), 'term-edit.js' => array('dependencies' => array('jquery', 'lodash', 'react', 'react-dom', 'wp-annotations', 'wp-api', 'wp-api-fetch', 'wp-blocks', 'wp-components', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-is-shallow-equal', 'wp-polyfill', 'wp-rich-text', 'wp-url', 'yoast-seo-analysis-package', 'yoast-seo-externals-redux', 'yoast-seo-feature-flag-package', 'yoast-seo-prop-types-package', 'yoast-seo-react-helmet-package', 'yoast-seo-redux-js-toolkit-package', 'yoast-seo-ui-library-package'), 'version' => '99bb9a6b5cb6194ee067'), 'used-keywords-assessment.js' => array('dependencies' => array('wp-polyfill', 'yoast-seo-analysis-package'), 'version' => 'f2d934f4e70fdace40fc'), 'react-select.js' => array('dependencies' => array('react', 'react-dom', 'wp-polyfill', 'yoast-seo-prop-types-package'), 'version' => '016b19f563b56deb8ad5'), 'workouts.js' => array('dependencies' => array('lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-polyfill', 'yoast-seo-components-new-package', 'yoast-seo-externals-contexts', 'yoast-seo-helpers-package', 'yoast-seo-prop-types-package', 'yoast-seo-styled-components-package'), 'version' => '5285008d6544c5f1c0d4'), 'frontend-inspector-resources.js' => array('dependencies' => array('lodash', 'react', 'wp-i18n', 'wp-polyfill', 'yoast-seo-analysis-package', 'yoast-seo-components-new-package', 'yoast-seo-prop-types-package', 'yoast-seo-style-guide-package'), 'version' => '9f0c47d9fdc1587c505a')); src/generated/container.php000064400002047135147206602470012010 0ustar00services = []; $this->normalizedIds = [ 'wpseo_addon_manager' => 'WPSEO_Addon_Manager', 'wpseo_admin_asset_manager' => 'WPSEO_Admin_Asset_Manager', 'wpseo_breadcrumbs' => 'WPSEO_Breadcrumbs', 'wpseo_frontend' => 'WPSEO_Frontend', 'wpseo_replace_vars' => 'WPSEO_Replace_Vars', 'wpseo_shortlinker' => 'WPSEO_Shortlinker', 'wpseo_utils' => 'WPSEO_Utils', 'yoast\\wp\\lib\\migrations\\adapter' => 'Yoast\\WP\\Lib\\Migrations\\Adapter', 'yoast\\wp\\seo\\actions\\addon_installation\\addon_activate_action' => 'Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Activate_Action', 'yoast\\wp\\seo\\actions\\addon_installation\\addon_install_action' => 'Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Install_Action', 'yoast\\wp\\seo\\actions\\alert_dismissal_action' => 'Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action', 'yoast\\wp\\seo\\actions\\configuration\\first_time_configuration_action' => 'Yoast\\WP\\SEO\\Actions\\Configuration\\First_Time_Configuration_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_cleanup_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_custom_archive_settings_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_default_archive_settings_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_general_settings_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_posts_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_posttype_defaults_settings_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_taxonomy_settings_importing_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action', 'yoast\\wp\\seo\\actions\\importing\\aioseo\\aioseo_validate_data_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action', 'yoast\\wp\\seo\\actions\\importing\\deactivate_conflicting_plugins_action' => 'Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action', 'yoast\\wp\\seo\\actions\\indexables\\indexable_head_action' => 'Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexable_general_indexation_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexable_indexing_complete_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexable_post_indexation_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexable_post_type_archive_indexation_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexable_term_indexation_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexing_complete_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Complete_Action', 'yoast\\wp\\seo\\actions\\indexing\\indexing_prepare_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action', 'yoast\\wp\\seo\\actions\\indexing\\post_link_indexing_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action', 'yoast\\wp\\seo\\actions\\indexing\\term_link_indexing_action' => 'Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action', 'yoast\\wp\\seo\\actions\\integrations_action' => 'Yoast\\WP\\SEO\\Actions\\Integrations_Action', 'yoast\\wp\\seo\\actions\\semrush\\semrush_login_action' => 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Login_Action', 'yoast\\wp\\seo\\actions\\semrush\\semrush_options_action' => 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Options_Action', 'yoast\\wp\\seo\\actions\\semrush\\semrush_phrases_action' => 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Phrases_Action', 'yoast\\wp\\seo\\actions\\wincher\\wincher_account_action' => 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action', 'yoast\\wp\\seo\\actions\\wincher\\wincher_keyphrases_action' => 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action', 'yoast\\wp\\seo\\actions\\wincher\\wincher_login_action' => 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Login_Action', 'yoast\\wp\\seo\\analytics\\application\\missing_indexables_collector' => 'Yoast\\WP\\SEO\\Analytics\\Application\\Missing_Indexables_Collector', 'yoast\\wp\\seo\\analytics\\application\\to_be_cleaned_indexables_collector' => 'Yoast\\WP\\SEO\\Analytics\\Application\\To_Be_Cleaned_Indexables_Collector', 'yoast\\wp\\seo\\analytics\\user_interface\\last_completed_indexation_integration' => 'Yoast\\WP\\SEO\\Analytics\\User_Interface\\Last_Completed_Indexation_Integration', 'yoast\\wp\\seo\\builders\\indexable_author_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder', 'yoast\\wp\\seo\\builders\\indexable_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Builder', 'yoast\\wp\\seo\\builders\\indexable_date_archive_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Date_Archive_Builder', 'yoast\\wp\\seo\\builders\\indexable_hierarchy_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder', 'yoast\\wp\\seo\\builders\\indexable_home_page_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder', 'yoast\\wp\\seo\\builders\\indexable_link_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder', 'yoast\\wp\\seo\\builders\\indexable_post_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder', 'yoast\\wp\\seo\\builders\\indexable_post_type_archive_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder', 'yoast\\wp\\seo\\builders\\indexable_system_page_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_System_Page_Builder', 'yoast\\wp\\seo\\builders\\indexable_term_builder' => 'Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder', 'yoast\\wp\\seo\\builders\\primary_term_builder' => 'Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder', 'yoast\\wp\\seo\\commands\\cleanup_command' => 'Yoast\\WP\\SEO\\Commands\\Cleanup_Command', 'yoast\\wp\\seo\\commands\\index_command' => 'Yoast\\WP\\SEO\\Commands\\Index_Command', 'yoast\\wp\\seo\\conditionals\\addon_installation_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\doing_post_quick_edit_save_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Doing_Post_Quick_Edit_Save_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\estimated_reading_time_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Estimated_Reading_Time_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\licenses_page_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Licenses_Page_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\non_network_admin_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Non_Network_Admin_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\post_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\posts_overview_or_ajax_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Posts_Overview_Or_Ajax_Conditional', 'yoast\\wp\\seo\\conditionals\\admin\\yoast_admin_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Yoast_Admin_Conditional', 'yoast\\wp\\seo\\conditionals\\admin_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Admin_Conditional', 'yoast\\wp\\seo\\conditionals\\attachment_redirections_enabled_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Attachment_Redirections_Enabled_Conditional', 'yoast\\wp\\seo\\conditionals\\check_required_version_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional', 'yoast\\wp\\seo\\conditionals\\deactivating_yoast_seo_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Deactivating_Yoast_Seo_Conditional', 'yoast\\wp\\seo\\conditionals\\development_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Development_Conditional', 'yoast\\wp\\seo\\conditionals\\front_end_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional', 'yoast\\wp\\seo\\conditionals\\get_request_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional', 'yoast\\wp\\seo\\conditionals\\headless_rest_endpoints_enabled_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Headless_Rest_Endpoints_Enabled_Conditional', 'yoast\\wp\\seo\\conditionals\\import_tool_selected_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Import_Tool_Selected_Conditional', 'yoast\\wp\\seo\\conditionals\\jetpack_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Jetpack_Conditional', 'yoast\\wp\\seo\\conditionals\\migrations_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Migrations_Conditional', 'yoast\\wp\\seo\\conditionals\\new_settings_ui_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional', 'yoast\\wp\\seo\\conditionals\\news_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\News_Conditional', 'yoast\\wp\\seo\\conditionals\\no_tool_selected_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\No_Tool_Selected_Conditional', 'yoast\\wp\\seo\\conditionals\\non_multisite_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Non_Multisite_Conditional', 'yoast\\wp\\seo\\conditionals\\not_admin_ajax_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Not_Admin_Ajax_Conditional', 'yoast\\wp\\seo\\conditionals\\open_graph_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Open_Graph_Conditional', 'yoast\\wp\\seo\\conditionals\\premium_active_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Premium_Active_Conditional', 'yoast\\wp\\seo\\conditionals\\premium_inactive_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Premium_Inactive_Conditional', 'yoast\\wp\\seo\\conditionals\\primary_category_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Primary_Category_Conditional', 'yoast\\wp\\seo\\conditionals\\robots_txt_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Robots_Txt_Conditional', 'yoast\\wp\\seo\\conditionals\\semrush_enabled_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\SEMrush_Enabled_Conditional', 'yoast\\wp\\seo\\conditionals\\settings_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Settings_Conditional', 'yoast\\wp\\seo\\conditionals\\should_index_links_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Should_Index_Links_Conditional', 'yoast\\wp\\seo\\conditionals\\text_formality_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\elementor_activated_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Activated_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\elementor_edit_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Edit_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\polylang_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\translatepress_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\w3_total_cache_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\W3_Total_Cache_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\wordproof_integration_active_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Integration_Active_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\wordproof_plugin_inactive_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Plugin_Inactive_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\wpml_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional', 'yoast\\wp\\seo\\conditionals\\third_party\\wpml_wpseo_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional', 'yoast\\wp\\seo\\conditionals\\updated_importer_framework_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional', 'yoast\\wp\\seo\\conditionals\\user_can_edit_users_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Edit_Users_Conditional', 'yoast\\wp\\seo\\conditionals\\user_can_manage_wpseo_options_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional', 'yoast\\wp\\seo\\conditionals\\user_can_publish_posts_and_pages_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Publish_Posts_And_Pages_Conditional', 'yoast\\wp\\seo\\conditionals\\user_edit_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\User_Edit_Conditional', 'yoast\\wp\\seo\\conditionals\\user_profile_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\User_Profile_Conditional', 'yoast\\wp\\seo\\conditionals\\web_stories_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Web_Stories_Conditional', 'yoast\\wp\\seo\\conditionals\\wincher_automatically_track_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Automatically_Track_Conditional', 'yoast\\wp\\seo\\conditionals\\wincher_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Conditional', 'yoast\\wp\\seo\\conditionals\\wincher_enabled_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Enabled_Conditional', 'yoast\\wp\\seo\\conditionals\\wincher_token_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Token_Conditional', 'yoast\\wp\\seo\\conditionals\\woocommerce_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional', 'yoast\\wp\\seo\\conditionals\\wp_cron_enabled_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional', 'yoast\\wp\\seo\\conditionals\\wp_robots_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\WP_Robots_Conditional', 'yoast\\wp\\seo\\conditionals\\xmlrpc_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\XMLRPC_Conditional', 'yoast\\wp\\seo\\conditionals\\yoast_admin_and_dashboard_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional', 'yoast\\wp\\seo\\conditionals\\yoast_tools_page_conditional' => 'Yoast\\WP\\SEO\\Conditionals\\Yoast_Tools_Page_Conditional', 'yoast\\wp\\seo\\config\\badge_group_names' => 'Yoast\\WP\\SEO\\Config\\Badge_Group_Names', 'yoast\\wp\\seo\\config\\conflicting_plugins' => 'Yoast\\WP\\SEO\\Config\\Conflicting_Plugins', 'yoast\\wp\\seo\\config\\indexing_reasons' => 'Yoast\\WP\\SEO\\Config\\Indexing_Reasons', 'yoast\\wp\\seo\\config\\migration_status' => 'Yoast\\WP\\SEO\\Config\\Migration_Status', 'yoast\\wp\\seo\\config\\migrations\\addcollationtotables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddCollationToTables', 'yoast\\wp\\seo\\config\\migrations\\addcolumnstoindexables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddColumnsToIndexables', 'yoast\\wp\\seo\\config\\migrations\\addestimatedreadingtime' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddEstimatedReadingTime', 'yoast\\wp\\seo\\config\\migrations\\addhasancestorscolumn' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddHasAncestorsColumn', 'yoast\\wp\\seo\\config\\migrations\\addinclusivelanguagescore' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddInclusiveLanguageScore', 'yoast\\wp\\seo\\config\\migrations\\addindexableobjectidandtypeindex' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexableObjectIdAndTypeIndex', 'yoast\\wp\\seo\\config\\migrations\\addindexesforprominentwordsonindexables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexesForProminentWordsOnIndexables', 'yoast\\wp\\seo\\config\\migrations\\addobjecttimestamps' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddObjectTimestamps', 'yoast\\wp\\seo\\config\\migrations\\addversioncolumntoindexables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\AddVersionColumnToIndexables', 'yoast\\wp\\seo\\config\\migrations\\breadcrumbtitleandhierarchyreset' => 'Yoast\\WP\\SEO\\Config\\Migrations\\BreadcrumbTitleAndHierarchyReset', 'yoast\\wp\\seo\\config\\migrations\\clearindexabletables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ClearIndexableTables', 'yoast\\wp\\seo\\config\\migrations\\createindexablesubpagesindex' => 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateIndexableSubpagesIndex', 'yoast\\wp\\seo\\config\\migrations\\createseolinkstable' => 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateSEOLinksTable', 'yoast\\wp\\seo\\config\\migrations\\deleteduplicateindexables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\DeleteDuplicateIndexables', 'yoast\\wp\\seo\\config\\migrations\\expandindexablecolumnlengths' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableColumnLengths', 'yoast\\wp\\seo\\config\\migrations\\expandindexableidcolumnlengths' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableIDColumnLengths', 'yoast\\wp\\seo\\config\\migrations\\expandprimarytermidcolumnlengths' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandPrimaryTermIDColumnLengths', 'yoast\\wp\\seo\\config\\migrations\\replacepermalinkhashindex' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ReplacePermalinkHashIndex', 'yoast\\wp\\seo\\config\\migrations\\resetindexablehierarchytable' => 'Yoast\\WP\\SEO\\Config\\Migrations\\ResetIndexableHierarchyTable', 'yoast\\wp\\seo\\config\\migrations\\truncateindexabletables' => 'Yoast\\WP\\SEO\\Config\\Migrations\\TruncateIndexableTables', 'yoast\\wp\\seo\\config\\migrations\\wpyoastdropindexablemetatableifexists' => 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastDropIndexableMetaTableIfExists', 'yoast\\wp\\seo\\config\\migrations\\wpyoastindexable' => 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexable', 'yoast\\wp\\seo\\config\\migrations\\wpyoastindexablehierarchy' => 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexableHierarchy', 'yoast\\wp\\seo\\config\\migrations\\wpyoastprimaryterm' => 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastPrimaryTerm', 'yoast\\wp\\seo\\config\\researcher_languages' => 'Yoast\\WP\\SEO\\Config\\Researcher_Languages', 'yoast\\wp\\seo\\config\\schema_ids' => 'Yoast\\WP\\SEO\\Config\\Schema_IDs', 'yoast\\wp\\seo\\config\\schema_types' => 'Yoast\\WP\\SEO\\Config\\Schema_Types', 'yoast\\wp\\seo\\config\\semrush_client' => 'Yoast\\WP\\SEO\\Config\\SEMrush_Client', 'yoast\\wp\\seo\\config\\wincher_client' => 'Yoast\\WP\\SEO\\Config\\Wincher_Client', 'yoast\\wp\\seo\\config\\wordproof_app_config' => 'Yoast\\WP\\SEO\\Config\\Wordproof_App_Config', 'yoast\\wp\\seo\\config\\wordproof_translations' => 'Yoast\\WP\\SEO\\Config\\Wordproof_Translations', 'yoast\\wp\\seo\\content_type_visibility\\application\\content_type_visibility_dismiss_notifications' => 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications', 'yoast\\wp\\seo\\content_type_visibility\\application\\content_type_visibility_watcher_actions' => 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Watcher_Actions', 'yoast\\wp\\seo\\content_type_visibility\\user_interface\\content_type_visibility_dismiss_new_route' => 'Yoast\\WP\\SEO\\Content_Type_Visibility\\User_Interface\\Content_Type_Visibility_Dismiss_New_Route', 'yoast\\wp\\seo\\context\\meta_tags_context' => 'Yoast\\WP\\SEO\\Context\\Meta_Tags_Context', 'yoast\\wp\\seo\\editors\\application\\analysis_features\\enabled_analysis_features_repository' => 'Yoast\\WP\\SEO\\Editors\\Application\\Analysis_Features\\Enabled_Analysis_Features_Repository', 'yoast\\wp\\seo\\editors\\application\\integrations\\integration_information_repository' => 'Yoast\\WP\\SEO\\Editors\\Application\\Integrations\\Integration_Information_Repository', 'yoast\\wp\\seo\\editors\\application\\seo\\post_seo_information_repository' => 'Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Post_Seo_Information_Repository', 'yoast\\wp\\seo\\editors\\application\\seo\\term_seo_information_repository' => 'Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Term_Seo_Information_Repository', 'yoast\\wp\\seo\\editors\\application\\site\\website_information_repository' => 'Yoast\\WP\\SEO\\Editors\\Application\\Site\\Website_Information_Repository', 'yoast\\wp\\seo\\general\\user_interface\\general_page_integration' => 'Yoast\\WP\\SEO\\General\\User_Interface\\General_Page_Integration', 'yoast\\wp\\seo\\generators\\breadcrumbs_generator' => 'Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator', 'yoast\\wp\\seo\\generators\\open_graph_image_generator' => 'Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator', 'yoast\\wp\\seo\\generators\\open_graph_locale_generator' => 'Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator', 'yoast\\wp\\seo\\generators\\schema\\article' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Article', 'yoast\\wp\\seo\\generators\\schema\\author' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Author', 'yoast\\wp\\seo\\generators\\schema\\breadcrumb' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Breadcrumb', 'yoast\\wp\\seo\\generators\\schema\\faq' => 'Yoast\\WP\\SEO\\Generators\\Schema\\FAQ', 'yoast\\wp\\seo\\generators\\schema\\howto' => 'Yoast\\WP\\SEO\\Generators\\Schema\\HowTo', 'yoast\\wp\\seo\\generators\\schema\\main_image' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Main_Image', 'yoast\\wp\\seo\\generators\\schema\\organization' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Organization', 'yoast\\wp\\seo\\generators\\schema\\person' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Person', 'yoast\\wp\\seo\\generators\\schema\\webpage' => 'Yoast\\WP\\SEO\\Generators\\Schema\\WebPage', 'yoast\\wp\\seo\\generators\\schema\\website' => 'Yoast\\WP\\SEO\\Generators\\Schema\\Website', 'yoast\\wp\\seo\\generators\\schema_generator' => 'Yoast\\WP\\SEO\\Generators\\Schema_Generator', 'yoast\\wp\\seo\\generators\\twitter_image_generator' => 'Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator', 'yoast\\wp\\seo\\helpers\\aioseo_helper' => 'Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper', 'yoast\\wp\\seo\\helpers\\asset_helper' => 'Yoast\\WP\\SEO\\Helpers\\Asset_Helper', 'yoast\\wp\\seo\\helpers\\attachment_cleanup_helper' => 'Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper', 'yoast\\wp\\seo\\helpers\\author_archive_helper' => 'Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper', 'yoast\\wp\\seo\\helpers\\blocks_helper' => 'Yoast\\WP\\SEO\\Helpers\\Blocks_Helper', 'yoast\\wp\\seo\\helpers\\capability_helper' => 'Yoast\\WP\\SEO\\Helpers\\Capability_Helper', 'yoast\\wp\\seo\\helpers\\crawl_cleanup_helper' => 'Yoast\\WP\\SEO\\Helpers\\Crawl_Cleanup_Helper', 'yoast\\wp\\seo\\helpers\\curl_helper' => 'Yoast\\WP\\SEO\\Helpers\\Curl_Helper', 'yoast\\wp\\seo\\helpers\\current_page_helper' => 'Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper', 'yoast\\wp\\seo\\helpers\\date_helper' => 'Yoast\\WP\\SEO\\Helpers\\Date_Helper', 'yoast\\wp\\seo\\helpers\\environment_helper' => 'Yoast\\WP\\SEO\\Helpers\\Environment_Helper', 'yoast\\wp\\seo\\helpers\\first_time_configuration_notice_helper' => 'Yoast\\WP\\SEO\\Helpers\\First_Time_Configuration_Notice_Helper', 'yoast\\wp\\seo\\helpers\\home_url_helper' => 'Yoast\\WP\\SEO\\Helpers\\Home_Url_Helper', 'yoast\\wp\\seo\\helpers\\image_helper' => 'Yoast\\WP\\SEO\\Helpers\\Image_Helper', 'yoast\\wp\\seo\\helpers\\import_cursor_helper' => 'Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper', 'yoast\\wp\\seo\\helpers\\import_helper' => 'Yoast\\WP\\SEO\\Helpers\\Import_Helper', 'yoast\\wp\\seo\\helpers\\indexable_helper' => 'Yoast\\WP\\SEO\\Helpers\\Indexable_Helper', 'yoast\\wp\\seo\\helpers\\indexable_to_postmeta_helper' => 'Yoast\\WP\\SEO\\Helpers\\Indexable_To_Postmeta_Helper', 'yoast\\wp\\seo\\helpers\\indexing_helper' => 'Yoast\\WP\\SEO\\Helpers\\Indexing_Helper', 'yoast\\wp\\seo\\helpers\\language_helper' => 'Yoast\\WP\\SEO\\Helpers\\Language_Helper', 'yoast\\wp\\seo\\helpers\\meta_helper' => 'Yoast\\WP\\SEO\\Helpers\\Meta_Helper', 'yoast\\wp\\seo\\helpers\\notification_helper' => 'Yoast\\WP\\SEO\\Helpers\\Notification_Helper', 'yoast\\wp\\seo\\helpers\\open_graph\\image_helper' => 'Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper', 'yoast\\wp\\seo\\helpers\\open_graph\\values_helper' => 'Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper', 'yoast\\wp\\seo\\helpers\\options_helper' => 'Yoast\\WP\\SEO\\Helpers\\Options_Helper', 'yoast\\wp\\seo\\helpers\\pagination_helper' => 'Yoast\\WP\\SEO\\Helpers\\Pagination_Helper', 'yoast\\wp\\seo\\helpers\\permalink_helper' => 'Yoast\\WP\\SEO\\Helpers\\Permalink_Helper', 'yoast\\wp\\seo\\helpers\\post_helper' => 'Yoast\\WP\\SEO\\Helpers\\Post_Helper', 'yoast\\wp\\seo\\helpers\\post_type_helper' => 'Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper', 'yoast\\wp\\seo\\helpers\\primary_term_helper' => 'Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper', 'yoast\\wp\\seo\\helpers\\product_helper' => 'Yoast\\WP\\SEO\\Helpers\\Product_Helper', 'yoast\\wp\\seo\\helpers\\redirect_helper' => 'Yoast\\WP\\SEO\\Helpers\\Redirect_Helper', 'yoast\\wp\\seo\\helpers\\request_helper' => 'Yoast\\WP\\SEO\\Helpers\\Request_Helper', 'yoast\\wp\\seo\\helpers\\require_file_helper' => 'Yoast\\WP\\SEO\\Helpers\\Require_File_Helper', 'yoast\\wp\\seo\\helpers\\robots_helper' => 'Yoast\\WP\\SEO\\Helpers\\Robots_Helper', 'yoast\\wp\\seo\\helpers\\robots_txt_helper' => 'Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper', 'yoast\\wp\\seo\\helpers\\sanitization_helper' => 'Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper', 'yoast\\wp\\seo\\helpers\\schema\\article_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper', 'yoast\\wp\\seo\\helpers\\schema\\html_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper', 'yoast\\wp\\seo\\helpers\\schema\\id_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper', 'yoast\\wp\\seo\\helpers\\schema\\image_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\Image_Helper', 'yoast\\wp\\seo\\helpers\\schema\\language_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper', 'yoast\\wp\\seo\\helpers\\schema\\replace_vars_helper' => 'Yoast\\WP\\SEO\\Helpers\\Schema\\Replace_Vars_Helper', 'yoast\\wp\\seo\\helpers\\score_icon_helper' => 'Yoast\\WP\\SEO\\Helpers\\Score_Icon_Helper', 'yoast\\wp\\seo\\helpers\\short_link_helper' => 'Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper', 'yoast\\wp\\seo\\helpers\\site_helper' => 'Yoast\\WP\\SEO\\Helpers\\Site_Helper', 'yoast\\wp\\seo\\helpers\\social_profiles_helper' => 'Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper', 'yoast\\wp\\seo\\helpers\\string_helper' => 'Yoast\\WP\\SEO\\Helpers\\String_Helper', 'yoast\\wp\\seo\\helpers\\taxonomy_helper' => 'Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper', 'yoast\\wp\\seo\\helpers\\twitter\\image_helper' => 'Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper', 'yoast\\wp\\seo\\helpers\\url_helper' => 'Yoast\\WP\\SEO\\Helpers\\Url_Helper', 'yoast\\wp\\seo\\helpers\\user_helper' => 'Yoast\\WP\\SEO\\Helpers\\User_Helper', 'yoast\\wp\\seo\\helpers\\wincher_helper' => 'Yoast\\WP\\SEO\\Helpers\\Wincher_Helper', 'yoast\\wp\\seo\\helpers\\woocommerce_helper' => 'Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper', 'yoast\\wp\\seo\\helpers\\wordpress_helper' => 'Yoast\\WP\\SEO\\Helpers\\Wordpress_Helper', 'yoast\\wp\\seo\\helpers\\wordproof_helper' => 'Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper', 'yoast\\wp\\seo\\helpers\\wpdb_helper' => 'Yoast\\WP\\SEO\\Helpers\\Wpdb_Helper', 'yoast\\wp\\seo\\initializers\\crawl_cleanup_permalinks' => 'Yoast\\WP\\SEO\\Initializers\\Crawl_Cleanup_Permalinks', 'yoast\\wp\\seo\\initializers\\disable_core_sitemaps' => 'Yoast\\WP\\SEO\\Initializers\\Disable_Core_Sitemaps', 'yoast\\wp\\seo\\initializers\\migration_runner' => 'Yoast\\WP\\SEO\\Initializers\\Migration_Runner', 'yoast\\wp\\seo\\initializers\\plugin_headers' => 'Yoast\\WP\\SEO\\Initializers\\Plugin_Headers', 'yoast\\wp\\seo\\initializers\\woocommerce' => 'Yoast\\WP\\SEO\\Initializers\\Woocommerce', 'yoast\\wp\\seo\\integrations\\academy_integration' => 'Yoast\\WP\\SEO\\Integrations\\Academy_Integration', 'yoast\\wp\\seo\\integrations\\admin\\activation_cleanup_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Activation_Cleanup_Integration', 'yoast\\wp\\seo\\integrations\\admin\\addon_installation\\dialog_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Dialog_Integration', 'yoast\\wp\\seo\\integrations\\admin\\addon_installation\\installation_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Installation_Integration', 'yoast\\wp\\seo\\integrations\\admin\\admin_columns_cache_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration', 'yoast\\wp\\seo\\integrations\\admin\\background_indexing_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Background_Indexing_Integration', 'yoast\\wp\\seo\\integrations\\admin\\check_required_version' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Check_Required_Version', 'yoast\\wp\\seo\\integrations\\admin\\crawl_settings_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Crawl_Settings_Integration', 'yoast\\wp\\seo\\integrations\\admin\\cron_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Cron_Integration', 'yoast\\wp\\seo\\integrations\\admin\\deactivated_premium_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Deactivated_Premium_Integration', 'yoast\\wp\\seo\\integrations\\admin\\disable_concatenate_scripts_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Disable_Concatenate_Scripts_Integration', 'yoast\\wp\\seo\\integrations\\admin\\first_time_configuration_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Integration', 'yoast\\wp\\seo\\integrations\\admin\\first_time_configuration_notice_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Notice_Integration', 'yoast\\wp\\seo\\integrations\\admin\\fix_news_dependencies_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Fix_News_Dependencies_Integration', 'yoast\\wp\\seo\\integrations\\admin\\health_check_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Health_Check_Integration', 'yoast\\wp\\seo\\integrations\\admin\\helpscout_beacon' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\HelpScout_Beacon', 'yoast\\wp\\seo\\integrations\\admin\\import_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Import_Integration', 'yoast\\wp\\seo\\integrations\\admin\\indexables_exclude_taxonomy_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexables_Exclude_Taxonomy_Integration', 'yoast\\wp\\seo\\integrations\\admin\\indexing_notification_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Notification_Integration', 'yoast\\wp\\seo\\integrations\\admin\\indexing_tool_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Tool_Integration', 'yoast\\wp\\seo\\integrations\\admin\\installation_success_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Installation_Success_Integration', 'yoast\\wp\\seo\\integrations\\admin\\integrations_page' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Integrations_Page', 'yoast\\wp\\seo\\integrations\\admin\\link_count_columns_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Link_Count_Columns_Integration', 'yoast\\wp\\seo\\integrations\\admin\\menu_badge_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Menu_Badge_Integration', 'yoast\\wp\\seo\\integrations\\admin\\migration_error_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Migration_Error_Integration', 'yoast\\wp\\seo\\integrations\\admin\\old_configuration_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Configuration_Integration', 'yoast\\wp\\seo\\integrations\\admin\\old_premium_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Premium_Integration', 'yoast\\wp\\seo\\integrations\\admin\\redirect_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Redirect_Integration', 'yoast\\wp\\seo\\integrations\\admin\\redirects_page_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Redirects_Page_Integration', 'yoast\\wp\\seo\\integrations\\admin\\unsupported_php_version_notice' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Unsupported_PHP_Version_Notice', 'yoast\\wp\\seo\\integrations\\admin\\workouts_integration' => 'Yoast\\WP\\SEO\\Integrations\\Admin\\Workouts_Integration', 'yoast\\wp\\seo\\integrations\\alerts\\black_friday_product_editor_checklist_notification' => 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Product_Editor_Checklist_Notification', 'yoast\\wp\\seo\\integrations\\alerts\\black_friday_promotion_notification' => 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Promotion_Notification', 'yoast\\wp\\seo\\integrations\\alerts\\black_friday_sidebar_checklist_notification' => 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Sidebar_Checklist_Notification', 'yoast\\wp\\seo\\integrations\\alerts\\trustpilot_review_notification' => 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Trustpilot_Review_Notification', 'yoast\\wp\\seo\\integrations\\alerts\\webinar_promo_notification' => 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Webinar_Promo_Notification', 'yoast\\wp\\seo\\integrations\\blocks\\breadcrumbs_block' => 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Breadcrumbs_Block', 'yoast\\wp\\seo\\integrations\\blocks\\internal_linking_category' => 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Internal_Linking_Category', 'yoast\\wp\\seo\\integrations\\blocks\\structured_data_blocks' => 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Structured_Data_Blocks', 'yoast\\wp\\seo\\integrations\\breadcrumbs_integration' => 'Yoast\\WP\\SEO\\Integrations\\Breadcrumbs_Integration', 'yoast\\wp\\seo\\integrations\\cleanup_integration' => 'Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration', 'yoast\\wp\\seo\\integrations\\duplicate_post_integration' => 'Yoast\\WP\\SEO\\Integrations\\Duplicate_Post_Integration', 'yoast\\wp\\seo\\integrations\\estimated_reading_time' => 'Yoast\\WP\\SEO\\Integrations\\Estimated_Reading_Time', 'yoast\\wp\\seo\\integrations\\exclude_attachment_post_type' => 'Yoast\\WP\\SEO\\Integrations\\Exclude_Attachment_Post_Type', 'yoast\\wp\\seo\\integrations\\exclude_oembed_cache_post_type' => 'Yoast\\WP\\SEO\\Integrations\\Exclude_Oembed_Cache_Post_Type', 'yoast\\wp\\seo\\integrations\\feature_flag_integration' => 'Yoast\\WP\\SEO\\Integrations\\Feature_Flag_Integration', 'yoast\\wp\\seo\\integrations\\front_end\\backwards_compatibility' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Backwards_Compatibility', 'yoast\\wp\\seo\\integrations\\front_end\\category_term_description' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Category_Term_Description', 'yoast\\wp\\seo\\integrations\\front_end\\comment_link_fixer' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Comment_Link_Fixer', 'yoast\\wp\\seo\\integrations\\front_end\\crawl_cleanup_basic' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Basic', 'yoast\\wp\\seo\\integrations\\front_end\\crawl_cleanup_rss' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Rss', 'yoast\\wp\\seo\\integrations\\front_end\\crawl_cleanup_searches' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Searches', 'yoast\\wp\\seo\\integrations\\front_end\\feed_improvements' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Feed_Improvements', 'yoast\\wp\\seo\\integrations\\front_end\\force_rewrite_title' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Force_Rewrite_Title', 'yoast\\wp\\seo\\integrations\\front_end\\handle_404' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Handle_404', 'yoast\\wp\\seo\\integrations\\front_end\\indexing_controls' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Indexing_Controls', 'yoast\\wp\\seo\\integrations\\front_end\\open_graph_oembed' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Open_Graph_OEmbed', 'yoast\\wp\\seo\\integrations\\front_end\\redirects' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Redirects', 'yoast\\wp\\seo\\integrations\\front_end\\robots_txt_integration' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Robots_Txt_Integration', 'yoast\\wp\\seo\\integrations\\front_end\\rss_footer_embed' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\RSS_Footer_Embed', 'yoast\\wp\\seo\\integrations\\front_end\\schema_accessibility_feature' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Schema_Accessibility_Feature', 'yoast\\wp\\seo\\integrations\\front_end\\wp_robots_integration' => 'Yoast\\WP\\SEO\\Integrations\\Front_End\\WP_Robots_Integration', 'yoast\\wp\\seo\\integrations\\front_end_integration' => 'Yoast\\WP\\SEO\\Integrations\\Front_End_Integration', 'yoast\\wp\\seo\\integrations\\primary_category' => 'Yoast\\WP\\SEO\\Integrations\\Primary_Category', 'yoast\\wp\\seo\\integrations\\settings_integration' => 'Yoast\\WP\\SEO\\Integrations\\Settings_Integration', 'yoast\\wp\\seo\\integrations\\support_integration' => 'Yoast\\WP\\SEO\\Integrations\\Support_Integration', 'yoast\\wp\\seo\\integrations\\third_party\\amp' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\AMP', 'yoast\\wp\\seo\\integrations\\third_party\\bbpress' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\BbPress', 'yoast\\wp\\seo\\integrations\\third_party\\elementor' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Elementor', 'yoast\\wp\\seo\\integrations\\third_party\\exclude_elementor_post_types' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_Elementor_Post_Types', 'yoast\\wp\\seo\\integrations\\third_party\\exclude_woocommerce_post_types' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_WooCommerce_Post_Types', 'yoast\\wp\\seo\\integrations\\third_party\\jetpack' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Jetpack', 'yoast\\wp\\seo\\integrations\\third_party\\w3_total_cache' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\W3_Total_Cache', 'yoast\\wp\\seo\\integrations\\third_party\\web_stories' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories', 'yoast\\wp\\seo\\integrations\\third_party\\web_stories_post_edit' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories_Post_Edit', 'yoast\\wp\\seo\\integrations\\third_party\\wincher' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher', 'yoast\\wp\\seo\\integrations\\third_party\\wincher_publish' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher_Publish', 'yoast\\wp\\seo\\integrations\\third_party\\woocommerce' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce', 'yoast\\wp\\seo\\integrations\\third_party\\woocommerce_permalinks' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Woocommerce_Permalinks', 'yoast\\wp\\seo\\integrations\\third_party\\woocommerce_post_edit' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce_Post_Edit', 'yoast\\wp\\seo\\integrations\\third_party\\wordproof' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof', 'yoast\\wp\\seo\\integrations\\third_party\\wordproof_integration_toggle' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof_Integration_Toggle', 'yoast\\wp\\seo\\integrations\\third_party\\wpml' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML', 'yoast\\wp\\seo\\integrations\\third_party\\wpml_wpseo_notification' => 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML_WPSEO_Notification', 'yoast\\wp\\seo\\integrations\\uninstall_integration' => 'Yoast\\WP\\SEO\\Integrations\\Uninstall_Integration', 'yoast\\wp\\seo\\integrations\\watchers\\addon_update_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Addon_Update_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\auto_update_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Auto_Update_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_ancestor_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Ancestor_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_attachment_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Attachment_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_author_archive_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Archive_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_author_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_category_permalink_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Category_Permalink_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_date_archive_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Date_Archive_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_home_page_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Home_Page_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_homeurl_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_HomeUrl_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_permalink_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Permalink_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_post_meta_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Meta_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_post_type_archive_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Archive_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_post_type_change_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Change_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_post_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_static_home_page_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Static_Home_Page_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_system_page_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_System_Page_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_taxonomy_change_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Taxonomy_Change_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\indexable_term_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Term_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\option_titles_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Titles_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\option_wpseo_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Wpseo_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\primary_category_quick_edit_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Category_Quick_Edit_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\primary_term_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Term_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\search_engines_discouraged_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Search_Engines_Discouraged_Watcher', 'yoast\\wp\\seo\\integrations\\watchers\\woocommerce_beta_editor_watcher' => 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Woocommerce_Beta_Editor_Watcher', 'yoast\\wp\\seo\\integrations\\xmlrpc' => 'Yoast\\WP\\SEO\\Integrations\\XMLRPC', 'yoast\\wp\\seo\\introductions\\application\\ai_generate_titles_and_descriptions_introduction_upsell' => 'Yoast\\WP\\SEO\\Introductions\\Application\\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell', 'yoast\\wp\\seo\\introductions\\application\\introductions_collector' => 'Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector', 'yoast\\wp\\seo\\introductions\\infrastructure\\wistia_embed_permission_repository' => 'Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository', 'yoast\\wp\\seo\\introductions\\user_interface\\introductions_integration' => 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Integration', 'yoast\\wp\\seo\\introductions\\user_interface\\introductions_seen_route' => 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Seen_Route', 'yoast\\wp\\seo\\introductions\\user_interface\\wistia_embed_permission_route' => 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Wistia_Embed_Permission_Route', 'yoast\\wp\\seo\\loader' => 'Yoast\\WP\\SEO\\Loader', 'yoast\\wp\\seo\\loggers\\logger' => 'Yoast\\WP\\SEO\\Loggers\\Logger', 'yoast\\wp\\seo\\memoizers\\meta_tags_context_memoizer' => 'Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer', 'yoast\\wp\\seo\\memoizers\\presentation_memoizer' => 'Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer', 'yoast\\wp\\seo\\presentations\\abstract_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Abstract_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_author_archive_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Author_Archive_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_date_archive_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Date_Archive_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_error_page_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Error_Page_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_home_page_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Home_Page_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_post_type_archive_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Archive_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_post_type_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_search_result_page_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Search_Result_Page_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_static_home_page_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Home_Page_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_static_posts_page_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Posts_Page_Presentation', 'yoast\\wp\\seo\\presentations\\indexable_term_archive_presentation' => 'Yoast\\WP\\SEO\\Presentations\\Indexable_Term_Archive_Presentation', 'yoast\\wp\\seo\\promotions\\application\\promotion_manager' => 'Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager', 'yoast\\wp\\seo\\repositories\\indexable_cleanup_repository' => 'Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository', 'yoast\\wp\\seo\\repositories\\indexable_hierarchy_repository' => 'Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository', 'yoast\\wp\\seo\\repositories\\indexable_repository' => 'Yoast\\WP\\SEO\\Repositories\\Indexable_Repository', 'yoast\\wp\\seo\\repositories\\primary_term_repository' => 'Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository', 'yoast\\wp\\seo\\repositories\\seo_links_repository' => 'Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository', 'yoast\\wp\\seo\\routes\\alert_dismissal_route' => 'Yoast\\WP\\SEO\\Routes\\Alert_Dismissal_Route', 'yoast\\wp\\seo\\routes\\first_time_configuration_route' => 'Yoast\\WP\\SEO\\Routes\\First_Time_Configuration_Route', 'yoast\\wp\\seo\\routes\\importing_route' => 'Yoast\\WP\\SEO\\Routes\\Importing_Route', 'yoast\\wp\\seo\\routes\\indexables_head_route' => 'Yoast\\WP\\SEO\\Routes\\Indexables_Head_Route', 'yoast\\wp\\seo\\routes\\indexing_route' => 'Yoast\\WP\\SEO\\Routes\\Indexing_Route', 'yoast\\wp\\seo\\routes\\integrations_route' => 'Yoast\\WP\\SEO\\Routes\\Integrations_Route', 'yoast\\wp\\seo\\routes\\meta_search_route' => 'Yoast\\WP\\SEO\\Routes\\Meta_Search_Route', 'yoast\\wp\\seo\\routes\\semrush_route' => 'Yoast\\WP\\SEO\\Routes\\SEMrush_Route', 'yoast\\wp\\seo\\routes\\supported_features_route' => 'Yoast\\WP\\SEO\\Routes\\Supported_Features_Route', 'yoast\\wp\\seo\\routes\\wincher_route' => 'Yoast\\WP\\SEO\\Routes\\Wincher_Route', 'yoast\\wp\\seo\\routes\\workouts_route' => 'Yoast\\WP\\SEO\\Routes\\Workouts_Route', 'yoast\\wp\\seo\\routes\\yoast_head_rest_field' => 'Yoast\\WP\\SEO\\Routes\\Yoast_Head_REST_Field', 'yoast\\wp\\seo\\services\\health_check\\default_tagline_check' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Check', 'yoast\\wp\\seo\\services\\health_check\\default_tagline_reports' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Reports', 'yoast\\wp\\seo\\services\\health_check\\default_tagline_runner' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner', 'yoast\\wp\\seo\\services\\health_check\\links_table_check' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Check', 'yoast\\wp\\seo\\services\\health_check\\links_table_reports' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Reports', 'yoast\\wp\\seo\\services\\health_check\\links_table_runner' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Runner', 'yoast\\wp\\seo\\services\\health_check\\myyoast_api_request_factory' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\MyYoast_Api_Request_Factory', 'yoast\\wp\\seo\\services\\health_check\\page_comments_check' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Check', 'yoast\\wp\\seo\\services\\health_check\\page_comments_reports' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Reports', 'yoast\\wp\\seo\\services\\health_check\\page_comments_runner' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner', 'yoast\\wp\\seo\\services\\health_check\\postname_permalink_check' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Check', 'yoast\\wp\\seo\\services\\health_check\\postname_permalink_reports' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Reports', 'yoast\\wp\\seo\\services\\health_check\\postname_permalink_runner' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner', 'yoast\\wp\\seo\\services\\health_check\\report_builder' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder', 'yoast\\wp\\seo\\services\\health_check\\report_builder_factory' => 'Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory', 'yoast\\wp\\seo\\services\\importing\\aioseo\\aioseo_replacevar_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service', 'yoast\\wp\\seo\\services\\importing\\aioseo\\aioseo_robots_provider_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service', 'yoast\\wp\\seo\\services\\importing\\aioseo\\aioseo_robots_transformer_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service', 'yoast\\wp\\seo\\services\\importing\\aioseo\\aioseo_social_images_provider_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Social_Images_Provider_Service', 'yoast\\wp\\seo\\services\\importing\\conflicting_plugins_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service', 'yoast\\wp\\seo\\services\\importing\\importable_detector_service' => 'Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service', 'yoast\\wp\\seo\\services\\indexables\\indexable_version_manager' => 'Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager', 'yoast\\wp\\seo\\surfaces\\classes_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Classes_Surface', 'yoast\\wp\\seo\\surfaces\\helpers_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface', 'yoast\\wp\\seo\\surfaces\\meta_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Meta_Surface', 'yoast\\wp\\seo\\surfaces\\open_graph_helpers_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface', 'yoast\\wp\\seo\\surfaces\\schema_helpers_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface', 'yoast\\wp\\seo\\surfaces\\twitter_helpers_surface' => 'Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface', 'yoast\\wp\\seo\\user_meta\\application\\additional_contactmethods_collector' => 'Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector', 'yoast\\wp\\seo\\user_meta\\application\\custom_meta_collector' => 'Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector', 'yoast\\wp\\seo\\user_meta\\user_interface\\additional_contactmethods_integration' => 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Additional_Contactmethods_Integration', 'yoast\\wp\\seo\\user_meta\\user_interface\\cleanup_integration' => 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Cleanup_Integration', 'yoast\\wp\\seo\\user_meta\\user_interface\\custom_meta_integration' => 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Custom_Meta_Integration', 'yoast\\wp\\seo\\user_profiles_additions\\user_interface\\user_profiles_additions_ui' => 'Yoast\\WP\\SEO\\User_Profiles_Additions\\User_Interface\\User_Profiles_Additions_Ui', 'yoast\\wp\\seo\\values\\images' => 'Yoast\\WP\\SEO\\Values\\Images', 'yoast\\wp\\seo\\values\\indexables\\indexable_builder_versions' => 'Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions', 'yoast\\wp\\seo\\values\\open_graph\\images' => 'Yoast\\WP\\SEO\\Values\\Open_Graph\\Images', 'yoast\\wp\\seo\\values\\twitter\\images' => 'Yoast\\WP\\SEO\\Values\\Twitter\\Images', 'yoast\\wp\\seo\\wrappers\\wp_query_wrapper' => 'Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper', 'yoast\\wp\\seo\\wrappers\\wp_remote_handler' => 'Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler', 'yoast\\wp\\seo\\wrappers\\wp_rewrite_wrapper' => 'Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper', 'yoast_notification_center' => 'Yoast_Notification_Center', 'yoastseo_vendor\\symfony\\component\\dependencyinjection\\containerinterface' => 'YoastSEO_Vendor\\YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ContainerInterface', ]; $this->methodMap = [ 'WPSEO_Addon_Manager' => 'getWPSEOAddonManagerService', 'WPSEO_Admin_Asset_Manager' => 'getWPSEOAdminAssetManagerService', 'WPSEO_Breadcrumbs' => 'getWPSEOBreadcrumbsService', 'WPSEO_Frontend' => 'getWPSEOFrontendService', 'WPSEO_Replace_Vars' => 'getWPSEOReplaceVarsService', 'WPSEO_Shortlinker' => 'getWPSEOShortlinkerService', 'WPSEO_Utils' => 'getWPSEOUtilsService', 'Yoast\\WP\\Lib\\Migrations\\Adapter' => 'getAdapterService', 'Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Activate_Action' => 'getAddonActivateActionService', 'Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Install_Action' => 'getAddonInstallActionService', 'Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action' => 'getAlertDismissalActionService', 'Yoast\\WP\\SEO\\Actions\\Configuration\\First_Time_Configuration_Action' => 'getFirstTimeConfigurationActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action' => 'getAioseoCleanupActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action' => 'getAioseoCustomArchiveSettingsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action' => 'getAioseoDefaultArchiveSettingsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action' => 'getAioseoGeneralSettingsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action' => 'getAioseoPostsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action' => 'getAioseoPosttypeDefaultsSettingsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action' => 'getAioseoTaxonomySettingsImportingActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action' => 'getAioseoValidateDataActionService', 'Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action' => 'getDeactivateConflictingPluginsActionService', 'Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action' => 'getIndexableHeadActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action' => 'getIndexableGeneralIndexationActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action' => 'getIndexableIndexingCompleteActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action' => 'getIndexablePostIndexationActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action' => 'getIndexablePostTypeArchiveIndexationActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action' => 'getIndexableTermIndexationActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Complete_Action' => 'getIndexingCompleteActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action' => 'getIndexingPrepareActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action' => 'getPostLinkIndexingActionService', 'Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action' => 'getTermLinkIndexingActionService', 'Yoast\\WP\\SEO\\Actions\\Integrations_Action' => 'getIntegrationsActionService', 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Login_Action' => 'getSEMrushLoginActionService', 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Options_Action' => 'getSEMrushOptionsActionService', 'Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Phrases_Action' => 'getSEMrushPhrasesActionService', 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action' => 'getWincherAccountActionService', 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action' => 'getWincherKeyphrasesActionService', 'Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Login_Action' => 'getWincherLoginActionService', 'Yoast\\WP\\SEO\\Analytics\\Application\\Missing_Indexables_Collector' => 'getMissingIndexablesCollectorService', 'Yoast\\WP\\SEO\\Analytics\\Application\\To_Be_Cleaned_Indexables_Collector' => 'getToBeCleanedIndexablesCollectorService', 'Yoast\\WP\\SEO\\Analytics\\User_Interface\\Last_Completed_Indexation_Integration' => 'getLastCompletedIndexationIntegrationService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder' => 'getIndexableAuthorBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Builder' => 'getIndexableBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Date_Archive_Builder' => 'getIndexableDateArchiveBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder' => 'getIndexableHierarchyBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder' => 'getIndexableHomePageBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder' => 'getIndexableLinkBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder' => 'getIndexablePostBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder' => 'getIndexablePostTypeArchiveBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_System_Page_Builder' => 'getIndexableSystemPageBuilderService', 'Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder' => 'getIndexableTermBuilderService', 'Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder' => 'getPrimaryTermBuilderService', 'Yoast\\WP\\SEO\\Commands\\Cleanup_Command' => 'getCleanupCommandService', 'Yoast\\WP\\SEO\\Commands\\Index_Command' => 'getIndexCommandService', 'Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional' => 'getAddonInstallationConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Doing_Post_Quick_Edit_Save_Conditional' => 'getDoingPostQuickEditSaveConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Estimated_Reading_Time_Conditional' => 'getEstimatedReadingTimeConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Licenses_Page_Conditional' => 'getLicensesPageConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Non_Network_Admin_Conditional' => 'getNonNetworkAdminConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional' => 'getPostConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Posts_Overview_Or_Ajax_Conditional' => 'getPostsOverviewOrAjaxConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin\\Yoast_Admin_Conditional' => 'getYoastAdminConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Admin_Conditional' => 'getAdminConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Attachment_Redirections_Enabled_Conditional' => 'getAttachmentRedirectionsEnabledConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional' => 'getCheckRequiredVersionConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Deactivating_Yoast_Seo_Conditional' => 'getDeactivatingYoastSeoConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Development_Conditional' => 'getDevelopmentConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional' => 'getFrontEndConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional' => 'getGetRequestConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Headless_Rest_Endpoints_Enabled_Conditional' => 'getHeadlessRestEndpointsEnabledConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Import_Tool_Selected_Conditional' => 'getImportToolSelectedConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Jetpack_Conditional' => 'getJetpackConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Migrations_Conditional' => 'getMigrationsConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional' => 'getNewSettingsUiConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\News_Conditional' => 'getNewsConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\No_Tool_Selected_Conditional' => 'getNoToolSelectedConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Non_Multisite_Conditional' => 'getNonMultisiteConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Not_Admin_Ajax_Conditional' => 'getNotAdminAjaxConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Open_Graph_Conditional' => 'getOpenGraphConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Premium_Active_Conditional' => 'getPremiumActiveConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Premium_Inactive_Conditional' => 'getPremiumInactiveConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Primary_Category_Conditional' => 'getPrimaryCategoryConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Robots_Txt_Conditional' => 'getRobotsTxtConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\SEMrush_Enabled_Conditional' => 'getSEMrushEnabledConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Settings_Conditional' => 'getSettingsConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Should_Index_Links_Conditional' => 'getShouldIndexLinksConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional' => 'getTextFormalityConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Activated_Conditional' => 'getElementorActivatedConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Edit_Conditional' => 'getElementorEditConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional' => 'getPolylangConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional' => 'getTranslatePressConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\W3_Total_Cache_Conditional' => 'getW3TotalCacheConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional' => 'getWPMLConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional' => 'getWPMLWPSEOConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Integration_Active_Conditional' => 'getWordproofIntegrationActiveConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Plugin_Inactive_Conditional' => 'getWordproofPluginInactiveConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional' => 'getUpdatedImporterFrameworkConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Edit_Users_Conditional' => 'getUserCanEditUsersConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional' => 'getUserCanManageWpseoOptionsConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\User_Can_Publish_Posts_And_Pages_Conditional' => 'getUserCanPublishPostsAndPagesConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\User_Edit_Conditional' => 'getUserEditConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\User_Profile_Conditional' => 'getUserProfileConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional' => 'getWPCRONEnabledConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\WP_Robots_Conditional' => 'getWPRobotsConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Web_Stories_Conditional' => 'getWebStoriesConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Automatically_Track_Conditional' => 'getWincherAutomaticallyTrackConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Conditional' => 'getWincherConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Enabled_Conditional' => 'getWincherEnabledConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Wincher_Token_Conditional' => 'getWincherTokenConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional' => 'getWooCommerceConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\XMLRPC_Conditional' => 'getXMLRPCConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional' => 'getYoastAdminAndDashboardConditionalService', 'Yoast\\WP\\SEO\\Conditionals\\Yoast_Tools_Page_Conditional' => 'getYoastToolsPageConditionalService', 'Yoast\\WP\\SEO\\Config\\Badge_Group_Names' => 'getBadgeGroupNamesService', 'Yoast\\WP\\SEO\\Config\\Conflicting_Plugins' => 'getConflictingPluginsService', 'Yoast\\WP\\SEO\\Config\\Indexing_Reasons' => 'getIndexingReasonsService', 'Yoast\\WP\\SEO\\Config\\Migration_Status' => 'getMigrationStatusService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddCollationToTables' => 'getAddCollationToTablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddColumnsToIndexables' => 'getAddColumnsToIndexablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddEstimatedReadingTime' => 'getAddEstimatedReadingTimeService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddHasAncestorsColumn' => 'getAddHasAncestorsColumnService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddInclusiveLanguageScore' => 'getAddInclusiveLanguageScoreService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexableObjectIdAndTypeIndex' => 'getAddIndexableObjectIdAndTypeIndexService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexesForProminentWordsOnIndexables' => 'getAddIndexesForProminentWordsOnIndexablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddObjectTimestamps' => 'getAddObjectTimestampsService', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddVersionColumnToIndexables' => 'getAddVersionColumnToIndexablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\BreadcrumbTitleAndHierarchyReset' => 'getBreadcrumbTitleAndHierarchyResetService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ClearIndexableTables' => 'getClearIndexableTablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateIndexableSubpagesIndex' => 'getCreateIndexableSubpagesIndexService', 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateSEOLinksTable' => 'getCreateSEOLinksTableService', 'Yoast\\WP\\SEO\\Config\\Migrations\\DeleteDuplicateIndexables' => 'getDeleteDuplicateIndexablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableColumnLengths' => 'getExpandIndexableColumnLengthsService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableIDColumnLengths' => 'getExpandIndexableIDColumnLengthsService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandPrimaryTermIDColumnLengths' => 'getExpandPrimaryTermIDColumnLengthsService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ReplacePermalinkHashIndex' => 'getReplacePermalinkHashIndexService', 'Yoast\\WP\\SEO\\Config\\Migrations\\ResetIndexableHierarchyTable' => 'getResetIndexableHierarchyTableService', 'Yoast\\WP\\SEO\\Config\\Migrations\\TruncateIndexableTables' => 'getTruncateIndexableTablesService', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastDropIndexableMetaTableIfExists' => 'getWpYoastDropIndexableMetaTableIfExistsService', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexable' => 'getWpYoastIndexableService', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexableHierarchy' => 'getWpYoastIndexableHierarchyService', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastPrimaryTerm' => 'getWpYoastPrimaryTermService', 'Yoast\\WP\\SEO\\Config\\Researcher_Languages' => 'getResearcherLanguagesService', 'Yoast\\WP\\SEO\\Config\\SEMrush_Client' => 'getSEMrushClientService', 'Yoast\\WP\\SEO\\Config\\Schema_IDs' => 'getSchemaIDsService', 'Yoast\\WP\\SEO\\Config\\Schema_Types' => 'getSchemaTypesService', 'Yoast\\WP\\SEO\\Config\\Wincher_Client' => 'getWincherClientService', 'Yoast\\WP\\SEO\\Config\\Wordproof_App_Config' => 'getWordproofAppConfigService', 'Yoast\\WP\\SEO\\Config\\Wordproof_Translations' => 'getWordproofTranslationsService', 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications' => 'getContentTypeVisibilityDismissNotificationsService', 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Watcher_Actions' => 'getContentTypeVisibilityWatcherActionsService', 'Yoast\\WP\\SEO\\Content_Type_Visibility\\User_Interface\\Content_Type_Visibility_Dismiss_New_Route' => 'getContentTypeVisibilityDismissNewRouteService', 'Yoast\\WP\\SEO\\Context\\Meta_Tags_Context' => 'getMetaTagsContextService', 'Yoast\\WP\\SEO\\Editors\\Application\\Analysis_Features\\Enabled_Analysis_Features_Repository' => 'getEnabledAnalysisFeaturesRepositoryService', 'Yoast\\WP\\SEO\\Editors\\Application\\Integrations\\Integration_Information_Repository' => 'getIntegrationInformationRepositoryService', 'Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Post_Seo_Information_Repository' => 'getPostSeoInformationRepositoryService', 'Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Term_Seo_Information_Repository' => 'getTermSeoInformationRepositoryService', 'Yoast\\WP\\SEO\\Editors\\Application\\Site\\Website_Information_Repository' => 'getWebsiteInformationRepositoryService', 'Yoast\\WP\\SEO\\General\\User_Interface\\General_Page_Integration' => 'getGeneralPageIntegrationService', 'Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator' => 'getBreadcrumbsGeneratorService', 'Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator' => 'getOpenGraphImageGeneratorService', 'Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator' => 'getOpenGraphLocaleGeneratorService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Article' => 'getArticleService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Author' => 'getAuthorService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Breadcrumb' => 'getBreadcrumbService', 'Yoast\\WP\\SEO\\Generators\\Schema\\FAQ' => 'getFAQService', 'Yoast\\WP\\SEO\\Generators\\Schema\\HowTo' => 'getHowToService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Main_Image' => 'getMainImageService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Organization' => 'getOrganizationService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Person' => 'getPersonService', 'Yoast\\WP\\SEO\\Generators\\Schema\\WebPage' => 'getWebPageService', 'Yoast\\WP\\SEO\\Generators\\Schema\\Website' => 'getWebsiteService', 'Yoast\\WP\\SEO\\Generators\\Schema_Generator' => 'getSchemaGeneratorService', 'Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator' => 'getTwitterImageGeneratorService', 'Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper' => 'getAioseoHelperService', 'Yoast\\WP\\SEO\\Helpers\\Asset_Helper' => 'getAssetHelperService', 'Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper' => 'getAttachmentCleanupHelperService', 'Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper' => 'getAuthorArchiveHelperService', 'Yoast\\WP\\SEO\\Helpers\\Blocks_Helper' => 'getBlocksHelperService', 'Yoast\\WP\\SEO\\Helpers\\Capability_Helper' => 'getCapabilityHelperService', 'Yoast\\WP\\SEO\\Helpers\\Crawl_Cleanup_Helper' => 'getCrawlCleanupHelperService', 'Yoast\\WP\\SEO\\Helpers\\Curl_Helper' => 'getCurlHelperService', 'Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper' => 'getCurrentPageHelperService', 'Yoast\\WP\\SEO\\Helpers\\Date_Helper' => 'getDateHelperService', 'Yoast\\WP\\SEO\\Helpers\\Environment_Helper' => 'getEnvironmentHelperService', 'Yoast\\WP\\SEO\\Helpers\\First_Time_Configuration_Notice_Helper' => 'getFirstTimeConfigurationNoticeHelperService', 'Yoast\\WP\\SEO\\Helpers\\Home_Url_Helper' => 'getHomeUrlHelperService', 'Yoast\\WP\\SEO\\Helpers\\Image_Helper' => 'getImageHelperService', 'Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper' => 'getImportCursorHelperService', 'Yoast\\WP\\SEO\\Helpers\\Import_Helper' => 'getImportHelperService', 'Yoast\\WP\\SEO\\Helpers\\Indexable_Helper' => 'getIndexableHelperService', 'Yoast\\WP\\SEO\\Helpers\\Indexable_To_Postmeta_Helper' => 'getIndexableToPostmetaHelperService', 'Yoast\\WP\\SEO\\Helpers\\Indexing_Helper' => 'getIndexingHelperService', 'Yoast\\WP\\SEO\\Helpers\\Language_Helper' => 'getLanguageHelperService', 'Yoast\\WP\\SEO\\Helpers\\Meta_Helper' => 'getMetaHelperService', 'Yoast\\WP\\SEO\\Helpers\\Notification_Helper' => 'getNotificationHelperService', 'Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper' => 'getImageHelper2Service', 'Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper' => 'getValuesHelperService', 'Yoast\\WP\\SEO\\Helpers\\Options_Helper' => 'getOptionsHelperService', 'Yoast\\WP\\SEO\\Helpers\\Pagination_Helper' => 'getPaginationHelperService', 'Yoast\\WP\\SEO\\Helpers\\Permalink_Helper' => 'getPermalinkHelperService', 'Yoast\\WP\\SEO\\Helpers\\Post_Helper' => 'getPostHelperService', 'Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper' => 'getPostTypeHelperService', 'Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper' => 'getPrimaryTermHelperService', 'Yoast\\WP\\SEO\\Helpers\\Product_Helper' => 'getProductHelperService', 'Yoast\\WP\\SEO\\Helpers\\Redirect_Helper' => 'getRedirectHelperService', 'Yoast\\WP\\SEO\\Helpers\\Request_Helper' => 'getRequestHelperService', 'Yoast\\WP\\SEO\\Helpers\\Require_File_Helper' => 'getRequireFileHelperService', 'Yoast\\WP\\SEO\\Helpers\\Robots_Helper' => 'getRobotsHelperService', 'Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper' => 'getRobotsTxtHelperService', 'Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper' => 'getSanitizationHelperService', 'Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper' => 'getArticleHelperService', 'Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper' => 'getHTMLHelperService', 'Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper' => 'getIDHelperService', 'Yoast\\WP\\SEO\\Helpers\\Schema\\Image_Helper' => 'getImageHelper3Service', 'Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper' => 'getLanguageHelper2Service', 'Yoast\\WP\\SEO\\Helpers\\Schema\\Replace_Vars_Helper' => 'getReplaceVarsHelperService', 'Yoast\\WP\\SEO\\Helpers\\Score_Icon_Helper' => 'getScoreIconHelperService', 'Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper' => 'getShortLinkHelperService', 'Yoast\\WP\\SEO\\Helpers\\Site_Helper' => 'getSiteHelperService', 'Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper' => 'getSocialProfilesHelperService', 'Yoast\\WP\\SEO\\Helpers\\String_Helper' => 'getStringHelperService', 'Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper' => 'getTaxonomyHelperService', 'Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper' => 'getImageHelper4Service', 'Yoast\\WP\\SEO\\Helpers\\Url_Helper' => 'getUrlHelperService', 'Yoast\\WP\\SEO\\Helpers\\User_Helper' => 'getUserHelperService', 'Yoast\\WP\\SEO\\Helpers\\Wincher_Helper' => 'getWincherHelperService', 'Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper' => 'getWoocommerceHelperService', 'Yoast\\WP\\SEO\\Helpers\\Wordpress_Helper' => 'getWordpressHelperService', 'Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper' => 'getWordproofHelperService', 'Yoast\\WP\\SEO\\Helpers\\Wpdb_Helper' => 'getWpdbHelperService', 'Yoast\\WP\\SEO\\Initializers\\Crawl_Cleanup_Permalinks' => 'getCrawlCleanupPermalinksService', 'Yoast\\WP\\SEO\\Initializers\\Disable_Core_Sitemaps' => 'getDisableCoreSitemapsService', 'Yoast\\WP\\SEO\\Initializers\\Migration_Runner' => 'getMigrationRunnerService', 'Yoast\\WP\\SEO\\Initializers\\Plugin_Headers' => 'getPluginHeadersService', 'Yoast\\WP\\SEO\\Initializers\\Woocommerce' => 'getWoocommerceService', 'Yoast\\WP\\SEO\\Integrations\\Academy_Integration' => 'getAcademyIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Activation_Cleanup_Integration' => 'getActivationCleanupIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Dialog_Integration' => 'getDialogIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Installation_Integration' => 'getInstallationIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration' => 'getAdminColumnsCacheIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Background_Indexing_Integration' => 'getBackgroundIndexingIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Check_Required_Version' => 'getCheckRequiredVersionService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Crawl_Settings_Integration' => 'getCrawlSettingsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Cron_Integration' => 'getCronIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Deactivated_Premium_Integration' => 'getDeactivatedPremiumIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Disable_Concatenate_Scripts_Integration' => 'getDisableConcatenateScriptsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Integration' => 'getFirstTimeConfigurationIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Notice_Integration' => 'getFirstTimeConfigurationNoticeIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Fix_News_Dependencies_Integration' => 'getFixNewsDependenciesIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Health_Check_Integration' => 'getHealthCheckIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\HelpScout_Beacon' => 'getHelpScoutBeaconService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Import_Integration' => 'getImportIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexables_Exclude_Taxonomy_Integration' => 'getIndexablesExcludeTaxonomyIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Notification_Integration' => 'getIndexingNotificationIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Tool_Integration' => 'getIndexingToolIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Installation_Success_Integration' => 'getInstallationSuccessIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Integrations_Page' => 'getIntegrationsPageService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Link_Count_Columns_Integration' => 'getLinkCountColumnsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Menu_Badge_Integration' => 'getMenuBadgeIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Migration_Error_Integration' => 'getMigrationErrorIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Configuration_Integration' => 'getOldConfigurationIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Premium_Integration' => 'getOldPremiumIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Redirect_Integration' => 'getRedirectIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Redirects_Page_Integration' => 'getRedirectsPageIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Unsupported_PHP_Version_Notice' => 'getUnsupportedPHPVersionNoticeService', 'Yoast\\WP\\SEO\\Integrations\\Admin\\Workouts_Integration' => 'getWorkoutsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Product_Editor_Checklist_Notification' => 'getBlackFridayProductEditorChecklistNotificationService', 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Promotion_Notification' => 'getBlackFridayPromotionNotificationService', 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Sidebar_Checklist_Notification' => 'getBlackFridaySidebarChecklistNotificationService', 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Trustpilot_Review_Notification' => 'getTrustpilotReviewNotificationService', 'Yoast\\WP\\SEO\\Integrations\\Alerts\\Webinar_Promo_Notification' => 'getWebinarPromoNotificationService', 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Breadcrumbs_Block' => 'getBreadcrumbsBlockService', 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Internal_Linking_Category' => 'getInternalLinkingCategoryService', 'Yoast\\WP\\SEO\\Integrations\\Blocks\\Structured_Data_Blocks' => 'getStructuredDataBlocksService', 'Yoast\\WP\\SEO\\Integrations\\Breadcrumbs_Integration' => 'getBreadcrumbsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration' => 'getCleanupIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Duplicate_Post_Integration' => 'getDuplicatePostIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Estimated_Reading_Time' => 'getEstimatedReadingTimeService', 'Yoast\\WP\\SEO\\Integrations\\Exclude_Attachment_Post_Type' => 'getExcludeAttachmentPostTypeService', 'Yoast\\WP\\SEO\\Integrations\\Exclude_Oembed_Cache_Post_Type' => 'getExcludeOembedCachePostTypeService', 'Yoast\\WP\\SEO\\Integrations\\Feature_Flag_Integration' => 'getFeatureFlagIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Backwards_Compatibility' => 'getBackwardsCompatibilityService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Category_Term_Description' => 'getCategoryTermDescriptionService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Comment_Link_Fixer' => 'getCommentLinkFixerService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Basic' => 'getCrawlCleanupBasicService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Rss' => 'getCrawlCleanupRssService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Searches' => 'getCrawlCleanupSearchesService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Feed_Improvements' => 'getFeedImprovementsService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Force_Rewrite_Title' => 'getForceRewriteTitleService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Handle_404' => 'getHandle404Service', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Indexing_Controls' => 'getIndexingControlsService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Open_Graph_OEmbed' => 'getOpenGraphOEmbedService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\RSS_Footer_Embed' => 'getRSSFooterEmbedService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Redirects' => 'getRedirectsService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Robots_Txt_Integration' => 'getRobotsTxtIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\Schema_Accessibility_Feature' => 'getSchemaAccessibilityFeatureService', 'Yoast\\WP\\SEO\\Integrations\\Front_End\\WP_Robots_Integration' => 'getWPRobotsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Front_End_Integration' => 'getFrontEndIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Primary_Category' => 'getPrimaryCategoryService', 'Yoast\\WP\\SEO\\Integrations\\Settings_Integration' => 'getSettingsIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Support_Integration' => 'getSupportIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\AMP' => 'getAMPService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\BbPress' => 'getBbPressService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Elementor' => 'getElementorService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_Elementor_Post_Types' => 'getExcludeElementorPostTypesService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_WooCommerce_Post_Types' => 'getExcludeWooCommercePostTypesService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Jetpack' => 'getJetpackService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\W3_Total_Cache' => 'getW3TotalCacheService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML' => 'getWPMLService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML_WPSEO_Notification' => 'getWPMLWPSEONotificationService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories' => 'getWebStoriesService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories_Post_Edit' => 'getWebStoriesPostEditService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher' => 'getWincherService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher_Publish' => 'getWincherPublishService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce' => 'getWooCommerce2Service', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce_Post_Edit' => 'getWooCommercePostEditService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Woocommerce_Permalinks' => 'getWoocommercePermalinksService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof' => 'getWordproofService', 'Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof_Integration_Toggle' => 'getWordproofIntegrationToggleService', 'Yoast\\WP\\SEO\\Integrations\\Uninstall_Integration' => 'getUninstallIntegrationService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Addon_Update_Watcher' => 'getAddonUpdateWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Auto_Update_Watcher' => 'getAutoUpdateWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Ancestor_Watcher' => 'getIndexableAncestorWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Attachment_Watcher' => 'getIndexableAttachmentWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Archive_Watcher' => 'getIndexableAuthorArchiveWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Watcher' => 'getIndexableAuthorWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Category_Permalink_Watcher' => 'getIndexableCategoryPermalinkWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Date_Archive_Watcher' => 'getIndexableDateArchiveWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_HomeUrl_Watcher' => 'getIndexableHomeUrlWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Home_Page_Watcher' => 'getIndexableHomePageWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Permalink_Watcher' => 'getIndexablePermalinkWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Meta_Watcher' => 'getIndexablePostMetaWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Archive_Watcher' => 'getIndexablePostTypeArchiveWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Change_Watcher' => 'getIndexablePostTypeChangeWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher' => 'getIndexablePostWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Static_Home_Page_Watcher' => 'getIndexableStaticHomePageWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_System_Page_Watcher' => 'getIndexableSystemPageWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Taxonomy_Change_Watcher' => 'getIndexableTaxonomyChangeWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Term_Watcher' => 'getIndexableTermWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Titles_Watcher' => 'getOptionTitlesWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Wpseo_Watcher' => 'getOptionWpseoWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Category_Quick_Edit_Watcher' => 'getPrimaryCategoryQuickEditWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Term_Watcher' => 'getPrimaryTermWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Search_Engines_Discouraged_Watcher' => 'getSearchEnginesDiscouragedWatcherService', 'Yoast\\WP\\SEO\\Integrations\\Watchers\\Woocommerce_Beta_Editor_Watcher' => 'getWoocommerceBetaEditorWatcherService', 'Yoast\\WP\\SEO\\Integrations\\XMLRPC' => 'getXMLRPCService', 'Yoast\\WP\\SEO\\Introductions\\Application\\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell' => 'getAiGenerateTitlesAndDescriptionsIntroductionUpsellService', 'Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector' => 'getIntroductionsCollectorService', 'Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository' => 'getWistiaEmbedPermissionRepositoryService', 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Integration' => 'getIntroductionsIntegrationService', 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Seen_Route' => 'getIntroductionsSeenRouteService', 'Yoast\\WP\\SEO\\Introductions\\User_Interface\\Wistia_Embed_Permission_Route' => 'getWistiaEmbedPermissionRouteService', 'Yoast\\WP\\SEO\\Loader' => 'getLoaderService', 'Yoast\\WP\\SEO\\Loggers\\Logger' => 'getLoggerService', 'Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer' => 'getMetaTagsContextMemoizerService', 'Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer' => 'getPresentationMemoizerService', 'Yoast\\WP\\SEO\\Presentations\\Abstract_Presentation' => 'getAbstractPresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Author_Archive_Presentation' => 'getIndexableAuthorArchivePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Date_Archive_Presentation' => 'getIndexableDateArchivePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Error_Page_Presentation' => 'getIndexableErrorPagePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Home_Page_Presentation' => 'getIndexableHomePagePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Archive_Presentation' => 'getIndexablePostTypeArchivePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Presentation' => 'getIndexablePostTypePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Presentation' => 'getIndexablePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Search_Result_Page_Presentation' => 'getIndexableSearchResultPagePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Home_Page_Presentation' => 'getIndexableStaticHomePagePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Posts_Page_Presentation' => 'getIndexableStaticPostsPagePresentationService', 'Yoast\\WP\\SEO\\Presentations\\Indexable_Term_Archive_Presentation' => 'getIndexableTermArchivePresentationService', 'Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager' => 'getPromotionManagerService', 'Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository' => 'getIndexableCleanupRepositoryService', 'Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository' => 'getIndexableHierarchyRepositoryService', 'Yoast\\WP\\SEO\\Repositories\\Indexable_Repository' => 'getIndexableRepositoryService', 'Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository' => 'getPrimaryTermRepositoryService', 'Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository' => 'getSEOLinksRepositoryService', 'Yoast\\WP\\SEO\\Routes\\Alert_Dismissal_Route' => 'getAlertDismissalRouteService', 'Yoast\\WP\\SEO\\Routes\\First_Time_Configuration_Route' => 'getFirstTimeConfigurationRouteService', 'Yoast\\WP\\SEO\\Routes\\Importing_Route' => 'getImportingRouteService', 'Yoast\\WP\\SEO\\Routes\\Indexables_Head_Route' => 'getIndexablesHeadRouteService', 'Yoast\\WP\\SEO\\Routes\\Indexing_Route' => 'getIndexingRouteService', 'Yoast\\WP\\SEO\\Routes\\Integrations_Route' => 'getIntegrationsRouteService', 'Yoast\\WP\\SEO\\Routes\\Meta_Search_Route' => 'getMetaSearchRouteService', 'Yoast\\WP\\SEO\\Routes\\SEMrush_Route' => 'getSEMrushRouteService', 'Yoast\\WP\\SEO\\Routes\\Supported_Features_Route' => 'getSupportedFeaturesRouteService', 'Yoast\\WP\\SEO\\Routes\\Wincher_Route' => 'getWincherRouteService', 'Yoast\\WP\\SEO\\Routes\\Workouts_Route' => 'getWorkoutsRouteService', 'Yoast\\WP\\SEO\\Routes\\Yoast_Head_REST_Field' => 'getYoastHeadRESTFieldService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Check' => 'getDefaultTaglineCheckService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Reports' => 'getDefaultTaglineReportsService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner' => 'getDefaultTaglineRunnerService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Check' => 'getLinksTableCheckService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Reports' => 'getLinksTableReportsService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Runner' => 'getLinksTableRunnerService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\MyYoast_Api_Request_Factory' => 'getMyYoastApiRequestFactoryService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Check' => 'getPageCommentsCheckService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Reports' => 'getPageCommentsReportsService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner' => 'getPageCommentsRunnerService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Check' => 'getPostnamePermalinkCheckService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Reports' => 'getPostnamePermalinkReportsService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner' => 'getPostnamePermalinkRunnerService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder' => 'getReportBuilderService', 'Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory' => 'getReportBuilderFactoryService', 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service' => 'getAioseoReplacevarServiceService', 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service' => 'getAioseoRobotsProviderServiceService', 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service' => 'getAioseoRobotsTransformerServiceService', 'Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Social_Images_Provider_Service' => 'getAioseoSocialImagesProviderServiceService', 'Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service' => 'getConflictingPluginsServiceService', 'Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service' => 'getImportableDetectorServiceService', 'Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager' => 'getIndexableVersionManagerService', 'Yoast\\WP\\SEO\\Surfaces\\Classes_Surface' => 'getClassesSurfaceService', 'Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface' => 'getHelpersSurfaceService', 'Yoast\\WP\\SEO\\Surfaces\\Meta_Surface' => 'getMetaSurfaceService', 'Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface' => 'getOpenGraphHelpersSurfaceService', 'Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface' => 'getSchemaHelpersSurfaceService', 'Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface' => 'getTwitterHelpersSurfaceService', 'Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector' => 'getAdditionalContactmethodsCollectorService', 'Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector' => 'getCustomMetaCollectorService', 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Additional_Contactmethods_Integration' => 'getAdditionalContactmethodsIntegrationService', 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Cleanup_Integration' => 'getCleanupIntegration2Service', 'Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Custom_Meta_Integration' => 'getCustomMetaIntegrationService', 'Yoast\\WP\\SEO\\User_Profiles_Additions\\User_Interface\\User_Profiles_Additions_Ui' => 'getUserProfilesAdditionsUiService', 'Yoast\\WP\\SEO\\Values\\Images' => 'getImagesService', 'Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions' => 'getIndexableBuilderVersionsService', 'Yoast\\WP\\SEO\\Values\\Open_Graph\\Images' => 'getImages2Service', 'Yoast\\WP\\SEO\\Values\\Twitter\\Images' => 'getImages3Service', 'Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper' => 'getWPQueryWrapperService', 'Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler' => 'getWPRemoteHandlerService', 'Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper' => 'getWPRewriteWrapperService', 'Yoast_Notification_Center' => 'getYoastNotificationCenterService', 'wpdb' => 'getWpdbService', ]; $this->privates = [ 'YoastSEO_Vendor\\YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ContainerInterface' => true, 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications' => true, 'Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector' => true, ]; $this->aliases = [ 'YoastSEO_Vendor\\YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ContainerInterface' => 'service_container', ]; } public function getRemovedIds() { return [ 'Psr\\Container\\ContainerInterface' => true, 'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ContainerInterface' => true, 'YoastSEO_Vendor\\YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ContainerInterface' => true, 'Yoast\\WP\\SEO\\Analytics\\Domain\\Missing_Indexable_Bucket' => true, 'Yoast\\WP\\SEO\\Analytics\\Domain\\Missing_Indexable_Count' => true, 'Yoast\\WP\\SEO\\Analytics\\Domain\\To_Be_Cleaned_Indexable_Bucket' => true, 'Yoast\\WP\\SEO\\Analytics\\Domain\\To_Be_Cleaned_Indexable_Count' => true, 'Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Analysis_Features\\Analysis_Feature' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Analysis_Features\\Analysis_Features_List' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Seo\\Description' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Seo\\Keyphrase' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Seo\\Social' => true, 'Yoast\\WP\\SEO\\Editors\\Domain\\Seo\\Title' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Cornerstone_Content' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Inclusive_Language_Analysis' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\Jetpack_Markdown' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\Multilingual' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\News_SEO' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\Semrush' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\Wincher' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\WooCommerce' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Integrations\\WooCommerce_SEO' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Keyphrase_Analysis' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Previously_Used_Keyphrase' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Readability_Analysis' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Posts\\Description_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Posts\\Keyphrase_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Posts\\Social_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Posts\\Title_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Terms\\Description_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Terms\\Keyphrase_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Terms\\Social_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Seo\\Terms\\Title_Data_Provider' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Site\\Post_Site_Information' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Site\\Term_Site_Information' => true, 'Yoast\\WP\\SEO\\Editors\\Framework\\Word_Form_Recognition' => true, 'Yoast\\WP\\SEO\\Elementor\\Infrastructure\\Request_Post' => true, 'Yoast\\WP\\SEO\\Images\\Application\\Image_Content_Extractor' => true, 'Yoast\\WP\\SEO\\Introductions\\Application\\Ai_Fix_Assessments_Upsell' => true, 'Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector' => true, 'Yoast\\WP\\SEO\\Introductions\\Domain\\Introduction_Interface' => true, 'Yoast\\WP\\SEO\\Introductions\\Domain\\Introduction_Item' => true, 'Yoast\\WP\\SEO\\Introductions\\Domain\\Introductions_Bucket' => true, 'Yoast\\WP\\SEO\\Introductions\\Domain\\Invalid_User_Id_Exception' => true, 'Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Introductions_Seen_Repository' => true, 'Yoast\\WP\\SEO\\Presenters\\Robots_Txt_Presenter' => true, 'Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager_Interface' => true, 'Yoast\\WP\\SEO\\Promotions\\Domain\\Black_Friday_Checklist_Promotion' => true, 'Yoast\\WP\\SEO\\Promotions\\Domain\\Black_Friday_Promotion' => true, 'Yoast\\WP\\SEO\\Promotions\\Domain\\Time_Interval' => true, 'Yoast\\WP\\SEO\\User_Meta\\Application\\Cleanup_Service' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Facebook' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Instagram' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Linkedin' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Myspace' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Pinterest' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Soundcloud' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Tumblr' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Wikipedia' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\X' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Additional_Contactmethods\\Youtube' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Author_Metadesc' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Author_Title' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Content_Analysis_Disable' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Inclusive_Language_Analysis_Disable' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Keyword_Analysis_Disable' => true, 'Yoast\\WP\\SEO\\User_Meta\\Framework\\Custom_Meta\\Noindex_Author' => true, 'Yoast\\WP\\SEO\\User_Meta\\Infrastructure\\Cleanup_Repository' => true, ]; } public function compile() { throw new LogicException('You cannot compile a dumped container that was already compiled.'); } public function isCompiled() { return true; } public function isFrozen() { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Use the isCompiled() method instead.', __METHOD__), E_USER_DEPRECATED); return true; } /** * Gets the public 'WPSEO_Addon_Manager' shared service. * * @return \WPSEO_Addon_Manager */ protected function getWPSEOAddonManagerService() { return $this->services['WPSEO_Addon_Manager'] = \Yoast\WP\SEO\WordPress\Wrapper::get_addon_manager(); } /** * Gets the public 'WPSEO_Admin_Asset_Manager' shared service. * * @return \WPSEO_Admin_Asset_Manager */ protected function getWPSEOAdminAssetManagerService() { return $this->services['WPSEO_Admin_Asset_Manager'] = \Yoast\WP\SEO\WordPress\Wrapper::get_admin_asset_manager(); } /** * Gets the public 'WPSEO_Breadcrumbs' shared autowired service. * * @return \WPSEO_Breadcrumbs */ protected function getWPSEOBreadcrumbsService() { return $this->services['WPSEO_Breadcrumbs'] = new \WPSEO_Breadcrumbs(); } /** * Gets the public 'WPSEO_Frontend' shared autowired service. * * @return \WPSEO_Frontend */ protected function getWPSEOFrontendService() { return $this->services['WPSEO_Frontend'] = new \WPSEO_Frontend(); } /** * Gets the public 'WPSEO_Replace_Vars' shared service. * * @return \WPSEO_Replace_Vars */ protected function getWPSEOReplaceVarsService() { return $this->services['WPSEO_Replace_Vars'] = \Yoast\WP\SEO\WordPress\Wrapper::get_replace_vars(); } /** * Gets the public 'WPSEO_Shortlinker' shared service. * * @return \WPSEO_Shortlinker */ protected function getWPSEOShortlinkerService() { return $this->services['WPSEO_Shortlinker'] = \Yoast\WP\SEO\WordPress\Wrapper::get_shortlinker(); } /** * Gets the public 'WPSEO_Utils' shared service. * * @return \WPSEO_Utils */ protected function getWPSEOUtilsService() { return $this->services['WPSEO_Utils'] = \Yoast\WP\SEO\WordPress\Wrapper::get_utils(); } /** * Gets the public 'Yoast\WP\Lib\Migrations\Adapter' shared autowired service. * * @return \Yoast\WP\Lib\Migrations\Adapter */ protected function getAdapterService() { return $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter(); } /** * Gets the public 'Yoast\WP\SEO\Actions\Addon_Installation\Addon_Activate_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Addon_Installation\Addon_Activate_Action */ protected function getAddonActivateActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Activate_Action'] = new \Yoast\WP\SEO\Actions\Addon_Installation\Addon_Activate_Action(${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper'] = new \Yoast\WP\SEO\Helpers\Require_File_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Addon_Installation\Addon_Install_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Addon_Installation\Addon_Install_Action */ protected function getAddonInstallActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Install_Action'] = new \Yoast\WP\SEO\Actions\Addon_Installation\Addon_Install_Action(${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper'] = new \Yoast\WP\SEO\Helpers\Require_File_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Alert_Dismissal_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Alert_Dismissal_Action */ protected function getAlertDismissalActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action'] = new \Yoast\WP\SEO\Actions\Alert_Dismissal_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Configuration\First_Time_Configuration_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Configuration\First_Time_Configuration_Action */ protected function getFirstTimeConfigurationActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Configuration\\First_Time_Configuration_Action'] = new \Yoast\WP\SEO\Actions\Configuration\First_Time_Configuration_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper'] : $this->getSocialProfilesHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Cleanup_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Cleanup_Action */ protected function getAioseoCleanupActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Cleanup_Action(${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Custom_Archive_Settings_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Custom_Archive_Settings_Importing_Action */ protected function getAioseoCustomArchiveSettingsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Custom_Archive_Settings_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}); $instance->set_import_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Default_Archive_Settings_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Default_Archive_Settings_Importing_Action */ protected function getAioseoDefaultArchiveSettingsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Default_Archive_Settings_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}); $instance->set_import_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_General_Settings_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_General_Settings_Importing_Action */ protected function getAioseoGeneralSettingsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_General_Settings_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}); $instance->set_import_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posts_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posts_Importing_Action */ protected function getAioseoPostsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posts_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_To_Postmeta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_To_Postmeta_Helper'] : $this->getIndexableToPostmetaHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Social_Images_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Social_Images_Provider_Service'] : $this->getAioseoSocialImagesProviderServiceService()) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posttype_Defaults_Settings_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posttype_Defaults_Settings_Importing_Action */ protected function getAioseoPosttypeDefaultsSettingsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Posttype_Defaults_Settings_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}); $instance->set_import_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Taxonomy_Settings_Importing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Taxonomy_Settings_Importing_Action */ protected function getAioseoTaxonomySettingsImportingActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Taxonomy_Settings_Importing_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}); $instance->set_import_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Validate_Data_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Validate_Data_Action */ protected function getAioseoValidateDataActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Aioseo\Aioseo_Validate_Data_Action(${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action'] : $this->getAioseoCustomArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action'] : $this->getAioseoDefaultArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action'] : $this->getAioseoGeneralSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action'] : $this->getAioseoPosttypeDefaultsSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action'] : $this->getAioseoTaxonomySettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action'] : $this->getAioseoPostsImportingActionService()) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Importing\Deactivate_Conflicting_Plugins_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Importing\Deactivate_Conflicting_Plugins_Action */ protected function getDeactivateConflictingPluginsActionService() { $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action'] = $instance = new \Yoast\WP\SEO\Actions\Importing\Deactivate_Conflicting_Plugins_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] : $this->getImportCursorHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] : $this->getAioseoRobotsTransformerServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service'] : ($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service'] = new \Yoast\WP\SEO\Services\Importing\Conflicting_Plugins_Service())) && false ?: '_'}); $instance->set_aioseo_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexables\Indexable_Head_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexables\Indexable_Head_Action */ protected function getIndexableHeadActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action'] = new \Yoast\WP\SEO\Actions\Indexables\Indexable_Head_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface'] : $this->getMetaSurfaceService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexable_General_Indexation_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexable_General_Indexation_Action */ protected function getIndexableGeneralIndexationActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']; } return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexable_General_Indexation_Action($a); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexable_Indexing_Complete_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexable_Indexing_Complete_Action */ protected function getIndexableIndexingCompleteActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexable_Indexing_Complete_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Indexation_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Indexation_Action */ protected function getIndexablePostIndexationActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']; } return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Indexation_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, $a, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, $b); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Type_Archive_Indexation_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Type_Archive_Indexation_Action */ protected function getIndexablePostTypeArchiveIndexationActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']; } return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexable_Post_Type_Archive_Indexation_Action($a, $b, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexable_Term_Indexation_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexable_Term_Indexation_Action */ protected function getIndexableTermIndexationActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']; } return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexable_Term_Indexation_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, $a, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexing_Complete_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexing_Complete_Action */ protected function getIndexingCompleteActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Complete_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexing_Complete_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Indexing_Prepare_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Indexing_Prepare_Action */ protected function getIndexingPrepareActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action'] = new \Yoast\WP\SEO\Actions\Indexing\Indexing_Prepare_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Post_Link_Indexing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Post_Link_Indexing_Action */ protected function getPostLinkIndexingActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] : $this->getIndexableLinkBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']; } $c = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']; } $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Indexing\Post_Link_Indexing_Action($a, $b, $c, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}); $instance->set_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Indexing\Term_Link_Indexing_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Indexing\Term_Link_Indexing_Action */ protected function getTermLinkIndexingActionService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] : $this->getIndexableLinkBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']; } $c = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'])) { return $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']; } $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] = $instance = new \Yoast\WP\SEO\Actions\Indexing\Term_Link_Indexing_Action($a, $b, $c, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}); $instance->set_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Actions\Integrations_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Integrations_Action */ protected function getIntegrationsActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Integrations_Action'] = new \Yoast\WP\SEO\Actions\Integrations_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\SEMrush\SEMrush_Login_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Login_Action */ protected function getSEMrushLoginActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Login_Action'] = new \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Login_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\SEMrush_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\SEMrush_Client'] : $this->getSEMrushClientService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\SEMrush\SEMrush_Options_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Options_Action */ protected function getSEMrushOptionsActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Options_Action'] = new \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Options_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\SEMrush\SEMrush_Phrases_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Phrases_Action */ protected function getSEMrushPhrasesActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Phrases_Action'] = new \Yoast\WP\SEO\Actions\SEMrush\SEMrush_Phrases_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\SEMrush_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\SEMrush_Client'] : $this->getSEMrushClientService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Wincher\Wincher_Account_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Wincher\Wincher_Account_Action */ protected function getWincherAccountActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action'] = new \Yoast\WP\SEO\Actions\Wincher\Wincher_Account_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client'] : $this->getWincherClientService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Wincher\Wincher_Keyphrases_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Wincher\Wincher_Keyphrases_Action */ protected function getWincherKeyphrasesActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action'] = new \Yoast\WP\SEO\Actions\Wincher\Wincher_Keyphrases_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client'] : $this->getWincherClientService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Actions\Wincher\Wincher_Login_Action' shared autowired service. * * @return \Yoast\WP\SEO\Actions\Wincher\Wincher_Login_Action */ protected function getWincherLoginActionService() { return $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Login_Action'] = new \Yoast\WP\SEO\Actions\Wincher\Wincher_Login_Action(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client'] : $this->getWincherClientService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Analytics\Application\Missing_Indexables_Collector' shared autowired service. * * @return \Yoast\WP\SEO\Analytics\Application\Missing_Indexables_Collector */ protected function getMissingIndexablesCollectorService() { return $this->services['Yoast\\WP\\SEO\\Analytics\\Application\\Missing_Indexables_Collector'] = new \Yoast\WP\SEO\Analytics\Application\Missing_Indexables_Collector(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] : $this->getIndexableGeneralIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] : $this->getIndexablePostIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] : $this->getIndexablePostTypeArchiveIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] : $this->getIndexableTermIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] : $this->getTermLinkIndexingActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Analytics\Application\To_Be_Cleaned_Indexables_Collector' shared autowired service. * * @return \Yoast\WP\SEO\Analytics\Application\To_Be_Cleaned_Indexables_Collector */ protected function getToBeCleanedIndexablesCollectorService() { return $this->services['Yoast\\WP\\SEO\\Analytics\\Application\\To_Be_Cleaned_Indexables_Collector'] = new \Yoast\WP\SEO\Analytics\Application\To_Be_Cleaned_Indexables_Collector(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository'] : $this->getIndexableCleanupRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Analytics\User_Interface\Last_Completed_Indexation_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Analytics\User_Interface\Last_Completed_Indexation_Integration */ protected function getLastCompletedIndexationIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Analytics\\User_Interface\\Last_Completed_Indexation_Integration'] = new \Yoast\WP\SEO\Analytics\User_Interface\Last_Completed_Indexation_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Author_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Author_Builder */ protected function getIndexableAuthorBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Author_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper'] : $this->getAuthorArchiveHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, $a); $instance->set_social_image_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Builder */ protected function getIndexableBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Author_Builder'] : $this->getIndexableAuthorBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder'] : $this->getIndexablePostBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $c = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder'] : $this->getIndexableTermBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $d = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder'] : $this->getIndexableHomePageBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $e = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder'] : $this->getIndexablePostTypeArchiveBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $f = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'] : $this->getIndexableHierarchyBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $g = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder'] : $this->getPrimaryTermBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $h = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $i = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] : $this->getIndexableLinkBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Builder($a, $b, $c, $d, $e, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Date_Archive_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Date_Archive_Builder'] : $this->getIndexableDateArchiveBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_System_Page_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_System_Page_Builder'] : $this->getIndexableSystemPageBuilderService()) && false ?: '_'}, $f, $g, $h, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager']) ? $this->services['Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager'] : $this->getIndexableVersionManagerService()) && false ?: '_'}, $i); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Date_Archive_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Date_Archive_Builder */ protected function getIndexableDateArchiveBuilderService() { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Date_Archive_Builder'] = new \Yoast\WP\SEO\Builders\Indexable_Date_Archive_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Hierarchy_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Hierarchy_Builder */ protected function getIndexableHierarchyBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository'] : $this->getIndexableHierarchyRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']; } $c = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Hierarchy_Builder($a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] = new \Yoast\WP\SEO\Repositories\Primary_Term_Repository())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, $b, $c); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Home_Page_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Home_Page_Builder */ protected function getIndexableHomePageBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Home_Page_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Home_Page_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, $a); $instance->set_social_image_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Link_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Link_Builder */ protected function getIndexableLinkBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Link_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository'] = new \Yoast\WP\SEO\Repositories\SEO_Links_Repository())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, $a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, $b, new \Yoast\WP\SEO\Images\Application\Image_Content_Extractor()); $instance->set_dependencies(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Post_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Post_Builder */ protected function getIndexablePostBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Post_Builder($a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper())) && false ?: '_'}); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); $instance->set_social_image_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Post_Type_Archive_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Post_Type_Archive_Builder */ protected function getIndexablePostTypeArchiveBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder']; } return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Post_Type_Archive_Builder'] = new \Yoast\WP\SEO\Builders\Indexable_Post_Type_Archive_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, $a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_System_Page_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_System_Page_Builder */ protected function getIndexableSystemPageBuilderService() { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_System_Page_Builder'] = new \Yoast\WP\SEO\Builders\Indexable_System_Page_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Builders\Indexable_Term_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Indexable_Term_Builder */ protected function getIndexableTermBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder']; } $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Term_Builder'] = $instance = new \Yoast\WP\SEO\Builders\Indexable_Term_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}, $a); $instance->set_social_image_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Builders\Primary_Term_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Builders\Primary_Term_Builder */ protected function getPrimaryTermBuilderService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder'])) { return $this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder']; } return $this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder'] = new \Yoast\WP\SEO\Builders\Primary_Term_Builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] = new \Yoast\WP\SEO\Repositories\Primary_Term_Repository())) && false ?: '_'}, $a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper'] = new \Yoast\WP\SEO\Helpers\Primary_Term_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Commands\Cleanup_Command' shared autowired service. * * @return \Yoast\WP\SEO\Commands\Cleanup_Command */ protected function getCleanupCommandService() { return $this->services['Yoast\\WP\\SEO\\Commands\\Cleanup_Command'] = new \Yoast\WP\SEO\Commands\Cleanup_Command(${($_ = isset($this->services['Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration']) ? $this->services['Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration'] : $this->getCleanupIntegrationService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Commands\Index_Command' shared autowired service. * * @return \Yoast\WP\SEO\Commands\Index_Command */ protected function getIndexCommandService() { return $this->services['Yoast\\WP\\SEO\\Commands\\Index_Command'] = new \Yoast\WP\SEO\Commands\Index_Command(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] : $this->getIndexablePostIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] : $this->getIndexableTermIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] : $this->getIndexablePostTypeArchiveIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] : $this->getIndexableGeneralIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action'] : $this->getIndexableIndexingCompleteActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action'] : $this->getIndexingPrepareActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] : $this->getTermLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Addon_Installation_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Addon_Installation_Conditional */ protected function getAddonInstallationConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional'] = new \Yoast\WP\SEO\Conditionals\Addon_Installation_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Doing_Post_Quick_Edit_Save_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Doing_Post_Quick_Edit_Save_Conditional */ protected function getDoingPostQuickEditSaveConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Doing_Post_Quick_Edit_Save_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Doing_Post_Quick_Edit_Save_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Estimated_Reading_Time_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Estimated_Reading_Time_Conditional */ protected function getEstimatedReadingTimeConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Estimated_Reading_Time_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Estimated_Reading_Time_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Post_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Licenses_Page_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Licenses_Page_Conditional */ protected function getLicensesPageConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Licenses_Page_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Licenses_Page_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Non_Network_Admin_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Non_Network_Admin_Conditional */ protected function getNonNetworkAdminConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Non_Network_Admin_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Non_Network_Admin_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Post_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Post_Conditional */ protected function getPostConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Post_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Post_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Posts_Overview_Or_Ajax_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Posts_Overview_Or_Ajax_Conditional */ protected function getPostsOverviewOrAjaxConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Posts_Overview_Or_Ajax_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Posts_Overview_Or_Ajax_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin\Yoast_Admin_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin\Yoast_Admin_Conditional */ protected function getYoastAdminConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin\\Yoast_Admin_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin\Yoast_Admin_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Admin_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Admin_Conditional */ protected function getAdminConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Admin_Conditional'] = new \Yoast\WP\SEO\Conditionals\Admin_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Attachment_Redirections_Enabled_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Attachment_Redirections_Enabled_Conditional */ protected function getAttachmentRedirectionsEnabledConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Attachment_Redirections_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\Attachment_Redirections_Enabled_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Check_Required_Version_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Check_Required_Version_Conditional */ protected function getCheckRequiredVersionConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional'] = new \Yoast\WP\SEO\Conditionals\Check_Required_Version_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Deactivating_Yoast_Seo_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Deactivating_Yoast_Seo_Conditional */ protected function getDeactivatingYoastSeoConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Deactivating_Yoast_Seo_Conditional'] = new \Yoast\WP\SEO\Conditionals\Deactivating_Yoast_Seo_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Development_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Development_Conditional */ protected function getDevelopmentConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Development_Conditional'] = new \Yoast\WP\SEO\Conditionals\Development_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Front_End_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Front_End_Conditional */ protected function getFrontEndConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional'] = new \Yoast\WP\SEO\Conditionals\Front_End_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Get_Request_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Get_Request_Conditional */ protected function getGetRequestConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional'] = new \Yoast\WP\SEO\Conditionals\Get_Request_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Headless_Rest_Endpoints_Enabled_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Headless_Rest_Endpoints_Enabled_Conditional */ protected function getHeadlessRestEndpointsEnabledConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Headless_Rest_Endpoints_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\Headless_Rest_Endpoints_Enabled_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Import_Tool_Selected_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Import_Tool_Selected_Conditional */ protected function getImportToolSelectedConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Import_Tool_Selected_Conditional'] = new \Yoast\WP\SEO\Conditionals\Import_Tool_Selected_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Jetpack_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Jetpack_Conditional */ protected function getJetpackConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Jetpack_Conditional'] = new \Yoast\WP\SEO\Conditionals\Jetpack_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Migrations_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Migrations_Conditional */ protected function getMigrationsConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Migrations_Conditional'] = new \Yoast\WP\SEO\Conditionals\Migrations_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status']) ? $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] : ($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\New_Settings_Ui_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\New_Settings_Ui_Conditional */ protected function getNewSettingsUiConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional'] = new \Yoast\WP\SEO\Conditionals\New_Settings_Ui_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\News_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\News_Conditional */ protected function getNewsConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\News_Conditional'] = new \Yoast\WP\SEO\Conditionals\News_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\No_Tool_Selected_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\No_Tool_Selected_Conditional */ protected function getNoToolSelectedConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\No_Tool_Selected_Conditional'] = new \Yoast\WP\SEO\Conditionals\No_Tool_Selected_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Non_Multisite_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Non_Multisite_Conditional */ protected function getNonMultisiteConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Non_Multisite_Conditional'] = new \Yoast\WP\SEO\Conditionals\Non_Multisite_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Not_Admin_Ajax_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Not_Admin_Ajax_Conditional */ protected function getNotAdminAjaxConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Not_Admin_Ajax_Conditional'] = new \Yoast\WP\SEO\Conditionals\Not_Admin_Ajax_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Open_Graph_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Open_Graph_Conditional */ protected function getOpenGraphConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Open_Graph_Conditional'] = new \Yoast\WP\SEO\Conditionals\Open_Graph_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Premium_Active_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Premium_Active_Conditional */ protected function getPremiumActiveConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Premium_Active_Conditional'] = new \Yoast\WP\SEO\Conditionals\Premium_Active_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Premium_Inactive_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Premium_Inactive_Conditional */ protected function getPremiumInactiveConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Premium_Inactive_Conditional'] = new \Yoast\WP\SEO\Conditionals\Premium_Inactive_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Primary_Category_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Primary_Category_Conditional */ protected function getPrimaryCategoryConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Primary_Category_Conditional'] = new \Yoast\WP\SEO\Conditionals\Primary_Category_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Robots_Txt_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Robots_Txt_Conditional */ protected function getRobotsTxtConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Robots_Txt_Conditional'] = new \Yoast\WP\SEO\Conditionals\Robots_Txt_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Front_End_Conditional'] = new \Yoast\WP\SEO\Conditionals\Front_End_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\SEMrush_Enabled_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\SEMrush_Enabled_Conditional */ protected function getSEMrushEnabledConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\SEMrush_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\SEMrush_Enabled_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Settings_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Settings_Conditional */ protected function getSettingsConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Settings_Conditional'] = new \Yoast\WP\SEO\Conditionals\Settings_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Can_Manage_Wpseo_Options_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Should_Index_Links_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Should_Index_Links_Conditional */ protected function getShouldIndexLinksConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Should_Index_Links_Conditional'] = new \Yoast\WP\SEO\Conditionals\Should_Index_Links_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Text_Formality_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Text_Formality_Conditional */ protected function getTextFormalityConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional'] = new \Yoast\WP\SEO\Conditionals\Text_Formality_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Activated_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Activated_Conditional */ protected function getElementorActivatedConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Activated_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Activated_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Edit_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Edit_Conditional */ protected function getElementorEditConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Elementor_Edit_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Elementor_Edit_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\Polylang_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\Polylang_Conditional */ protected function getPolylangConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Polylang_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\TranslatePress_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\TranslatePress_Conditional */ protected function getTranslatePressConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\TranslatePress_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\W3_Total_Cache_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\W3_Total_Cache_Conditional */ protected function getW3TotalCacheConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\W3_Total_Cache_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\W3_Total_Cache_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\WPML_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\WPML_Conditional */ protected function getWPMLConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\WPML_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\WPML_WPSEO_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\WPML_WPSEO_Conditional */ protected function getWPMLWPSEOConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\WPML_WPSEO_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional * * @deprecated Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional is deprecated since version 22.10! */ protected function getWordproofIntegrationActiveConditionalService() { @trigger_error('Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Integration_Active_Conditional is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Integration_Active_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Integration_Active_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper'] : $this->getWordproofHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional * * @deprecated Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional is deprecated since version 22.10! */ protected function getWordproofPluginInactiveConditionalService() { @trigger_error('Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Plugin_Inactive_Conditional is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Wordproof_Plugin_Inactive_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Wordproof_Plugin_Inactive_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Updated_Importer_Framework_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Updated_Importer_Framework_Conditional */ protected function getUpdatedImporterFrameworkConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional'] = new \Yoast\WP\SEO\Conditionals\Updated_Importer_Framework_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\User_Can_Edit_Users_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\User_Can_Edit_Users_Conditional */ protected function getUserCanEditUsersConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Edit_Users_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Can_Edit_Users_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\User_Can_Manage_Wpseo_Options_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\User_Can_Manage_Wpseo_Options_Conditional */ protected function getUserCanManageWpseoOptionsConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Manage_Wpseo_Options_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Can_Manage_Wpseo_Options_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\User_Can_Publish_Posts_And_Pages_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\User_Can_Publish_Posts_And_Pages_Conditional */ protected function getUserCanPublishPostsAndPagesConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Can_Publish_Posts_And_Pages_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Can_Publish_Posts_And_Pages_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\User_Edit_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\User_Edit_Conditional */ protected function getUserEditConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Edit_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Edit_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\User_Profile_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\User_Profile_Conditional */ protected function getUserProfileConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\User_Profile_Conditional'] = new \Yoast\WP\SEO\Conditionals\User_Profile_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\WP_CRON_Enabled_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\WP_CRON_Enabled_Conditional */ protected function getWPCRONEnabledConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\WP_CRON_Enabled_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\WP_Robots_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\WP_Robots_Conditional */ protected function getWPRobotsConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\WP_Robots_Conditional'] = new \Yoast\WP\SEO\Conditionals\WP_Robots_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Web_Stories_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Web_Stories_Conditional */ protected function getWebStoriesConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Web_Stories_Conditional'] = new \Yoast\WP\SEO\Conditionals\Web_Stories_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Wincher_Automatically_Track_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Wincher_Automatically_Track_Conditional */ protected function getWincherAutomaticallyTrackConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Automatically_Track_Conditional'] = new \Yoast\WP\SEO\Conditionals\Wincher_Automatically_Track_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Wincher_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Wincher_Conditional */ protected function getWincherConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Conditional'] = new \Yoast\WP\SEO\Conditionals\Wincher_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Wincher_Enabled_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Wincher_Enabled_Conditional */ protected function getWincherEnabledConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\Wincher_Enabled_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Wincher_Token_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Wincher_Token_Conditional */ protected function getWincherTokenConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Token_Conditional'] = new \Yoast\WP\SEO\Conditionals\Wincher_Token_Conditional(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client']) ? $this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client'] : $this->getWincherClientService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\WooCommerce_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\WooCommerce_Conditional */ protected function getWooCommerceConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional'] = new \Yoast\WP\SEO\Conditionals\WooCommerce_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\XMLRPC_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\XMLRPC_Conditional */ protected function getXMLRPCConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\XMLRPC_Conditional'] = new \Yoast\WP\SEO\Conditionals\XMLRPC_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Yoast_Admin_And_Dashboard_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Yoast_Admin_And_Dashboard_Conditional */ protected function getYoastAdminAndDashboardConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional'] = new \Yoast\WP\SEO\Conditionals\Yoast_Admin_And_Dashboard_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Conditionals\Yoast_Tools_Page_Conditional' shared autowired service. * * @return \Yoast\WP\SEO\Conditionals\Yoast_Tools_Page_Conditional */ protected function getYoastToolsPageConditionalService() { return $this->services['Yoast\\WP\\SEO\\Conditionals\\Yoast_Tools_Page_Conditional'] = new \Yoast\WP\SEO\Conditionals\Yoast_Tools_Page_Conditional(); } /** * Gets the public 'Yoast\WP\SEO\Config\Badge_Group_Names' shared autowired service. * * @return \Yoast\WP\SEO\Config\Badge_Group_Names */ protected function getBadgeGroupNamesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Badge_Group_Names'] = new \Yoast\WP\SEO\Config\Badge_Group_Names(); } /** * Gets the public 'Yoast\WP\SEO\Config\Conflicting_Plugins' shared autowired service. * * @return \Yoast\WP\SEO\Config\Conflicting_Plugins */ protected function getConflictingPluginsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Conflicting_Plugins'] = new \Yoast\WP\SEO\Config\Conflicting_Plugins(); } /** * Gets the public 'Yoast\WP\SEO\Config\Indexing_Reasons' shared autowired service. * * @return \Yoast\WP\SEO\Config\Indexing_Reasons */ protected function getIndexingReasonsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Indexing_Reasons'] = new \Yoast\WP\SEO\Config\Indexing_Reasons(); } /** * Gets the public 'Yoast\WP\SEO\Config\Migration_Status' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migration_Status */ protected function getMigrationStatusService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status(); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddCollationToTables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddCollationToTables */ protected function getAddCollationToTablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddCollationToTables'] = new \Yoast\WP\SEO\Config\Migrations\AddCollationToTables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddColumnsToIndexables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddColumnsToIndexables */ protected function getAddColumnsToIndexablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddColumnsToIndexables'] = new \Yoast\WP\SEO\Config\Migrations\AddColumnsToIndexables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddEstimatedReadingTime' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddEstimatedReadingTime */ protected function getAddEstimatedReadingTimeService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddEstimatedReadingTime'] = new \Yoast\WP\SEO\Config\Migrations\AddEstimatedReadingTime(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddHasAncestorsColumn' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddHasAncestorsColumn */ protected function getAddHasAncestorsColumnService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddHasAncestorsColumn'] = new \Yoast\WP\SEO\Config\Migrations\AddHasAncestorsColumn(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddInclusiveLanguageScore' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddInclusiveLanguageScore */ protected function getAddInclusiveLanguageScoreService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddInclusiveLanguageScore'] = new \Yoast\WP\SEO\Config\Migrations\AddInclusiveLanguageScore(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddIndexableObjectIdAndTypeIndex' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddIndexableObjectIdAndTypeIndex */ protected function getAddIndexableObjectIdAndTypeIndexService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexableObjectIdAndTypeIndex'] = new \Yoast\WP\SEO\Config\Migrations\AddIndexableObjectIdAndTypeIndex(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddIndexesForProminentWordsOnIndexables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddIndexesForProminentWordsOnIndexables */ protected function getAddIndexesForProminentWordsOnIndexablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexesForProminentWordsOnIndexables'] = new \Yoast\WP\SEO\Config\Migrations\AddIndexesForProminentWordsOnIndexables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddObjectTimestamps' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddObjectTimestamps */ protected function getAddObjectTimestampsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddObjectTimestamps'] = new \Yoast\WP\SEO\Config\Migrations\AddObjectTimestamps(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\AddVersionColumnToIndexables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\AddVersionColumnToIndexables */ protected function getAddVersionColumnToIndexablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\AddVersionColumnToIndexables'] = new \Yoast\WP\SEO\Config\Migrations\AddVersionColumnToIndexables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\BreadcrumbTitleAndHierarchyReset' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\BreadcrumbTitleAndHierarchyReset */ protected function getBreadcrumbTitleAndHierarchyResetService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\BreadcrumbTitleAndHierarchyReset'] = new \Yoast\WP\SEO\Config\Migrations\BreadcrumbTitleAndHierarchyReset(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ClearIndexableTables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ClearIndexableTables */ protected function getClearIndexableTablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ClearIndexableTables'] = new \Yoast\WP\SEO\Config\Migrations\ClearIndexableTables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\CreateIndexableSubpagesIndex' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\CreateIndexableSubpagesIndex */ protected function getCreateIndexableSubpagesIndexService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\CreateIndexableSubpagesIndex'] = new \Yoast\WP\SEO\Config\Migrations\CreateIndexableSubpagesIndex(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\CreateSEOLinksTable' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\CreateSEOLinksTable */ protected function getCreateSEOLinksTableService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\CreateSEOLinksTable'] = new \Yoast\WP\SEO\Config\Migrations\CreateSEOLinksTable(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\DeleteDuplicateIndexables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\DeleteDuplicateIndexables */ protected function getDeleteDuplicateIndexablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\DeleteDuplicateIndexables'] = new \Yoast\WP\SEO\Config\Migrations\DeleteDuplicateIndexables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ExpandIndexableColumnLengths' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ExpandIndexableColumnLengths */ protected function getExpandIndexableColumnLengthsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableColumnLengths'] = new \Yoast\WP\SEO\Config\Migrations\ExpandIndexableColumnLengths(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ExpandIndexableIDColumnLengths' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ExpandIndexableIDColumnLengths */ protected function getExpandIndexableIDColumnLengthsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableIDColumnLengths'] = new \Yoast\WP\SEO\Config\Migrations\ExpandIndexableIDColumnLengths(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ExpandPrimaryTermIDColumnLengths' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ExpandPrimaryTermIDColumnLengths */ protected function getExpandPrimaryTermIDColumnLengthsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ExpandPrimaryTermIDColumnLengths'] = new \Yoast\WP\SEO\Config\Migrations\ExpandPrimaryTermIDColumnLengths(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ReplacePermalinkHashIndex' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ReplacePermalinkHashIndex */ protected function getReplacePermalinkHashIndexService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ReplacePermalinkHashIndex'] = new \Yoast\WP\SEO\Config\Migrations\ReplacePermalinkHashIndex(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\ResetIndexableHierarchyTable' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\ResetIndexableHierarchyTable */ protected function getResetIndexableHierarchyTableService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\ResetIndexableHierarchyTable'] = new \Yoast\WP\SEO\Config\Migrations\ResetIndexableHierarchyTable(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\TruncateIndexableTables' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\TruncateIndexableTables */ protected function getTruncateIndexableTablesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\TruncateIndexableTables'] = new \Yoast\WP\SEO\Config\Migrations\TruncateIndexableTables(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\WpYoastDropIndexableMetaTableIfExists' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\WpYoastDropIndexableMetaTableIfExists */ protected function getWpYoastDropIndexableMetaTableIfExistsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastDropIndexableMetaTableIfExists'] = new \Yoast\WP\SEO\Config\Migrations\WpYoastDropIndexableMetaTableIfExists(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\WpYoastIndexable' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\WpYoastIndexable */ protected function getWpYoastIndexableService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexable'] = new \Yoast\WP\SEO\Config\Migrations\WpYoastIndexable(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\WpYoastIndexableHierarchy' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\WpYoastIndexableHierarchy */ protected function getWpYoastIndexableHierarchyService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexableHierarchy'] = new \Yoast\WP\SEO\Config\Migrations\WpYoastIndexableHierarchy(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Migrations\WpYoastPrimaryTerm' shared autowired service. * * @return \Yoast\WP\SEO\Config\Migrations\WpYoastPrimaryTerm */ protected function getWpYoastPrimaryTermService() { return $this->services['Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastPrimaryTerm'] = new \Yoast\WP\SEO\Config\Migrations\WpYoastPrimaryTerm(${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Researcher_Languages' shared autowired service. * * @return \Yoast\WP\SEO\Config\Researcher_Languages */ protected function getResearcherLanguagesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Researcher_Languages'] = new \Yoast\WP\SEO\Config\Researcher_Languages(); } /** * Gets the public 'Yoast\WP\SEO\Config\SEMrush_Client' shared autowired service. * * @return \Yoast\WP\SEO\Config\SEMrush_Client */ protected function getSEMrushClientService() { return $this->services['Yoast\\WP\\SEO\\Config\\SEMrush_Client'] = new \Yoast\WP\SEO\Config\SEMrush_Client(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler'] = new \Yoast\WP\SEO\Wrappers\WP_Remote_Handler())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Schema_IDs' shared autowired service. * * @return \Yoast\WP\SEO\Config\Schema_IDs */ protected function getSchemaIDsService() { return $this->services['Yoast\\WP\\SEO\\Config\\Schema_IDs'] = new \Yoast\WP\SEO\Config\Schema_IDs(); } /** * Gets the public 'Yoast\WP\SEO\Config\Schema_Types' shared autowired service. * * @return \Yoast\WP\SEO\Config\Schema_Types */ protected function getSchemaTypesService() { return $this->services['Yoast\\WP\\SEO\\Config\\Schema_Types'] = new \Yoast\WP\SEO\Config\Schema_Types(); } /** * Gets the public 'Yoast\WP\SEO\Config\Wincher_Client' shared autowired service. * * @return \Yoast\WP\SEO\Config\Wincher_Client */ protected function getWincherClientService() { return $this->services['Yoast\\WP\\SEO\\Config\\Wincher_Client'] = new \Yoast\WP\SEO\Config\Wincher_Client(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler'] = new \Yoast\WP\SEO\Wrappers\WP_Remote_Handler())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Config\Wordproof_App_Config' shared autowired service. * * @return \Yoast\WP\SEO\Config\Wordproof_App_Config * * @deprecated Yoast\WP\SEO\Config\Wordproof_App_Config is deprecated since version 22.10! */ protected function getWordproofAppConfigService() { @trigger_error('Yoast\\WP\\SEO\\Config\\Wordproof_App_Config is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Config\\Wordproof_App_Config'] = new \Yoast\WP\SEO\Config\Wordproof_App_Config(); } /** * Gets the public 'Yoast\WP\SEO\Config\Wordproof_Translations' shared autowired service. * * @return \Yoast\WP\SEO\Config\Wordproof_Translations * * @deprecated Yoast\WP\SEO\Config\Wordproof_Translations is deprecated since version 22.10! */ protected function getWordproofTranslationsService() { @trigger_error('Yoast\\WP\\SEO\\Config\\Wordproof_Translations is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Config\\Wordproof_Translations'] = new \Yoast\WP\SEO\Config\Wordproof_Translations(); } /** * Gets the public 'Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Watcher_Actions' shared autowired service. * * @return \Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Watcher_Actions */ protected function getContentTypeVisibilityWatcherActionsService() { return $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Watcher_Actions'] = new \Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Watcher_Actions(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications']) ? $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications'] : $this->getContentTypeVisibilityDismissNotificationsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Content_Type_Visibility\User_Interface\Content_Type_Visibility_Dismiss_New_Route' shared autowired service. * * @return \Yoast\WP\SEO\Content_Type_Visibility\User_Interface\Content_Type_Visibility_Dismiss_New_Route */ protected function getContentTypeVisibilityDismissNewRouteService() { return $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\User_Interface\\Content_Type_Visibility_Dismiss_New_Route'] = new \Yoast\WP\SEO\Content_Type_Visibility\User_Interface\Content_Type_Visibility_Dismiss_New_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications']) ? $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications'] : $this->getContentTypeVisibilityDismissNotificationsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Context\Meta_Tags_Context' shared autowired service. * * @return \Yoast\WP\SEO\Context\Meta_Tags_Context */ protected function getMetaTagsContextService() { return $this->services['Yoast\\WP\\SEO\\Context\\Meta_Tags_Context'] = new \Yoast\WP\SEO\Context\Meta_Tags_Context(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\ID_Helper())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] = new \Yoast\WP\SEO\Helpers\Site_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Editors\Application\Analysis_Features\Enabled_Analysis_Features_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Editors\Application\Analysis_Features\Enabled_Analysis_Features_Repository */ protected function getEnabledAnalysisFeaturesRepositoryService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}; $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper'] = new \Yoast\WP\SEO\Helpers\Language_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Editors\\Application\\Analysis_Features\\Enabled_Analysis_Features_Repository'] = new \Yoast\WP\SEO\Editors\Application\Analysis_Features\Enabled_Analysis_Features_Repository(new \Yoast\WP\SEO\Editors\Framework\Cornerstone_Content($a), new \Yoast\WP\SEO\Editors\Framework\Inclusive_Language_Analysis($a, $b, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}), new \Yoast\WP\SEO\Editors\Framework\Keyphrase_Analysis($a), new \Yoast\WP\SEO\Editors\Framework\Previously_Used_Keyphrase(), new \Yoast\WP\SEO\Editors\Framework\Readability_Analysis($a), new \Yoast\WP\SEO\Editors\Framework\Word_Form_Recognition($b)); } /** * Gets the public 'Yoast\WP\SEO\Editors\Application\Integrations\Integration_Information_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Editors\Application\Integrations\Integration_Information_Repository */ protected function getIntegrationInformationRepositoryService() { $a = ${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}; $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Editors\\Application\\Integrations\\Integration_Information_Repository'] = new \Yoast\WP\SEO\Editors\Application\Integrations\Integration_Information_Repository(new \Yoast\WP\SEO\Editors\Framework\Integrations\Jetpack_Markdown(), new \Yoast\WP\SEO\Editors\Framework\Integrations\Multilingual(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\WPML_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\Polylang_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\Polylang_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\TranslatePress_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\TranslatePress_Conditional())) && false ?: '_'}), new \Yoast\WP\SEO\Editors\Framework\Integrations\News_SEO($a), new \Yoast\WP\SEO\Editors\Framework\Integrations\Semrush($b), new \Yoast\WP\SEO\Editors\Framework\Integrations\Wincher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wincher_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wincher_Helper'] : $this->getWincherHelperService()) && false ?: '_'}, $b), new \Yoast\WP\SEO\Editors\Framework\Integrations\WooCommerce_SEO($a), new \Yoast\WP\SEO\Editors\Framework\Integrations\WooCommerce(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional'] = new \Yoast\WP\SEO\Conditionals\WooCommerce_Conditional())) && false ?: '_'})); } /** * Gets the public 'Yoast\WP\SEO\Editors\Application\Seo\Post_Seo_Information_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Editors\Application\Seo\Post_Seo_Information_Repository */ protected function getPostSeoInformationRepositoryService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Post_Seo_Information_Repository'] = new \Yoast\WP\SEO\Editors\Application\Seo\Post_Seo_Information_Repository(new \Yoast\WP\SEO\Editors\Framework\Seo\Posts\Description_Data_Provider(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}, $a), new \Yoast\WP\SEO\Editors\Framework\Seo\Posts\Keyphrase_Data_Provider(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper())) && false ?: '_'}), new \Yoast\WP\SEO\Editors\Framework\Seo\Posts\Social_Data_Provider($a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}), new \Yoast\WP\SEO\Editors\Framework\Seo\Posts\Title_Data_Provider($a)); } /** * Gets the public 'Yoast\WP\SEO\Editors\Application\Seo\Term_Seo_Information_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Editors\Application\Seo\Term_Seo_Information_Repository */ protected function getTermSeoInformationRepositoryService() { return $this->services['Yoast\\WP\\SEO\\Editors\\Application\\Seo\\Term_Seo_Information_Repository'] = new \Yoast\WP\SEO\Editors\Application\Seo\Term_Seo_Information_Repository(new \Yoast\WP\SEO\Editors\Framework\Seo\Terms\Description_Data_Provider(), new \Yoast\WP\SEO\Editors\Framework\Seo\Terms\Keyphrase_Data_Provider(), new \Yoast\WP\SEO\Editors\Framework\Seo\Terms\Social_Data_Provider(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}), new \Yoast\WP\SEO\Editors\Framework\Seo\Terms\Title_Data_Provider()); } /** * Gets the public 'Yoast\WP\SEO\Editors\Application\Site\Website_Information_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Editors\Application\Site\Website_Information_Repository */ protected function getWebsiteInformationRepositoryService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}; $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository']) ? $this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository'] : $this->getWistiaEmbedPermissionRepositoryService()) && false ?: '_'}; $c = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface'] : $this->getMetaSurfaceService()) && false ?: '_'}; $d = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}; $e = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}; $f = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager']) ? $this->services['Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager'] : $this->getPromotionManagerService()) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Editors\\Application\\Site\\Website_Information_Repository'] = new \Yoast\WP\SEO\Editors\Application\Site\Website_Information_Repository(new \Yoast\WP\SEO\Editors\Framework\Site\Post_Site_Information($a, $b, $c, $d, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action'] : $this->getAlertDismissalActionService()) && false ?: '_'}, $e, $f), new \Yoast\WP\SEO\Editors\Framework\Site\Term_Site_Information($a, $b, $c, $d, $e, $f)); } /** * Gets the public 'Yoast\WP\SEO\General\User_Interface\General_Page_Integration' shared autowired service. * * @return \Yoast\WP\SEO\General\User_Interface\General_Page_Integration */ protected function getGeneralPageIntegrationService() { return $this->services['Yoast\\WP\\SEO\\General\\User_Interface\\General_Page_Integration'] = new \Yoast\WP\SEO\General\User_Interface\General_Page_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] = new \Yoast\WP\SEO\Helpers\Notification_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action'] : $this->getAlertDismissalActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager']) ? $this->services['Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager'] : $this->getPromotionManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Generators\Breadcrumbs_Generator' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Breadcrumbs_Generator */ protected function getBreadcrumbsGeneratorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] = new \Yoast\WP\SEO\Generators\Breadcrumbs_Generator(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Generators\Open_Graph_Image_Generator' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Open_Graph_Image_Generator */ protected function getOpenGraphImageGeneratorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Image_Generator(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator */ protected function getOpenGraphLocaleGeneratorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Article' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Article */ protected function getArticleService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Article'] = new \Yoast\WP\SEO\Generators\Schema\Article(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Author' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Author */ protected function getAuthorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Author'] = new \Yoast\WP\SEO\Generators\Schema\Author(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Breadcrumb' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Breadcrumb */ protected function getBreadcrumbService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Breadcrumb'] = new \Yoast\WP\SEO\Generators\Schema\Breadcrumb(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\FAQ' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\FAQ */ protected function getFAQService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\FAQ'] = new \Yoast\WP\SEO\Generators\Schema\FAQ(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\HowTo' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\HowTo */ protected function getHowToService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\HowTo'] = new \Yoast\WP\SEO\Generators\Schema\HowTo(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Main_Image' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Main_Image */ protected function getMainImageService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Main_Image'] = new \Yoast\WP\SEO\Generators\Schema\Main_Image(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Organization' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Organization */ protected function getOrganizationService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Organization'] = new \Yoast\WP\SEO\Generators\Schema\Organization(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Person' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Person */ protected function getPersonService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Person'] = new \Yoast\WP\SEO\Generators\Schema\Person(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\WebPage' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\WebPage */ protected function getWebPageService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\WebPage'] = new \Yoast\WP\SEO\Generators\Schema\WebPage(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema\Website' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema\Website */ protected function getWebsiteService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema\\Website'] = new \Yoast\WP\SEO\Generators\Schema\Website(); } /** * Gets the public 'Yoast\WP\SEO\Generators\Schema_Generator' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Schema_Generator */ protected function getSchemaGeneratorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] = new \Yoast\WP\SEO\Generators\Schema_Generator(${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface'] : $this->getHelpersSurfaceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Replace_Vars_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Replace_Vars_Helper'] : $this->getReplaceVarsHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Generators\Twitter_Image_Generator' shared autowired service. * * @return \Yoast\WP\SEO\Generators\Twitter_Image_Generator */ protected function getTwitterImageGeneratorService() { return $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] = new \Yoast\WP\SEO\Generators\Twitter_Image_Generator(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Aioseo_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Aioseo_Helper */ protected function getAioseoHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] = new \Yoast\WP\SEO\Helpers\Aioseo_Helper(${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wpdb_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wpdb_Helper'] : $this->getWpdbHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Asset_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Asset_Helper */ protected function getAssetHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Asset_Helper'] = new \Yoast\WP\SEO\Helpers\Asset_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Attachment_Cleanup_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Attachment_Cleanup_Helper */ protected function getAttachmentCleanupHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper'] = new \Yoast\WP\SEO\Helpers\Attachment_Cleanup_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Author_Archive_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Author_Archive_Helper */ protected function getAuthorArchiveHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper'] = new \Yoast\WP\SEO\Helpers\Author_Archive_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Blocks_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Blocks_Helper */ protected function getBlocksHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Blocks_Helper'] = new \Yoast\WP\SEO\Helpers\Blocks_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Capability_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Capability_Helper */ protected function getCapabilityHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] = new \Yoast\WP\SEO\Helpers\Capability_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Crawl_Cleanup_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Crawl_Cleanup_Helper */ protected function getCrawlCleanupHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Crawl_Cleanup_Helper'] = new \Yoast\WP\SEO\Helpers\Crawl_Cleanup_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Curl_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Curl_Helper */ protected function getCurlHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Curl_Helper'] = new \Yoast\WP\SEO\Helpers\Curl_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Current_Page_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Current_Page_Helper */ protected function getCurrentPageHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] = new \Yoast\WP\SEO\Helpers\Current_Page_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Date_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Date_Helper */ protected function getDateHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Environment_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Environment_Helper */ protected function getEnvironmentHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper'] = new \Yoast\WP\SEO\Helpers\Environment_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\First_Time_Configuration_Notice_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\First_Time_Configuration_Notice_Helper */ protected function getFirstTimeConfigurationNoticeHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\First_Time_Configuration_Notice_Helper'] = new \Yoast\WP\SEO\Helpers\First_Time_Configuration_Notice_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Home_Url_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Home_Url_Helper */ protected function getHomeUrlHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Home_Url_Helper'] = new \Yoast\WP\SEO\Helpers\Home_Url_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Image_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Image_Helper */ protected function getImageHelperService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'])) { return $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']; } return $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] = new \Yoast\WP\SEO\Helpers\Image_Helper($a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository'] = new \Yoast\WP\SEO\Repositories\SEO_Links_Repository())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Import_Cursor_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Import_Cursor_Helper */ protected function getImportCursorHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Cursor_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Cursor_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Import_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Import_Helper */ protected function getImportHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Import_Helper'] = new \Yoast\WP\SEO\Helpers\Import_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Indexable_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Indexable_Helper */ protected function getIndexableHelperService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'])) { return $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']; } $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] = $instance = new \Yoast\WP\SEO\Helpers\Indexable_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper'] = new \Yoast\WP\SEO\Helpers\Environment_Helper())) && false ?: '_'}, $a); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Helpers\Indexable_To_Postmeta_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Indexable_To_Postmeta_Helper */ protected function getIndexableToPostmetaHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_To_Postmeta_Helper'] = new \Yoast\WP\SEO\Helpers\Indexable_To_Postmeta_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Indexing_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Indexing_Helper */ protected function getIndexingHelperService() { $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] = $instance = new \Yoast\WP\SEO\Helpers\Indexing_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}); $instance->set_indexing_actions(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] : $this->getIndexablePostIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] : $this->getIndexableTermIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] : $this->getIndexablePostTypeArchiveIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] : $this->getIndexableGeneralIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] : $this->getTermLinkIndexingActionService()) && false ?: '_'}); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Helpers\Language_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Language_Helper */ protected function getLanguageHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper'] = new \Yoast\WP\SEO\Helpers\Language_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Meta_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Meta_Helper */ protected function getMetaHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Notification_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Notification_Helper */ protected function getNotificationHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] = new \Yoast\WP\SEO\Helpers\Notification_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Open_Graph\Image_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Open_Graph\Image_Helper */ protected function getImageHelper2Service() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'])) { return $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']; } return $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Image_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, $a); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper */ protected function getValuesHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Options_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Options_Helper */ protected function getOptionsHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Pagination_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Pagination_Helper */ protected function getPaginationHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] = new \Yoast\WP\SEO\Helpers\Pagination_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Rewrite_Wrapper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Permalink_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Permalink_Helper */ protected function getPermalinkHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Post_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Post_Helper */ protected function getPostHelperService() { $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] = $instance = new \Yoast\WP\SEO\Helpers\Post_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper'] = new \Yoast\WP\SEO\Helpers\String_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}); $instance->set_indexable_repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Helpers\Post_Type_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Post_Type_Helper */ protected function getPostTypeHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] = new \Yoast\WP\SEO\Helpers\Post_Type_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Primary_Term_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Primary_Term_Helper */ protected function getPrimaryTermHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper'] = new \Yoast\WP\SEO\Helpers\Primary_Term_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Product_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Product_Helper */ protected function getProductHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Redirect_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Redirect_Helper */ protected function getRedirectHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Request_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Request_Helper * * @deprecated Yoast\WP\SEO\Helpers\Request_Helper is deprecated since version 23.6! */ protected function getRequestHelperService() { @trigger_error('Yoast\\WP\\SEO\\Helpers\\Request_Helper is deprecated since version 23.6!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Helpers\\Request_Helper'] = new \Yoast\WP\SEO\Helpers\Request_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Require_File_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Require_File_Helper */ protected function getRequireFileHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Require_File_Helper'] = new \Yoast\WP\SEO\Helpers\Require_File_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Robots_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Robots_Helper */ protected function getRobotsHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper'] = new \Yoast\WP\SEO\Helpers\Robots_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Robots_Txt_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Robots_Txt_Helper */ protected function getRobotsTxtHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper'] = new \Yoast\WP\SEO\Helpers\Robots_Txt_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Sanitization_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Sanitization_Helper */ protected function getSanitizationHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Sanitization_Helper'] = new \Yoast\WP\SEO\Helpers\Sanitization_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\Article_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\Article_Helper */ protected function getArticleHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Article_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\HTML_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\HTML_Helper */ protected function getHTMLHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\HTML_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\ID_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\ID_Helper */ protected function getIDHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\ID_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\Image_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\Image_Helper */ protected function getImageHelper3Service() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Image_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Image_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\HTML_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\HTML_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Language_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\Language_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\Language_Helper */ protected function getLanguageHelper2Service() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Language_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Language_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Schema\Replace_Vars_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Schema\Replace_Vars_Helper */ protected function getReplaceVarsHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Replace_Vars_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Replace_Vars_Helper(${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\ID_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\ID_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Score_Icon_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Score_Icon_Helper */ protected function getScoreIconHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Score_Icon_Helper'] = new \Yoast\WP\SEO\Helpers\Score_Icon_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper'] : $this->getRobotsHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Short_Link_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Short_Link_Helper */ protected function getShortLinkHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] = new \Yoast\WP\SEO\Helpers\Short_Link_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Site_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Site_Helper */ protected function getSiteHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] = new \Yoast\WP\SEO\Helpers\Site_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Social_Profiles_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Social_Profiles_Helper */ protected function getSocialProfilesHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper'] = new \Yoast\WP\SEO\Helpers\Social_Profiles_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\String_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\String_Helper */ protected function getStringHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper'] = new \Yoast\WP\SEO\Helpers\String_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Taxonomy_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Taxonomy_Helper */ protected function getTaxonomyHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] = new \Yoast\WP\SEO\Helpers\Taxonomy_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\String_Helper'] = new \Yoast\WP\SEO\Helpers\String_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Twitter\Image_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Twitter\Image_Helper */ protected function getImageHelper4Service() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'])) { return $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']; } return $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] = new \Yoast\WP\SEO\Helpers\Twitter\Image_Helper($a); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Url_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Url_Helper */ protected function getUrlHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\User_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\User_Helper */ protected function getUserHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Wincher_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Wincher_Helper */ protected function getWincherHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Wincher_Helper'] = new \Yoast\WP\SEO\Helpers\Wincher_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Woocommerce_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Woocommerce_Helper */ protected function getWoocommerceHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] = new \Yoast\WP\SEO\Helpers\Woocommerce_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Wordpress_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Wordpress_Helper */ protected function getWordpressHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Wordpress_Helper'] = new \Yoast\WP\SEO\Helpers\Wordpress_Helper(); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Wordproof_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Wordproof_Helper * * @deprecated Yoast\WP\SEO\Helpers\Wordproof_Helper is deprecated since version 22.10! */ protected function getWordproofHelperService() { @trigger_error('Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper'] = new \Yoast\WP\SEO\Helpers\Wordproof_Helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] = new \Yoast\WP\SEO\Helpers\Woocommerce_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Helpers\Wpdb_Helper' shared autowired service. * * @return \Yoast\WP\SEO\Helpers\Wpdb_Helper */ protected function getWpdbHelperService() { return $this->services['Yoast\\WP\\SEO\\Helpers\\Wpdb_Helper'] = new \Yoast\WP\SEO\Helpers\Wpdb_Helper(${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Initializers\Crawl_Cleanup_Permalinks' shared autowired service. * * @return \Yoast\WP\SEO\Initializers\Crawl_Cleanup_Permalinks */ protected function getCrawlCleanupPermalinksService() { return $this->services['Yoast\\WP\\SEO\\Initializers\\Crawl_Cleanup_Permalinks'] = new \Yoast\WP\SEO\Initializers\Crawl_Cleanup_Permalinks(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Crawl_Cleanup_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Crawl_Cleanup_Helper'] : $this->getCrawlCleanupHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Initializers\Disable_Core_Sitemaps' shared autowired service. * * @return \Yoast\WP\SEO\Initializers\Disable_Core_Sitemaps */ protected function getDisableCoreSitemapsService() { return $this->services['Yoast\\WP\\SEO\\Initializers\\Disable_Core_Sitemaps'] = new \Yoast\WP\SEO\Initializers\Disable_Core_Sitemaps(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Initializers\Migration_Runner' shared autowired service. * * @return \Yoast\WP\SEO\Initializers\Migration_Runner */ protected function getMigrationRunnerService() { return $this->services['Yoast\\WP\\SEO\\Initializers\\Migration_Runner'] = new \Yoast\WP\SEO\Initializers\Migration_Runner(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status']) ? $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] : ($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Loader']) ? $this->services['Yoast\\WP\\SEO\\Loader'] : $this->getLoaderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter']) ? $this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] : ($this->services['Yoast\\WP\\Lib\\Migrations\\Adapter'] = new \Yoast\WP\Lib\Migrations\Adapter())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Initializers\Plugin_Headers' shared autowired service. * * @return \Yoast\WP\SEO\Initializers\Plugin_Headers */ protected function getPluginHeadersService() { return $this->services['Yoast\\WP\\SEO\\Initializers\\Plugin_Headers'] = new \Yoast\WP\SEO\Initializers\Plugin_Headers(); } /** * Gets the public 'Yoast\WP\SEO\Initializers\Woocommerce' shared autowired service. * * @return \Yoast\WP\SEO\Initializers\Woocommerce */ protected function getWoocommerceService() { return $this->services['Yoast\\WP\\SEO\\Initializers\\Woocommerce'] = new \Yoast\WP\SEO\Initializers\Woocommerce(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Academy_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Academy_Integration */ protected function getAcademyIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Academy_Integration'] = new \Yoast\WP\SEO\Integrations\Academy_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Activation_Cleanup_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Activation_Cleanup_Integration */ protected function getActivationCleanupIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Activation_Cleanup_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Activation_Cleanup_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Dialog_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Dialog_Integration */ protected function getDialogIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Dialog_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Dialog_Integration(${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Installation_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Installation_Integration */ protected function getInstallationIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Installation_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Addon_Installation\Installation_Integration(${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Activate_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Activate_Action'] : $this->getAddonActivateActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Install_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Addon_Installation\\Addon_Install_Action'] : $this->getAddonInstallActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Admin_Columns_Cache_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Admin_Columns_Cache_Integration */ protected function getAdminColumnsCacheIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Admin_Columns_Cache_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Background_Indexing_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Background_Indexing_Integration */ protected function getBackgroundIndexingIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Background_Indexing_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Background_Indexing_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action'] : $this->getIndexableIndexingCompleteActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Yoast_Admin_And_Dashboard_Conditional'] = new \Yoast\WP\SEO\Conditionals\Yoast_Admin_And_Dashboard_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Get_Request_Conditional'] = new \Yoast\WP\SEO\Conditionals\Get_Request_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\WP_CRON_Enabled_Conditional'] = new \Yoast\WP\SEO\Conditionals\WP_CRON_Enabled_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] : $this->getIndexableGeneralIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] : $this->getIndexablePostIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] : $this->getIndexablePostTypeArchiveIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] : $this->getIndexableTermIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] : $this->getTermLinkIndexingActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Check_Required_Version' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Check_Required_Version */ protected function getCheckRequiredVersionService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Check_Required_Version'] = new \Yoast\WP\SEO\Integrations\Admin\Check_Required_Version(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Crawl_Settings_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Crawl_Settings_Integration */ protected function getCrawlSettingsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Crawl_Settings_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Crawl_Settings_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Shortlinker']) ? $this->services['WPSEO_Shortlinker'] : $this->getWPSEOShortlinkerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Cron_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Cron_Integration */ protected function getCronIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Cron_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Cron_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Deactivated_Premium_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Deactivated_Premium_Integration */ protected function getDeactivatedPremiumIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Deactivated_Premium_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Deactivated_Premium_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Disable_Concatenate_Scripts_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Disable_Concatenate_Scripts_Integration * * @deprecated Yoast\WP\SEO\Integrations\Admin\Disable_Concatenate_Scripts_Integration is deprecated since version 23.2! */ protected function getDisableConcatenateScriptsIntegrationService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Admin\\Disable_Concatenate_Scripts_Integration is deprecated since version 23.2!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Disable_Concatenate_Scripts_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Disable_Concatenate_Scripts_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Integration */ protected function getFirstTimeConfigurationIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Shortlinker']) ? $this->services['WPSEO_Shortlinker'] : $this->getWPSEOShortlinkerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Social_Profiles_Helper'] : $this->getSocialProfilesHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Context\\Meta_Tags_Context']) ? $this->services['Yoast\\WP\\SEO\\Context\\Meta_Tags_Context'] : $this->getMetaTagsContextService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Notice_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Notice_Integration */ protected function getFirstTimeConfigurationNoticeIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Notice_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\First_Time_Configuration_Notice_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\First_Time_Configuration_Notice_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\First_Time_Configuration_Notice_Helper'] : $this->getFirstTimeConfigurationNoticeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Fix_News_Dependencies_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Fix_News_Dependencies_Integration */ protected function getFixNewsDependenciesIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Fix_News_Dependencies_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Fix_News_Dependencies_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Health_Check_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Health_Check_Integration */ protected function getHealthCheckIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Health_Check_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Health_Check_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Check']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Check'] : $this->getDefaultTaglineCheckService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Check']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Check'] : $this->getLinksTableCheckService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Check']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Check'] : $this->getPageCommentsCheckService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Check']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Check'] : $this->getPostnamePermalinkCheckService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\HelpScout_Beacon' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\HelpScout_Beacon */ protected function getHelpScoutBeaconService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\HelpScout_Beacon'] = new \Yoast\WP\SEO\Integrations\Admin\HelpScout_Beacon(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status']) ? $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] : ($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Import_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Import_Integration */ protected function getImportIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Import_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Import_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service'] : $this->getImportableDetectorServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Routes\\Importing_Route']) ? $this->services['Yoast\\WP\\SEO\\Routes\\Importing_Route'] : $this->getImportingRouteService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Indexables_Exclude_Taxonomy_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Indexables_Exclude_Taxonomy_Integration */ protected function getIndexablesExcludeTaxonomyIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Indexables_Exclude_Taxonomy_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Indexables_Exclude_Taxonomy_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Indexing_Notification_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Indexing_Notification_Integration */ protected function getIndexingNotificationIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Notification_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Indexing_Notification_Integration(${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] = new \Yoast\WP\SEO\Helpers\Notification_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Environment_Helper'] = new \Yoast\WP\SEO\Helpers\Environment_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Indexing_Tool_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Indexing_Tool_Integration */ protected function getIndexingToolIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Tool_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Indexing_Tool_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service'] : $this->getImportableDetectorServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Routes\\Importing_Route']) ? $this->services['Yoast\\WP\\SEO\\Routes\\Importing_Route'] : $this->getImportingRouteService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Installation_Success_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Installation_Success_Integration */ protected function getInstallationSuccessIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Installation_Success_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Installation_Success_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Integrations_Page' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Integrations_Page */ protected function getIntegrationsPageService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Integrations_Page'] = new \Yoast\WP\SEO\Integrations\Admin\Integrations_Page(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] = new \Yoast\WP\SEO\Helpers\Woocommerce_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Link_Count_Columns_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Link_Count_Columns_Integration */ protected function getLinkCountColumnsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Link_Count_Columns_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Link_Count_Columns_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration']) ? $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration'] : $this->getAdminColumnsCacheIntegrationService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Menu_Badge_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Menu_Badge_Integration */ protected function getMenuBadgeIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Menu_Badge_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Menu_Badge_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Migration_Error_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Migration_Error_Integration */ protected function getMigrationErrorIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Migration_Error_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Migration_Error_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status']) ? $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] : ($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Old_Configuration_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Old_Configuration_Integration */ protected function getOldConfigurationIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Configuration_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Old_Configuration_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Old_Premium_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Old_Premium_Integration * * @deprecated Yoast\WP\SEO\Integrations\Admin\Old_Premium_Integration is deprecated since version 20.10! */ protected function getOldPremiumIntegrationService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Premium_Integration is deprecated since version 20.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Premium_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Old_Premium_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] = new \Yoast\WP\SEO\Helpers\Capability_Helper())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Redirect_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Redirect_Integration */ protected function getRedirectIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Redirect_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Redirect_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Redirects_Page_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Redirects_Page_Integration */ protected function getRedirectsPageIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Redirects_Page_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Redirects_Page_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Unsupported_PHP_Version_Notice' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Unsupported_PHP_Version_Notice */ protected function getUnsupportedPHPVersionNoticeService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Unsupported_PHP_Version_Notice'] = new \Yoast\WP\SEO\Integrations\Admin\Unsupported_PHP_Version_Notice(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Admin\Workouts_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Admin\Workouts_Integration */ protected function getWorkoutsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Admin\\Workouts_Integration'] = new \Yoast\WP\SEO\Integrations\Admin\Workouts_Integration(${($_ = isset($this->services['WPSEO_Addon_Manager']) ? $this->services['WPSEO_Addon_Manager'] : $this->getWPSEOAddonManagerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Product_Editor_Checklist_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Product_Editor_Checklist_Notification */ protected function getBlackFridayProductEditorChecklistNotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Product_Editor_Checklist_Notification'] = new \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Product_Editor_Checklist_Notification(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Promotion_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Promotion_Notification */ protected function getBlackFridayPromotionNotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Promotion_Notification'] = new \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Promotion_Notification(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Sidebar_Checklist_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Sidebar_Checklist_Notification */ protected function getBlackFridaySidebarChecklistNotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Sidebar_Checklist_Notification'] = new \Yoast\WP\SEO\Integrations\Alerts\Black_Friday_Sidebar_Checklist_Notification(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Alerts\Trustpilot_Review_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Alerts\Trustpilot_Review_Notification */ protected function getTrustpilotReviewNotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Alerts\\Trustpilot_Review_Notification'] = new \Yoast\WP\SEO\Integrations\Alerts\Trustpilot_Review_Notification(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Alerts\Webinar_Promo_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Alerts\Webinar_Promo_Notification */ protected function getWebinarPromoNotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Alerts\\Webinar_Promo_Notification'] = new \Yoast\WP\SEO\Integrations\Alerts\Webinar_Promo_Notification(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Blocks\Breadcrumbs_Block' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Blocks\Breadcrumbs_Block */ protected function getBreadcrumbsBlockService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Blocks\\Breadcrumbs_Block'] = new \Yoast\WP\SEO\Integrations\Blocks\Breadcrumbs_Block(${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface'] : $this->getHelpersSurfaceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Blocks\Internal_Linking_Category' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Blocks\Internal_Linking_Category */ protected function getInternalLinkingCategoryService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Blocks\\Internal_Linking_Category'] = new \Yoast\WP\SEO\Integrations\Blocks\Internal_Linking_Category(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Blocks\Structured_Data_Blocks' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Blocks\Structured_Data_Blocks */ protected function getStructuredDataBlocksService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Blocks\\Structured_Data_Blocks'] = new \Yoast\WP\SEO\Integrations\Blocks\Structured_Data_Blocks(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Breadcrumbs_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Breadcrumbs_Integration */ protected function getBreadcrumbsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Breadcrumbs_Integration'] = new \Yoast\WP\SEO\Integrations\Breadcrumbs_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface'] : $this->getHelpersSurfaceService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Cleanup_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Cleanup_Integration */ protected function getCleanupIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration'] = new \Yoast\WP\SEO\Integrations\Cleanup_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository'] : $this->getIndexableCleanupRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Duplicate_Post_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Duplicate_Post_Integration * * @deprecated Yoast\WP\SEO\Integrations\Duplicate_Post_Integration is deprecated since version 23.4! */ protected function getDuplicatePostIntegrationService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Duplicate_Post_Integration is deprecated since version 23.4!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Duplicate_Post_Integration'] = new \Yoast\WP\SEO\Integrations\Duplicate_Post_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Estimated_Reading_Time' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Estimated_Reading_Time */ protected function getEstimatedReadingTimeService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Estimated_Reading_Time'] = new \Yoast\WP\SEO\Integrations\Estimated_Reading_Time(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Exclude_Attachment_Post_Type' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Exclude_Attachment_Post_Type */ protected function getExcludeAttachmentPostTypeService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Exclude_Attachment_Post_Type'] = new \Yoast\WP\SEO\Integrations\Exclude_Attachment_Post_Type(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Exclude_Oembed_Cache_Post_Type' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Exclude_Oembed_Cache_Post_Type */ protected function getExcludeOembedCachePostTypeService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Exclude_Oembed_Cache_Post_Type'] = new \Yoast\WP\SEO\Integrations\Exclude_Oembed_Cache_Post_Type(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Feature_Flag_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Feature_Flag_Integration */ protected function getFeatureFlagIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Feature_Flag_Integration'] = new \Yoast\WP\SEO\Integrations\Feature_Flag_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Addon_Installation_Conditional'] = new \Yoast\WP\SEO\Conditionals\Addon_Installation_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Check_Required_Version_Conditional'] = new \Yoast\WP\SEO\Conditionals\Check_Required_Version_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\New_Settings_Ui_Conditional'] = new \Yoast\WP\SEO\Conditionals\New_Settings_Ui_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Text_Formality_Conditional'] = new \Yoast\WP\SEO\Conditionals\Text_Formality_Conditional())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Updated_Importer_Framework_Conditional'] = new \Yoast\WP\SEO\Conditionals\Updated_Importer_Framework_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Backwards_Compatibility' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Backwards_Compatibility */ protected function getBackwardsCompatibilityService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Backwards_Compatibility'] = new \Yoast\WP\SEO\Integrations\Front_End\Backwards_Compatibility(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Category_Term_Description' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Category_Term_Description */ protected function getCategoryTermDescriptionService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Category_Term_Description'] = new \Yoast\WP\SEO\Integrations\Front_End\Category_Term_Description(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Comment_Link_Fixer' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Comment_Link_Fixer */ protected function getCommentLinkFixerService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Comment_Link_Fixer'] = new \Yoast\WP\SEO\Integrations\Front_End\Comment_Link_Fixer(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper'] : $this->getRobotsHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Basic' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Basic */ protected function getCrawlCleanupBasicService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Basic'] = new \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Basic(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Rss' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Rss */ protected function getCrawlCleanupRssService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Rss'] = new \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Rss(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Searches' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Searches */ protected function getCrawlCleanupSearchesService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Searches'] = new \Yoast\WP\SEO\Integrations\Front_End\Crawl_Cleanup_Searches(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Feed_Improvements' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Feed_Improvements */ protected function getFeedImprovementsService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Feed_Improvements'] = new \Yoast\WP\SEO\Integrations\Front_End\Feed_Improvements(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface'] : $this->getMetaSurfaceService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Force_Rewrite_Title' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Force_Rewrite_Title */ protected function getForceRewriteTitleService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Force_Rewrite_Title'] = new \Yoast\WP\SEO\Integrations\Front_End\Force_Rewrite_Title(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Handle_404' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Handle_404 */ protected function getHandle404Service() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Handle_404'] = new \Yoast\WP\SEO\Integrations\Front_End\Handle_404(${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Indexing_Controls' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Indexing_Controls */ protected function getIndexingControlsService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Indexing_Controls'] = new \Yoast\WP\SEO\Integrations\Front_End\Indexing_Controls(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Helper'] : $this->getRobotsHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Open_Graph_OEmbed' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Open_Graph_OEmbed */ protected function getOpenGraphOEmbedService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Open_Graph_OEmbed'] = new \Yoast\WP\SEO\Integrations\Front_End\Open_Graph_OEmbed(${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface'] : $this->getMetaSurfaceService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\RSS_Footer_Embed' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\RSS_Footer_Embed */ protected function getRSSFooterEmbedService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\RSS_Footer_Embed'] = new \Yoast\WP\SEO\Integrations\Front_End\RSS_Footer_Embed(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Redirects' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Redirects */ protected function getRedirectsService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Redirects'] = new \Yoast\WP\SEO\Integrations\Front_End\Redirects(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Meta_Helper'] = new \Yoast\WP\SEO\Helpers\Meta_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Redirect_Helper'] = new \Yoast\WP\SEO\Helpers\Redirect_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Robots_Txt_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Robots_Txt_Integration */ protected function getRobotsTxtIntegrationService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Robots_Txt_Helper'] = new \Yoast\WP\SEO\Helpers\Robots_Txt_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Robots_Txt_Integration'] = new \Yoast\WP\SEO\Integrations\Front_End\Robots_Txt_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, $a, new \Yoast\WP\SEO\Presenters\Robots_Txt_Presenter($a)); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\Schema_Accessibility_Feature' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\Schema_Accessibility_Feature */ protected function getSchemaAccessibilityFeatureService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\Schema_Accessibility_Feature'] = new \Yoast\WP\SEO\Integrations\Front_End\Schema_Accessibility_Feature(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration */ protected function getWPRobotsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End\\WP_Robots_Integration'] = new \Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Front_End_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Front_End_Integration */ protected function getFrontEndIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End_Integration'] = new \Yoast\WP\SEO\Integrations\Front_End_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}, $this, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface'] : $this->getHelpersSurfaceService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Primary_Category' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Primary_Category */ protected function getPrimaryCategoryService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Primary_Category'] = new \Yoast\WP\SEO\Integrations\Primary_Category(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Settings_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Settings_Integration */ protected function getSettingsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Settings_Integration'] = new \Yoast\WP\SEO\Integrations\Settings_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Schema_Types']) ? $this->services['Yoast\\WP\\SEO\\Config\\Schema_Types'] : ($this->services['Yoast\\WP\\SEO\\Config\\Schema_Types'] = new \Yoast\WP\SEO\Config\Schema_Types())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Language_Helper'] = new \Yoast\WP\SEO\Helpers\Language_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] = new \Yoast\WP\SEO\Helpers\Woocommerce_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Schema\\Article_Helper'] = new \Yoast\WP\SEO\Helpers\Schema\Article_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications']) ? $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications'] : $this->getContentTypeVisibilityDismissNotificationsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Support_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Support_Integration */ protected function getSupportIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Support_Integration'] = new \Yoast\WP\SEO\Integrations\Support_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\AMP' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\AMP */ protected function getAMPService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\AMP'] = new \Yoast\WP\SEO\Integrations\Third_Party\AMP(${($_ = isset($this->services['Yoast\\WP\\SEO\\Integrations\\Front_End_Integration']) ? $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End_Integration'] : $this->getFrontEndIntegrationService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\BbPress' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\BbPress */ protected function getBbPressService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\BbPress'] = new \Yoast\WP\SEO\Integrations\Third_Party\BbPress(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Elementor' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Elementor */ protected function getElementorService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Elementor'] = new \Yoast\WP\SEO\Integrations\Third_Party\Elementor(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] = new \Yoast\WP\SEO\Helpers\Capability_Helper())) && false ?: '_'}, new \Yoast\WP\SEO\Elementor\Infrastructure\Request_Post()); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Exclude_Elementor_Post_Types' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Exclude_Elementor_Post_Types */ protected function getExcludeElementorPostTypesService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_Elementor_Post_Types'] = new \Yoast\WP\SEO\Integrations\Third_Party\Exclude_Elementor_Post_Types(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Exclude_WooCommerce_Post_Types' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Exclude_WooCommerce_Post_Types */ protected function getExcludeWooCommercePostTypesService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_WooCommerce_Post_Types'] = new \Yoast\WP\SEO\Integrations\Third_Party\Exclude_WooCommerce_Post_Types(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Jetpack' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Jetpack */ protected function getJetpackService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Jetpack'] = new \Yoast\WP\SEO\Integrations\Third_Party\Jetpack(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\W3_Total_Cache' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\W3_Total_Cache */ protected function getW3TotalCacheService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\W3_Total_Cache'] = new \Yoast\WP\SEO\Integrations\Third_Party\W3_Total_Cache(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\WPML' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\WPML */ protected function getWPMLService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML'] = new \Yoast\WP\SEO\Integrations\Third_Party\WPML(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\WPML_WPSEO_Notification' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\WPML_WPSEO_Notification */ protected function getWPMLWPSEONotificationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML_WPSEO_Notification'] = new \Yoast\WP\SEO\Integrations\Third_Party\WPML_WPSEO_Notification(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\Third_Party\\WPML_WPSEO_Conditional'] = new \Yoast\WP\SEO\Conditionals\Third_Party\WPML_WPSEO_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Web_Stories' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Web_Stories */ protected function getWebStoriesService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories'] = new \Yoast\WP\SEO\Integrations\Third_Party\Web_Stories(${($_ = isset($this->services['Yoast\\WP\\SEO\\Integrations\\Front_End_Integration']) ? $this->services['Yoast\\WP\\SEO\\Integrations\\Front_End_Integration'] : $this->getFrontEndIntegrationService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Web_Stories_Post_Edit' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Web_Stories_Post_Edit */ protected function getWebStoriesPostEditService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories_Post_Edit'] = new \Yoast\WP\SEO\Integrations\Third_Party\Web_Stories_Post_Edit(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Wincher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Wincher * * @deprecated Yoast\WP\SEO\Integrations\Third_Party\Wincher is deprecated since version 21.6! */ protected function getWincherService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher is deprecated since version 21.6!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher'] = new \Yoast\WP\SEO\Integrations\Third_Party\Wincher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wincher_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wincher_Helper'] : $this->getWincherHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Wincher_Publish' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Wincher_Publish */ protected function getWincherPublishService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher_Publish'] = new \Yoast\WP\SEO\Integrations\Third_Party\Wincher_Publish(${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Enabled_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\Wincher_Enabled_Conditional'] : $this->getWincherEnabledConditionalService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action'] : $this->getWincherKeyphrasesActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action'] : $this->getWincherAccountActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\WooCommerce' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\WooCommerce */ protected function getWooCommerce2Service() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce'] = new \Yoast\WP\SEO\Integrations\Third_Party\WooCommerce(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Replace_Vars']) ? $this->services['WPSEO_Replace_Vars'] : $this->getWPSEOReplaceVarsService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Woocommerce_Helper'] = new \Yoast\WP\SEO\Helpers\Woocommerce_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\WooCommerce_Post_Edit' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\WooCommerce_Post_Edit */ protected function getWooCommercePostEditService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce_Post_Edit'] = new \Yoast\WP\SEO\Integrations\Third_Party\WooCommerce_Post_Edit(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Woocommerce_Permalinks' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Woocommerce_Permalinks */ protected function getWoocommercePermalinksService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Woocommerce_Permalinks'] = new \Yoast\WP\SEO\Integrations\Third_Party\Woocommerce_Permalinks(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Wordproof' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Wordproof * * @deprecated Yoast\WP\SEO\Integrations\Third_Party\Wordproof is deprecated since version 22.10! */ protected function getWordproofService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof is deprecated since version 22.10!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof'] = new \Yoast\WP\SEO\Integrations\Third_Party\Wordproof(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper'] : $this->getWordproofHelperService()) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Third_Party\Wordproof_Integration_Toggle' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Third_Party\Wordproof_Integration_Toggle * * @deprecated Yoast\WP\SEO\Integrations\Third_Party\Wordproof_Integration_Toggle is deprecated since version 21.6! */ protected function getWordproofIntegrationToggleService() { @trigger_error('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof_Integration_Toggle is deprecated since version 21.6!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wordproof_Integration_Toggle'] = new \Yoast\WP\SEO\Integrations\Third_Party\Wordproof_Integration_Toggle(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Wordproof_Helper'] : $this->getWordproofHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Uninstall_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Uninstall_Integration */ protected function getUninstallIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Uninstall_Integration'] = new \Yoast\WP\SEO\Integrations\Uninstall_Integration(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Addon_Update_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Addon_Update_Watcher */ protected function getAddonUpdateWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Addon_Update_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Addon_Update_Watcher(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Auto_Update_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Auto_Update_Watcher */ protected function getAutoUpdateWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Auto_Update_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Auto_Update_Watcher(${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Ancestor_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Ancestor_Watcher */ protected function getIndexableAncestorWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Ancestor_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Ancestor_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'] : $this->getIndexableHierarchyBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository'] : $this->getIndexableHierarchyRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Attachment_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Attachment_Watcher */ protected function getIndexableAttachmentWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Attachment_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Attachment_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Attachment_Cleanup_Helper'] = new \Yoast\WP\SEO\Helpers\Attachment_Cleanup_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Archive_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Archive_Watcher */ protected function getIndexableAuthorArchiveWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Archive_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Archive_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Watcher */ protected function getIndexableAuthorWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Author_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Category_Permalink_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Category_Permalink_Watcher */ protected function getIndexableCategoryPermalinkWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Category_Permalink_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Category_Permalink_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Date_Archive_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Date_Archive_Watcher */ protected function getIndexableDateArchiveWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Date_Archive_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Date_Archive_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_HomeUrl_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_HomeUrl_Watcher */ protected function getIndexableHomeUrlWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_HomeUrl_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_HomeUrl_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Home_Page_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Home_Page_Watcher */ protected function getIndexableHomePageWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Home_Page_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Home_Page_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Permalink_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Permalink_Watcher */ protected function getIndexablePermalinkWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Permalink_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Permalink_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Meta_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Meta_Watcher */ protected function getIndexablePostMetaWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Meta_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Meta_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher']) ? $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher'] : $this->getIndexablePostWatcherService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Archive_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Archive_Watcher */ protected function getIndexablePostTypeArchiveWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Archive_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Archive_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Change_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Change_Watcher */ protected function getIndexablePostTypeChangeWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Change_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Type_Change_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Watcher */ protected function getIndexablePostWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Post_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository'] : $this->getIndexableHierarchyRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] : $this->getIndexableLinkBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper'] : $this->getAuthorArchiveHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Loggers\\Logger']) ? $this->services['Yoast\\WP\\SEO\\Loggers\\Logger'] : ($this->services['Yoast\\WP\\SEO\\Loggers\\Logger'] = new \Yoast\WP\SEO\Loggers\Logger())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Static_Home_Page_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Static_Home_Page_Watcher */ protected function getIndexableStaticHomePageWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Static_Home_Page_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Static_Home_Page_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_System_Page_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_System_Page_Watcher */ protected function getIndexableSystemPageWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_System_Page_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_System_Page_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Taxonomy_Change_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Taxonomy_Change_Watcher */ protected function getIndexableTaxonomyChangeWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Taxonomy_Change_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Taxonomy_Change_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Indexable_Term_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Indexable_Term_Watcher */ protected function getIndexableTermWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Term_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Indexable_Term_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Link_Builder'] : $this->getIndexableLinkBuilderService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] = new \Yoast\WP\SEO\Helpers\Site_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Option_Titles_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Option_Titles_Watcher */ protected function getOptionTitlesWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Titles_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Option_Titles_Watcher(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Option_Wpseo_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Option_Wpseo_Watcher */ protected function getOptionWpseoWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Wpseo_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Option_Wpseo_Watcher(); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Primary_Category_Quick_Edit_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Primary_Category_Quick_Edit_Watcher */ protected function getPrimaryCategoryQuickEditWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Category_Quick_Edit_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Primary_Category_Quick_Edit_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] = new \Yoast\WP\SEO\Repositories\Primary_Term_Repository())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'] : $this->getIndexableHierarchyBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Primary_Term_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Primary_Term_Watcher */ protected function getPrimaryTermWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Term_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Primary_Term_Watcher(${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] : ($this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] = new \Yoast\WP\SEO\Repositories\Primary_Term_Repository())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Site_Helper'] = new \Yoast\WP\SEO\Helpers\Site_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Primary_Term_Helper'] = new \Yoast\WP\SEO\Helpers\Primary_Term_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Primary_Term_Builder'] : $this->getPrimaryTermBuilderService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Search_Engines_Discouraged_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Search_Engines_Discouraged_Watcher */ protected function getSearchEnginesDiscouragedWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Search_Engines_Discouraged_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Search_Engines_Discouraged_Watcher(${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] = new \Yoast\WP\SEO\Helpers\Notification_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Capability_Helper'] = new \Yoast\WP\SEO\Helpers\Capability_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\Watchers\Woocommerce_Beta_Editor_Watcher' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\Watchers\Woocommerce_Beta_Editor_Watcher */ protected function getWoocommerceBetaEditorWatcherService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\Watchers\\Woocommerce_Beta_Editor_Watcher'] = new \Yoast\WP\SEO\Integrations\Watchers\Woocommerce_Beta_Editor_Watcher(${($_ = isset($this->services['Yoast_Notification_Center']) ? $this->services['Yoast_Notification_Center'] : $this->getYoastNotificationCenterService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Notification_Helper'] = new \Yoast\WP\SEO\Helpers\Notification_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional']) ? $this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional'] : ($this->services['Yoast\\WP\\SEO\\Conditionals\\WooCommerce_Conditional'] = new \Yoast\WP\SEO\Conditionals\WooCommerce_Conditional())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Integrations\XMLRPC' shared autowired service. * * @return \Yoast\WP\SEO\Integrations\XMLRPC */ protected function getXMLRPCService() { return $this->services['Yoast\\WP\\SEO\\Integrations\\XMLRPC'] = new \Yoast\WP\SEO\Integrations\XMLRPC(); } /** * Gets the public 'Yoast\WP\SEO\Introductions\Application\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\Application\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell * * @deprecated Yoast\WP\SEO\Introductions\Application\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell is deprecated since version 23.2! */ protected function getAiGenerateTitlesAndDescriptionsIntroductionUpsellService() { @trigger_error('Yoast\\WP\\SEO\\Introductions\\Application\\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell is deprecated since version 23.2!', E_USER_DEPRECATED); return $this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell'] = new \Yoast\WP\SEO\Introductions\Application\Ai_Generate_Titles_And_Descriptions_Introduction_Upsell(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Introductions\Infrastructure\Wistia_Embed_Permission_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\Infrastructure\Wistia_Embed_Permission_Repository */ protected function getWistiaEmbedPermissionRepositoryService() { return $this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository'] = new \Yoast\WP\SEO\Introductions\Infrastructure\Wistia_Embed_Permission_Repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Introductions\User_Interface\Introductions_Integration' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\User_Interface\Introductions_Integration */ protected function getIntroductionsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Integration'] = new \Yoast\WP\SEO\Introductions\User_Interface\Introductions_Integration(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector']) ? $this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector'] : $this->getIntroductionsCollectorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Short_Link_Helper'] : $this->getShortLinkHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository']) ? $this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository'] : $this->getWistiaEmbedPermissionRepositoryService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Introductions\User_Interface\Introductions_Seen_Route' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\User_Interface\Introductions_Seen_Route */ protected function getIntroductionsSeenRouteService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Seen_Route'] = new \Yoast\WP\SEO\Introductions\User_Interface\Introductions_Seen_Route(new \Yoast\WP\SEO\Introductions\Infrastructure\Introductions_Seen_Repository($a), $a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector']) ? $this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector'] : $this->getIntroductionsCollectorService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Introductions\User_Interface\Wistia_Embed_Permission_Route' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\User_Interface\Wistia_Embed_Permission_Route */ protected function getWistiaEmbedPermissionRouteService() { return $this->services['Yoast\\WP\\SEO\\Introductions\\User_Interface\\Wistia_Embed_Permission_Route'] = new \Yoast\WP\SEO\Introductions\User_Interface\Wistia_Embed_Permission_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository']) ? $this->services['Yoast\\WP\\SEO\\Introductions\\Infrastructure\\Wistia_Embed_Permission_Repository'] : $this->getWistiaEmbedPermissionRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Loader' shared autowired service. * * @return \Yoast\WP\SEO\Loader */ protected function getLoaderService() { $this->services['Yoast\\WP\\SEO\\Loader'] = $instance = new \Yoast\WP\SEO\Loader($this); $instance->register_integration('Yoast\\WP\\SEO\\Analytics\\User_Interface\\Last_Completed_Indexation_Integration'); $instance->register_command('Yoast\\WP\\SEO\\Commands\\Cleanup_Command'); $instance->register_command('Yoast\\WP\\SEO\\Commands\\Index_Command'); $instance->register_migration('free', '20171228151840', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexable'); $instance->register_migration('free', '20171228151841', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastPrimaryTerm'); $instance->register_migration('free', '20190529075038', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastDropIndexableMetaTableIfExists'); $instance->register_migration('free', '20191011111109', 'Yoast\\WP\\SEO\\Config\\Migrations\\WpYoastIndexableHierarchy'); $instance->register_migration('free', '20200408101900', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddCollationToTables'); $instance->register_migration('free', '20200420073606', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddColumnsToIndexables'); $instance->register_migration('free', '20200428123747', 'Yoast\\WP\\SEO\\Config\\Migrations\\BreadcrumbTitleAndHierarchyReset'); $instance->register_migration('free', '20200428194858', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableColumnLengths'); $instance->register_migration('free', '20200429105310', 'Yoast\\WP\\SEO\\Config\\Migrations\\TruncateIndexableTables'); $instance->register_migration('free', '20200430075614', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexableObjectIdAndTypeIndex'); $instance->register_migration('free', '20200430150130', 'Yoast\\WP\\SEO\\Config\\Migrations\\ClearIndexableTables'); $instance->register_migration('free', '20200507054848', 'Yoast\\WP\\SEO\\Config\\Migrations\\DeleteDuplicateIndexables'); $instance->register_migration('free', '20200513133401', 'Yoast\\WP\\SEO\\Config\\Migrations\\ResetIndexableHierarchyTable'); $instance->register_migration('free', '20200609154515', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddHasAncestorsColumn'); $instance->register_migration('free', '20200616130143', 'Yoast\\WP\\SEO\\Config\\Migrations\\ReplacePermalinkHashIndex'); $instance->register_migration('free', '20200617122511', 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateSEOLinksTable'); $instance->register_migration('free', '20200702141921', 'Yoast\\WP\\SEO\\Config\\Migrations\\CreateIndexableSubpagesIndex'); $instance->register_migration('free', '20200728095334', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddIndexesForProminentWordsOnIndexables'); $instance->register_migration('free', '20201202144329', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddEstimatedReadingTime'); $instance->register_migration('free', '20201216124002', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandIndexableIDColumnLengths'); $instance->register_migration('free', '20201216141134', 'Yoast\\WP\\SEO\\Config\\Migrations\\ExpandPrimaryTermIDColumnLengths'); $instance->register_migration('free', '20210817092415', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddVersionColumnToIndexables'); $instance->register_migration('free', '20211020091404', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddObjectTimestamps'); $instance->register_migration('free', '20230417083836', 'Yoast\\WP\\SEO\\Config\\Migrations\\AddInclusiveLanguageScore'); $instance->register_integration('Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Watcher_Actions'); $instance->register_route('Yoast\\WP\\SEO\\Content_Type_Visibility\\User_Interface\\Content_Type_Visibility_Dismiss_New_Route'); $instance->register_integration('Yoast\\WP\\SEO\\General\\User_Interface\\General_Page_Integration'); $instance->register_initializer('Yoast\\WP\\SEO\\Initializers\\Crawl_Cleanup_Permalinks'); $instance->register_initializer('Yoast\\WP\\SEO\\Initializers\\Disable_Core_Sitemaps'); $instance->register_initializer('Yoast\\WP\\SEO\\Initializers\\Migration_Runner'); $instance->register_initializer('Yoast\\WP\\SEO\\Initializers\\Plugin_Headers'); $instance->register_initializer('Yoast\\WP\\SEO\\Initializers\\Woocommerce'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Academy_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Activation_Cleanup_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Dialog_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Addon_Installation\\Installation_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Admin_Columns_Cache_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Background_Indexing_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Check_Required_Version'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Crawl_Settings_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Cron_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Deactivated_Premium_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\First_Time_Configuration_Notice_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Fix_News_Dependencies_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Health_Check_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\HelpScout_Beacon'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Import_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Indexables_Exclude_Taxonomy_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Notification_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Indexing_Tool_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Installation_Success_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Integrations_Page'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Link_Count_Columns_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Menu_Badge_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Migration_Error_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Old_Configuration_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Redirect_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Redirects_Page_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Unsupported_PHP_Version_Notice'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Admin\\Workouts_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Product_Editor_Checklist_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Promotion_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Alerts\\Black_Friday_Sidebar_Checklist_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Alerts\\Trustpilot_Review_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Alerts\\Webinar_Promo_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Blocks\\Internal_Linking_Category'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Blocks\\Breadcrumbs_Block'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Blocks\\Structured_Data_Blocks'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Breadcrumbs_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Cleanup_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Estimated_Reading_Time'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Exclude_Attachment_Post_Type'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Exclude_Oembed_Cache_Post_Type'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Feature_Flag_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Backwards_Compatibility'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Category_Term_Description'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Comment_Link_Fixer'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Basic'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Rss'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Crawl_Cleanup_Searches'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Feed_Improvements'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Force_Rewrite_Title'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Handle_404'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Indexing_Controls'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Open_Graph_OEmbed'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Redirects'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Robots_Txt_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\RSS_Footer_Embed'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\Schema_Accessibility_Feature'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Front_End\\WP_Robots_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Primary_Category'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Settings_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Support_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\AMP'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\BbPress'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Elementor'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_Elementor_Post_Types'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Exclude_WooCommerce_Post_Types'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Jetpack'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\W3_Total_Cache'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories_Post_Edit'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Web_Stories'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Wincher_Publish'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\Woocommerce_Permalinks'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce_Post_Edit'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\WooCommerce'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML_WPSEO_Notification'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Third_Party\\WPML'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Uninstall_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Addon_Update_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Auto_Update_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Ancestor_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Attachment_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Archive_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Author_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Category_Permalink_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Date_Archive_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Home_Page_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_HomeUrl_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Permalink_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Meta_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Archive_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Type_Change_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Post_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Static_Home_Page_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_System_Page_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Taxonomy_Change_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Indexable_Term_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Titles_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Option_Wpseo_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Category_Quick_Edit_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Primary_Term_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Search_Engines_Discouraged_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\Watchers\\Woocommerce_Beta_Editor_Watcher'); $instance->register_integration('Yoast\\WP\\SEO\\Integrations\\XMLRPC'); $instance->register_integration('Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Integration'); $instance->register_route('Yoast\\WP\\SEO\\Introductions\\User_Interface\\Introductions_Seen_Route'); $instance->register_route('Yoast\\WP\\SEO\\Introductions\\User_Interface\\Wistia_Embed_Permission_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Alert_Dismissal_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\First_Time_Configuration_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Importing_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Indexables_Head_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Indexing_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Integrations_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Meta_Search_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\SEMrush_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Supported_Features_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Wincher_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Workouts_Route'); $instance->register_route('Yoast\\WP\\SEO\\Routes\\Yoast_Head_REST_Field'); $instance->register_integration('Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Additional_Contactmethods_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Cleanup_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Custom_Meta_Integration'); $instance->register_integration('Yoast\\WP\\SEO\\User_Profiles_Additions\\User_Interface\\User_Profiles_Additions_Ui'); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Loggers\Logger' shared autowired service. * * @return \Yoast\WP\SEO\Loggers\Logger */ protected function getLoggerService() { return $this->services['Yoast\\WP\\SEO\\Loggers\\Logger'] = new \Yoast\WP\SEO\Loggers\Logger(); } /** * Gets the public 'Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer' shared autowired service. * * @return \Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer */ protected function getMetaTagsContextMemoizerService() { return $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] = new \Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Blocks_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Blocks_Helper'] : $this->getBlocksHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Context\\Meta_Tags_Context']) ? $this->services['Yoast\\WP\\SEO\\Context\\Meta_Tags_Context'] : $this->getMetaTagsContextService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer'] : ($this->services['Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer'] = new \Yoast\WP\SEO\Memoizers\Presentation_Memoizer($this))) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Memoizers\Presentation_Memoizer' shared autowired service. * * @return \Yoast\WP\SEO\Memoizers\Presentation_Memoizer */ protected function getPresentationMemoizerService() { return $this->services['Yoast\\WP\\SEO\\Memoizers\\Presentation_Memoizer'] = new \Yoast\WP\SEO\Memoizers\Presentation_Memoizer($this); } /** * Gets the public 'Yoast\WP\SEO\Presentations\Abstract_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Abstract_Presentation */ protected function getAbstractPresentationService() { return $this->services['Yoast\\WP\\SEO\\Presentations\\Abstract_Presentation'] = new \Yoast\WP\SEO\Presentations\Abstract_Presentation(); } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Author_Archive_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Author_Archive_Presentation */ protected function getIndexableAuthorArchivePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Author_Archive_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Author_Archive_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper'] : $this->getAuthorArchiveHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); $instance->set_archive_adjacent_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Date_Archive_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Date_Archive_Presentation */ protected function getIndexableDateArchivePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Date_Archive_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Date_Archive_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Error_Page_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Error_Page_Presentation */ protected function getIndexableErrorPagePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Error_Page_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Error_Page_Presentation(); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Home_Page_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Home_Page_Presentation */ protected function getIndexableHomePagePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Home_Page_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Home_Page_Presentation(); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); $instance->set_archive_adjacent_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Post_Type_Archive_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Post_Type_Archive_Presentation */ protected function getIndexablePostTypeArchivePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Archive_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Post_Type_Archive_Presentation(); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); $instance->set_archive_adjacent_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Post_Type_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Post_Type_Presentation */ protected function getIndexablePostTypePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Post_Type_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Post_Type_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Presentation */ protected function getIndexablePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Presentation(); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Search_Result_Page_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Search_Result_Page_Presentation */ protected function getIndexableSearchResultPagePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Search_Result_Page_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Search_Result_Page_Presentation(); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Static_Home_Page_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Static_Home_Page_Presentation */ protected function getIndexableStaticHomePagePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Home_Page_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Static_Home_Page_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Static_Posts_Page_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Static_Posts_Page_Presentation */ protected function getIndexableStaticPostsPagePresentationService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}; $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Static_Posts_Page_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Static_Posts_Page_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Date_Helper'] = new \Yoast\WP\SEO\Helpers\Date_Helper())) && false ?: '_'}, $a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); $instance->set_archive_adjacent_helpers($a); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Presentations\Indexable_Term_Archive_Presentation' shared autowired service. * * @return \Yoast\WP\SEO\Presentations\Indexable_Term_Archive_Presentation */ protected function getIndexableTermArchivePresentationService() { $this->services['Yoast\\WP\\SEO\\Presentations\\Indexable_Term_Archive_Presentation'] = $instance = new \Yoast\WP\SEO\Presentations\Indexable_Term_Archive_Presentation(${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}); $instance->set_generators(${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Schema_Generator'] : $this->getSchemaGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] : ($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Locale_Generator'] = new \Yoast\WP\SEO\Generators\Open_Graph_Locale_Generator())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Open_Graph_Image_Generator'] : $this->getOpenGraphImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Twitter_Image_Generator'] : $this->getTwitterImageGeneratorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator']) ? $this->services['Yoast\\WP\\SEO\\Generators\\Breadcrumbs_Generator'] : $this->getBreadcrumbsGeneratorService()) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Permalink_Helper'] = new \Yoast\WP\SEO\Helpers\Permalink_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Values_Helper'] = new \Yoast\WP\SEO\Helpers\Open_Graph\Values_Helper())) && false ?: '_'}); $instance->set_archive_adjacent_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Pagination_Helper'] : $this->getPaginationHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Promotions\Application\Promotion_Manager' shared autowired service. * * @return \Yoast\WP\SEO\Promotions\Application\Promotion_Manager */ protected function getPromotionManagerService() { return $this->services['Yoast\\WP\\SEO\\Promotions\\Application\\Promotion_Manager'] = new \Yoast\WP\SEO\Promotions\Application\Promotion_Manager(new \Yoast\WP\SEO\Promotions\Domain\Black_Friday_Checklist_Promotion(), new \Yoast\WP\SEO\Promotions\Domain\Black_Friday_Promotion()); } /** * Gets the public 'Yoast\WP\SEO\Repositories\Indexable_Cleanup_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Repositories\Indexable_Cleanup_Repository */ protected function getIndexableCleanupRepositoryService() { return $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Cleanup_Repository'] = new \Yoast\WP\SEO\Repositories\Indexable_Cleanup_Repository(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Author_Archive_Helper'] : $this->getAuthorArchiveHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Repositories\Indexable_Hierarchy_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Repositories\Indexable_Hierarchy_Repository */ protected function getIndexableHierarchyRepositoryService() { $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository'] = $instance = new \Yoast\WP\SEO\Repositories\Indexable_Hierarchy_Repository(); $instance->set_builder(${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Hierarchy_Builder'] : $this->getIndexableHierarchyBuilderService()) && false ?: '_'}); $instance->set_helper(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Repositories\Indexable_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Repositories\Indexable_Repository */ protected function getIndexableRepositoryService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder']) ? $this->services['Yoast\\WP\\SEO\\Builders\\Indexable_Builder'] : $this->getIndexableBuilderService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'])) { return $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']; } $b = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Hierarchy_Repository'] : $this->getIndexableHierarchyRepositoryService()) && false ?: '_'}; if (isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'])) { return $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']; } return $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] = new \Yoast\WP\SEO\Repositories\Indexable_Repository($a, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Current_Page_Helper'] : $this->getCurrentPageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Loggers\\Logger']) ? $this->services['Yoast\\WP\\SEO\\Loggers\\Logger'] : ($this->services['Yoast\\WP\\SEO\\Loggers\\Logger'] = new \Yoast\WP\SEO\Loggers\Logger())) && false ?: '_'}, $b, ${($_ = isset($this->services['wpdb']) ? $this->services['wpdb'] : $this->getWpdbService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager']) ? $this->services['Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager'] : $this->getIndexableVersionManagerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Repositories\Primary_Term_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Repositories\Primary_Term_Repository */ protected function getPrimaryTermRepositoryService() { return $this->services['Yoast\\WP\\SEO\\Repositories\\Primary_Term_Repository'] = new \Yoast\WP\SEO\Repositories\Primary_Term_Repository(); } /** * Gets the public 'Yoast\WP\SEO\Repositories\SEO_Links_Repository' shared autowired service. * * @return \Yoast\WP\SEO\Repositories\SEO_Links_Repository */ protected function getSEOLinksRepositoryService() { return $this->services['Yoast\\WP\\SEO\\Repositories\\SEO_Links_Repository'] = new \Yoast\WP\SEO\Repositories\SEO_Links_Repository(); } /** * Gets the public 'Yoast\WP\SEO\Routes\Alert_Dismissal_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Alert_Dismissal_Route */ protected function getAlertDismissalRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Alert_Dismissal_Route'] = new \Yoast\WP\SEO\Routes\Alert_Dismissal_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Alert_Dismissal_Action'] : $this->getAlertDismissalActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\First_Time_Configuration_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\First_Time_Configuration_Route */ protected function getFirstTimeConfigurationRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\First_Time_Configuration_Route'] = new \Yoast\WP\SEO\Routes\First_Time_Configuration_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Configuration\\First_Time_Configuration_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Configuration\\First_Time_Configuration_Action'] : $this->getFirstTimeConfigurationActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Importing_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Importing_Route */ protected function getImportingRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Importing_Route'] = new \Yoast\WP\SEO\Routes\Importing_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service'] : $this->getImportableDetectorServiceService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action'] : $this->getAioseoCleanupActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action'] : $this->getAioseoCustomArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action'] : $this->getAioseoDefaultArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action'] : $this->getAioseoGeneralSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action'] : $this->getAioseoPostsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action'] : $this->getAioseoPosttypeDefaultsSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action'] : $this->getAioseoTaxonomySettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action'] : $this->getAioseoValidateDataActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action'] : $this->getDeactivateConflictingPluginsActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Indexables_Head_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Indexables_Head_Route */ protected function getIndexablesHeadRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Indexables_Head_Route'] = new \Yoast\WP\SEO\Routes\Indexables_Head_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action'] : $this->getIndexableHeadActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Indexing_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Indexing_Route */ protected function getIndexingRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Indexing_Route'] = new \Yoast\WP\SEO\Routes\Indexing_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Indexation_Action'] : $this->getIndexablePostIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Term_Indexation_Action'] : $this->getIndexableTermIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Post_Type_Archive_Indexation_Action'] : $this->getIndexablePostTypeArchiveIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action'] : $this->getIndexableGeneralIndexationActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_Indexing_Complete_Action'] : $this->getIndexableIndexingCompleteActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Complete_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Complete_Action'] : $this->getIndexingCompleteActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Indexing_Prepare_Action'] : $this->getIndexingPrepareActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Post_Link_Indexing_Action'] : $this->getPostLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexing\\Term_Link_Indexing_Action'] : $this->getTermLinkIndexingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexing_Helper'] : $this->getIndexingHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Integrations_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Integrations_Route */ protected function getIntegrationsRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Integrations_Route'] = new \Yoast\WP\SEO\Routes\Integrations_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Integrations_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Integrations_Action'] : $this->getIntegrationsActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Meta_Search_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Meta_Search_Route */ protected function getMetaSearchRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Meta_Search_Route'] = new \Yoast\WP\SEO\Routes\Meta_Search_Route(); } /** * Gets the public 'Yoast\WP\SEO\Routes\SEMrush_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\SEMrush_Route */ protected function getSEMrushRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\SEMrush_Route'] = new \Yoast\WP\SEO\Routes\SEMrush_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Login_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Login_Action'] : $this->getSEMrushLoginActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Options_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Options_Action'] : $this->getSEMrushOptionsActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Phrases_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\SEMrush\\SEMrush_Phrases_Action'] : $this->getSEMrushPhrasesActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Supported_Features_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Supported_Features_Route */ protected function getSupportedFeaturesRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Supported_Features_Route'] = new \Yoast\WP\SEO\Routes\Supported_Features_Route(); } /** * Gets the public 'Yoast\WP\SEO\Routes\Wincher_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Wincher_Route */ protected function getWincherRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Wincher_Route'] = new \Yoast\WP\SEO\Routes\Wincher_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Login_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Login_Action'] : $this->getWincherLoginActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Account_Action'] : $this->getWincherAccountActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Wincher\\Wincher_Keyphrases_Action'] : $this->getWincherKeyphrasesActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Workouts_Route' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Workouts_Route */ protected function getWorkoutsRouteService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Workouts_Route'] = new \Yoast\WP\SEO\Routes\Workouts_Route(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Routes\Yoast_Head_REST_Field' shared autowired service. * * @return \Yoast\WP\SEO\Routes\Yoast_Head_REST_Field */ protected function getYoastHeadRESTFieldService() { return $this->services['Yoast\\WP\\SEO\\Routes\\Yoast_Head_REST_Field'] = new \Yoast\WP\SEO\Routes\Yoast_Head_REST_Field(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Type_Helper'] : $this->getPostTypeHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Taxonomy_Helper'] : $this->getTaxonomyHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Post_Helper'] : $this->getPostHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Indexables\\Indexable_Head_Action'] : $this->getIndexableHeadActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Check' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Check */ protected function getDefaultTaglineCheckService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Check'] = new \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Check(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Runner())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Reports']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Reports'] : $this->getDefaultTaglineReportsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Reports' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Reports */ protected function getDefaultTaglineReportsService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Reports'] = new \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Reports(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Runner' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Runner */ protected function getDefaultTaglineRunnerService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Default_Tagline_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Default_Tagline_Runner(); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Links_Table_Check' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Links_Table_Check */ protected function getLinksTableCheckService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Check'] = new \Yoast\WP\SEO\Services\Health_Check\Links_Table_Check(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Runner']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Runner'] : $this->getLinksTableRunnerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Reports']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Reports'] : $this->getLinksTableReportsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Links_Table_Reports' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Links_Table_Reports */ protected function getLinksTableReportsService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Reports'] = new \Yoast\WP\SEO\Services\Health_Check\Links_Table_Reports(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory())) && false ?: '_'}, ${($_ = isset($this->services['WPSEO_Shortlinker']) ? $this->services['WPSEO_Shortlinker'] : $this->getWPSEOShortlinkerService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Links_Table_Runner' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Links_Table_Runner */ protected function getLinksTableRunnerService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Links_Table_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Links_Table_Runner(${($_ = isset($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status']) ? $this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] : ($this->services['Yoast\\WP\\SEO\\Config\\Migration_Status'] = new \Yoast\WP\SEO\Config\Migration_Status())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\MyYoast_Api_Request_Factory' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\MyYoast_Api_Request_Factory */ protected function getMyYoastApiRequestFactoryService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\MyYoast_Api_Request_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\MyYoast_Api_Request_Factory(); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Page_Comments_Check' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Check */ protected function getPageCommentsCheckService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Check'] = new \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Check(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Runner())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Reports']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Reports'] : $this->getPageCommentsReportsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Page_Comments_Reports' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Reports */ protected function getPageCommentsReportsService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Reports'] = new \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Reports(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Page_Comments_Runner' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Runner */ protected function getPageCommentsRunnerService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Page_Comments_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Page_Comments_Runner(); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Check' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Check */ protected function getPostnamePermalinkCheckService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Check'] = new \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Check(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Runner())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Reports']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Reports'] : $this->getPostnamePermalinkReportsService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Reports' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Reports */ protected function getPostnamePermalinkReportsService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Reports'] = new \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Reports(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory']) ? $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] : ($this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Runner' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Runner */ protected function getPostnamePermalinkRunnerService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Postname_Permalink_Runner'] = new \Yoast\WP\SEO\Services\Health_Check\Postname_Permalink_Runner(); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Report_Builder' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Report_Builder */ protected function getReportBuilderService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder(); } /** * Gets the public 'Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory' shared autowired service. * * @return \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory */ protected function getReportBuilderFactoryService() { return $this->services['Yoast\\WP\\SEO\\Services\\Health_Check\\Report_Builder_Factory'] = new \Yoast\WP\SEO\Services\Health_Check\Report_Builder_Factory(); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service */ protected function getAioseoReplacevarServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Replacevar_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Replacevar_Service(); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Provider_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Provider_Service */ protected function getAioseoRobotsProviderServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Provider_Service(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Transformer_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Transformer_Service */ protected function getAioseoRobotsTransformerServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Transformer_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Robots_Transformer_Service(${($_ = isset($this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service']) ? $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Robots_Provider_Service'] : $this->getAioseoRobotsProviderServiceService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Social_Images_Provider_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Social_Images_Provider_Service */ protected function getAioseoSocialImagesProviderServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Aioseo\\Aioseo_Social_Images_Provider_Service'] = new \Yoast\WP\SEO\Services\Importing\Aioseo\Aioseo_Social_Images_Provider_Service(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Aioseo_Helper'] : $this->getAioseoHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Conflicting_Plugins_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Conflicting_Plugins_Service */ protected function getConflictingPluginsServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Conflicting_Plugins_Service'] = new \Yoast\WP\SEO\Services\Importing\Conflicting_Plugins_Service(); } /** * Gets the public 'Yoast\WP\SEO\Services\Importing\Importable_Detector_Service' shared autowired service. * * @return \Yoast\WP\SEO\Services\Importing\Importable_Detector_Service */ protected function getImportableDetectorServiceService() { return $this->services['Yoast\\WP\\SEO\\Services\\Importing\\Importable_Detector_Service'] = new \Yoast\WP\SEO\Services\Importing\Importable_Detector_Service(${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Cleanup_Action'] : $this->getAioseoCleanupActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Custom_Archive_Settings_Importing_Action'] : $this->getAioseoCustomArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Default_Archive_Settings_Importing_Action'] : $this->getAioseoDefaultArchiveSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_General_Settings_Importing_Action'] : $this->getAioseoGeneralSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posts_Importing_Action'] : $this->getAioseoPostsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Posttype_Defaults_Settings_Importing_Action'] : $this->getAioseoPosttypeDefaultsSettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Taxonomy_Settings_Importing_Action'] : $this->getAioseoTaxonomySettingsImportingActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Aioseo\\Aioseo_Validate_Data_Action'] : $this->getAioseoValidateDataActionService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action']) ? $this->services['Yoast\\WP\\SEO\\Actions\\Importing\\Deactivate_Conflicting_Plugins_Action'] : $this->getDeactivateConflictingPluginsActionService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Services\Indexables\Indexable_Version_Manager' shared autowired service. * * @return \Yoast\WP\SEO\Services\Indexables\Indexable_Version_Manager */ protected function getIndexableVersionManagerService() { return $this->services['Yoast\\WP\\SEO\\Services\\Indexables\\Indexable_Version_Manager'] = new \Yoast\WP\SEO\Services\Indexables\Indexable_Version_Manager(${($_ = isset($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions']) ? $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] : ($this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Classes_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Classes_Surface */ protected function getClassesSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Classes_Surface'] = new \Yoast\WP\SEO\Surfaces\Classes_Surface($this); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Helpers_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Helpers_Surface */ protected function getHelpersSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Helpers_Surface($this, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface'] : ($this->services['Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Open_Graph_Helpers_Surface($this))) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface'] : ($this->services['Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Schema_Helpers_Surface($this))) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface']) ? $this->services['Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface'] : ($this->services['Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Twitter_Helpers_Surface($this))) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Meta_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Meta_Surface */ protected function getMetaSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Meta_Surface'] = new \Yoast\WP\SEO\Surfaces\Meta_Surface($this, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer']) ? $this->services['Yoast\\WP\\SEO\\Memoizers\\Meta_Tags_Context_Memoizer'] : $this->getMetaTagsContextMemoizerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository']) ? $this->services['Yoast\\WP\\SEO\\Repositories\\Indexable_Repository'] : $this->getIndexableRepositoryService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper']) ? $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper'] : ($this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Rewrite_Wrapper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Indexable_Helper'] : $this->getIndexableHelperService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Open_Graph_Helpers_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Open_Graph_Helpers_Surface */ protected function getOpenGraphHelpersSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Open_Graph_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Open_Graph_Helpers_Surface($this); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Schema_Helpers_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Schema_Helpers_Surface */ protected function getSchemaHelpersSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Schema_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Schema_Helpers_Surface($this); } /** * Gets the public 'Yoast\WP\SEO\Surfaces\Twitter_Helpers_Surface' shared autowired service. * * @return \Yoast\WP\SEO\Surfaces\Twitter_Helpers_Surface */ protected function getTwitterHelpersSurfaceService() { return $this->services['Yoast\\WP\\SEO\\Surfaces\\Twitter_Helpers_Surface'] = new \Yoast\WP\SEO\Surfaces\Twitter_Helpers_Surface($this); } /** * Gets the public 'Yoast\WP\SEO\User_Meta\Application\Additional_Contactmethods_Collector' shared autowired service. * * @return \Yoast\WP\SEO\User_Meta\Application\Additional_Contactmethods_Collector */ protected function getAdditionalContactmethodsCollectorService() { return $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector'] = new \Yoast\WP\SEO\User_Meta\Application\Additional_Contactmethods_Collector(new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Facebook(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Instagram(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Linkedin(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Myspace(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Pinterest(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Soundcloud(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Tumblr(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Wikipedia(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\X(), new \Yoast\WP\SEO\User_Meta\Framework\Additional_Contactmethods\Youtube()); } /** * Gets the public 'Yoast\WP\SEO\User_Meta\Application\Custom_Meta_Collector' shared autowired service. * * @return \Yoast\WP\SEO\User_Meta\Application\Custom_Meta_Collector */ protected function getCustomMetaCollectorService() { $a = ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}; return $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector'] = new \Yoast\WP\SEO\User_Meta\Application\Custom_Meta_Collector(new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Author_Metadesc($a), new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Author_Title($a), new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Content_Analysis_Disable($a), new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Inclusive_Language_Analysis_Disable($a), new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Keyword_Analysis_Disable($a), new \Yoast\WP\SEO\User_Meta\Framework\Custom_Meta\Noindex_Author($a)); } /** * Gets the public 'Yoast\WP\SEO\User_Meta\User_Interface\Additional_Contactmethods_Integration' shared autowired service. * * @return \Yoast\WP\SEO\User_Meta\User_Interface\Additional_Contactmethods_Integration */ protected function getAdditionalContactmethodsIntegrationService() { return $this->services['Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Additional_Contactmethods_Integration'] = new \Yoast\WP\SEO\User_Meta\User_Interface\Additional_Contactmethods_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector']) ? $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector'] : $this->getAdditionalContactmethodsCollectorService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\User_Meta\User_Interface\Cleanup_Integration' shared autowired service. * * @return \Yoast\WP\SEO\User_Meta\User_Interface\Cleanup_Integration */ protected function getCleanupIntegration2Service() { return $this->services['Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Cleanup_Integration'] = new \Yoast\WP\SEO\User_Meta\User_Interface\Cleanup_Integration(new \Yoast\WP\SEO\User_Meta\Application\Cleanup_Service(${($_ = isset($this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector']) ? $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Additional_Contactmethods_Collector'] : $this->getAdditionalContactmethodsCollectorService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector']) ? $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector'] : $this->getCustomMetaCollectorService()) && false ?: '_'}, new \Yoast\WP\SEO\User_Meta\Infrastructure\Cleanup_Repository())); } /** * Gets the public 'Yoast\WP\SEO\User_Meta\User_Interface\Custom_Meta_Integration' shared autowired service. * * @return \Yoast\WP\SEO\User_Meta\User_Interface\Custom_Meta_Integration */ protected function getCustomMetaIntegrationService() { return $this->services['Yoast\\WP\\SEO\\User_Meta\\User_Interface\\Custom_Meta_Integration'] = new \Yoast\WP\SEO\User_Meta\User_Interface\Custom_Meta_Integration(${($_ = isset($this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector']) ? $this->services['Yoast\\WP\\SEO\\User_Meta\\Application\\Custom_Meta_Collector'] : $this->getCustomMetaCollectorService()) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\User_Profiles_Additions\User_Interface\User_Profiles_Additions_Ui' shared autowired service. * * @return \Yoast\WP\SEO\User_Profiles_Additions\User_Interface\User_Profiles_Additions_Ui */ protected function getUserProfilesAdditionsUiService() { return $this->services['Yoast\\WP\\SEO\\User_Profiles_Additions\\User_Interface\\User_Profiles_Additions_Ui'] = new \Yoast\WP\SEO\User_Profiles_Additions\User_Interface\User_Profiles_Additions_Ui(${($_ = isset($this->services['WPSEO_Admin_Asset_Manager']) ? $this->services['WPSEO_Admin_Asset_Manager'] : $this->getWPSEOAdminAssetManagerService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Values\Images' shared autowired service. * * @return \Yoast\WP\SEO\Values\Images */ protected function getImagesService() { return $this->services['Yoast\\WP\\SEO\\Values\\Images'] = new \Yoast\WP\SEO\Values\Images(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); } /** * Gets the public 'Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions' shared autowired service. * * @return \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions */ protected function getIndexableBuilderVersionsService() { return $this->services['Yoast\\WP\\SEO\\Values\\Indexables\\Indexable_Builder_Versions'] = new \Yoast\WP\SEO\Values\Indexables\Indexable_Builder_Versions(); } /** * Gets the public 'Yoast\WP\SEO\Values\Open_Graph\Images' shared autowired service. * * @return \Yoast\WP\SEO\Values\Open_Graph\Images */ protected function getImages2Service() { $this->services['Yoast\\WP\\SEO\\Values\\Open_Graph\\Images'] = $instance = new \Yoast\WP\SEO\Values\Open_Graph\Images(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Open_Graph\\Image_Helper'] : $this->getImageHelper2Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Values\Twitter\Images' shared autowired service. * * @return \Yoast\WP\SEO\Values\Twitter\Images */ protected function getImages3Service() { $this->services['Yoast\\WP\\SEO\\Values\\Twitter\\Images'] = $instance = new \Yoast\WP\SEO\Values\Twitter\Images(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Image_Helper'] : $this->getImageHelperService()) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Url_Helper'] = new \Yoast\WP\SEO\Helpers\Url_Helper())) && false ?: '_'}); $instance->set_helpers(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Twitter\\Image_Helper'] : $this->getImageHelper4Service()) && false ?: '_'}); return $instance; } /** * Gets the public 'Yoast\WP\SEO\Wrappers\WP_Query_Wrapper' shared autowired service. * * @return \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper */ protected function getWPQueryWrapperService() { return $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Query_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Query_Wrapper(); } /** * Gets the public 'Yoast\WP\SEO\Wrappers\WP_Remote_Handler' shared autowired service. * * @return \Yoast\WP\SEO\Wrappers\WP_Remote_Handler */ protected function getWPRemoteHandlerService() { return $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Remote_Handler'] = new \Yoast\WP\SEO\Wrappers\WP_Remote_Handler(); } /** * Gets the public 'Yoast\WP\SEO\Wrappers\WP_Rewrite_Wrapper' shared autowired service. * * @return \Yoast\WP\SEO\Wrappers\WP_Rewrite_Wrapper */ protected function getWPRewriteWrapperService() { return $this->services['Yoast\\WP\\SEO\\Wrappers\\WP_Rewrite_Wrapper'] = new \Yoast\WP\SEO\Wrappers\WP_Rewrite_Wrapper(); } /** * Gets the public 'Yoast_Notification_Center' shared service. * * @return \Yoast_Notification_Center */ protected function getYoastNotificationCenterService() { return $this->services['Yoast_Notification_Center'] = \Yoast_Notification_Center::get(); } /** * Gets the public 'wpdb' shared service. * * @return \wpdb */ protected function getWpdbService() { return $this->services['wpdb'] = \Yoast\WP\SEO\WordPress\Wrapper::get_wpdb(); } /** * Gets the private 'Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Dismiss_Notifications' shared autowired service. * * @return \Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Dismiss_Notifications */ protected function getContentTypeVisibilityDismissNotificationsService() { return $this->services['Yoast\\WP\\SEO\\Content_Type_Visibility\\Application\\Content_Type_Visibility_Dismiss_Notifications'] = new \Yoast\WP\SEO\Content_Type_Visibility\Application\Content_Type_Visibility_Dismiss_Notifications(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Options_Helper'] = new \Yoast\WP\SEO\Helpers\Options_Helper())) && false ?: '_'}); } /** * Gets the private 'Yoast\WP\SEO\Introductions\Application\Introductions_Collector' shared autowired service. * * @return \Yoast\WP\SEO\Introductions\Application\Introductions_Collector */ protected function getIntroductionsCollectorService() { return $this->services['Yoast\\WP\\SEO\\Introductions\\Application\\Introductions_Collector'] = new \Yoast\WP\SEO\Introductions\Application\Introductions_Collector(new \Yoast\WP\SEO\Introductions\Application\Ai_Fix_Assessments_Upsell(${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\User_Helper'] = new \Yoast\WP\SEO\Helpers\User_Helper())) && false ?: '_'}, ${($_ = isset($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper']) ? $this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] : ($this->services['Yoast\\WP\\SEO\\Helpers\\Product_Helper'] = new \Yoast\WP\SEO\Helpers\Product_Helper())) && false ?: '_'})); } } src/routes/integrations-route.php000064400000004304147206602470013240 0ustar00integrations_action = $integrations_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $set_active_route = [ 'methods' => 'POST', 'callback' => [ $this, 'set_integration_active' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'active' => [ 'type' => 'boolean', 'required' => true, ], 'integration' => [ 'type' => 'string', 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::INTEGRATIONS_ROUTE . self::SET_ACTIVE_ROUTE, $set_active_route ); } /** * Checks if the current user has the right capability. * * @return bool */ public function can_manage_options() { return \current_user_can( 'wpseo_manage_options' ); } /** * Sets integration state. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function set_integration_active( WP_REST_Request $request ) { $params = $request->get_json_params(); $integration_name = $params['integration']; $value = $params['active']; $data = $this ->integrations_action ->set_integration_active( $integration_name, $value ); return new WP_REST_Response( [ 'json' => $data ] ); } } src/routes/first-time-configuration-route.php000064400000020101147206602470015453 0ustar00first_time_configuration_action = $first_time_configuration_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $site_representation_route = [ 'methods' => 'POST', 'callback' => [ $this, 'set_site_representation' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'company_or_person' => [ 'type' => 'string', 'enum' => [ 'company', 'person', ], 'required' => true, ], 'company_name' => [ 'type' => 'string', ], 'company_logo' => [ 'type' => 'string', ], 'company_logo_id' => [ 'type' => 'integer', ], 'person_logo' => [ 'type' => 'string', ], 'person_logo_id' => [ 'type' => 'integer', ], 'company_or_person_user_id' => [ 'type' => 'integer', ], 'description' => [ 'type' => 'string', ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::SITE_REPRESENTATION_ROUTE, $site_representation_route ); $social_profiles_route = [ 'methods' => 'POST', 'callback' => [ $this, 'set_social_profiles' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'facebook_site' => [ 'type' => 'string', ], 'twitter_site' => [ 'type' => 'string', ], 'other_social_urls' => [ 'type' => 'array', ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::SOCIAL_PROFILES_ROUTE, $social_profiles_route ); $check_capability_route = [ 'methods' => 'GET', 'callback' => [ $this, 'check_capability' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'user_id' => [ 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::CHECK_CAPABILITY_ROUTE, $check_capability_route ); $enable_tracking_route = [ 'methods' => 'POST', 'callback' => [ $this, 'set_enable_tracking' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'tracking' => [ 'type' => 'boolean', 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::ENABLE_TRACKING_ROUTE, $enable_tracking_route ); $save_configuration_state_route = [ 'methods' => 'POST', 'callback' => [ $this, 'save_configuration_state' ], 'permission_callback' => [ $this, 'can_manage_options' ], 'args' => [ 'finishedSteps' => [ 'type' => 'array', 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::SAVE_CONFIGURATION_STATE_ROUTE, $save_configuration_state_route ); $get_configuration_state_route = [ [ 'methods' => 'GET', 'callback' => [ $this, 'get_configuration_state' ], 'permission_callback' => [ $this, 'can_manage_options' ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CONFIGURATION_ROUTE . self::GET_CONFIGURATION_STATE_ROUTE, $get_configuration_state_route ); } /** * Sets the site representation values. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function set_site_representation( WP_REST_Request $request ) { $data = $this ->first_time_configuration_action ->set_site_representation( $request->get_json_params() ); return new WP_REST_Response( $data, $data->status ); } /** * Sets the social profiles values. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function set_social_profiles( WP_REST_Request $request ) { $data = $this ->first_time_configuration_action ->set_social_profiles( $request->get_json_params() ); return new WP_REST_Response( [ 'json' => $data ] ); } /** * Checks if the current user has the correct capability to edit a specific user. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function check_capability( WP_REST_Request $request ) { $data = $this ->first_time_configuration_action ->check_capability( $request->get_param( 'user_id' ) ); return new WP_REST_Response( $data ); } /** * Enables or disables tracking. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function set_enable_tracking( WP_REST_Request $request ) { $data = $this ->first_time_configuration_action ->set_enable_tracking( $request->get_json_params() ); return new WP_REST_Response( $data, $data->status ); } /** * Checks if the current user has the right capability. * * @return bool */ public function can_manage_options() { return \current_user_can( 'wpseo_manage_options' ); } /** * Checks if the current user has the capability to edit a specific user. * * @param WP_REST_Request $request The request. * * @return bool */ public function can_edit_user( WP_REST_Request $request ) { $response = $this->first_time_configuration_action->check_capability( $request->get_param( 'user_id' ) ); return $response->success; } /** * Checks if the current user has the capability to edit posts of other users. * * @return bool */ public function can_edit_other_posts() { return \current_user_can( 'edit_others_posts' ); } /** * Saves the first time configuration state. * * @param WP_REST_Request $request The request. * * @return WP_REST_Response */ public function save_configuration_state( WP_REST_Request $request ) { $data = $this ->first_time_configuration_action ->save_configuration_state( $request->get_json_params() ); return new WP_REST_Response( $data, $data->status ); } /** * Returns the first time configuration state. * * @return WP_REST_Response the state of the configuration. */ public function get_configuration_state() { $data = $this ->first_time_configuration_action ->get_configuration_state(); return new WP_REST_Response( $data, $data->status ); } } src/routes/indexing-route.php000064400000030522147206602470012340 0ustar00post_indexation_action = $post_indexation_action; $this->term_indexation_action = $term_indexation_action; $this->post_type_archive_indexation_action = $post_type_archive_indexation_action; $this->general_indexation_action = $general_indexation_action; $this->indexable_indexing_complete_action = $indexable_indexing_complete_action; $this->indexing_complete_action = $indexing_complete_action; $this->prepare_indexing_action = $prepare_indexing_action; $this->options_helper = $options_helper; $this->post_link_indexing_action = $post_link_indexing_action; $this->term_link_indexing_action = $term_link_indexing_action; $this->indexing_helper = $indexing_helper; } /** * Registers the routes used to index indexables. * * @return void */ public function register_routes() { $route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'index_posts' ], 'permission_callback' => [ $this, 'can_index' ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::POSTS_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'index_terms' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::TERMS_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'index_post_type_archives' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::POST_TYPE_ARCHIVES_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'index_general' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::GENERAL_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'prepare' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::PREPARE_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'indexables_complete' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::INDEXABLES_COMPLETE_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'complete' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::COMPLETE_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'index_post_links' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::POST_LINKS_INDEXING_ROUTE, $route_args ); $route_args['callback'] = [ $this, 'index_term_links' ]; \register_rest_route( Main::API_V1_NAMESPACE, self::TERM_LINKS_INDEXING_ROUTE, $route_args ); } /** * Indexes a number of unindexed posts. * * @return WP_REST_Response The response. */ public function index_posts() { return $this->run_indexation_action( $this->post_indexation_action, self::FULL_POSTS_ROUTE ); } /** * Indexes a number of unindexed terms. * * @return WP_REST_Response The response. */ public function index_terms() { return $this->run_indexation_action( $this->term_indexation_action, self::FULL_TERMS_ROUTE ); } /** * Indexes a number of unindexed post type archive pages. * * @return WP_REST_Response The response. */ public function index_post_type_archives() { return $this->run_indexation_action( $this->post_type_archive_indexation_action, self::FULL_POST_TYPE_ARCHIVES_ROUTE ); } /** * Indexes a number of unindexed general items. * * @return WP_REST_Response The response. */ public function index_general() { return $this->run_indexation_action( $this->general_indexation_action, self::FULL_GENERAL_ROUTE ); } /** * Indexes a number of posts for post links. * * @return WP_REST_Response The response. */ public function index_post_links() { return $this->run_indexation_action( $this->post_link_indexing_action, self::FULL_POST_LINKS_INDEXING_ROUTE ); } /** * Indexes a number of terms for term links. * * @return WP_REST_Response The response. */ public function index_term_links() { return $this->run_indexation_action( $this->term_link_indexing_action, self::FULL_TERM_LINKS_INDEXING_ROUTE ); } /** * Prepares the indexation. * * @return WP_REST_Response The response. */ public function prepare() { $this->prepare_indexing_action->prepare(); return $this->respond_with( [], false ); } /** * Completes the indexable indexation. * * @return WP_REST_Response The response. */ public function indexables_complete() { $this->indexable_indexing_complete_action->complete(); return $this->respond_with( [], false ); } /** * Completes the indexation. * * @return WP_REST_Response The response. */ public function complete() { $this->indexing_complete_action->complete(); return $this->respond_with( [], false ); } /** * Whether or not the current user is allowed to index. * * @return bool Whether or not the current user is allowed to index. */ public function can_index() { return \current_user_can( 'edit_posts' ); } /** * Runs an indexing action and returns the response. * * @param Indexation_Action_Interface $indexation_action The indexing action. * @param string $url The url of the indexing route. * * @return WP_REST_Response|WP_Error The response, or an error when running the indexing action failed. */ protected function run_indexation_action( Indexation_Action_Interface $indexation_action, $url ) { try { return parent::run_indexation_action( $indexation_action, $url ); } catch ( Exception $exception ) { $this->indexing_helper->indexing_failed(); return new WP_Error( 'wpseo_error_indexing', $exception->getMessage(), [ 'stackTrace' => $exception->getTraceAsString() ] ); } } } src/routes/semrush-route.php000064400000014407147206602470012225 0ustar00login_action = $login_action; $this->options_action = $options_action; $this->phrases_action = $phrases_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $authentication_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'authenticate' ], 'permission_callback' => [ $this, 'can_use_semrush' ], 'args' => [ 'code' => [ 'validate_callback' => [ $this, 'has_valid_code' ], 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::AUTHENTICATION_ROUTE, $authentication_route_args ); $set_country_code_option_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'set_country_code_option' ], 'permission_callback' => [ $this, 'can_use_semrush' ], 'args' => [ 'country_code' => [ 'validate_callback' => [ $this, 'has_valid_country_code' ], 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::COUNTRY_CODE_OPTION_ROUTE, $set_country_code_option_route_args ); $related_keyphrases_route_args = [ 'methods' => 'GET', 'callback' => [ $this, 'get_related_keyphrases' ], 'permission_callback' => [ $this, 'can_use_semrush' ], 'args' => [ 'keyphrase' => [ 'validate_callback' => [ $this, 'has_valid_keyphrase' ], 'required' => true, ], 'country_code' => [ 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::RELATED_KEYPHRASES_ROUTE, $related_keyphrases_route_args ); } /** * Authenticates with SEMrush. * * @param WP_REST_Request $request The request. This request should have a code param set. * * @return WP_REST_Response The response. */ public function authenticate( WP_REST_Request $request ) { $data = $this ->login_action ->authenticate( $request['code'] ); return new WP_REST_Response( $data, $data->status ); } /** * Sets the SEMrush country code option. * * @param WP_REST_Request $request The request. This request should have a country code param set. * * @return WP_REST_Response The response. */ public function set_country_code_option( WP_REST_Request $request ) { $data = $this ->options_action ->set_country_code( $request['country_code'] ); return new WP_REST_Response( $data, $data->status ); } /** * Checks if a valid code was returned. * * @param string $code The code to check. * * @return bool Whether or not the code is valid. */ public function has_valid_code( $code ) { return $code !== ''; } /** * Checks if a valid keyphrase is provided. * * @param string $keyphrase The keyphrase to check. * * @return bool Whether or not the keyphrase is valid. */ public function has_valid_keyphrase( $keyphrase ) { return \trim( $keyphrase ) !== ''; } /** * Gets the related keyphrases based on the passed keyphrase and database code. * * @param WP_REST_Request $request The request. This request should have a keyphrase and country_code param set. * * @return WP_REST_Response The response. */ public function get_related_keyphrases( WP_REST_Request $request ) { $data = $this ->phrases_action ->get_related_keyphrases( $request['keyphrase'], $request['country_code'] ); return new WP_REST_Response( $data, $data->status ); } /** * Checks if a valid country code was submitted. * * @param string $country_code The country code to check. * * @return bool Whether or not the country code is valid. */ public function has_valid_country_code( $country_code ) { return ( $country_code !== '' && \preg_match( '/^[a-z]{2}$/', $country_code ) === 1 ); } /** * Whether or not the current user is allowed to edit post/pages and thus use the SEMrush integration. * * @return bool Whether or not the current user is allowed to use SEMrush. */ public function can_use_semrush() { return \current_user_can( 'edit_posts' ) || \current_user_can( 'edit_pages' ); } } src/routes/meta-search-route.php000064400000003716147206602470012731 0ustar00 'GET', 'callback' => [ $this, 'search_meta' ], 'permission_callback' => [ $this, 'permission_check' ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::META_SEARCH_ROUTE, $route ); } /** * Performs the permission check. * * @param WP_REST_Request $request The request. * * @return bool */ public function permission_check( $request ) { if ( ! isset( $request['post_id'] ) ) { return false; } $post_type = \get_post_type( $request['post_id'] ); $post_type_object = \get_post_type_object( $post_type ); return \current_user_can( $post_type_object->cap->edit_posts ); } /** * Searches meta fields of a given post. * * @param WP_REST_Request $request The REST request. * * @return WP_REST_Response */ public function search_meta( $request ) { $post_id = $request['post_id']; $query = $request['query']; $meta = \get_post_custom( $post_id ); $matches = []; foreach ( $meta as $key => $values ) { if ( \substr( $key, 0, \strlen( $query ) ) !== $query ) { continue; } if ( empty( $query ) && \substr( $key, 0, 1 ) === '_' ) { continue; } // Skip custom field values that are serialized. if ( \is_serialized( $values[0] ) ) { continue; } $matches[] = [ 'key' => $key, 'value' => $values[0], ]; if ( \count( $matches ) >= 25 ) { break; } } return \rest_ensure_response( [ 'meta' => $matches ] ); } } src/routes/workouts-route.php000064400000006150147206602470012430 0ustar00options_helper = $options_helper; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $edit_others_posts = static function () { return \current_user_can( 'edit_others_posts' ); }; $workouts_route = [ [ 'methods' => 'GET', 'callback' => [ $this, 'get_workouts' ], 'permission_callback' => $edit_others_posts, ], [ 'methods' => 'POST', 'callback' => [ $this, 'set_workouts' ], 'permission_callback' => $edit_others_posts, 'args' => $this->get_workouts_routes_args(), ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::WORKOUTS_ROUTE, $workouts_route ); } /** * Returns the workouts as configured for the site. * * @return WP_REST_Response the configuration of the workouts. */ public function get_workouts() { $workouts_option = $this->options_helper->get( 'workouts_data' ); /** * Filter: 'Yoast\WP\SEO\workouts_options' - Allows adding workouts options by the add-ons. * * @param array $workouts_option The content of the `workouts_data` option in Free. */ $workouts_option = \apply_filters( 'Yoast\WP\SEO\workouts_options', $workouts_option ); return new WP_REST_Response( [ 'json' => $workouts_option ] ); } /** * Sets the workout configuration. * * @param WP_REST_Request $request The request object. * * @return WP_REST_Response the configuration of the workouts. */ public function set_workouts( $request ) { $workouts_data = $request->get_json_params(); /** * Filter: 'Yoast\WP\SEO\workouts_route_save' - Allows the add-ons to save the options data in their own options. * * @param mixed|null $result The result of the previous saving operation. * * @param array $workouts_data The full set of workouts option data to save. */ $result = \apply_filters( 'Yoast\WP\SEO\workouts_route_save', null, $workouts_data ); return new WP_REST_Response( [ 'json' => $result ] ); } /** * Gets the args for all the registered workouts. * * @return array */ private function get_workouts_routes_args() { $args_array = []; /** * Filter: 'Yoast\WP\SEO\workouts_route_args' - Allows the add-ons add their own arguments to the route registration. * * @param array $args_array The array of arguments for the route registration. */ return \apply_filters( 'Yoast\WP\SEO\workouts_route_args', $args_array ); } } src/routes/importing-route.php000064400000010106147206602470012537 0ustar00[\w-]+)/(?P[\w-]+)'; /** * List of available importers. * * @var Importing_Action_Interface[] */ protected $importers = []; /** * The importable detector service. * * @var Importable_Detector_Service */ protected $importable_detector; /** * Importing_Route constructor. * * @param Importable_Detector_Service $importable_detector The importable detector service. * @param Importing_Action_Interface ...$importers All available importers. */ public function __construct( Importable_Detector_Service $importable_detector, Importing_Action_Interface ...$importers ) { $this->importable_detector = $importable_detector; $this->importers = $importers; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { \register_rest_route( Main::API_V1_NAMESPACE, self::ROUTE, [ 'callback' => [ $this, 'execute' ], 'permission_callback' => [ $this, 'is_user_permitted_to_import' ], 'methods' => [ 'POST' ], ] ); } /** * Executes the rest request, but only if the respective action is enabled. * * @param mixed $data The request parameters. * * @return WP_REST_Response|false Response or false on non-existent route. */ public function execute( $data ) { $plugin = (string) $data['plugin']; $type = (string) $data['type']; $next_url = $this->get_endpoint( $plugin, $type ); try { $importer = $this->get_importer( $plugin, $type ); if ( $importer === false || ! $importer->is_enabled() ) { return new WP_Error( 'rest_no_route', 'Requested importer not found', [ 'status' => 404, ] ); } $result = $importer->index(); if ( $result === false || \count( $result ) === 0 ) { $next_url = false; } return $this->respond_with( $result, $next_url ); } catch ( Exception $exception ) { if ( $exception instanceof Aioseo_Validation_Exception ) { return new WP_Error( 'wpseo_error_validation', $exception->getMessage(), [ 'stackTrace' => $exception->getTraceAsString() ] ); } return new WP_Error( 'wpseo_error_indexing', $exception->getMessage(), [ 'stackTrace' => $exception->getTraceAsString() ] ); } } /** * Gets the right importer for the given arguments. * * @param string $plugin The plugin to import from. * @param string $type The type of entity to import. * * @return Importing_Action_Interface|false The importer, or false if no importer was found. */ protected function get_importer( $plugin, $type ) { $importers = $this->importable_detector->filter_actions( $this->importers, $plugin, $type ); if ( \count( $importers ) !== 1 ) { return false; } return \current( $importers ); } /** * Gets the right endpoint for the given arguments. * * @param string $plugin The plugin to import from. * @param string $type The type of entity to import. * * @return string|false The endpoint for the given action or false on failure of finding the one. */ public function get_endpoint( $plugin, $type ) { if ( empty( $plugin ) || empty( $type ) ) { return false; } return Main::API_V1_NAMESPACE . "/import/{$plugin}/{$type}"; } /** * Whether or not the current user is allowed to import. * * @return bool Whether or not the current user is allowed to import. */ public function is_user_permitted_to_import() { return \current_user_can( 'activate_plugins' ); } } src/routes/abstract-indexation-route.php000064400000001604147206602470014475 0ustar00index(); $next_url = false; if ( \count( $indexables ) >= $indexation_action->get_limit() ) { $next_url = \rest_url( $url ); } return $this->respond_with( $indexables, $next_url ); } } src/routes/abstract-action-route.php000064400000001172147206602470013610 0ustar00 $objects, 'next_url' => $next_url, ] ); } } src/routes/alert-dismissal-route.php000064400000004521147206602470013630 0ustar00alert_dismissal_action = $alert_dismissal_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $dismiss_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'dismiss' ], 'permission_callback' => [ $this, 'can_dismiss' ], 'args' => [ 'key' => [ 'validate_callback' => [ $this->alert_dismissal_action, 'is_allowed' ], 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::DISMISS_ROUTE, $dismiss_route_args ); } /** * Dismisses an alert. * * @param WP_REST_Request $request The request. This request should have a key param set. * * @return WP_REST_Response The response. */ public function dismiss( WP_REST_Request $request ) { $success = $this->alert_dismissal_action->dismiss( $request['key'] ); $status = $success === ( true ) ? 200 : 400; return new WP_REST_Response( (object) [ 'success' => $success, 'status' => $status, ], $status ); } /** * Whether or not the current user is allowed to dismiss alerts. * * @return bool Whether or not the current user is allowed to dismiss alerts. */ public function can_dismiss() { return \current_user_can( 'edit_posts' ); } } src/routes/wincher-route.php000064400000021400147206602470012165 0ustar00login_action = $login_action; $this->account_action = $account_action; $this->keyphrases_action = $keyphrases_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $authorize_route_args = [ 'methods' => 'GET', 'callback' => [ $this, 'get_authorization_url' ], 'permission_callback' => [ $this, 'can_use_wincher' ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::AUTHORIZATION_URL_ROUTE, $authorize_route_args ); $authentication_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'authenticate' ], 'permission_callback' => [ $this, 'can_use_wincher' ], 'args' => [ 'code' => [ 'validate_callback' => [ $this, 'has_valid_code' ], 'required' => true, ], 'websiteId' => [ 'validate_callback' => [ $this, 'has_valid_website_id' ], 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::AUTHENTICATION_ROUTE, $authentication_route_args ); $track_keyphrases_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'track_keyphrases' ], 'permission_callback' => [ $this, 'can_use_wincher' ], 'args' => [ 'keyphrases' => [ 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::KEYPHRASES_TRACK_ROUTE, $track_keyphrases_route_args ); $get_keyphrases_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'get_tracked_keyphrases' ], 'permission_callback' => [ $this, 'can_use_wincher' ], 'args' => [ 'keyphrases' => [ 'required' => false, ], 'permalink' => [ 'required' => false, ], 'startAt' => [ 'required' => false, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::TRACKED_KEYPHRASES_ROUTE, $get_keyphrases_route_args ); $delete_keyphrase_route_args = [ 'methods' => 'DELETE', 'callback' => [ $this, 'untrack_keyphrase' ], 'permission_callback' => [ $this, 'can_use_wincher' ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::UNTRACK_KEYPHRASE_ROUTE, $delete_keyphrase_route_args ); $check_limit_route_args = [ 'methods' => 'GET', 'callback' => [ $this, 'check_limit' ], 'permission_callback' => [ $this, 'can_use_wincher' ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::CHECK_LIMIT_ROUTE, $check_limit_route_args ); $get_upgrade_campaign_route_args = [ 'methods' => 'GET', 'callback' => [ $this, 'get_upgrade_campaign' ], 'permission_callback' => [ $this, 'can_use_wincher' ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::UPGRADE_CAMPAIGN_ROUTE, $get_upgrade_campaign_route_args ); } /** * Returns the authorization URL. * * @return WP_REST_Response The response. */ public function get_authorization_url() { $data = $this->login_action->get_authorization_url(); return new WP_REST_Response( $data, $data->status ); } /** * Authenticates with Wincher. * * @param WP_REST_Request $request The request. This request should have a code param set. * * @return WP_REST_Response The response. */ public function authenticate( WP_REST_Request $request ) { $data = $this ->login_action ->authenticate( $request['code'], (string) $request['websiteId'] ); return new WP_REST_Response( $data, $data->status ); } /** * Posts keyphrases to track. * * @param WP_REST_Request $request The request. This request should have a code param set. * * @return WP_REST_Response The response. */ public function track_keyphrases( WP_REST_Request $request ) { $limits = $this->account_action->check_limit(); if ( $limits->status !== 200 ) { return new WP_REST_Response( $limits, $limits->status ); } $data = $this->keyphrases_action->track_keyphrases( $request['keyphrases'], $limits ); return new WP_REST_Response( $data, $data->status ); } /** * Gets the tracked keyphrases via POST. * This is done via POST, so we don't potentially run into URL limit issues when a lot of long keyphrases are tracked. * * @param WP_REST_Request $request The request. This request should have a code param set. * * @return WP_REST_Response The response. */ public function get_tracked_keyphrases( WP_REST_Request $request ) { $data = $this->keyphrases_action->get_tracked_keyphrases( $request['keyphrases'], $request['permalink'], $request['startAt'] ); return new WP_REST_Response( $data, $data->status ); } /** * Untracks the tracked keyphrase. * * @param WP_REST_Request $request The request. This request should have a code param set. * * @return WP_REST_Response The response. */ public function untrack_keyphrase( WP_REST_Request $request ) { $data = $this->keyphrases_action->untrack_keyphrase( $request['keyphraseID'] ); return new WP_REST_Response( $data, $data->status ); } /** * Checks the account limit. * * @return WP_REST_Response The response. */ public function check_limit() { $data = $this->account_action->check_limit(); return new WP_REST_Response( $data, $data->status ); } /** * Gets the upgrade campaign. * If it's not a free user, no campaign is returned. * * @return WP_REST_Response The response. */ public function get_upgrade_campaign() { $data = $this->account_action->get_upgrade_campaign(); return new WP_REST_Response( $data, $data->status ); } /** * Checks if a valid code was returned. * * @param string $code The code to check. * * @return bool Whether the code is valid. */ public function has_valid_code( $code ) { return $code !== ''; } /** * Checks if a valid website_id was returned. * * @param int $website_id The website_id to check. * * @return bool Whether the website_id is valid. */ public function has_valid_website_id( $website_id ) { return ! empty( $website_id ) && \is_int( $website_id ); } /** * Whether the current user is allowed to publish post/pages and thus use the Wincher integration. * * @return bool Whether the current user is allowed to use Wincher. */ public function can_use_wincher() { return \current_user_can( 'publish_posts' ) || \current_user_can( 'publish_pages' ); } } src/routes/supported-features-route.php000064400000002436147206602470014377 0ustar00 'GET', 'callback' => [ $this, 'get_supported_features' ], 'permission_callback' => '__return_true', ]; \register_rest_route( Main::API_V1_NAMESPACE, self::SUPPORTED_FEATURES_ROUTE, $supported_features_route ); } /** * Returns a list of features supported by this yoast seo installation. * * @return WP_REST_Response a list of features supported by this yoast seo installation. */ public function get_supported_features() { return new WP_REST_Response( [ 'addon-installation' => 1, ] ); } } src/routes/indexables-head-route.php000064400000004622147206602470013552 0ustar00head_action = $head_action; } /** * Returns the conditionals based in which this loadable should be active. * * @return array */ public static function get_conditionals() { return [ Headless_Rest_Endpoints_Enabled_Conditional::class ]; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $route_args = [ 'methods' => 'GET', 'callback' => [ $this, 'get_head' ], 'permission_callback' => '__return_true', 'args' => [ 'url' => [ 'validate_callback' => [ $this, 'is_valid_url' ], 'required' => true, ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::HEAD_FOR_URL_ROUTE, $route_args ); } /** * Gets the head of a page for a given URL. * * @param WP_REST_Request $request The request. This request should have a url param set. * * @return WP_REST_Response The response. */ public function get_head( WP_REST_Request $request ) { $url = \esc_url_raw( \utf8_uri_encode( $request['url'] ) ); $data = $this->head_action->for_url( $url ); return new WP_REST_Response( $data, $data->status ); } /** * Checks if a url is a valid url. * * @param string $url The url to check. * * @return bool Whether or not the url is valid. */ public function is_valid_url( $url ) { $url = WPSEO_Utils::sanitize_url( \utf8_uri_encode( $url ) ); if ( \filter_var( $url, \FILTER_VALIDATE_URL ) === false ) { return false; } return true; } } src/routes/route-interface.php000064400000000413147206602470012467 0ustar00post_type_helper = $post_type_helper; $this->taxonomy_helper = $taxonomy_helper; $this->post_helper = $post_helper; $this->head_action = $head_action; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $public_post_types = $this->post_type_helper->get_indexable_post_types(); foreach ( $public_post_types as $post_type ) { $this->register_rest_fields( $post_type, 'for_post' ); } $public_taxonomies = $this->taxonomy_helper->get_indexable_taxonomies(); foreach ( $public_taxonomies as $taxonomy ) { if ( $taxonomy === 'post_tag' ) { $taxonomy = 'tag'; } $this->register_rest_fields( $taxonomy, 'for_term' ); } $this->register_rest_fields( 'user', 'for_author' ); $this->register_rest_fields( 'type', 'for_post_type_archive' ); } /** * Returns the head for a post. * * @param array $params The rest request params. * @param string $format The desired output format. * * @return string|null The head. */ public function for_post( $params, $format = self::YOAST_HEAD_ATTRIBUTE_NAME ) { if ( ! isset( $params['id'] ) ) { return null; } if ( ! $this->post_helper->is_post_indexable( $params['id'] ) ) { return null; } $obj = $this->head_action->for_post( $params['id'] ); return $this->render_object( $obj, $format ); } /** * Returns the head for a term. * * @param array $params The rest request params. * @param string $format The desired output format. * * @return string|null The head. */ public function for_term( $params, $format = self::YOAST_HEAD_ATTRIBUTE_NAME ) { $obj = $this->head_action->for_term( $params['id'] ); return $this->render_object( $obj, $format ); } /** * Returns the head for an author. * * @param array $params The rest request params. * @param string $format The desired output format. * * @return string|null The head. */ public function for_author( $params, $format = self::YOAST_HEAD_ATTRIBUTE_NAME ) { $obj = $this->head_action->for_author( $params['id'] ); return $this->render_object( $obj, $format ); } /** * Returns the head for a post type archive. * * @param array $params The rest request params. * @param string $format The desired output format. * * @return string|null The head. */ public function for_post_type_archive( $params, $format = self::YOAST_HEAD_ATTRIBUTE_NAME ) { if ( $params['slug'] === 'post' ) { $obj = $this->head_action->for_posts_page(); } elseif ( ! $this->post_type_helper->has_archive( $params['slug'] ) ) { return null; } else { $obj = $this->head_action->for_post_type_archive( $params['slug'] ); } return $this->render_object( $obj, $format ); } /** * Registers the Yoast rest fields. * * @param string $object_type The object type. * @param string $callback The function name of the callback. * * @return void */ protected function register_rest_fields( $object_type, $callback ) { // Output metadata in page head meta tags. \register_rest_field( $object_type, self::YOAST_HEAD_ATTRIBUTE_NAME, [ 'get_callback' => [ $this, $callback ] ] ); // Output metadata in a json object in a head meta tag. \register_rest_field( $object_type, self::YOAST_JSON_HEAD_ATTRIBUTE_NAME, [ 'get_callback' => [ $this, $callback ] ] ); } /** * Returns the correct property for the Yoast head. * * @param stdObject $head The Yoast head. * @param string $format The format to return. * * @return string|array|null The output value. String if HTML was requested, array otherwise. */ protected function render_object( $head, $format = self::YOAST_HEAD_ATTRIBUTE_NAME ) { if ( $head->status === 404 ) { return null; } switch ( $format ) { case self::YOAST_HEAD_ATTRIBUTE_NAME: return $head->html; case self::YOAST_JSON_HEAD_ATTRIBUTE_NAME: return $head->json; } return null; } } src/content-type-visibility/user-interface/content-type-visibility-dismiss-new-route.php000064400000010412147206602470026016 0ustar00dismiss_notifications = $dismiss_notifications; } /** * Registers routes with WordPress. * * @return void */ public function register_routes() { $post_type_dismiss_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'post_type_dismiss_callback' ], 'permission_callback' => [ $this, 'can_dismiss' ], 'args' => [ 'postTypeName' => [ 'validate_callback' => [ $this, 'validate_post_type' ], ], ], ]; $taxonomy_dismiss_route_args = [ 'methods' => 'POST', 'callback' => [ $this, 'taxonomy_dismiss_callback' ], 'permission_callback' => [ $this, 'can_dismiss' ], 'args' => [ 'taxonomyName' => [ 'validate_callback' => [ $this, 'validate_taxonomy' ], ], ], ]; \register_rest_route( Main::API_V1_NAMESPACE, self::POST_TYPE_DISMISS_ROUTE, $post_type_dismiss_route_args ); \register_rest_route( Main::API_V1_NAMESPACE, self::TAXONOMY_DISMISS_ROUTE, $taxonomy_dismiss_route_args ); } /** * Whether or not the current user is allowed to dismiss alerts. * * @return bool Whether or not the current user is allowed to dismiss alerts. */ public function can_dismiss() { return \current_user_can( 'edit_posts' ); } /** * Validates post type. * * @param string $param The parameter. * @param WP_REST_Request $request Full details about the request. * @param string $key The key. * * @return bool */ public function validate_post_type( $param, $request, $key ) { return \post_type_exists( $param ); } /** * Wrapper method for Content_Type_Visibility_Dismiss_Notifications::post_type_dismiss(). * * @param WP_REST_Request $request The request. This request should have a key param set. * * @return WP_REST_Response The response. */ public function post_type_dismiss_callback( $request ) { $response = $this->dismiss_notifications->post_type_dismiss( $request['post_type_name'] ); return new WP_REST_Response( (object) $response, $response['status'] ); } /** * Validates taxonomy. * * @param string $param The parameter. * @param WP_REST_Request $request Full details about the request. * @param string $key The key. * * @return bool */ public function validate_taxonomy( $param, $request, $key ) { return \taxonomy_exists( $param ); } /** * Wrapper method for Content_Type_Visibility_Dismiss_Notifications::taxonomy_dismiss(). * * @param WP_REST_Request $request The request. This request should have a key param set. * * @return WP_REST_Response The response. */ public function taxonomy_dismiss_callback( WP_REST_Request $request ) { $response = $this->dismiss_notifications->taxonomy_dismiss( $request['taxonomy_name'] ); return new WP_REST_Response( (object) $response, $response['status'] ); } } src/content-type-visibility/application/content-type-visibility-dismiss-notifications.php000064400000010522147206602470026333 0ustar00options = $options; } /** * Removes New badge from a post type in the Settings, remove notifications if needed. * * @param string $post_type_name The post type name from the request. * @return array The response. */ public function post_type_dismiss( $post_type_name ) { $success = true; $message = \__( 'Post type is not new.', 'wordpress-seo' ); $post_types_needs_review = $this->options->get( 'new_post_types', [] ); if ( $post_types_needs_review && \in_array( $post_type_name, $post_types_needs_review, true ) ) { $new_needs_review = \array_diff( $post_types_needs_review, [ $post_type_name ] ); $success = $this->options->set( 'new_post_types', $new_needs_review ); $message = ( $success ) ? \__( 'Post type is no longer new.', 'wordpress-seo' ) : \__( 'Error: Post type was not removed from new_post_types list.', 'wordpress-seo' ); if ( $success ) { $this->maybe_dismiss_notifications( [ 'new_post_types' => $new_needs_review ] ); } } $status = ( $success ) ? 200 : 400; return [ 'message' => $message, 'success' => $success, 'status' => $status, ]; } /** * Removes New badge from a taxonomy in the Settings, remove notifications if needed. * * @param string $taxonomy_name The taxonomy name from the request. * @return array The response. */ public function taxonomy_dismiss( $taxonomy_name ) { $success = true; $message = \__( 'Taxonomy is not new.', 'wordpress-seo' ); $taxonomies_needs_review = $this->options->get( 'new_taxonomies', [] ); if ( \in_array( $taxonomy_name, $taxonomies_needs_review, true ) ) { $new_needs_review = \array_diff( $taxonomies_needs_review, [ $taxonomy_name ] ); $success = $this->options->set( 'new_taxonomies', $new_needs_review ); $message = ( $success ) ? \__( 'Taxonomy is no longer new.', 'wordpress-seo' ) : \__( 'Error: Taxonomy was not removed from new_taxonomies list.', 'wordpress-seo' ); if ( $success ) { $this->maybe_dismiss_notifications( [ 'new_taxonomies' => $new_needs_review ] ); } } $status = ( $success ) ? 200 : 400; return [ 'message' => $message, 'success' => $success, 'status' => $status, ]; } /** * Checks if there are new content types or taxonomies. * * @param array $new_content_types The new content types. * @return void */ public function maybe_dismiss_notifications( $new_content_types = [] ) { $post_types_needs_review = ( \array_key_exists( 'new_post_types', $new_content_types ) ) ? $new_content_types['new_post_types'] : $this->options->get( 'new_post_types', [] ); $taxonomies_needs_review = ( \array_key_exists( 'new_taxonomies', $new_content_types ) ) ? $new_content_types['new_taxonomies'] : $this->options->get( 'new_taxonomies', [] ); if ( $post_types_needs_review || $taxonomies_needs_review ) { return; } $this->dismiss_notifications(); } /** * Dismisses the notification in the notification center when there are no more new content types. * * @return bool */ public function dismiss_notifications() { $notification_center = Yoast_Notification_Center::get(); $notification_center->remove_notification_by_id( 'content-types-made-public' ); return $this->options->set( 'show_new_content_type_notification', false ); } /** * Check if there is a new content type to show notification only once in the settings. * * @return bool Should the notification be shown. */ public function maybe_add_settings_notification() { $show_new_content_type_notification = $this->options->get( 'show_new_content_type_notification', false ); if ( $show_new_content_type_notification ) { $this->options->set( 'show_new_content_type_notification', false ); } return $show_new_content_type_notification; } } src/content-type-visibility/application/content-type-visibility-watcher-actions.php000064400000013752147206602470025114 0ustar00options = $options; $this->notification_center = $notification_center; $this->content_type_dismiss_notifications = $content_type_dismiss_notifications; } /** * Returns the conditionals based on which this loadable should be active. * * @return array */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * Register actions that are used in the post types and taxonomies indexable watcher. * * @return void */ public function register_hooks() { // Used in Idexable_Post_Type_Change_Watcher class. \add_action( 'new_public_post_type_notifications', [ $this, 'new_post_type' ], 10, 1 ); \add_action( 'clean_new_public_post_type_notifications', [ $this, 'clean_new_public_post_type' ], 10, 1 ); // Used in Idexable_Taxonomy_Change_Watcher class. \add_action( 'new_public_taxonomy_notifications', [ $this, 'new_taxonomy' ], 10, 1 ); \add_action( 'clean_new_public_taxonomy_notifications', [ $this, 'clean_new_public_taxonomy' ], 10, 1 ); } /** * Update db and tigger notification when a new post type is registered. * * @param array $newly_made_public_post_types The newly made public post types. * @return void */ public function new_post_type( $newly_made_public_post_types ) { $this->options->set( 'new_post_types', $newly_made_public_post_types ); $this->options->set( 'show_new_content_type_notification', true ); $this->maybe_add_notification(); } /** * Update db when a post type is made removed. * * @param array $newly_made_non_public_post_types The newly made non public post types. * @return void */ public function clean_new_public_post_type( $newly_made_non_public_post_types ) { // See if post types that needs review were removed and update option. $needs_review = $this->options->get( 'new_post_types', [] ); $new_needs_review = \array_diff( $needs_review, $newly_made_non_public_post_types ); if ( \count( $new_needs_review ) !== \count( $needs_review ) ) { $this->options->set( 'new_post_types', $new_needs_review ); $this->content_type_dismiss_notifications->maybe_dismiss_notifications( [ 'new_post_types' => $new_needs_review ] ); } } /** * Update db and tigger notification when a new taxonomy is registered. * * @param array $newly_made_public_taxonomies The newly made public post types. * @return void */ public function new_taxonomy( $newly_made_public_taxonomies ) { $this->options->set( 'new_taxonomies', $newly_made_public_taxonomies ); $this->options->set( 'show_new_content_type_notification', true ); $this->maybe_add_notification(); } /** * Update db when a post type is made removed. * * @param array $newly_made_non_public_taxonomies The newly made non public post types. * @return void */ public function clean_new_public_taxonomy( $newly_made_non_public_taxonomies ) { // See if post types that needs review were removed and update option. $needs_review = $this->options->get( 'new_taxonomies', [] ); $new_needs_review = \array_diff( $needs_review, $newly_made_non_public_taxonomies ); if ( \count( $new_needs_review ) !== \count( $needs_review ) ) { $this->options->set( 'new_taxonomies', $new_needs_review ); $this->content_type_dismiss_notifications->maybe_dismiss_notifications( [ 'new_taxonomies' => $new_needs_review ] ); } } /** * Decides if a notification should be added in the notification center. * * @return void */ public function maybe_add_notification() { $notification = $this->notification_center->get_notification_by_id( 'content-types-made-public' ); if ( \is_null( $notification ) ) { $this->add_notification(); } } /** * Adds a notification to be shown on the next page request since posts are updated in an ajax request. * * @return void */ private function add_notification() { $message = \sprintf( /* translators: 1: Opening tag of the link to the Search appearance settings page, 2: Link closing tag. */ \esc_html__( 'You\'ve added a new type of content. We recommend that you review the corresponding %1$sSearch appearance settings%2$s.', 'wordpress-seo' ), '', '' ); $notification = new Yoast_Notification( $message, [ 'type' => Yoast_Notification::WARNING, 'id' => 'content-types-made-public', 'capabilities' => 'wpseo_manage_options', 'priority' => 0.8, ] ); $this->notification_center->add_notification( $notification ); } } src/promotions/application/promotion-manager-interface.php000064400000000773147206602470020173 0ustar00 */ private $promotions_list = []; /** * Class constructor. * * @param Promotion_Interface ...$promotions List of promotions. */ public function __construct( Promotion_Interface ...$promotions ) { $this->promotions_list = $promotions; } /** * Whether the promotion is effective. * * @param string $promotion_name The name of the promotion. * * @return bool Whether the promotion is effective. */ public function is( string $promotion_name ): bool { $time = \time(); foreach ( $this->promotions_list as $promotion ) { if ( $promotion->get_promotion_name() === $promotion_name ) { return $promotion->get_time_interval()->contains( $time ); } } return false; } /** * Get the list of promotions. * * @return array The list of promotions. */ public function get_promotions_list(): array { return $this->promotions_list; } /** * Get the names of currently active promotions. * * @return array The list of promotions. */ public function get_current_promotions(): array { $current_promotions = []; $time = \time(); foreach ( $this->promotions_list as $promotion ) { if ( $promotion->get_time_interval()->contains( $time ) ) { $current_promotions[] = $promotion->get_promotion_name(); } } return $current_promotions; } } src/promotions/domain/promotion-interface.php000064400000000171147206602470015517 0ustar00promotion_name = $promotion_name; $this->time_interval = $time_interval; } /** * Returns the promotion name. * * @return string */ public function get_promotion_name() { return $this->promotion_name; } /** * Returns the time interval in which the promotion is active. * * @return Time_Interval */ public function get_time_interval() { return $this->time_interval; } } src/promotions/domain/black-friday-promotion.php000064400000000654147206602470016115 0ustar00time_start = $time_start; $this->time_end = $time_end; } /** * Checks if the given time is within the interval. * * @param int $time The time to check. * * @return bool Whether the given time is within the interval. */ public function contains( int $time ): bool { return ( ( $time > $this->time_start ) && ( $time < $this->time_end ) ); } /** * Sets the interval astarting date. * * @param int $time_start The interval start time. * * @return void */ public function set_start_date( int $time_start ) { $this->time_start = $time_start; } /** * Sets the interval ending date. * * @param int $time_end The interval end time. * * @return void */ public function set_end_date( int $time_end ) { $this->time_end = $time_end; } } src/promotions/domain/black-friday-checklist-promotion.php000064400000000713147206602470020060 0ustar00get_base_robots(); $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } return $this->options->get_title_default( 'title-404-wpseo' ); } } src/presentations/indexable-post-type-presentation.php000064400000024645147206602470017373 0ustar00post_type = $post_type; $this->date = $date; $this->pagination = $pagination; $this->post = $post; } /** * Generates the canonical. * * @return string The canonical. */ public function generate_canonical() { if ( $this->model->canonical ) { return $this->model->canonical; } $permalink = $this->permalink; // Fix paginated pages canonical, but only if the page is truly paginated. $current_page = $this->pagination->get_current_post_page_number(); if ( $current_page > 1 ) { $number_of_pages = $this->model->number_of_pages; if ( $number_of_pages && $current_page <= $number_of_pages ) { $permalink = $this->get_paginated_url( $permalink, $current_page ); } } return $this->url->ensure_absolute_url( $permalink ); } /** * Generates the rel prev. * * @return string The rel prev value. */ public function generate_rel_prev() { if ( $this->model->number_of_pages === null ) { return ''; } if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_post_page_number() ); // Check if there is a previous page. if ( $current_page < 2 ) { return ''; } // Check if the previous page is the first page. if ( $current_page === 2 ) { return $this->model->permalink; } return $this->get_paginated_url( $this->model->permalink, ( $current_page - 1 ) ); } /** * Generates the rel next. * * @return string The rel prev next. */ public function generate_rel_next() { if ( $this->model->number_of_pages === null ) { return ''; } if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_post_page_number() ); if ( $this->model->number_of_pages <= $current_page ) { return ''; } return $this->get_paginated_url( $this->model->permalink, ( $current_page + 1 ) ); } /** * Generates the open graph title. * * @return string The open graph title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } // Get SEO title as entered in Search appearance. $post_type = $this->model->object_sub_type; $title = $this->options->get( 'title-' . $this->model->object_sub_type ); if ( $title ) { return $title; } // Get installation default title. return $this->options->get_title_default( 'title-' . $post_type ); } /** * Generates the meta description. * * @return string The meta description. */ public function generate_meta_description() { if ( $this->model->description ) { return $this->model->description; } return $this->options->get( 'metadesc-' . $this->model->object_sub_type ); } /** * Generates the open graph description. * * @return string The open graph description. */ public function generate_open_graph_description() { if ( $this->model->open_graph_description ) { $open_graph_description = $this->model->open_graph_description; } if ( empty( $open_graph_description ) ) { // The helper applies a filter, but we don't have a default value at this stage so we pass an empty string. $open_graph_description = $this->values_helper->get_open_graph_description( '', $this->model->object_type, $this->model->object_sub_type ); } if ( empty( $open_graph_description ) ) { $open_graph_description = $this->meta_description; } if ( empty( $open_graph_description ) ) { $open_graph_description = $this->post->get_the_excerpt( $this->model->object_id ); $open_graph_description = $this->post->strip_shortcodes( $open_graph_description ); } return $open_graph_description; } /** * Generates the open graph images. * * @return array The open graph images. */ public function generate_open_graph_images() { if ( \post_password_required() ) { return []; } return parent::generate_open_graph_images(); } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'article'; } /** * Generates the open graph article author. * * @return string The open graph article author. */ public function generate_open_graph_article_author() { if ( $this->model->object_sub_type !== 'post' ) { return ''; } $post = $this->source; $open_graph_article_author = $this->user->get_the_author_meta( 'facebook', $post->post_author ); if ( $open_graph_article_author ) { return $open_graph_article_author; } return ''; } /** * Generates the open graph article publisher. * * @return string The open graph article publisher. */ public function generate_open_graph_article_publisher() { $open_graph_article_publisher = $this->context->open_graph_publisher; if ( $open_graph_article_publisher ) { return $open_graph_article_publisher; } return ''; } /** * Generates the open graph article published time. * * @return string The open graph article published time. */ public function generate_open_graph_article_published_time() { if ( $this->model->object_sub_type !== 'post' ) { /** * Filter: 'wpseo_opengraph_show_publish_date' - Allow showing publication date for other post types. * * @param bool $show Whether or not to show publish date. * @param string $post_type The current URL's post type. */ if ( ! \apply_filters( 'wpseo_opengraph_show_publish_date', false, $this->post->get_post_type( $this->source ) ) ) { return ''; } } return $this->date->format( $this->source->post_date_gmt ); } /** * Generates the open graph article modified time. * * @return string The open graph article modified time. */ public function generate_open_graph_article_modified_time() { if ( $this->source->post_modified_gmt !== $this->source->post_date_gmt ) { return $this->date->format( $this->source->post_modified_gmt ); } return ''; } /** * Generates the source. * * @return array The source. */ public function generate_source() { return \get_post( $this->model->object_id ); } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); $robots = \array_merge( $robots, [ 'imageindex' => ( $this->model->is_robots_noimageindex === true ) ? 'noimageindex' : null, 'archive' => ( $this->model->is_robots_noarchive === true ) ? 'noarchive' : null, 'snippet' => ( $this->model->is_robots_nosnippet === true ) ? 'nosnippet' : null, ] ); // No snippet means max snippet can be omitted. if ( $this->model->is_robots_nosnippet === true ) { $robots['max-snippet'] = null; } // No image index means max image preview can be omitted. if ( $this->model->is_robots_noimageindex === true ) { $robots['max-image-preview'] = null; } // When the post specific index is not set, look to the post status and default of the post type. if ( $this->model->is_robots_noindex === null ) { $post_status_private = \get_post_status( $this->model->object_id ) === 'private'; $post_type_noindex = ! $this->post_type->is_indexable( $this->model->object_sub_type ); if ( $post_status_private || $post_type_noindex ) { $robots['index'] = 'noindex'; } } return $this->filter_robots( $robots ); } /** * Generates the Twitter description. * * @return string The Twitter description. */ public function generate_twitter_description() { $twitter_description = parent::generate_twitter_description(); if ( $twitter_description ) { return $twitter_description; } if ( $this->open_graph_description && $this->context->open_graph_enabled === true ) { return ''; } return $this->post->get_the_excerpt( $this->model->object_id ); } /** * Generates the Twitter image. * * @return string The Twitter image. */ public function generate_twitter_image() { if ( \post_password_required() ) { return ''; } return parent::generate_twitter_image(); } /** * Generates the Twitter creator. * * @return string The Twitter creator. */ public function generate_twitter_creator() { if ( $this->model->object_sub_type !== 'post' ) { return ''; } $twitter_creator = \ltrim( \trim( \get_the_author_meta( 'twitter', $this->source->post_author ) ), '@' ); /** * Filter: 'wpseo_twitter_creator_account' - Allow changing the X account as output in the X card by Yoast SEO. * * @param string $twitter The twitter account name string. */ $twitter_creator = \apply_filters( 'wpseo_twitter_creator_account', $twitter_creator ); if ( \is_string( $twitter_creator ) && $twitter_creator !== '' ) { return '@' . $twitter_creator; } $site_twitter = $this->options->get( 'twitter_site', '' ); if ( \is_string( $site_twitter ) && $site_twitter !== '' ) { return '@' . $site_twitter; } return ''; } /** * Wraps the get_paginated_url pagination helper method. * * @codeCoverageIgnore A wrapper method. * * @param string $url The un-paginated URL of the current archive. * @param string $page The page number to add on to $url for the $link tag. * * @return string The paginated URL. */ protected function get_paginated_url( $url, $page ) { return $this->pagination->get_paginated_url( $url, $page, false ); } } src/presentations/indexable-home-page-presentation.php000064400000002300147206602470017251 0ustar00model->canonical ) { return $this->model->canonical; } if ( ! $this->permalink ) { return ''; } $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $this->permalink, $current_page ); } return $this->permalink; } /** * Generates the meta description. * * @return string The meta description. */ public function generate_meta_description() { if ( $this->model->description ) { return $this->model->description; } return $this->options->get( 'metadesc-home-wpseo' ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } return $this->options->get_title_default( 'title-home-wpseo' ); } } src/presentations/indexable-term-archive-presentation.php000064400000012312147206602470020001 0ustar00wp_query_wrapper = $wp_query_wrapper; $this->taxonomy = $taxonomy; } /** * Generates the canonical. * * @return string The canonical. */ public function generate_canonical() { if ( $this->is_multiple_terms_query() ) { return ''; } if ( $this->model->canonical ) { return $this->model->canonical; } if ( ! $this->permalink ) { return ''; } $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $this->permalink, $current_page ); } return $this->permalink; } /** * Generates the meta description. * * @return string The meta description. */ public function generate_meta_description() { if ( $this->model->description ) { return $this->model->description; } return $this->options->get( 'metadesc-tax-' . $this->model->object_sub_type ); } /** * Generates the source. * * @return array The source. */ public function generate_source() { if ( ! empty( $this->model->object_id ) || \is_null( \get_queried_object() ) ) { return \get_term( $this->model->object_id, $this->model->object_sub_type ); } return \get_term( \get_queried_object()->term_id, \get_queried_object()->taxonomy ); } /** * Generates the Open Graph description. * * @return string The Open Graph description. */ public function generate_open_graph_description() { $open_graph_description = parent::generate_open_graph_description(); if ( $open_graph_description ) { return $open_graph_description; } return $this->taxonomy->get_term_description( $this->model->object_id ); } /** * Generates the Twitter description. * * @return string The Twitter description. */ public function generate_twitter_description() { $twitter_description = parent::generate_twitter_description(); if ( $twitter_description ) { return $twitter_description; } if ( $this->open_graph_description && $this->context->open_graph_enabled === true ) { return ''; } return $this->taxonomy->get_term_description( $this->model->object_id ); } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); /** * If its a multiple terms archive page return a noindex. */ if ( $this->current_page->is_multiple_terms_page() ) { $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } /** * First we get the no index option for this taxonomy, because it can be overwritten the indexable value for * this specific term. */ if ( \is_wp_error( $this->source ) || ! $this->taxonomy->is_indexable( $this->source->taxonomy ) ) { $robots['index'] = 'noindex'; } /** * Overwrite the index directive when there is a term specific directive set. */ if ( $this->model->is_robots_noindex !== null ) { $robots['index'] = ( $this->model->is_robots_noindex ) ? 'noindex' : 'index'; } return $this->filter_robots( $robots ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } if ( \is_wp_error( $this->source ) ) { return $this->model->title; } // Get the SEO title as entered in Search Appearance. $title = $this->options->get( 'title-tax-' . $this->source->taxonomy ); if ( $title ) { return $title; } // Get the installation default title. $title = $this->options->get_title_default( 'title-tax-' . $this->source->taxonomy ); return $title; } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'article'; } /** * Checks if term archive query is for multiple terms (/term-1,term-2/ or /term-1+term-2/). * * @return bool Whether the query contains multiple terms. */ protected function is_multiple_terms_query() { $query = $this->wp_query_wrapper->get_query(); if ( ! isset( $query->tax_query ) ) { return false; } if ( \is_wp_error( $this->source ) ) { return false; } $queried_terms = $query->tax_query->queried_terms; if ( empty( $queried_terms[ $this->source->taxonomy ]['terms'] ) ) { return false; } return \count( $queried_terms[ $this->source->taxonomy ]['terms'] ) > 1; } } src/presentations/indexable-static-home-page-presentation.php000064400000001411147206602470020540 0ustar00pagination->get_paginated_url( $url, $page ); } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'website'; } } src/presentations/indexable-date-archive-presentation.php000064400000005512147206602470017753 0ustar00pagination = $pagination; } /** * Generates the canonical. * * @return string The canonical. */ public function generate_canonical() { $canonical = $this->current_page->get_date_archive_permalink(); $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $canonical, $current_page ); } return $canonical; } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); if ( $this->options->get( 'noindex-archive-wpseo', false ) ) { $robots['index'] = 'noindex'; } return $this->filter_robots( $robots ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } return $this->options->get_title_default( 'title-archive-wpseo' ); } /** * Generates the rel prev. * * @return string The rel prev value. */ public function generate_rel_prev() { if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_archive_page_number() ); // Check if there is a previous page. if ( $current_page === 1 ) { return ''; } // Check if the previous page is the first page. if ( $current_page === 2 ) { return $this->current_page->get_date_archive_permalink(); } return $this->pagination->get_paginated_url( $this->current_page->get_date_archive_permalink(), ( $current_page - 1 ) ); } /** * Generates the rel next. * * @return string The rel prev next. */ public function generate_rel_next() { if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_archive_page_number() ); if ( $this->pagination->get_number_of_archive_pages() <= $current_page ) { return ''; } return $this->pagination->get_paginated_url( $this->current_page->get_date_archive_permalink(), ( $current_page + 1 ) ); } /** * Generates the open graph url. * * @return string The open graph url. */ public function generate_open_graph_url() { return $this->current_page->get_date_archive_permalink(); } } src/presentations/archive-adjacent-trait.php000064400000003235147206602470015266 0ustar00pagination = $pagination; } /** * Generates the rel prev. * * @return string */ public function generate_rel_prev() { if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_archive_page_number() ); // Check if there is a previous page. if ( $current_page === 1 ) { return ''; } // Check if the previous page is the first page. if ( $current_page === 2 ) { return $this->permalink; } return $this->pagination->get_paginated_url( $this->permalink, ( $current_page - 1 ) ); } /** * Generates the rel next. * * @return string */ public function generate_rel_next() { if ( $this->pagination->is_rel_adjacent_disabled() ) { return ''; } $current_page = \max( 1, $this->pagination->get_current_archive_page_number() ); if ( $this->pagination->get_number_of_archive_pages() <= $current_page ) { return ''; } return $this->pagination->get_paginated_url( $this->permalink, ( $current_page + 1 ) ); } } src/presentations/indexable-presentation.php000064400000046064147206602470015430 0ustar00schema_generator = $schema_generator; $this->open_graph_locale_generator = $open_graph_locale_generator; $this->open_graph_image_generator = $open_graph_image_generator; $this->twitter_image_generator = $twitter_image_generator; $this->breadcrumbs_generator = $breadcrumbs_generator; } /** * Used by dependency injection container to inject the helpers. * * @required * * @param Image_Helper $image The image helper. * @param Options_Helper $options The options helper. * @param Current_Page_Helper $current_page The current page helper. * @param Url_Helper $url The URL helper. * @param User_Helper $user The user helper. * @param Indexable_Helper $indexable The indexable helper. * @param Permalink_Helper $permalink The permalink helper. * @param Values_Helper $values The values helper. * * @return void */ public function set_helpers( Image_Helper $image, Options_Helper $options, Current_Page_Helper $current_page, Url_Helper $url, User_Helper $user, Indexable_Helper $indexable, Permalink_Helper $permalink, Values_Helper $values ) { $this->image = $image; $this->options = $options; $this->current_page = $current_page; $this->url = $url; $this->user = $user; $this->indexable_helper = $indexable; $this->permalink_helper = $permalink; $this->values_helper = $values; } /** * Gets the permalink from the indexable or generates it if dynamic permalinks are enabled. * * @return string The permalink. */ public function generate_permalink() { if ( $this->indexable_helper->dynamic_permalinks_enabled() ) { return $this->permalink_helper->get_permalink_for_indexable( $this->model ); } if ( \is_date() ) { return $this->current_page->get_date_archive_permalink(); } if ( \is_attachment() ) { global $wp; return \trailingslashit( \home_url( $wp->request ) ); } return $this->model->permalink; } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } return ''; } /** * Generates the meta description. * * @return string The meta description. */ public function generate_meta_description() { if ( $this->model->description ) { return $this->model->description; } return ''; } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); return $this->filter_robots( $robots ); } /** * Gets the base robots value. * * @return array The base robots value. */ protected function get_base_robots() { return [ 'index' => ( $this->model->is_robots_noindex === true ) ? 'noindex' : 'index', 'follow' => ( $this->model->is_robots_nofollow === true ) ? 'nofollow' : 'follow', 'max-snippet' => 'max-snippet:-1', 'max-image-preview' => 'max-image-preview:large', 'max-video-preview' => 'max-video-preview:-1', ]; } /** * Run the robots output content through the `wpseo_robots` filter. * * @param array $robots The meta robots values to filter. * * @return array The filtered meta robots values. */ protected function filter_robots( $robots ) { // Remove values that are only listened to when indexing. if ( $robots['index'] === 'noindex' ) { $robots['imageindex'] = null; $robots['archive'] = null; $robots['snippet'] = null; $robots['max-snippet'] = null; $robots['max-image-preview'] = null; $robots['max-video-preview'] = null; } $robots_string = \implode( ', ', \array_filter( $robots ) ); /** * Filter: 'wpseo_robots' - Allows filtering of the meta robots output of Yoast SEO. * * @param string $robots The meta robots directives to be echoed. * @param Indexable_Presentation $presentation The presentation of an indexable. */ $robots_filtered = \apply_filters( 'wpseo_robots', $robots_string, $this ); // Convert the robots string back to an array. if ( \is_string( $robots_filtered ) ) { $robots_values = \explode( ', ', $robots_filtered ); $robots_new = []; foreach ( $robots_values as $value ) { $key = $value; // Change `noindex` to `index. if ( \strpos( $key, 'no' ) === 0 ) { $key = \substr( $value, 2 ); } // Change `max-snippet:-1` to `max-snippet`. $colon_position = \strpos( $key, ':' ); if ( $colon_position !== false ) { $key = \substr( $value, 0, $colon_position ); } $robots_new[ $key ] = $value; } $robots = $robots_new; } if ( \is_bool( $robots_filtered ) && ( $robots_filtered === false ) ) { return [ 'index' => 'noindex', 'follow' => 'nofollow', ]; } if ( ! $robots_filtered ) { return []; } /** * Filter: 'wpseo_robots_array' - Allows filtering of the meta robots output array of Yoast SEO. * * @param array $robots The meta robots directives to be used. * @param Indexable_Presentation $presentation The presentation of an indexable. */ return \apply_filters( 'wpseo_robots_array', \array_filter( $robots ), $this ); } /** * Generates the canonical. * * @return string The canonical. */ public function generate_canonical() { if ( $this->model->canonical ) { return $this->model->canonical; } if ( $this->permalink ) { return $this->permalink; } return ''; } /** * Generates the rel prev. * * @return string The rel prev value. */ public function generate_rel_prev() { return ''; } /** * Generates the rel next. * * @return string The rel prev next. */ public function generate_rel_next() { return ''; } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'website'; } /** * Generates the open graph title. * * @return string The open graph title. */ public function generate_open_graph_title() { if ( $this->model->open_graph_title ) { $open_graph_title = $this->model->open_graph_title; } if ( empty( $open_graph_title ) ) { // The helper applies a filter, but we don't have a default value at this stage so we pass an empty string. $open_graph_title = $this->values_helper->get_open_graph_title( '', $this->model->object_type, $this->model->object_sub_type ); } if ( empty( $open_graph_title ) ) { $open_graph_title = $this->title; } return $open_graph_title; } /** * Generates the open graph description. * * @return string The open graph description. */ public function generate_open_graph_description() { if ( $this->model->open_graph_description ) { $open_graph_description = $this->model->open_graph_description; } if ( empty( $open_graph_description ) ) { // The helper applies a filter, but we don't have a default value at this stage so we pass an empty string. $open_graph_description = $this->values_helper->get_open_graph_description( '', $this->model->object_type, $this->model->object_sub_type ); } if ( empty( $open_graph_description ) ) { $open_graph_description = $this->meta_description; } return $open_graph_description; } /** * Generates the open graph images. * * @return array The open graph images. */ public function generate_open_graph_images() { if ( $this->context->open_graph_enabled === false ) { return []; } return $this->open_graph_image_generator->generate( $this->context ); } /** * Generates the open graph image ID. * * @return string The open graph image ID. */ public function generate_open_graph_image_id() { if ( $this->model->open_graph_image_id ) { return $this->model->open_graph_image_id; } return $this->values_helper->get_open_graph_image_id( 0, $this->model->object_type, $this->model->object_sub_type ); } /** * Generates the open graph image URL. * * @return string The open graph image URL. */ public function generate_open_graph_image() { if ( $this->model->open_graph_image ) { return $this->model->open_graph_image; } return $this->values_helper->get_open_graph_image( '', $this->model->object_type, $this->model->object_sub_type ); } /** * Generates the open graph url. * * @return string The open graph url. */ public function generate_open_graph_url() { if ( $this->model->canonical ) { return $this->model->canonical; } return $this->permalink; } /** * Generates the open graph article publisher. * * @return string The open graph article publisher. */ public function generate_open_graph_article_publisher() { return ''; } /** * Generates the open graph article author. * * @return string The open graph article author. */ public function generate_open_graph_article_author() { return ''; } /** * Generates the open graph article published time. * * @return string The open graph article published time. */ public function generate_open_graph_article_published_time() { return ''; } /** * Generates the open graph article modified time. * * @return string The open graph article modified time. */ public function generate_open_graph_article_modified_time() { return ''; } /** * Generates the open graph locale. * * @return string The open graph locale. */ public function generate_open_graph_locale() { return $this->open_graph_locale_generator->generate( $this->context ); } /** * Generates the open graph site name. * * @return string The open graph site name. */ public function generate_open_graph_site_name() { return $this->context->wordpress_site_name; } /** * Generates the Twitter card type. * * @return string The Twitter card type. */ public function generate_twitter_card() { return $this->context->twitter_card; } /** * Generates the Twitter title. * * @return string The Twitter title. */ public function generate_twitter_title() { if ( $this->model->twitter_title ) { return $this->model->twitter_title; } if ( $this->context->open_graph_enabled === true ) { $social_template_title = $this->values_helper->get_open_graph_title( '', $this->model->object_type, $this->model->object_sub_type ); $open_graph_title = $this->open_graph_title; // If the helper returns a value and it's different from the OG value in the indexable, // output it in a twitter: tag. if ( ! empty( $social_template_title ) && $social_template_title !== $open_graph_title ) { return $social_template_title; } // If the OG title is set, let og: tag take care of this. if ( ! empty( $open_graph_title ) ) { return ''; } } if ( $this->title ) { return $this->title; } return ''; } /** * Generates the Twitter description. * * @return string The Twitter description. */ public function generate_twitter_description() { if ( $this->model->twitter_description ) { return $this->model->twitter_description; } if ( $this->context->open_graph_enabled === true ) { $social_template_description = $this->values_helper->get_open_graph_description( '', $this->model->object_type, $this->model->object_sub_type ); $open_graph_description = $this->open_graph_description; // If the helper returns a value and it's different from the OG value in the indexable, // output it in a twitter: tag. if ( ! empty( $social_template_description ) && $social_template_description !== $open_graph_description ) { return $social_template_description; } // If the OG description is set, let og: tag take care of this. if ( ! empty( $open_graph_description ) ) { return ''; } } if ( $this->meta_description ) { return $this->meta_description; } return ''; } /** * Generates the Twitter image. * * @return string The Twitter image. */ public function generate_twitter_image() { $images = $this->twitter_image_generator->generate( $this->context ); $image = \reset( $images ); // Use a user-defined Twitter image, if present. if ( $image && $this->context->indexable->twitter_image_source === 'set-by-user' ) { return $image['url']; } // Let the Open Graph tags, if enabled, handle the rest of the fallback hierarchy. if ( $this->context->open_graph_enabled === true && $this->open_graph_images ) { return ''; } // Set a Twitter tag with the featured image, or a prominent image from the content, if present. if ( $image ) { return $image['url']; } return ''; } /** * Generates the Twitter creator. * * @return string The Twitter creator. */ public function generate_twitter_creator() { return ''; } /** * Generates the Twitter site. * * @return string The Twitter site. */ public function generate_twitter_site() { switch ( $this->context->site_represents ) { case 'person': $twitter = $this->user->get_the_author_meta( 'twitter', (int) $this->context->site_user_id ); if ( empty( $twitter ) ) { $twitter = $this->options->get( 'twitter_site' ); } break; case 'company': default: $twitter = $this->options->get( 'twitter_site' ); break; } return $twitter; } /** * Generates the source. * * @return array The source. */ public function generate_source() { return []; } /** * Generates the schema for the page. * * @codeCoverageIgnore Wrapper method. * * @return array The Schema object. */ public function generate_schema() { return $this->schema_generator->generate( $this->context ); } /** * Generates the breadcrumbs for the page. * * @codeCoverageIgnore Wrapper method. * * @return array The breadcrumbs. */ public function generate_breadcrumbs() { return $this->breadcrumbs_generator->generate( $this->context ); } /** * Generates the estimated reading time. * * @codeCoverageIgnore Wrapper method. * * @return int|null The estimated reading time. */ public function generate_estimated_reading_time_minutes() { if ( $this->model->estimated_reading_time_minutes !== null ) { return $this->model->estimated_reading_time_minutes; } if ( $this->context->post === null ) { return null; } // 200 is the approximate estimated words per minute across languages. $words_per_minute = 200; $words = \str_word_count( \wp_strip_all_tags( $this->context->post->post_content ) ); return (int) \round( $words / $words_per_minute ); } /** * Strips all nested dependencies from the debug info. * * @return array */ public function __debugInfo() { return [ 'model' => $this->model, 'context' => $this->context, ]; } } src/presentations/indexable-post-type-archive-presentation.php000064400000002715147206602470021004 0ustar00permalink; if ( ! $permalink ) { return ''; } $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $permalink, $current_page ); } return $permalink; } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); if ( $this->options->get( 'noindex-ptarchive-' . $this->model->object_sub_type, false ) ) { $robots['index'] = 'noindex'; } return $this->filter_robots( $robots ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } $post_type = $this->model->object_sub_type; $title = $this->options->get_title_default( 'title-ptarchive-' . $post_type ); return $title; } /** * Generates the source. * * @return array The source. */ public function generate_source() { return [ 'post_type' => $this->model->object_sub_type ]; } } src/presentations/indexable-static-posts-page-presentation.php000064400000001721147206602470020764 0ustar00model->canonical ) { return $this->model->canonical; } $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $this->permalink, $current_page ); } return $this->permalink; } /** * Generates the Open Graph URL. * * @return string The Open Graph URL. */ public function generate_open_graph_url() { return $this->permalink; } } src/presentations/indexable-search-result-page-presentation.php000064400000002635147206602470021115 0ustar00get_base_robots(); $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } return $this->options->get_title_default( 'title-search-wpseo' ); } /** * Generates the Twitter title. * * @return string The Twitter title. */ public function generate_twitter_title() { return $this->title; } /** * Generates the Open Graph URL. * * @return string The Open Graph URL. */ public function generate_open_graph_url() { $search_query = \get_search_query(); // Regex catches case when /search/page/N without search term is itself mistaken for search term. if ( ! empty( $search_query ) && ! \preg_match( '|^page/\d+$|', $search_query ) ) { return \get_search_link(); } return ''; } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'article'; } } src/presentations/indexable-author-archive-presentation.php000064400000010327147206602470020340 0ustar00post_type = $post_type; $this->author_archive = $author_archive; } /** * Generates the canonical. * * @return string The canonical. */ public function generate_canonical() { if ( $this->model->canonical ) { return $this->model->canonical; } if ( ! $this->permalink ) { return ''; } $current_page = $this->pagination->get_current_archive_page_number(); if ( $current_page > 1 ) { return $this->pagination->get_paginated_url( $this->permalink, $current_page ); } return $this->permalink; } /** * Generates the title. * * @return string The title. */ public function generate_title() { if ( $this->model->title ) { return $this->model->title; } $option_titles_key = 'title-author-wpseo'; $title = $this->options->get( $option_titles_key ); if ( $title ) { return $title; } return $this->options->get_title_default( $option_titles_key ); } /** * Generates the meta description. * * @return string The meta description. */ public function generate_meta_description() { if ( $this->model->description ) { return $this->model->description; } $option_titles_key = 'metadesc-author-wpseo'; $description = $this->options->get( $option_titles_key ); if ( $description ) { return $description; } return $this->options->get_title_default( $option_titles_key ); } /** * Generates the robots value. * * @return array The robots value. */ public function generate_robots() { $robots = $this->get_base_robots(); // Global option: "Show author archives in search results". if ( $this->options->get( 'noindex-author-wpseo', false ) ) { $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } $current_author = \get_userdata( $this->model->object_id ); // Safety check. The call to `get_user_data` could return false (called in `get_queried_object`). if ( $current_author === false ) { $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } $author_archive_post_types = $this->author_archive->get_author_archive_post_types(); // Global option: "Show archives for authors without posts in search results". if ( $this->options->get( 'noindex-author-noposts-wpseo', false ) && $this->user->count_posts( $current_author->ID, $author_archive_post_types ) === 0 ) { $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } // User option: "Do not allow search engines to show this author's archives in search results". if ( $this->user->get_meta( $current_author->ID, 'wpseo_noindex_author', true ) === 'on' ) { $robots['index'] = 'noindex'; return $this->filter_robots( $robots ); } return $this->filter_robots( $robots ); } /** * Generates the Open Graph type. * * @return string The Open Graph type. */ public function generate_open_graph_type() { return 'profile'; } /** * Generates the open graph images. * * @return array The open graph images. */ public function generate_open_graph_images() { if ( $this->context->open_graph_enabled === false ) { return []; } return $this->open_graph_image_generator->generate_for_author_archive( $this->context ); } /** * Generates the source. * * @return array The source. */ public function generate_source() { return [ 'post_author' => $this->model->object_id ]; } } src/presentations/abstract-presentation.php000064400000004530147206602470015270 0ustar00is_prototype() ) { throw new Exception( 'Attempting to create a model presentation from another model presentation. Use the prototype presentation gained from DI instead.' ); } // Clone self to allow stateful services that do benefit from DI. $presentation = clone $this; foreach ( $data as $key => $value ) { $presentation->{$key} = $value; } $presentation->is_prototype = false; return $presentation; } /** * Magic getter for lazy loading of generate functions. * * @param string $name The property to get. * * @return mixed The value if it could be generated. * * @throws Exception If there is no generator for the property. */ public function __get( $name ) { if ( $this->is_prototype() ) { throw new Exception( 'Attempting property access on prototype presentation. Use Presentation::of( $data ) to get a model presentation.' ); } $generator = "generate_$name"; if ( \method_exists( $this, $generator ) ) { $this->{$name} = $this->$generator(); return $this->{$name}; } throw new Exception( "Property $name has no generator. Expected function $generator." ); } /** * Magic isset for ensuring methods that have a generator are recognised. * * @codeCoverageIgnore Wrapper method. * * @param string $name The property to get. * * @return bool Whether or not there is a generator for the requested property. */ public function __isset( $name ) { return \method_exists( $this, "generate_$name" ); } /** * Returns `true` if this class is a prototype. * * @codeCoverageIgnore Wrapper method. * * @return bool If this class is a prototype or not. */ protected function is_prototype() { return $this->is_prototype; } } src/helpers/aioseo-helper.php000064400000002367147206602470012262 0ustar00wpdb = $wpdb; $this->wpdb_helper = $wpdb_helper; } /** * Retrieves the AIOSEO table name along with the db prefix. * * @return string The AIOSEO table name along with the db prefix. */ public function get_table() { return $this->wpdb->prefix . 'aioseo_posts'; } /** * Determines if the AIOSEO database table exists. * * @return bool True if the table is found. */ public function aioseo_exists() { return $this->wpdb_helper->table_exists( $this->get_table() ) === true; } /** * Retrieves the option where the global settings exist. * * @return array The option where the global settings exist. */ public function get_global_option() { return \json_decode( \get_option( 'aioseo_options', '' ), true ); } } src/helpers/import-helper.php000064400000001314147206602470012304 0ustar00 $value ) { if ( \is_array( $value ) ) { $result = \array_merge( $result, $this->flatten_settings( $value, $key_prefix . '/' . $key ) ); } else { $result[ $key_prefix . '/' . $key ] = $value; } } return $result; } } src/helpers/site-helper.php000064400000001066147206602470011742 0ustar00get_wp_environment() === 'production'; } /** * Determines on which environment WordPress is running. * * @return string The current WordPress environment. */ public function get_wp_environment() { return \wp_get_environment_type(); } } src/helpers/require-file-helper.php000064400000000461147206602470013365 0ustar00options = $options; $this->string = $string_helper; } /** * Checks if the requested term is indexable. * * @param string $taxonomy The taxonomy slug. * * @return bool True when taxonomy is set to index. */ public function is_indexable( $taxonomy ) { return ! $this->options->get( 'noindex-tax-' . $taxonomy, false ); } /** * Returns an array with the public taxonomies. * * @param string $output The output type to use. * * @return string[]|WP_Taxonomy[] Array with all the public taxonomies. * The type depends on the specified output variable. */ public function get_public_taxonomies( $output = 'names' ) { return \get_taxonomies( [ 'public' => true ], $output ); } /** * Retrieves the term description (without tags). * * @param int $term_id Term ID. * * @return string Term description (without tags). */ public function get_term_description( $term_id ) { return $this->string->strip_all_tags( \term_description( $term_id ) ); } /** * Retrieves the taxonomy term's meta values. * * @codeCoverageIgnore We have to write test when this method contains own code. * * @param WP_Term $term Term to get the meta value for. * * @return array|bool Array of all the meta data for the term. * False if the term does not exist or the $meta provided is invalid. */ public function get_term_meta( $term ) { return WPSEO_Taxonomy_Meta::get_term_meta( $term, $term->taxonomy, null ); } /** * Gets the passed taxonomy's slug. * * @param string $taxonomy The name of the taxonomy. * * @return string The slug for the taxonomy. Returns the taxonomy's name if no slug could be found. */ public function get_taxonomy_slug( $taxonomy ) { $taxonomy_object = \get_taxonomy( $taxonomy ); if ( $taxonomy_object && \property_exists( $taxonomy_object, 'rewrite' ) && \is_array( $taxonomy_object->rewrite ) && isset( $taxonomy_object->rewrite['slug'] ) ) { return $taxonomy_object->rewrite['slug']; } return \strtolower( $taxonomy_object->name ); } /** * Returns an array with the custom taxonomies. * * @param string $output The output type to use. * * @return string[]|WP_Taxonomy[] Array with all the custom taxonomies. * The type depends on the specified output variable. */ public function get_custom_taxonomies( $output = 'names' ) { return \get_taxonomies( [ '_builtin' => false ], $output ); } /** * Returns an array of taxonomies that are excluded from being indexed for the * indexables. * * @return array The excluded taxonomies. */ public function get_excluded_taxonomies_for_indexables() { /** * Filter: 'wpseo_indexable_excluded_taxonomies' - Allow developers to prevent a certain taxonomy * from being saved to the indexable table. * * @param array $excluded_taxonomies The currently excluded taxonomies. */ $excluded_taxonomies = \apply_filters( 'wpseo_indexable_excluded_taxonomies', [] ); // Failsafe, to always make sure that `excluded_taxonomies` is an array. if ( ! \is_array( $excluded_taxonomies ) ) { return []; } return $excluded_taxonomies; } /** * Checks if the taxonomy is excluded. * * @param string $taxonomy The taxonomy to check. * * @return bool If the taxonomy is excluded. */ public function is_excluded( $taxonomy ) { return \in_array( $taxonomy, $this->get_excluded_taxonomies_for_indexables(), true ); } /** * This builds a list of indexable taxonomies. * * @return array The indexable taxonomies. */ public function get_indexable_taxonomies() { $public_taxonomies = $this->get_public_taxonomies(); $excluded_taxonomies = $this->get_excluded_taxonomies_for_indexables(); // `array_values`, to make sure that the keys are reset. return \array_values( \array_diff( $public_taxonomies, $excluded_taxonomies ) ); } /** * Returns an array of complete taxonomy objects for all indexable taxonomies. * * @return array List of indexable indexables objects. */ public function get_indexable_taxonomy_objects() { $taxonomy_objects = []; $indexable_taxonomies = $this->get_indexable_taxonomies(); foreach ( $indexable_taxonomies as $taxonomy ) { $taxonomy_object = \get_taxonomy( $taxonomy ); if ( ! empty( $taxonomy_object ) ) { $taxonomy_objects[ $taxonomy ] = $taxonomy_object; } } return $taxonomy_objects; } } src/helpers/url-helper.php000064400000020253147206602470011577 0ustar00get_url_path( $url ); if ( $path === '' ) { return ''; } $parts = \explode( '.', $path ); if ( empty( $parts ) || \count( $parts ) === 1 ) { return ''; } return \end( $parts ); } /** * Ensures that the given url is an absolute url. * * @param string $url The url that needs to be absolute. * * @return string The absolute url. */ public function ensure_absolute_url( $url ) { if ( ! \is_string( $url ) || $url === '' ) { return $url; } if ( $this->is_relative( $url ) === true ) { return $this->build_absolute_url( $url ); } return $url; } /** * Parse the home URL setting to find the base URL for relative URLs. * * @param string|null $path Optional path string. * * @return string */ public function build_absolute_url( $path = null ) { $path = \wp_parse_url( $path, \PHP_URL_PATH ); $url_parts = \wp_parse_url( \home_url() ); $base_url = \trailingslashit( $url_parts['scheme'] . '://' . $url_parts['host'] ); if ( ! \is_null( $path ) ) { $base_url .= \ltrim( $path, '/' ); } return $base_url; } /** * Returns the link type. * * @param array $url The URL, as parsed by wp_parse_url. * @param array|null $home_url Optional. The home URL, as parsed by wp_parse_url. Used to avoid reparsing the home_url. * @param bool $is_image Whether or not the link is an image. * * @return string The link type. */ public function get_link_type( $url, $home_url = null, $is_image = false ) { // If there is no scheme and no host the link is always internal. // Beware, checking just the scheme isn't enough as a link can be //yoast.com for instance. if ( empty( $url['scheme'] ) && empty( $url['host'] ) ) { return ( $is_image ) ? SEO_Links::TYPE_INTERNAL_IMAGE : SEO_Links::TYPE_INTERNAL; } // If there is a scheme but it's not http(s) then the link is always external. if ( \array_key_exists( 'scheme', $url ) && ! \in_array( $url['scheme'], [ 'http', 'https' ], true ) ) { return ( $is_image ) ? SEO_Links::TYPE_EXTERNAL_IMAGE : SEO_Links::TYPE_EXTERNAL; } if ( \is_null( $home_url ) ) { $home_url = \wp_parse_url( \home_url() ); } // When the base host is equal to the host. if ( isset( $url['host'] ) && $url['host'] !== $home_url['host'] ) { return ( $is_image ) ? SEO_Links::TYPE_EXTERNAL_IMAGE : SEO_Links::TYPE_EXTERNAL; } // There is no base path and thus all URLs of the same domain are internal. if ( empty( $home_url['path'] ) ) { return ( $is_image ) ? SEO_Links::TYPE_INTERNAL_IMAGE : SEO_Links::TYPE_INTERNAL; } // When there is a path and it matches the start of the url. if ( isset( $url['path'] ) && \strpos( $url['path'], $home_url['path'] ) === 0 ) { return ( $is_image ) ? SEO_Links::TYPE_INTERNAL_IMAGE : SEO_Links::TYPE_INTERNAL; } return ( $is_image ) ? SEO_Links::TYPE_EXTERNAL_IMAGE : SEO_Links::TYPE_EXTERNAL; } /** * Recreate current URL. * * @param bool $with_request_uri Whether we want the REQUEST_URI appended. * * @return string */ public function recreate_current_url( $with_request_uri = true ) { $current_url = 'http'; if ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ) { $current_url .= 's'; } $current_url .= '://'; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- We know this is scary. $suffix = ( $with_request_uri && isset( $_SERVER['REQUEST_URI'] ) ) ? $_SERVER['REQUEST_URI'] : ''; if ( isset( $_SERVER['SERVER_NAME'] ) && ! empty( $_SERVER['SERVER_NAME'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- We know this is scary. $server_name = $_SERVER['SERVER_NAME']; } else { // Early return with just the path. return $suffix; } $server_port = ''; if ( isset( $_SERVER['SERVER_PORT'] ) && $_SERVER['SERVER_PORT'] !== '80' && $_SERVER['SERVER_PORT'] !== '443' ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- We know this is scary. $server_port = $_SERVER['SERVER_PORT']; } if ( ! empty( $server_port ) ) { $current_url .= $server_name . ':' . $server_port . $suffix; } else { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- We know this is scary. $current_url .= $server_name . $suffix; } return $current_url; } /** * Parses a URL and returns its components, this wrapper function was created to support unit tests. * * @param string $parsed_url The URL to parse. * @return array The parsed components of the URL. */ public function parse_str_params( $parsed_url ) { $array = []; // @todo parse_str changes spaces in param names into `_`, we should find a better way to support them. \wp_parse_str( $parsed_url, $array ); return $array; } } src/helpers/post-helper.php000064400000012666147206602470011773 0ustar00string = $string_helper; $this->post_type = $post_type_helper; } /** * Sets the indexable repository. Done to avoid circular dependencies. * * @required * * @param Indexable_Repository $repository The indexable repository. * * @return void */ public function set_indexable_repository( Indexable_Repository $repository ) { $this->repository = $repository; } /** * Removes all shortcode tags from the given content. * * @codeCoverageIgnore It only wraps a WordPress function. * * @param string $content Content to remove all the shortcode tags from. * * @return string Content without shortcode tags. */ public function strip_shortcodes( $content ) { return \strip_shortcodes( $content ); } /** * Retrieves the post excerpt (without tags). * * @codeCoverageIgnore It only wraps another helper method. * * @param int $post_id Post ID. * * @return string Post excerpt (without tags). */ public function get_the_excerpt( $post_id ) { return $this->string->strip_all_tags( \get_the_excerpt( $post_id ) ); } /** * Retrieves the post type of the current post. * * @codeCoverageIgnore It only wraps a WordPress function. * * @param WP_Post|null $post The post. * * @return string|false Post type on success, false on failure. */ public function get_post_type( $post = null ) { return \get_post_type( $post ); } /** * Retrieves the post title with fallback to `No title`. * * @param int $post_id Optional. Post ID. * * @return string The post title with fallback to `No title`. */ public function get_post_title_with_fallback( $post_id = 0 ) { $post_title = \get_the_title( $post_id ); if ( $post_title ) { return $post_title; } return \__( 'No title', 'wordpress-seo' ); } /** * Retrieves post data given a post ID. * * @codeCoverageIgnore It wraps a WordPress function. * * @param int $post_id Post ID. * * @return WP_Post|null The post. */ public function get_post( $post_id ) { return \get_post( $post_id ); } /** * Updates the has_public_posts field on attachments for a post_parent. * * An attachment is represented by their post parent when: * - The attachment has a post parent. * - The attachment inherits the post status. * * @codeCoverageIgnore It relies too much on dependencies. * * @param int $post_parent Post ID. * @param int $has_public_posts Whether the parent is public. * * @return bool Whether the update was successful. */ public function update_has_public_posts_on_attachments( $post_parent, $has_public_posts ) { $query = $this->repository->query() ->select( 'id' ) ->where( 'object_type', 'post' ) ->where( 'object_sub_type', 'attachment' ) ->where( 'post_status', 'inherit' ) ->where( 'post_parent', $post_parent ); if ( $has_public_posts !== null ) { $query->where_raw( '( has_public_posts IS NULL OR has_public_posts <> %s )', [ $has_public_posts ] ); } else { $query->where_not_null( 'has_public_posts' ); } $results = $query->find_array(); if ( empty( $results ) ) { return true; } $updated = $this->repository->query() ->set( 'has_public_posts', $has_public_posts ) ->where_id_in( \wp_list_pluck( $results, 'id' ) ) ->update_many(); return $updated !== false; } /** * Determines if the post can be indexed. * * @param int $post_id Post ID to check. * * @return bool True if the post can be indexed. */ public function is_post_indexable( $post_id ) { // Don't index posts which are not public (i.e. viewable). $post_type = \get_post_type( $post_id ); if ( ! $this->post_type->is_of_indexable_post_type( $post_type ) ) { return false; } // Don't index excluded post statuses. if ( \in_array( \get_post_status( $post_id ), $this->get_excluded_post_statuses(), true ) ) { return false; } // Don't index revisions of posts. if ( \wp_is_post_revision( $post_id ) ) { return false; } // Don't index autosaves that are not caught by the auto-draft check. if ( \wp_is_post_autosave( $post_id ) ) { return false; } return true; } /** * Retrieves the list of excluded post statuses. * * @return array The excluded post statuses. */ public function get_excluded_post_statuses() { return [ 'auto-draft' ]; } /** * Retrieves the list of public posts statuses. * * @return array The public post statuses. */ public function get_public_post_statuses() { /** * Filter: 'wpseo_public_post_statuses' - List of public post statuses. * * @param array $post_statuses Post status list, defaults to array( 'publish' ). */ return \apply_filters( 'wpseo_public_post_statuses', [ 'publish' ] ); } } src/helpers/indexable-to-postmeta-helper.php000064400000015407147206602470015207 0ustar00 [ 'post_meta_key' => 'title', 'map_method' => 'simple_map', ], 'description' => [ 'post_meta_key' => 'metadesc', 'map_method' => 'simple_map', ], 'open_graph_title' => [ 'post_meta_key' => 'opengraph-title', 'map_method' => 'simple_map', ], 'open_graph_description' => [ 'post_meta_key' => 'opengraph-description', 'map_method' => 'simple_map', ], 'twitter_title' => [ 'post_meta_key' => 'twitter-title', 'map_method' => 'simple_map', ], 'twitter_description' => [ 'post_meta_key' => 'twitter-description', 'map_method' => 'simple_map', ], 'canonical' => [ 'post_meta_key' => 'canonical', 'map_method' => 'simple_map', ], 'primary_focus_keyword' => [ 'post_meta_key' => 'focuskw', 'map_method' => 'simple_map', ], 'open_graph_image' => [ 'post_meta_key' => 'opengraph-image', 'map_method' => 'social_image_map', ], 'open_graph_image_id' => [ 'post_meta_key' => 'opengraph-image-id', 'map_method' => 'social_image_map', ], 'twitter_image' => [ 'post_meta_key' => 'twitter-image', 'map_method' => 'social_image_map', ], 'twitter_image_id' => [ 'post_meta_key' => 'twitter-image-id', 'map_method' => 'social_image_map', ], 'is_robots_noindex' => [ 'post_meta_key' => 'meta-robots-noindex', 'map_method' => 'noindex_map', ], 'is_robots_nofollow' => [ 'post_meta_key' => 'meta-robots-nofollow', 'map_method' => 'nofollow_map', ], 'meta_robots_adv' => [ 'post_meta_key' => 'meta-robots-adv', 'map_method' => 'robots_adv_map', ], ]; /** * Indexable_To_Postmeta_Helper constructor. * * @param Meta_Helper $meta The Meta helper. */ public function __construct( Meta_Helper $meta ) { $this->meta = $meta; } /** * Creates postmeta from a Yoast indexable. * * @param Indexable $indexable The Yoast indexable. * * @return void */ public function map_to_postmeta( $indexable ) { foreach ( $this->yoast_to_postmeta as $indexable_column => $map_info ) { \call_user_func( [ $this, $map_info['map_method'] ], $indexable, $map_info['post_meta_key'], $indexable_column ); } } /** * Uses a simple set_value for non-empty data. * * @param Indexable $indexable The Yoast indexable. * @param string $post_meta_key The post_meta key that will be populated. * @param string $indexable_column The indexable data that will be mapped to post_meta. * * @return void */ public function simple_map( $indexable, $post_meta_key, $indexable_column ) { if ( empty( $indexable->{$indexable_column} ) ) { return; } $this->meta->set_value( $post_meta_key, $indexable->{$indexable_column}, $indexable->object_id ); } /** * Map social image data only if social image is explicitly set. * * @param Indexable $indexable The Yoast indexable. * @param string $post_meta_key The post_meta key that will be populated. * @param string $indexable_column The indexable data that will be mapped to post_meta. * * @return void */ public function social_image_map( $indexable, $post_meta_key, $indexable_column ) { if ( empty( $indexable->{$indexable_column} ) ) { return; } switch ( $indexable_column ) { case 'open_graph_image': case 'open_graph_image_id': $source = $indexable->open_graph_image_source; break; case 'twitter_image': case 'twitter_image_id': $source = $indexable->twitter_image_source; break; } // Map the social image data only when the social image is explicitly set. if ( $source === 'set-by-user' || $source === 'imported' ) { $value = (string) $indexable->{$indexable_column}; $this->meta->set_value( $post_meta_key, $value, $indexable->object_id ); } } /** * Deletes the noindex post_meta key if no noindex in the indexable. Populates the post_meta key appropriately if there is noindex in the indexable. * * @param Indexable $indexable The Yoast indexable. * @param string $post_meta_key The post_meta key that will be populated. * * @return void */ public function noindex_map( $indexable, $post_meta_key ) { if ( \is_null( $indexable->is_robots_noindex ) ) { $this->meta->delete( $post_meta_key, $indexable->object_id ); return; } if ( $indexable->is_robots_noindex === false ) { $this->meta->set_value( $post_meta_key, 2, $indexable->object_id ); } if ( $indexable->is_robots_noindex === true ) { $this->meta->set_value( $post_meta_key, 1, $indexable->object_id ); } } /** * Deletes the nofollow post_meta key if no nofollow in the indexable or if nofollow is false. Populates the post_meta key appropriately if there is a true nofollow in the indexable. * * @param Indexable $indexable The Yoast indexable. * @param string $post_meta_key The post_meta key that will be populated. * * @return void */ public function nofollow_map( $indexable, $post_meta_key ) { if ( \is_null( $indexable->is_robots_nofollow ) || $indexable->is_robots_nofollow === false ) { $this->meta->delete( $post_meta_key, $indexable->object_id ); } if ( $indexable->is_robots_nofollow === true ) { $this->meta->set_value( $post_meta_key, 1, $indexable->object_id ); } } /** * Deletes the nofollow post_meta key if no nofollow in the indexable or if nofollow is false. Populates the post_meta key appropriately if there is a true nofollow in the indexable. * * @param Indexable $indexable The Yoast indexable. * @param string $post_meta_key The post_meta key that will be populated. * * @return void */ public function robots_adv_map( $indexable, $post_meta_key ) { $adv_settings_to_be_imported = []; $no_adv_settings = true; if ( $indexable->is_robots_noimageindex === true ) { $adv_settings_to_be_imported[] = 'noimageindex'; $no_adv_settings = false; } if ( $indexable->is_robots_noarchive === true ) { $adv_settings_to_be_imported[] = 'noarchive'; $no_adv_settings = false; } if ( $indexable->is_robots_nosnippet === true ) { $adv_settings_to_be_imported[] = 'nosnippet'; $no_adv_settings = false; } if ( $no_adv_settings === true ) { $this->meta->delete( $post_meta_key, $indexable->object_id ); return; } $this->meta->set_value( $post_meta_key, \implode( ',', $adv_settings_to_be_imported ), $indexable->object_id ); } } src/helpers/first-time-configuration-notice-helper.php000064400000012251147206602470017203 0ustar00options_helper = $options_helper; $this->indexing_helper = $indexing_helper; $this->show_alternate_message = false; } /** * Determines whether and where the "First-time SEO Configuration" admin notice should be displayed. * * @return bool Whether the "First-time SEO Configuration" admin notice should be displayed. */ public function should_display_first_time_configuration_notice() { if ( ! $this->options_helper->get( 'dismiss_configuration_workout_notice', false ) === false ) { return false; } if ( ! $this->on_wpseo_admin_page_or_dashboard() ) { return false; } return $this->first_time_configuration_not_finished(); } /** * Gets the first time configuration title based on the show_alternate_message boolean * * @return string */ public function get_first_time_configuration_title() { return ( ! $this->show_alternate_message ) ? \__( 'First-time SEO configuration', 'wordpress-seo' ) : \__( 'SEO configuration', 'wordpress-seo' ); } /** * Determines if the first time configuration is completely finished. * * @return bool */ public function first_time_configuration_not_finished() { if ( ! $this->user_can_do_first_time_configuration() ) { return false; } if ( $this->is_first_time_configuration_finished() ) { return false; } if ( $this->options_helper->get( 'first_time_install', false ) !== false ) { return ! $this->are_site_representation_name_and_logo_set() || $this->indexing_helper->get_unindexed_count() > 0; } if ( $this->indexing_helper->is_initial_indexing() === false ) { return false; } if ( $this->indexing_helper->is_finished_indexables_indexing() === true ) { return false; } $this->show_alternate_message = true; return ! $this->are_site_representation_name_and_logo_set(); } /** * Whether the user can do the first-time configuration. * * @return bool Whether the current user can do the first-time configuration. */ private function user_can_do_first_time_configuration() { return \current_user_can( 'wpseo_manage_options' ); } /** * Whether the user is currently visiting one of our admin pages or the WordPress dashboard. * * @return bool Whether the current page is a Yoast SEO admin page */ private function on_wpseo_admin_page_or_dashboard() { $pagenow = $GLOBALS['pagenow']; // Show on the WP Dashboard. if ( $pagenow === 'index.php' ) { return true; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['page'] ) && \is_string( $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form information and only comparing the variable in a condition. $page_from_get = \wp_unslash( $_GET['page'] ); // Show on Yoast SEO pages, with some exceptions. if ( $pagenow === 'admin.php' && \strpos( $page_from_get, 'wpseo' ) === 0 ) { $exceptions = [ 'wpseo_installation_successful', 'wpseo_installation_successful_free', ]; if ( ! \in_array( $page_from_get, $exceptions, true ) ) { return true; } } } return false; } /** * Whether all steps of the first-time configuration have been finished. * * @return bool Whether the first-time configuration has been finished. */ private function is_first_time_configuration_finished() { $configuration_finished_steps = $this->options_helper->get( 'configuration_finished_steps', [] ); return \count( $configuration_finished_steps ) === 3; } /** * Whether the site representation name and logo have been set. * * @return bool Whether the site representation name and logo have been set. */ private function are_site_representation_name_and_logo_set() { $company_or_person = $this->options_helper->get( 'company_or_person', '' ); if ( $company_or_person === '' ) { return false; } if ( $company_or_person === 'company' ) { return ! empty( $this->options_helper->get( 'company_name' ) ) && ! empty( $this->options_helper->get( 'company_logo', '' ) ); } return ! empty( $this->options_helper->get( 'company_or_person_user_id' ) ) && ! empty( $this->options_helper->get( 'person_logo', '' ) ); } /** * Getter for the show alternate message boolean. * * @return bool */ public function should_show_alternate_message() { return $this->show_alternate_message; } } src/helpers/home-url-helper.php000064400000001402147206602470012520 0ustar00get() ); } return static::$parsed_home_url; } } src/helpers/notification-helper.php000064400000003703147206602470013464 0ustar00get_sorted_notifications(); } /** * Check if the user has dismissed a notification. (wrapper function) * * @param Yoast_Notification $notification The notification to check for dismissal. * @param int|null $user_id User ID to check on. * * @codeCoverageIgnore * * @return bool */ private function is_notification_dismissed( Yoast_Notification $notification, $user_id = null ) { return Yoast_Notification_Center::is_notification_dismissed( $notification, $user_id ); } /** * Parses all the notifications to an array with just id, message, nonce, type and dismissed. * * @return array */ public function get_alerts(): array { $all_notifications = $this->get_sorted_notifications(); return \array_map( function ( $notification ) { return [ 'id' => $notification->get_id(), 'message' => $notification->get_message(), 'nonce' => $notification->get_nonce(), 'type' => $notification->get_type(), 'dismissed' => $this->is_notification_dismissed( $notification ), ]; }, $all_notifications ); } } src/helpers/user-helper.php000064400000007263147206602470011761 0ustar00is_non_empty_string_or_stringable( $html ) ) { if ( \is_int( $html ) || \is_float( $html ) ) { return (string) $html; } return ''; } return \strip_tags( $html, '


    '; echo '

    '; printf( /* Translators: %1$s: expands to 'Yoast SEO Premium', %2$s: links to Yoast SEO Premium plugin page. */ esc_html__( 'To be able to create a redirect and fix this issue, you need %1$s. You can buy the plugin, including one year of support and updates, on %2$s.', 'wordpress-seo' ), 'Yoast SEO Premium', 'yoast.com' ); echo '

    '; echo ''; admin/google_search_console/views/gsc-display.php000064400000004472147206602470016263 0ustar00admin_header( false, 'wpseo-gsc', false, 'yoast_wpseo_gsc_options' ); // GSC Error notification. $gsc_url = 'https://search.google.com/search-console/index'; $gsc_post_url = 'https://yoa.st/google-search-console-deprecated'; $gsc_style_alert = ' display: flex; align-items: baseline; position: relative; padding: 16px; border: 1px solid rgba(0, 0, 0, 0.2); font-size: 14px; font-weight: 400; line-height: 1.5; margin: 16px 0; color: #450c11; background: #f8d7da; '; $gsc_style_alert_icon = 'display: block; margin-right: 8px;'; $gsc_style_alert_content = 'max-width: 600px;'; $gsc_style_alert_link = 'color: #004973;'; $gsc_notification = sprintf( /* Translators: %1$s: expands to opening anchor tag, %2$s expands to closing anchor tag. */ __( 'Google has discontinued its Crawl Errors API. Therefore, any possible crawl errors you might have cannot be displayed here anymore. %1$sRead our statement on this for further information%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); $gsc_notification .= '

    '; $gsc_notification .= sprintf( /* Translators: %1$s: expands to opening anchor tag, %2$s expands to closing anchor tag. */ __( 'To view your current crawl errors, %1$splease visit Google Search Console%2$s.', 'wordpress-seo' ), '', WPSEO_Admin_Utils::get_new_tab_message() . '' ); ?>
    post = $post; $this->permalink = $structure; } /** * Determines whether the social templates should be used. * * @deprecated 23.1 * @codeCoverageIgnore */ public function use_social_templates() { _deprecated_function( __METHOD__, 'Yoast SEO 23.1' ); } /** * Returns the translated values. * * @return array */ public function get_values() { $values = [ 'metaDescriptionDate' => '', ]; if ( $this->post instanceof WP_Post ) { /** @var Post_Seo_Information_Repository $repo */ $repo = YoastSEO()->classes->get( Post_Seo_Information_Repository::class ); $repo->set_post( $this->post ); $values_to_set = [ 'isInsightsEnabled' => $this->is_insights_enabled(), ]; $values = ( $values_to_set + $values ); $values = ( $repo->get_seo_data() + $values ); } /** * Filter: 'wpseo_post_edit_values' - Allows changing the values Yoast SEO uses inside the post editor. * * @param array $values The key-value map Yoast SEO uses inside the post editor. * @param WP_Post $post The post opened in the editor. */ return apply_filters( 'wpseo_post_edit_values', $values, $this->post ); } /** * Determines whether the insights feature is enabled for this post. * * @return bool */ protected function is_insights_enabled() { return WPSEO_Options::get( 'enable_metabox_insights', false ); } } admin/formatter/class-term-metabox-formatter.php000064400000004325147206602470016074 0ustar00taxonomy = $taxonomy; $this->term = $term; $this->use_social_templates = $this->use_social_templates(); } /** * Determines whether the social templates should be used. * * @return bool Whether the social templates should be used. */ public function use_social_templates() { return WPSEO_Options::get( 'opengraph', false ) === true; } /** * Returns the translated values. * * @return array */ public function get_values() { $values = []; // Todo: a column needs to be added on the termpages to add a filter for the keyword, so this can be used in the focus keyphrase doubles. if ( is_object( $this->term ) && property_exists( $this->term, 'taxonomy' ) ) { $values = [ 'taxonomy' => $this->term->taxonomy, 'semrushIntegrationActive' => 0, 'wincherIntegrationActive' => 0, 'isInsightsEnabled' => $this->is_insights_enabled(), ]; $repo = YoastSEO()->classes->get( Term_Seo_Information_Repository::class ); $repo->set_term( $this->term ); $values = ( $repo->get_seo_data() + $values ); } return $values; } /** * Determines whether the insights feature is enabled for this taxonomy. * * @return bool */ protected function is_insights_enabled() { return WPSEO_Options::get( 'enable_metabox_insights', false ); } } admin/formatter/class-metabox-formatter.php000064400000005207147206602470015127 0ustar00formatter = $formatter; } /** * Returns the values. * * @return array|bool|int> */ public function get_values() { $defaults = $this->get_defaults(); $values = $this->formatter->get_values(); return ( $values + $defaults ); } /** * Returns array with all the values always needed by a scraper object. * * @return array|bool|int> Default settings for the metabox. */ private function get_defaults() { $schema_types = new Schema_Types(); $defaults = [ 'author_name' => get_the_author_meta( 'display_name' ), 'keyword_usage' => [], 'title_template' => '', 'metadesc_template' => '', 'schema' => [ 'displayFooter' => WPSEO_Capability_Utils::current_user_can( 'wpseo_manage_options' ), 'pageTypeOptions' => $schema_types->get_page_type_options(), 'articleTypeOptions' => $schema_types->get_article_type_options(), ], 'twitterCardType' => 'summary_large_image', /** * Filter to determine if the markers should be enabled or not. * * @param bool $showMarkers Should the markers being enabled. Default = true. */ 'show_markers' => apply_filters( 'wpseo_enable_assessment_markers', true ), ]; $integration_information_repo = YoastSEO()->classes->get( Integration_Information_Repository::class ); $enabled_integrations = $integration_information_repo->get_integration_information(); $defaults = array_merge( $defaults, $enabled_integrations ); $enabled_features_repo = YoastSEO()->classes->get( Enabled_Analysis_Features_Repository::class ); $enabled_features = $enabled_features_repo->get_enabled_features()->parse_to_legacy_array(); return array_merge( $defaults, $enabled_features ); } } admin/formatter/interface-metabox-formatter.php000064400000000402147206602470015752 0ustar00add_notification(); return; } $this->remove_notification(); } /** * Adds a notification to the notification center. * * @return void */ protected function add_notification() { $notification_center = Yoast_Notification_Center::get(); $notification_center->add_notification( $this->get_notification() ); } /** * Removes a notification to the notification center. * * @return void */ protected function remove_notification() { $notification_center = Yoast_Notification_Center::get(); $notification_center->remove_notification( $this->get_notification() ); } /** * Gets the notification object. * * @return Yoast_Notification */ protected function get_notification() { $message = sprintf( /* translators: %1$s is a link start tag to the Search Appearance settings, %2$s is the link closing tag. */ __( 'You have previously set your site to represent a person. We’ve improved our functionality around Schema and the Knowledge Graph, so you should go in and %1$scomplete those settings%2$s.', 'wordpress-seo' ), '', '' ); $notification = new Yoast_Notification( $message, [ 'type' => Yoast_Notification::WARNING, 'id' => 'wpseo-schema-person-upgrade', 'capabilities' => 'wpseo_manage_options', 'priority' => 0.8, ] ); return $notification; } } admin/class-premium-popup.php000064400000005472147206602470012307 0ustar00identifier = $identifier; $this->heading_level = $heading_level; $this->title = $title; $this->content = $content; $this->url = $url; } /** * Returns the premium popup as an HTML string. * * @param bool $popup Show this message as a popup show it straight away. * * @return string */ public function get_premium_message( $popup = true ) { // Don't show in Premium. if ( defined( 'WPSEO_PREMIUM_FILE' ) ) { return ''; } $assets_uri = trailingslashit( plugin_dir_url( WPSEO_FILE ) ); /* translators: %s expands to Yoast SEO Premium */ $cta_text = esc_html( sprintf( __( 'Get %s', 'wordpress-seo' ), 'Yoast SEO Premium' ) ); /* translators: Hidden accessibility text. */ $new_tab_message = '' . esc_html__( '(Opens in a new browser tab)', 'wordpress-seo' ) . ''; $caret_icon = ''; $classes = ''; if ( $popup ) { $classes = ' hidden'; } $micro_copy = __( '1 year free support and updates included!', 'wordpress-seo' ); $popup = << Yoast SEO <{$this->heading_level} id="wpseo-contact-support-popup-title" class="wpseo-premium-popup-title">{$this->title}heading_level}> {$this->content} {$cta_text} {$new_tab_message} {$caret_icon}
    {$micro_copy} EO_POPUP; return $popup; } } admin/class-admin.php000064400000032207147206602470010554 0ustar00register_hooks(); if ( is_multisite() ) { WPSEO_Options::maybe_set_multisite_defaults( false ); } add_action( 'created_category', [ $this, 'schedule_rewrite_flush' ] ); add_action( 'edited_category', [ $this, 'schedule_rewrite_flush' ] ); add_action( 'delete_category', [ $this, 'schedule_rewrite_flush' ] ); add_filter( 'wpseo_accessible_post_types', [ 'WPSEO_Post_Type', 'filter_attachment_post_type' ] ); add_filter( 'plugin_action_links_' . WPSEO_BASENAME, [ $this, 'add_action_link' ], 10, 2 ); add_filter( 'network_admin_plugin_action_links_' . WPSEO_BASENAME, [ $this, 'add_action_link' ], 10, 2 ); add_action( 'admin_enqueue_scripts', [ $this, 'config_page_scripts' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_global_style' ] ); add_action( 'after_switch_theme', [ $this, 'switch_theme' ] ); add_action( 'switch_theme', [ $this, 'switch_theme' ] ); add_filter( 'set-screen-option', [ $this, 'save_bulk_edit_options' ], 10, 3 ); add_action( 'admin_init', [ 'WPSEO_Plugin_Conflict', 'hook_check_for_plugin_conflicts' ], 10, 1 ); add_action( 'admin_init', [ $this, 'map_manage_options_cap' ] ); WPSEO_Sitemaps_Cache::register_clear_on_option_update( 'wpseo' ); WPSEO_Sitemaps_Cache::register_clear_on_option_update( 'home' ); if ( YoastSEO()->helpers->current_page->is_yoast_seo_page() ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] ); } $this->initialize_cornerstone_content(); if ( WPSEO_Utils::is_plugin_network_active() ) { $integrations[] = new Yoast_Network_Admin(); } $this->admin_features = [ 'dashboard_widget' => new Yoast_Dashboard_Widget(), 'wincher_dashboard_widget' => new Wincher_Dashboard_Widget(), ]; if ( WPSEO_Metabox::is_post_overview( $pagenow ) || WPSEO_Metabox::is_post_edit( $pagenow ) ) { $this->admin_features['primary_category'] = new WPSEO_Primary_Term_Admin(); } $integrations[] = new WPSEO_Yoast_Columns(); $integrations[] = new WPSEO_Statistic_Integration(); $integrations[] = new WPSEO_Capability_Manager_Integration( WPSEO_Capability_Manager_Factory::get() ); $integrations[] = new WPSEO_Admin_Gutenberg_Compatibility_Notification(); $integrations[] = new WPSEO_Expose_Shortlinks(); $integrations[] = new WPSEO_MyYoast_Proxy(); $integrations[] = new WPSEO_Schema_Person_Upgrade_Notification(); $integrations[] = new WPSEO_Tracking( 'https://tracking.yoast.com/stats', ( WEEK_IN_SECONDS * 2 ) ); $integrations[] = new WPSEO_Admin_Settings_Changed_Listener(); $integrations = array_merge( $integrations, $this->get_admin_features(), $this->initialize_cornerstone_content() ); foreach ( $integrations as $integration ) { $integration->register_hooks(); } } /** * Schedules a rewrite flush to happen at shutdown. * * @return void */ public function schedule_rewrite_flush() { if ( WPSEO_Options::get( 'stripcategorybase' ) !== true ) { return; } // Bail if this is a multisite installation and the site has been switched. if ( is_multisite() && ms_is_switched() ) { return; } add_action( 'shutdown', 'flush_rewrite_rules' ); } /** * Returns all the classes for the admin features. * * @return array */ public function get_admin_features() { return $this->admin_features; } /** * Register assets needed on admin pages. * * @return void */ public function enqueue_assets() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form data. $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; if ( $page === 'wpseo_licenses' ) { $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'extensions' ); } } /** * Returns the manage_options capability. * * @return string The capability to use. */ public function get_manage_options_cap() { /** * Filter: 'wpseo_manage_options_capability' - Allow changing the capability users need to view the settings pages. * * @param string $capability The capability. */ return apply_filters( 'wpseo_manage_options_capability', 'wpseo_manage_options' ); } /** * Maps the manage_options cap on saving an options page to wpseo_manage_options. * * @return void */ public function map_manage_options_cap() { // phpcs:ignore WordPress.Security -- The variable is only used in strpos and thus safe to not unslash or sanitize. $option_page = ! empty( $_POST['option_page'] ) ? $_POST['option_page'] : ''; if ( strpos( $option_page, 'yoast_wpseo' ) === 0 || strpos( $option_page, Settings_Integration::PAGE ) === 0 ) { add_filter( 'option_page_capability_' . $option_page, [ $this, 'get_manage_options_cap' ] ); } } /** * Adds the ability to choose how many posts are displayed per page * on the bulk edit pages. * * @return void */ public function bulk_edit_options() { $option = 'per_page'; $args = [ 'label' => __( 'Posts', 'wordpress-seo' ), 'default' => 10, 'option' => 'wpseo_posts_per_page', ]; add_screen_option( $option, $args ); } /** * Saves the posts per page limit for bulk edit pages. * * @param int $status Status value to pass through. * @param string $option Option name. * @param int $value Count value to check. * * @return int */ public function save_bulk_edit_options( $status, $option, $value ) { if ( $option && ( $value > 0 && $value < 1000 ) === 'wpseo_posts_per_page' ) { return $value; } return $status; } /** * Adds links to Premium Support and FAQ under the plugin in the plugin overview page. * * @param array $links Array of links for the plugins, adapted when the current plugin is found. * @param string $file The filename for the current plugin, which the filter loops through. * * @return array */ public function add_action_link( $links, $file ) { $first_time_configuration_notice_helper = YoastSEO()->helpers->first_time_configuration_notice; if ( $file === WPSEO_BASENAME && WPSEO_Capability_Utils::current_user_can( 'wpseo_manage_options' ) ) { if ( is_network_admin() ) { $settings_url = network_admin_url( 'admin.php?page=' . self::PAGE_IDENTIFIER ); } else { $settings_url = admin_url( 'admin.php?page=' . self::PAGE_IDENTIFIER ); } $settings_link = '' . __( 'Settings', 'wordpress-seo' ) . ''; array_unshift( $links, $settings_link ); } // Add link to docs. $faq_link = '' . __( 'FAQ', 'wordpress-seo' ) . ''; array_unshift( $links, $faq_link ); if ( $first_time_configuration_notice_helper->first_time_configuration_not_finished() && ! is_network_admin() ) { $configuration_title = ( ! $first_time_configuration_notice_helper->should_show_alternate_message() ) ? 'first-time configuration' : 'SEO configuration'; /* translators: CTA to finish the first time configuration. %s: Either first-time SEO configuration or SEO configuration. */ $message = sprintf( __( 'Finish your %s', 'wordpress-seo' ), $configuration_title ); $ftc_page = 'admin.php?page=wpseo_dashboard#/first-time-configuration'; $ftc_link = '' . $message . ''; array_unshift( $links, $ftc_link ); } $addon_manager = new WPSEO_Addon_Manager(); if ( YoastSEO()->helpers->product->is_premium() ) { // Remove Free 'deactivate' link if Premium is active as well. We don't want users to deactivate Free when Premium is active. unset( $links['deactivate'] ); $no_deactivation_explanation = '' . sprintf( /* translators: %s expands to Yoast SEO Premium. */ __( 'Required by %s', 'wordpress-seo' ), 'Yoast SEO Premium' ) . ''; array_unshift( $links, $no_deactivation_explanation ); if ( $addon_manager->has_valid_subscription( WPSEO_Addon_Manager::PREMIUM_SLUG ) ) { return $links; } // Add link to where premium can be activated. $activation_link = '' . __( 'Activate your subscription', 'wordpress-seo' ) . ''; array_unshift( $links, $activation_link ); return $links; } // Add link to premium landing page. $premium_link = '' . __( 'Get Premium', 'wordpress-seo' ) . ''; array_unshift( $links, $premium_link ); return $links; } /** * Enqueues the (tiny) global JS needed for the plugin. * * @return void */ public function config_page_scripts() { $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_script( 'admin-global' ); $asset_manager->localize_script( 'admin-global', 'wpseoAdminGlobalL10n', $this->localize_admin_global_script() ); } /** * Enqueues the (tiny) global stylesheet needed for the plugin. * * @return void */ public function enqueue_global_style() { $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'admin-global' ); } /** * Filter the $contactmethods array and add a set of social profiles. * * These are used with the Facebook author, rel="author" and Twitter cards implementation. * * @deprecated 22.6 * @codeCoverageIgnore * * @param array $contactmethods Currently set contactmethods. * * @return array Contactmethods with added contactmethods. */ public function update_contactmethods( $contactmethods ) { _deprecated_function( __METHOD__, 'Yoast SEO 22.6' ); $contactmethods['facebook'] = __( 'Facebook profile URL', 'wordpress-seo' ); $contactmethods['instagram'] = __( 'Instagram profile URL', 'wordpress-seo' ); $contactmethods['linkedin'] = __( 'LinkedIn profile URL', 'wordpress-seo' ); $contactmethods['myspace'] = __( 'MySpace profile URL', 'wordpress-seo' ); $contactmethods['pinterest'] = __( 'Pinterest profile URL', 'wordpress-seo' ); $contactmethods['soundcloud'] = __( 'SoundCloud profile URL', 'wordpress-seo' ); $contactmethods['tumblr'] = __( 'Tumblr profile URL', 'wordpress-seo' ); $contactmethods['twitter'] = __( 'X username (without @)', 'wordpress-seo' ); $contactmethods['youtube'] = __( 'YouTube profile URL', 'wordpress-seo' ); $contactmethods['wikipedia'] = __( 'Wikipedia page about you', 'wordpress-seo' ) . '
    ' . __( '(if one exists)', 'wordpress-seo' ) . ''; return $contactmethods; } /** * Log the updated timestamp for user profiles when theme is changed. * * @return void */ public function switch_theme() { $users = get_users( [ 'capability' => [ 'edit_posts' ] ] ); if ( is_array( $users ) && $users !== [] ) { foreach ( $users as $user ) { update_user_meta( $user->ID, '_yoast_wpseo_profile_updated', time() ); } } } /** * Localization for the dismiss urls. * * @return array */ private function localize_admin_global_script() { return array_merge( [ 'isRtl' => is_rtl(), 'variable_warning' => sprintf( /* translators: %1$s: '%%term_title%%' variable used in titles and meta's template that's not compatible with the given template, %2$s: expands to 'HelpScout beacon' */ __( 'Warning: the variable %1$s cannot be used in this template. See the %2$s for more info.', 'wordpress-seo' ), '%s', 'HelpScout beacon' ), /* translators: %s: expends to Yoast SEO */ 'help_video_iframe_title' => sprintf( __( '%s video tutorial', 'wordpress-seo' ), 'Yoast SEO' ), 'scrollable_table_hint' => __( 'Scroll to see the table content.', 'wordpress-seo' ), 'wincher_is_logged_in' => WPSEO_Options::get( 'wincher_integration_active', true ) ? YoastSEO()->helpers->wincher->login_status() : false, ], YoastSEO()->helpers->wincher->get_admin_global_links() ); } /** * Whether we are on the admin dashboard page. * * @return bool */ protected function on_dashboard_page() { return $GLOBALS['pagenow'] === 'index.php'; } /** * Loads the cornerstone filter. * * @return WPSEO_WordPress_Integration[] The integrations to initialize. */ protected function initialize_cornerstone_content() { if ( ! WPSEO_Options::get( 'enable_cornerstone_content' ) ) { return []; } return [ 'cornerstone_filter' => new WPSEO_Cornerstone_Filter(), ]; } } admin/views/tool-import-export.php000064400000010236147206602470013320 0ustar00import(); } /** * Allow custom import actions. * * @param WPSEO_Import_Status $yoast_seo_import Contains info about the handled import. */ $yoast_seo_import = apply_filters( 'wpseo_handle_import', $yoast_seo_import ); if ( $yoast_seo_import ) { $yoast_seo_message = ''; if ( $yoast_seo_import->status instanceof WPSEO_Import_Status ) { $yoast_seo_message = $yoast_seo_import->status->get_msg(); } /** * Allow customization of import/export message. * * @param string $yoast_seo_msg The message. */ $yoast_seo_msg = apply_filters( 'wpseo_import_message', $yoast_seo_message ); if ( ! empty( $yoast_seo_msg ) ) { $yoast_seo_status = 'error'; if ( $yoast_seo_import->status->status ) { $yoast_seo_status = 'updated'; } $yoast_seo_class = 'message ' . $yoast_seo_status; echo '

    ', esc_html( $yoast_seo_msg ), '

    '; } } $yoast_seo_tabs = [ 'wpseo-import' => [ 'label' => __( 'Import settings', 'wordpress-seo' ), ], 'wpseo-export' => [ 'label' => __( 'Export settings', 'wordpress-seo' ), ], 'import-seo' => [ 'label' => __( 'Import from other SEO plugins', 'wordpress-seo' ), ], ]; ?>

    $tab ) { printf( '
    ', esc_attr( $identifier ) ); require_once WPSEO_PATH . 'admin/views/tabs/tool/' . $identifier . '.php'; echo '
    '; } /** * Allow adding a custom import tab. */ do_action( 'wpseo_import_tab_content' ); admin/views/js-templates-primary-term.php000064400000002526147206602470014555 0ustar00 admin/views/class-yoast-integration-toggles.php000064400000010606147206602470015742 0ustar00toggles === null ) { $this->toggles = $this->load_toggles(); } return $this->toggles; } /** * Loads the available integration toggles. * * Also ensures that the toggles are all Yoast_Feature_Toggle instances and sorted by their order value. * * @return array List of sorted Yoast_Feature_Toggle instances. */ protected function load_toggles() { $integration_toggles = [ (object) [ /* translators: %s: 'Semrush' */ 'name' => sprintf( __( '%s integration', 'wordpress-seo' ), 'Semrush' ), 'setting' => 'semrush_integration_active', 'label' => sprintf( /* translators: %s: 'Semrush' */ __( 'The %s integration offers suggestions and insights for keywords related to the entered focus keyphrase.', 'wordpress-seo' ), 'Semrush' ), 'order' => 10, ], (object) [ /* translators: %s: Algolia. */ 'name' => sprintf( esc_html__( '%s integration', 'wordpress-seo' ), 'Algolia' ), 'premium' => true, 'setting' => 'algolia_integration_active', 'label' => __( 'Improve the quality of your site search! Automatically helps your users find your cornerstone and most important content in your internal search results. It also removes noindexed posts & pages from your site’s search results.', 'wordpress-seo' ), /* translators: %s: Algolia. */ 'read_more_label' => sprintf( __( 'Find out more about our %s integration.', 'wordpress-seo' ), 'Algolia' ), 'read_more_url' => 'https://yoa.st/4eu', 'premium_url' => 'https://yoa.st/4ex', 'premium_upsell_url' => 'https://yoa.st/get-algolia-integration', 'order' => 25, ], ]; /** * Filter to add integration toggles from add-ons. * * @param array $integration_toggles Array with integration toggle objects where each object * should have a `name`, `setting` and `label` property. */ $integration_toggles = apply_filters( 'wpseo_integration_toggles', $integration_toggles ); $integration_toggles = array_map( [ $this, 'ensure_toggle' ], $integration_toggles ); usort( $integration_toggles, [ $this, 'sort_toggles_callback' ] ); return $integration_toggles; } /** * Ensures that the passed value is a Yoast_Feature_Toggle. * * @param Yoast_Feature_Toggle|object|array $toggle_data Feature toggle instance, or raw object or array * containing integration toggle data. * @return Yoast_Feature_Toggle Feature toggle instance based on $toggle_data. */ protected function ensure_toggle( $toggle_data ) { if ( $toggle_data instanceof Yoast_Feature_Toggle ) { return $toggle_data; } if ( is_object( $toggle_data ) ) { $toggle_data = get_object_vars( $toggle_data ); } return new Yoast_Feature_Toggle( $toggle_data ); } /** * Callback for sorting integration toggles by their order. * * {@internal Once the minimum PHP version goes up to PHP 7.0, the logic in the function * can be replaced with the spaceship operator `<=>`.} * * @param Yoast_Feature_Toggle $feature_a Feature A. * @param Yoast_Feature_Toggle $feature_b Feature B. * * @return int An integer less than, equal to, or greater than zero indicating respectively * that feature A is considered to be less than, equal to, or greater than feature B. */ protected function sort_toggles_callback( Yoast_Feature_Toggle $feature_a, Yoast_Feature_Toggle $feature_b ) { return ( $feature_a->order - $feature_b->order ); } } admin/views/paper-collapsible.php000064400000006023147206602470013111 0ustar00
    > %4$s%5$s ', esc_attr( 'collapsible-header ' . $collapsible_header_class ), // phpcs:ignore WordPress.Security.EscapeOutput -- $button_id_attr is escaped above. $button_id_attr, esc_attr( $collapsible_config['expanded'] ), // phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is an instance of WPSEO_Admin_Help_Panel, which escapes it's own output. $help_text->get_button_html(), esc_html( $title ) . wp_kses_post( $title_after ), wp_kses_post( $collapsible_config['toggle_icon'] ) ); } else { echo '

    ', esc_html( $title ), wp_kses_post( $title_after ), // phpcs:ignore WordPress.Security.EscapeOutput -- $help_text is an instance of WPSEO_Admin_Help_Panel, which escapes it's own output. $help_text->get_button_html(), '

    '; } } ?> get_panel_html(); $container_id_attr = ''; if ( ! empty( $paper_id ) ) { $container_id_attr = sprintf( ' id="%s"', esc_attr( $paper_id_prefix . $paper_id . '-container' ) ); } printf( '%3$s
    ', // phpcs:ignore WordPress.Security.EscapeOutput -- $container_id_attr is escaped above. $container_id_attr, esc_attr( 'paper-container ' . $collapsible_config['class'] ), $content ); ?> admin/views/tool-bulk-editor.php000064400000006206147206602470012712 0ustar00 $yoast_free_input_fields, 'nonce' => wp_create_nonce( 'bulk-editor-table' ), ]; $wpseo_bulk_titles_table = new WPSEO_Bulk_Title_Editor_List_Table( $yoast_bulk_editor_arguments ); $wpseo_bulk_description_table = new WPSEO_Bulk_Description_List_Table( $yoast_bulk_editor_arguments ); $yoast_free_screen_reader_content = [ 'heading_views' => __( 'Filter posts list', 'wordpress-seo' ), 'heading_pagination' => __( 'Posts list navigation', 'wordpress-seo' ), 'heading_list' => __( 'Posts list', 'wordpress-seo' ), ]; get_current_screen()->set_screen_reader_content( $yoast_free_screen_reader_content ); if ( ! empty( $_REQUEST['_wp_http_referer'] ) && isset( $_SERVER['REQUEST_URI'] ) ) { $request_uri = sanitize_file_name( wp_unslash( $_SERVER['REQUEST_URI'] ) ); wp_redirect( remove_query_arg( [ '_wp_http_referer', '_wpnonce' ], $request_uri ) ); exit; } /** * Renders a bulk editor tab. * * @param WPSEO_Bulk_List_Table $table The table to render. * @param string $id The id for the tab. * * @return void */ function wpseo_get_rendered_tab( $table, $id ) { ?>
    show_page(); ?>


    admin/views/class-yoast-feature-toggle.php000064400000011043147206602470014663 0ustar00 $value ) { if ( property_exists( $this, $key ) ) { $this->$key = $value; } } } /** * Magic isset-er. * * @param string $key Key to check whether a value for it is set. * * @return bool True if set, false otherwise. */ public function __isset( $key ) { return isset( $this->$key ); } /** * Magic getter. * * @param string $key Key to get the value for. * * @return mixed Value for the key, or null if not set. */ public function __get( $key ) { if ( isset( $this->$key ) ) { return $this->$key; } return null; } /** * Checks whether the feature for this toggle is enabled. * * @return bool True if the feature is enabled, false otherwise. */ public function is_enabled() { return (bool) WPSEO_Options::get( $this->setting ); } } admin/views/class-yoast-feature-toggles.php000064400000030470147206602470015053 0ustar00toggles === null ) { $this->toggles = $this->load_toggles(); } return $this->toggles; } /** * Loads the available feature toggles. * * Also ensures that the toggles are all Yoast_Feature_Toggle instances and sorted by their order value. * * @return array List of sorted Yoast_Feature_Toggle instances. */ protected function load_toggles() { $xml_sitemap_extra = false; if ( WPSEO_Options::get( 'enable_xml_sitemap' ) ) { $xml_sitemap_extra = '' . esc_html__( 'See the XML sitemap.', 'wordpress-seo' ) . ''; } $feature_toggles = [ (object) [ 'name' => __( 'SEO analysis', 'wordpress-seo' ), 'setting' => 'keyword_analysis_active', 'label' => __( 'The SEO analysis offers suggestions to improve the SEO of your text.', 'wordpress-seo' ), 'read_more_label' => __( 'Learn how the SEO analysis can help you rank.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/2ak', 'order' => 10, ], (object) [ 'name' => __( 'Readability analysis', 'wordpress-seo' ), 'setting' => 'content_analysis_active', 'label' => __( 'The readability analysis offers suggestions to improve the structure and style of your text.', 'wordpress-seo' ), 'read_more_label' => __( 'Discover why readability is important for SEO.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/2ao', 'order' => 20, ], (object) [ 'name' => __( 'Inclusive language analysis', 'wordpress-seo' ), 'supported_languages' => Language_Helper::$languages_with_inclusive_language_support, 'setting' => 'inclusive_language_analysis_active', 'label' => __( 'The inclusive language analysis offers suggestions to write more inclusive copy.', 'wordpress-seo' ), 'read_more_label' => __( 'Discover why inclusive language is important for SEO.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/inclusive-language-features-free', 'order' => 25, ], (object) [ 'name' => __( 'Cornerstone content', 'wordpress-seo' ), 'setting' => 'enable_cornerstone_content', 'label' => __( 'The cornerstone content feature lets you to mark and filter cornerstone content on your website.', 'wordpress-seo' ), 'read_more_label' => __( 'Find out how cornerstone content can help you improve your site structure.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/dashboard-help-cornerstone', 'order' => 30, ], (object) [ 'name' => __( 'Text link counter', 'wordpress-seo' ), 'setting' => 'enable_text_link_counter', 'label' => __( 'The text link counter helps you improve your site structure.', 'wordpress-seo' ), 'read_more_label' => __( 'Find out how the text link counter can enhance your SEO.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/2aj', 'order' => 40, ], (object) [ 'name' => __( 'Insights', 'wordpress-seo' ), 'setting' => 'enable_metabox_insights', 'label' => __( 'Find relevant data about your content right in the Insights section in the Yoast SEO metabox. You’ll see what words you use most often and if they’re a match with your keywords! ', 'wordpress-seo' ), 'read_more_label' => __( 'Find out how Insights can help you improve your content.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/4ew', 'premium_url' => 'https://yoa.st/2ai', 'order' => 41, ], (object) [ 'name' => __( 'Link suggestions', 'wordpress-seo' ), 'premium' => true, 'setting' => 'enable_link_suggestions', 'label' => __( 'Get relevant internal linking suggestions — while you’re writing! The link suggestions metabox shows a list of posts on your blog with similar content that might be interesting to link to. ', 'wordpress-seo' ), 'read_more_label' => __( 'Read more about how internal linking can improve your site structure.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/4ev', 'premium_url' => 'https://yoa.st/17g', 'premium_upsell_url' => 'https://yoa.st/get-link-suggestions', 'order' => 42, ], (object) [ 'name' => __( 'XML sitemaps', 'wordpress-seo' ), 'setting' => 'enable_xml_sitemap', /* translators: %s: Yoast SEO */ 'label' => sprintf( __( 'Enable the XML sitemaps that %s generates.', 'wordpress-seo' ), 'Yoast SEO' ), 'read_more_label' => __( 'Read why XML Sitemaps are important for your site.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/2a-', 'extra' => $xml_sitemap_extra, 'after' => $this->sitemaps_toggle_after(), 'order' => 60, ], (object) [ 'name' => __( 'Admin bar menu', 'wordpress-seo' ), 'setting' => 'enable_admin_bar_menu', /* translators: 1: Yoast SEO */ 'label' => sprintf( __( 'The %1$s admin bar menu contains useful links to third-party tools for analyzing pages and makes it easy to see if you have new notifications.', 'wordpress-seo' ), 'Yoast SEO' ), 'order' => 80, ], (object) [ 'name' => __( 'Security: no advanced or schema settings for authors', 'wordpress-seo' ), 'setting' => 'disableadvanced_meta', 'label' => sprintf( /* translators: 1: Yoast SEO, 2: translated version of "Off" */ __( 'The advanced section of the %1$s meta box allows a user to remove posts from the search results or change the canonical. The settings in the schema tab allows a user to change schema meta data for a post. These are things you might not want any author to do. That\'s why, by default, only editors and administrators can do this. Setting to "%2$s" allows all users to change these settings.', 'wordpress-seo' ), 'Yoast SEO', __( 'Off', 'wordpress-seo' ) ), 'order' => 90, ], (object) [ 'name' => __( 'Usage tracking', 'wordpress-seo' ), 'label' => __( 'Usage tracking', 'wordpress-seo' ), 'setting' => 'tracking', 'read_more_label' => sprintf( /* translators: 1: Yoast SEO */ __( 'Allow us to track some data about your site to improve our plugin.', 'wordpress-seo' ), 'Yoast SEO' ), 'read_more_url' => 'https://yoa.st/usage-tracking-2', 'order' => 95, ], (object) [ 'name' => __( 'REST API: Head endpoint', 'wordpress-seo' ), 'setting' => 'enable_headless_rest_endpoints', 'label' => sprintf( /* translators: 1: Yoast SEO */ __( 'This %1$s REST API endpoint gives you all the metadata you need for a specific URL. This will make it very easy for headless WordPress sites to use %1$s for all their SEO meta output.', 'wordpress-seo' ), 'Yoast SEO' ), 'order' => 100, ], (object) [ 'name' => __( 'Enhanced Slack sharing', 'wordpress-seo' ), 'setting' => 'enable_enhanced_slack_sharing', 'label' => __( 'This adds an author byline and reading time estimate to the article’s snippet when shared on Slack.', 'wordpress-seo' ), 'read_more_label' => __( 'Find out how a rich snippet can improve visibility and click-through-rate.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/help-slack-share', 'order' => 105, ], (object) [ 'name' => __( 'IndexNow', 'wordpress-seo' ), 'premium' => true, 'setting' => 'enable_index_now', 'label' => __( 'Automatically ping search engines like Bing and Yandex whenever you publish, update or delete a post.', 'wordpress-seo' ), 'read_more_label' => __( 'Find out how IndexNow can help your site.', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/index-now-read-more', 'premium_url' => 'https://yoa.st/index-now-feature', 'premium_upsell_url' => 'https://yoa.st/get-indexnow', 'order' => 110, ], (object) [ 'name' => __( 'AI title & description generator', 'wordpress-seo' ), 'premium' => true, 'setting' => 'enable_ai_generator', 'label' => __( 'Use the power of Yoast AI to automatically generate compelling titles and descriptions for your posts and pages.', 'wordpress-seo' ), 'read_more_label' => __( 'Learn more', 'wordpress-seo' ), 'read_more_url' => 'https://yoa.st/ai-generator-read-more', 'premium_url' => 'https://yoa.st/ai-generator-feature', 'premium_upsell_url' => 'https://yoa.st/get-ai-generator', 'order' => 115, ], ]; /** * Filter to add feature toggles from add-ons. * * @param array $feature_toggles Array with feature toggle objects where each object * should have a `name`, `setting` and `label` property. */ $feature_toggles = apply_filters( 'wpseo_feature_toggles', $feature_toggles ); $feature_toggles = array_map( [ $this, 'ensure_toggle' ], $feature_toggles ); usort( $feature_toggles, [ $this, 'sort_toggles_callback' ] ); return $feature_toggles; } /** * Returns html for a warning that core sitemaps are enabled when yoast seo sitemaps are disabled. * * @return string HTML string for the warning. */ protected function sitemaps_toggle_after() { $out = ''; return $out; } /** * Ensures that the passed value is a Yoast_Feature_Toggle. * * @param Yoast_Feature_Toggle|object|array $toggle_data Feature toggle instance, or raw object or array * containing feature toggle data. * @return Yoast_Feature_Toggle Feature toggle instance based on $toggle_data. */ protected function ensure_toggle( $toggle_data ) { if ( $toggle_data instanceof Yoast_Feature_Toggle ) { return $toggle_data; } if ( is_object( $toggle_data ) ) { $toggle_data = get_object_vars( $toggle_data ); } return new Yoast_Feature_Toggle( $toggle_data ); } /** * Callback for sorting feature toggles by their order. * * {@internal Once the minimum PHP version goes up to PHP 7.0, the logic in the function * can be replaced with the spaceship operator `<=>`.} * * @param Yoast_Feature_Toggle $feature_a Feature A. * @param Yoast_Feature_Toggle $feature_b Feature B. * * @return int An integer less than, equal to, or greater than zero indicating respectively * that feature A is considered to be less than, equal to, or greater than feature B. */ protected function sort_toggles_callback( Yoast_Feature_Toggle $feature_a, Yoast_Feature_Toggle $feature_b ) { return ( $feature_a->order - $feature_b->order ); } } admin/views/tool-file-editor.php000064400000015356147206602470012702 0ustar00admin_header( false, 'wpseo_ms' ); } else { $action_url = admin_url( 'admin.php?page=wpseo_tools&tool=file-editor' ); } if ( isset( $msg ) && ! empty( $msg ) ) { echo '

    ', esc_html( $msg ), '

    '; } // N.B.: "robots.txt" is a fixed file name and should not be translatable. echo '

    robots.txt

    '; if ( ! file_exists( $robots_file ) ) { if ( is_writable( $home_path ) ) { echo '
    '; wp_nonce_field( 'wpseo_create_robots', '_wpnonce', true, true ); echo '

    '; printf( /* translators: %s expands to robots.txt. */ esc_html__( 'You don\'t have a %s file, create one here:', 'wordpress-seo' ), 'robots.txt' ); echo '

    '; printf( '', sprintf( /* translators: %s expands to robots.txt. */ esc_attr__( 'Create %s file', 'wordpress-seo' ), 'robots.txt' ) ); echo '
    '; } else { echo '

    '; printf( /* translators: %s expands to robots.txt. */ esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ), 'robots.txt' ); echo '

    '; } } else { $f = fopen( $robots_file, 'r' ); $content = ''; if ( filesize( $robots_file ) > 0 ) { $content = fread( $f, filesize( $robots_file ) ); } if ( ! is_writable( $robots_file ) ) { echo '

    '; printf( /* translators: %s expands to robots.txt. */ esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ), 'robots.txt' ); echo '

    '; echo '
    '; } else { echo '
    '; wp_nonce_field( 'wpseo-robotstxt', '_wpnonce', true, true ); echo ''; echo '
    '; printf( '
    ', sprintf( /* translators: %s expands to robots.txt. */ esc_attr__( 'Save changes to %s', 'wordpress-seo' ), 'robots.txt' ) ); echo '
    '; } } if ( ! WPSEO_Utils::is_nginx() ) { echo '

    '; printf( /* translators: %s expands to ".htaccess". */ esc_html__( '%s file', 'wordpress-seo' ), '.htaccess' ); echo '

    '; if ( file_exists( $ht_access_file ) ) { $f = fopen( $ht_access_file, 'r' ); $contentht = ''; if ( filesize( $ht_access_file ) > 0 ) { $contentht = fread( $f, filesize( $ht_access_file ) ); } if ( ! is_writable( $ht_access_file ) ) { echo '

    '; printf( /* translators: %s expands to ".htaccess". */ esc_html__( 'If your %s were writable, you could edit it from here.', 'wordpress-seo' ), '.htaccess' ); echo '

    '; echo '
    '; } else { echo '
    '; wp_nonce_field( 'wpseo-htaccess', '_wpnonce', true, true ); echo ''; echo '
    '; printf( '
    ', sprintf( /* translators: %s expands to ".htaccess". */ esc_attr__( 'Save changes to %s', 'wordpress-seo' ), '.htaccess' ) ); echo '
    '; } } else { echo '

    '; printf( /* translators: %s expands to ".htaccess". */ esc_html__( 'If you had a %s file and it was editable, you could edit it from here.', 'wordpress-seo' ), '.htaccess' ); echo '

    '; } } if ( is_multisite() ) { $yform->admin_footer( false ); } admin/views/redirects.php000064400000020712147206602470011500 0ustar00 admin/views/tabs/tool/import-seo.php000064400000011144147206602470013517 0ustar00detect(); if ( count( $import_check->needs_import ) === 0 ) { echo '

    ', esc_html__( 'Import from other SEO plugins', 'wordpress-seo' ), '

    '; echo '

    '; printf( /* translators: %s expands to Yoast SEO */ esc_html__( '%s did not detect any plugin data from plugins it can import from.', 'wordpress-seo' ), 'Yoast SEO' ); echo '

    '; return; } /** * Creates a select box given a name and plugins array. * * @param string $name Name field for the select field. * @param array $plugins An array of plugins and classes. * * @return void */ function wpseo_import_external_select( $name, $plugins ) { esc_html_e( 'Plugin: ', 'wordpress-seo' ); echo ''; } ?>

    needs_import ); ?>

    ', '' ); ?>

    needs_import ); ?>
    admin/views/tabs/tool/wpseo-import.php000064400000002672147206602470014074 0ustar00



    admin/views/tabs/tool/wpseo-export.php000064400000002572147206602470014102 0ustar00export(); return; } $wpseo_export_phrase = sprintf( /* translators: %1$s expands to Yoast SEO */ __( 'Export your %1$s settings here, to copy them on another site.', 'wordpress-seo' ), 'Yoast SEO' ); ?>

    admin/views/tabs/network/general.php000064400000004026147206602470013553 0ustar00'; /* * {@internal Important: Make sure the options added to the array here are in line with the * options set in the WPSEO_Option_MS::$allowed_access_options property.}} */ $yform->select( 'access', /* translators: %1$s expands to Yoast SEO */ sprintf( __( 'Who should have access to the %1$s settings', 'wordpress-seo' ), 'Yoast SEO' ), [ 'admin' => __( 'Site Admins (default)', 'wordpress-seo' ), 'superadmin' => __( 'Super Admins only', 'wordpress-seo' ), ] ); if ( get_blog_count() <= 100 ) { $network_admin = new Yoast_Network_Admin(); $yform->select( 'defaultblog', __( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ), $network_admin->get_site_choices( true, true ) ); echo '

    ' . esc_html__( 'Choose the site whose settings you want to use as default for all sites that are added to your network. If you choose \'None\', the normal plugin defaults will be used.', 'wordpress-seo' ) . '

    '; } else { $yform->textinput( 'defaultblog', __( 'New sites in the network inherit their SEO settings from this site', 'wordpress-seo' ) ); echo '

    '; printf( /* translators: 1: link open tag; 2: link close tag. */ esc_html__( 'Enter the %1$sSite ID%2$s for the site whose settings you want to use as default for all sites that are added to your network. Leave empty for none (i.e. the normal plugin defaults will be used).', 'wordpress-seo' ), '', '' ); echo '

    '; } echo '

    ' . esc_html__( 'Take note:', 'wordpress-seo' ) . ' ' . esc_html__( 'Privacy sensitive (FB admins and such), theme specific (title rewrite) and a few very site specific settings will not be imported to new sites.', 'wordpress-seo' ) . '

    '; echo ''; admin/views/tabs/network/integrations.php000064400000006621147206602470014647 0ustar00get_all(); ?>

    label ); if ( ! empty( $integration->extra ) ) { $help_text .= ' ' . $integration->extra; } if ( ! empty( $integration->read_more_label ) ) { $help_text .= ' '; $help_text .= sprintf( '%2$s', esc_url( WPSEO_Shortlinker::get( $integration->read_more_url ) ), esc_html( $integration->read_more_label ) ); } $feature_help = new WPSEO_Admin_Help_Panel( WPSEO_Option::ALLOW_KEY_PREFIX . $integration->setting, /* translators: Hidden accessibility text; %s expands to an integration's name. */ sprintf( esc_html__( 'Help on: %s', 'wordpress-seo' ), esc_html( $integration->name ) ), $help_text ); $name = $integration->name; if ( ! empty( $integration->premium ) && $integration->premium === true ) { $name .= ' ' . new Premium_Badge_Presenter( $integration->name ); } if ( ! empty( $integration->new ) && $integration->new === true ) { $name .= ' ' . new Badge_Presenter( $integration->name ); } $disabled = $integration->disabled; $show_premium_upsell = false; $premium_upsell_url = ''; if ( $integration->premium === true && YoastSEO()->helpers->product->is_premium() === false ) { $disabled = true; $show_premium_upsell = true; $premium_upsell_url = WPSEO_Shortlinker::get( $integration->premium_upsell_url ); } $preserve_disabled_value = false; if ( $disabled ) { $preserve_disabled_value = true; } $yform->toggle_switch( WPSEO_Option::ALLOW_KEY_PREFIX . $integration->setting, [ 'on' => __( 'Allow Control', 'wordpress-seo' ), 'off' => __( 'Disable', 'wordpress-seo' ), ], $name, $feature_help->get_button_html() . $feature_help->get_panel_html(), [ 'disabled' => $disabled, 'preserve_disabled_value' => $preserve_disabled_value, 'show_premium_upsell' => $show_premium_upsell, 'premium_upsell_url' => $premium_upsell_url, ] ); do_action( 'Yoast\WP\SEO\admin_network_integration_after', $integration ); } ?>
    hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' ); admin/views/tabs/network/crawl-settings.php000064400000003207147206602470015104 0ustar00get_all(); ?>

    '; printf( /* translators: %1$s opens the link to the Yoast.com article about Crawl settings, %2$s closes the link, */ esc_html__( '%1$sLearn more about crawl settings.%2$s', 'wordpress-seo' ), '', '' ); echo '

    '; /** * Fires when displaying the crawl cleanup network tab. * * @param Yoast_Form $yform The yoast form object. */ do_action( 'wpseo_settings_tab_crawl_cleanup_network', $yform ); ?>
    hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' ); admin/views/tabs/network/restore-site.php000064400000001637147206602470014570 0ustar00' . esc_html__( 'Using this form you can reset a site to the default SEO settings.', 'wordpress-seo' ) . '

    '; if ( get_blog_count() <= 100 ) { $network_admin = new Yoast_Network_Admin(); $yform->select( 'site_id', __( 'Site ID', 'wordpress-seo' ), $network_admin->get_site_choices( false, true ) ); } else { $yform->textinput( 'site_id', __( 'Site ID', 'wordpress-seo' ) ); } wp_nonce_field( 'wpseo-network-restore', 'restore_site_nonce', false ); echo ''; admin/views/tabs/network/features.php000064400000007300147206602470013752 0ustar00get_all(); ?>

    helpers->product->is_premium(); $premium_version = YoastSEO()->helpers->product->get_premium_version(); if ( $feature->premium && $feature->premium_version ) { $not_supported_in_current_premium_version = $is_premium && version_compare( $premium_version, $feature->premium_version, '<' ); if ( $not_supported_in_current_premium_version ) { continue; } } $help_text = esc_html( $feature->label ); if ( ! empty( $feature->extra ) ) { $help_text .= ' ' . $feature->extra; } if ( ! empty( $feature->read_more_label ) ) { $url = $feature->read_more_url; if ( ! empty( $feature->premium ) && $feature->premium === true ) { $url = $feature->premium_url; } $help_text .= sprintf( '%2$s', esc_url( WPSEO_Shortlinker::get( $url ) ), esc_html( $feature->read_more_label ) ); } $feature_help = new WPSEO_Admin_Help_Panel( WPSEO_Option::ALLOW_KEY_PREFIX . $feature->setting, /* translators: Hidden accessibility text; %s expands to a feature's name. */ sprintf( esc_html__( 'Help on: %s', 'wordpress-seo' ), esc_html( $feature->name ) ), $help_text ); $name = $feature->name; if ( ! empty( $feature->premium ) && $feature->premium === true ) { $name .= ' ' . new Premium_Badge_Presenter( $feature->name ); } if ( ! empty( $feature->in_beta ) && $feature->in_beta === true ) { $name .= ' ' . new Beta_Badge_Presenter( $feature->name ); } $disabled = false; $show_premium_upsell = false; $premium_upsell_url = ''; $note_when_disabled = ''; if ( $feature->premium === true && YoastSEO()->helpers->product->is_premium() === false ) { $disabled = true; $show_premium_upsell = true; $premium_upsell_url = WPSEO_Shortlinker::get( $feature->premium_upsell_url ); } $preserve_disabled_value = false; if ( $disabled ) { $preserve_disabled_value = true; } $yform->toggle_switch( WPSEO_Option::ALLOW_KEY_PREFIX . $feature->setting, [ 'on' => __( 'Allow Control', 'wordpress-seo' ), 'off' => __( 'Disable', 'wordpress-seo' ), ], $name, $feature_help->get_button_html() . $feature_help->get_panel_html(), [ 'disabled' => $disabled, 'preserve_disabled_value' => $preserve_disabled_value, 'show_premium_upsell' => $show_premium_upsell, 'premium_upsell_url' => $premium_upsell_url, 'note_when_disabled' => $note_when_disabled, ] ); } ?>
    hidden( 'show_onboarding_notice', 'wpseo_show_onboarding_notice' ); admin/views/tabs/dashboard/site-analysis.php000064400000000653147206602470015163 0ustar00'; admin/views/tabs/dashboard/dashboard.php000064400000002023147206602470014316 0ustar00

    admin/views/partial-notifications-errors.php000064400000002202147206602470015323 0ustar00



    ID ) === 'on' ) ? 'checked' : ''; ?> />
    ID ) === 'on' ) ? 'checked' : ''; ?> />

    ID ) === 'on' ) ? 'checked' : ''; ?> />

    ID ) === 'on' ) ? 'checked' : ''; ?> />

    admin/views/licenses.php000064400000043671147206602470011332 0ustar00 WPSEO_Shortlinker::get( 'https://yoa.st/zz' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zy' ), 'title' => 'Yoast SEO Premium', /* translators: %1$s expands to Yoast SEO */ 'desc' => sprintf( __( 'The premium version of %1$s with more features & support.', 'wordpress-seo' ), 'Yoast SEO' ), 'image' => plugin_dir_url( WPSEO_FILE ) . 'packages/js/images/Yoast_SEO_Icon.svg', 'benefits' => [], ]; $extensions = [ WPSEO_Addon_Manager::LOCAL_SLUG => [ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zt' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zs' ), 'title' => 'Local SEO', 'display_title' => __( 'Stand out for local searches', 'wordpress-seo' ), 'desc' => __( 'Rank better locally and in Google Maps, without breaking a sweat!', 'wordpress-seo' ), 'image' => plugins_url( 'images/local_plugin_assistant.svg?v=' . WPSEO_VERSION, WPSEO_FILE ), 'benefits' => [ __( 'Attract more customers to your site and physical store', 'wordpress-seo' ), __( 'Automatically get technical SEO best practices for local businesses', 'wordpress-seo' ), __( 'Easily add maps, address finders, and opening hours to your content', 'wordpress-seo' ), __( 'Optimize your business for multiple locations', 'wordpress-seo' ), ], ], WPSEO_Addon_Manager::VIDEO_SLUG => [ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zx/' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zw/' ), 'title' => 'Video SEO', 'display_title' => __( 'Drive more views to your videos', 'wordpress-seo' ), 'desc' => __( 'Optimize your videos to show them off in search results and get more clicks!', 'wordpress-seo' ), 'image' => plugins_url( 'images/video_plugin_assistant.svg?v=' . WPSEO_VERSION, WPSEO_FILE ), 'benefits' => [ __( 'Automatically get technical SEO best practices for video content', 'wordpress-seo' ), __( 'Make sure your videos load quickly for users', 'wordpress-seo' ), __( 'Make your videos responsive for all screen sizes', 'wordpress-seo' ), __( 'Optimize your video previews & thumbnails', 'wordpress-seo' ), ], ], WPSEO_Addon_Manager::NEWS_SLUG => [ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zv/' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zu/' ), 'title' => 'News SEO', 'display_title' => __( 'Rank higher in Google\'s news carousel', 'wordpress-seo' ), 'desc' => __( 'Are you in Google News? Increase your traffic from Google News by optimizing for it!', 'wordpress-seo' ), 'image' => plugins_url( 'images/news_plugin_assistant.svg?v=' . WPSEO_VERSION, WPSEO_FILE ), 'benefits' => [ __( 'Optimize your site for Google News', 'wordpress-seo' ), __( 'Ping Google on the publication of a new post', 'wordpress-seo' ), __( 'Add all necessary schema.org markup', 'wordpress-seo' ), __( 'Get XML sitemaps', 'wordpress-seo' ), ], ], ]; // Add Yoast WooCommerce SEO when WooCommerce is active. if ( YoastSEO()->helpers->woocommerce->is_active() ) { $extensions[ WPSEO_Addon_Manager::WOOCOMMERCE_SLUG ] = [ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zr' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/zq' ), 'title' => 'Yoast WooCommerce SEO', 'display_title' => __( 'Drive more traffic to your online store', 'wordpress-seo' ), /* translators: %1$s expands to Yoast SEO */ 'desc' => sprintf( __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ), 'image' => plugins_url( 'images/woo_plugin_assistant.svg?v=' . WPSEO_VERSION, WPSEO_FILE ), 'benefits' => [ __( 'Write product pages that rank using the SEO analysis', 'wordpress-seo' ), __( 'Increase Google clicks with rich results', 'wordpress-seo' ), __( 'Add global identifiers for variable products', 'wordpress-seo' ), /* translators: %1$s expands to Yoast SEO, %2$s expands to WooCommerce */ sprintf( __( 'Seamless integration between %1$s and %2$s', 'wordpress-seo' ), 'Yoast SEO', 'WooCommerce' ), __( 'Turn more visitors into customers!', 'wordpress-seo' ), ], 'buy_button' => 'WooCommerce SEO', ]; } // The total number of plugins to consider is the length of the array + 1 for Premium. // @phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound $number_plugins_total = ( count( $extensions ) + 1 ); // @phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound $number_plugins_active = 0; $extensions['yoast-seo-plugin-subscription'] = [ 'buyUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/premium-page-bundle-buy' ), 'infoUrl' => WPSEO_Shortlinker::get( 'https://yoa.st/premium-page-bundle-info' ), /* translators: used in phrases such as "More information about all the Yoast plugins" */ 'title' => __( 'all the Yoast plugins', 'wordpress-seo' ), 'display_title' => __( 'Cover all your SEO bases', 'wordpress-seo' ), 'desc' => '', 'image' => plugins_url( 'images/plugin_subscription.svg?v=' . WPSEO_VERSION, WPSEO_FILE ), 'benefits' => [ __( 'Get all 5 Yoast plugins for WordPress at a big discount', 'wordpress-seo' ), __( 'Reach new customers who live near your business', 'wordpress-seo' ), __( 'Drive more views to your videos', 'wordpress-seo' ), __( 'Rank higher in Google\'s news carousel', 'wordpress-seo' ), __( 'Drive more traffic to your online store', 'wordpress-seo' ), ], /* translators: used in phrases such as "Buy all the Yoast plugins" */ 'buy_button' => __( 'all the Yoast plugins', 'wordpress-seo' ), ]; $addon_manager = new WPSEO_Addon_Manager(); $has_valid_premium_subscription = YoastSEO()->helpers->product->is_premium() && $addon_manager->has_valid_subscription( WPSEO_Addon_Manager::PREMIUM_SLUG ); /* translators: %1$s expands to Yoast SEO. */ $wpseo_extensions_header = sprintf( __( '%1$s Extensions', 'wordpress-seo' ), 'Yoast SEO' ); $new_tab_message = sprintf( '%1$s', /* translators: Hidden accessibility text. */ esc_html__( '(Opens in a new browser tab)', 'wordpress-seo' ) ); $sale_badge = ''; $premium_sale_badge = ''; if ( YoastSEO()->classes->get( Promotion_Manager::class )->is( 'black-friday-2024-promotion' ) ) { /* translators: %1$s expands to opening span, %2$s expands to closing span */ $sale_badge_span = sprintf( esc_html__( '%1$s30%% OFF%2$s', 'wordpress-seo' ), '', '' ); $sale_badge = '
    ' . $sale_badge_span . '
    '; $premium_sale_badge = ( $has_valid_premium_subscription ) ? '' : $sale_badge; } ?>
    admin/views/interface-yoast-form-element.php000064400000000373147206602470015202 0ustar00%1$s', /* translators: Hidden accessibility text. */ esc_html__( 'Hide this item.', 'wordpress-seo' ) ); break; case 'dismissed': $button = sprintf( '', /* translators: Hidden accessibility text. */ esc_html__( 'Show this item.', 'wordpress-seo' ) ); break; } $notifications .= sprintf( '
    %4$s%5$s
    ', esc_attr( $notification->get_id() ), esc_attr( $notification->get_nonce() ), esc_attr( $notification->get_json() ), // This needs to be fixed in https://github.com/Yoast/wordpress-seo-premium/issues/2548. $notification, // Note: $button is properly escaped above. $button ); } return $notifications; } } $wpseo_i18n_summary = $yoast_seo_i18n_issues; if ( ! $yoast_seo_active ) { $yoast_seo_dashicon = 'yes'; $wpseo_i18n_summary = $yoast_seo_i18n_no_issues; } ?>

    ()

    esc_attr( $yoast_seo_type . '-dismissed' ), 'paper_id_prefix' => 'yoast-', 'class' => 'yoast-notifications-dismissed', 'content' => _yoast_display_notifications( $yoast_seo_dismissed, 'dismissed' ), 'collapsible' => true, 'collapsible_header_class' => 'yoast-notification', ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: get_output() output is properly escaped. echo $dismissed_paper->get_output(); } ?>

    admin/views/form/select.php000064400000002115147206602470011733 0ustar00 admin/views/class-yoast-input-select.php000064400000005645147206602470014400 0ustar00select_id = $select_id; $this->select_name = $select_name; $this->select_options = $select_options; $this->selected_option = $selected_option; } /** * Print the rendered view. * * @return void */ public function output_html() { // Extract it, because we want each value accessible via a variable instead of accessing it as an array. extract( $this->get_select_values() ); require WPSEO_PATH . 'admin/views/form/select.php'; } /** * Return the rendered view. * * @return string */ public function get_html() { ob_start(); $this->output_html(); $rendered_output = ob_get_contents(); ob_end_clean(); return $rendered_output; } /** * Add an attribute to the attributes property. * * @param string $attribute The name of the attribute to add. * @param string $value The value of the attribute. * * @return void */ public function add_attribute( $attribute, $value ) { $this->select_attributes[ $attribute ] = $value; } /** * Return the set fields for the select. * * @return array */ private function get_select_values() { return [ 'id' => $this->select_id, 'name' => $this->select_name, 'attributes' => $this->get_attributes(), 'options' => $this->select_options, 'selected' => $this->selected_option, ]; } /** * Return the attribute string, when there are attributes set. * * @return string */ private function get_attributes() { $attributes = $this->select_attributes; if ( ! empty( $attributes ) ) { array_walk( $attributes, [ $this, 'parse_attribute' ] ); return implode( ' ', $attributes ) . ' '; } return ''; } /** * Get an attribute from the attributes. * * @param string $value The value of the attribute. * @param string $attribute The attribute to look for. * * @return void */ private function parse_attribute( &$value, $attribute ) { $value = sprintf( '%s="%s"', sanitize_key( $attribute ), esc_attr( $value ) ); } } admin/views/partial-notifications-warnings.php000064400000002101147206602470015635 0ustar00get_primary_term_taxonomies(); foreach ( $taxonomies as $taxonomy ) { $content .= $this->primary_term_field( $taxonomy->name ); $content .= wp_nonce_field( 'save-primary-term', WPSEO_Meta::$form_prefix . 'primary_' . $taxonomy->name . '_nonce', false, false ); } return $content; } /** * Generates the HTML for a hidden field for a primary taxonomy. * * @param string $taxonomy_name The taxonomy's slug. * * @return string The HTML for a hidden primary taxonomy field. */ protected function primary_term_field( $taxonomy_name ) { return sprintf( '', esc_attr( $this->generate_field_id( $taxonomy_name ) ), esc_attr( $this->generate_field_name( $taxonomy_name ) ), esc_attr( $this->get_primary_term( $taxonomy_name ) ) ); } /** * Generates an id for a primary taxonomy's hidden field. * * @param string $taxonomy_name The taxonomy's slug. * * @return string The field id. */ protected function generate_field_id( $taxonomy_name ) { return 'yoast-wpseo-primary-' . $taxonomy_name; } /** * Generates a name for a primary taxonomy's hidden field. * * @param string $taxonomy_name The taxonomy's slug. * * @return string The field id. */ protected function generate_field_name( $taxonomy_name ) { return WPSEO_Meta::$form_prefix . 'primary_' . $taxonomy_name . '_term'; } /** * Adds primary term templates. * * @return void */ public function wp_footer() { $taxonomies = $this->get_primary_term_taxonomies(); if ( ! empty( $taxonomies ) ) { $this->include_js_templates(); } } /** * Enqueues all the assets needed for the primary term interface. * * @return void */ public function enqueue_assets() { global $pagenow; if ( ! WPSEO_Metabox::is_post_edit( $pagenow ) ) { return; } $taxonomies = $this->get_primary_term_taxonomies(); // Only enqueue if there are taxonomies that need a primary term. if ( empty( $taxonomies ) ) { return; } $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'primary-category' ); $mapped_taxonomies = $this->get_mapped_taxonomies_for_js( $taxonomies ); $data = [ 'taxonomies' => $mapped_taxonomies, ]; $asset_manager->localize_script( 'post-edit', 'wpseoPrimaryCategoryL10n', $data ); $asset_manager->localize_script( 'post-edit-classic', 'wpseoPrimaryCategoryL10n', $data ); } /** * Gets the id of the primary term. * * @param string $taxonomy_name Taxonomy name for the term. * * @return int primary term id */ protected function get_primary_term( $taxonomy_name ) { $primary_term = new WPSEO_Primary_Term( $taxonomy_name, $this->get_current_id() ); return $primary_term->get_primary_term(); } /** * Returns all the taxonomies for which the primary term selection is enabled. * * @param int|null $post_id Default current post ID. * @return array */ protected function get_primary_term_taxonomies( $post_id = null ) { if ( $post_id === null ) { $post_id = $this->get_current_id(); } $taxonomies = wp_cache_get( 'primary_term_taxonomies_' . $post_id, 'wpseo' ); if ( $taxonomies !== false ) { return $taxonomies; } $taxonomies = $this->generate_primary_term_taxonomies( $post_id ); wp_cache_set( 'primary_term_taxonomies_' . $post_id, $taxonomies, 'wpseo' ); return $taxonomies; } /** * Includes templates file. * * @return void */ protected function include_js_templates() { include_once WPSEO_PATH . 'admin/views/js-templates-primary-term.php'; } /** * Generates the primary term taxonomies. * * @param int $post_id ID of the post. * * @return array */ protected function generate_primary_term_taxonomies( $post_id ) { $post_type = get_post_type( $post_id ); $all_taxonomies = get_object_taxonomies( $post_type, 'objects' ); $all_taxonomies = array_filter( $all_taxonomies, [ $this, 'filter_hierarchical_taxonomies' ] ); /** * Filters which taxonomies for which the user can choose the primary term. * * @param array $taxonomies An array of taxonomy objects that are primary_term enabled. * @param string $post_type The post type for which to filter the taxonomies. * @param array $all_taxonomies All taxonomies for this post types, even ones that don't have primary term * enabled. */ $taxonomies = (array) apply_filters( 'wpseo_primary_term_taxonomies', $all_taxonomies, $post_type, $all_taxonomies ); return $taxonomies; } /** * Creates a map of taxonomies for localization. * * @param array $taxonomies The taxononmies that should be mapped. * * @return array The mapped taxonomies. */ protected function get_mapped_taxonomies_for_js( $taxonomies ) { return array_map( [ $this, 'map_taxonomies_for_js' ], $taxonomies ); } /** * Returns an array suitable for use in the javascript. * * @param stdClass $taxonomy The taxonomy to map. * * @return array The mapped taxonomy. */ private function map_taxonomies_for_js( $taxonomy ) { $primary_term = $this->get_primary_term( $taxonomy->name ); if ( empty( $primary_term ) ) { $primary_term = ''; } $terms = get_terms( [ 'taxonomy' => $taxonomy->name, 'update_term_meta_cache' => false, 'fields' => 'id=>name', ] ); $mapped_terms_for_js = []; foreach ( $terms as $id => $name ) { $mapped_terms_for_js[] = [ 'id' => $id, 'name' => $name, ]; } return [ 'title' => $taxonomy->labels->singular_name, 'name' => $taxonomy->name, 'primary' => $primary_term, 'singularLabel' => $taxonomy->labels->singular_name, 'fieldId' => $this->generate_field_id( $taxonomy->name ), 'restBase' => ( $taxonomy->rest_base ) ? $taxonomy->rest_base : $taxonomy->name, 'terms' => $mapped_terms_for_js, ]; } /** * Returns whether or not a taxonomy is hierarchical. * * @param stdClass $taxonomy Taxonomy object. * * @return bool */ private function filter_hierarchical_taxonomies( $taxonomy ) { return (bool) $taxonomy->hierarchical; } } admin/class-yoast-dashboard-widget.php000064400000007727147206602470014042 0ustar00statistics = $statistics; $this->asset_manager = new WPSEO_Admin_Asset_Manager(); } /** * Register WordPress hooks. * * @return void */ public function register_hooks() { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_dashboard_assets' ] ); add_action( 'admin_init', [ $this, 'queue_dashboard_widget' ] ); } /** * Adds the dashboard widget if it should be shown. * * @return void */ public function queue_dashboard_widget() { if ( $this->show_widget() ) { add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widget' ] ); } } /** * Adds dashboard widget to WordPress. * * @return void */ public function add_dashboard_widget() { add_filter( 'postbox_classes_dashboard_wpseo-dashboard-overview', [ $this, 'wpseo_dashboard_overview_class' ] ); wp_add_dashboard_widget( 'wpseo-dashboard-overview', /* translators: %s is the plugin name */ sprintf( __( '%s Posts Overview', 'wordpress-seo' ), 'Yoast SEO' ), [ $this, 'display_dashboard_widget' ] ); } /** * Adds CSS classes to the dashboard widget. * * @param array $classes An array of postbox CSS classes. * * @return array */ public function wpseo_dashboard_overview_class( $classes ) { $classes[] = 'yoast wpseo-dashboard-overview'; return $classes; } /** * Displays the dashboard widget. * * @return void */ public function display_dashboard_widget() { echo '
    '; } /** * Enqueues assets for the dashboard if the current page is the dashboard. * * @return void */ public function enqueue_dashboard_assets() { if ( ! $this->is_dashboard_screen() ) { return; } $this->asset_manager->localize_script( 'dashboard-widget', 'wpseoDashboardWidgetL10n', $this->localize_dashboard_script() ); $this->asset_manager->enqueue_script( 'dashboard-widget' ); $this->asset_manager->enqueue_style( 'wp-dashboard' ); $this->asset_manager->enqueue_style( 'monorepo' ); } /** * Translates strings used in the dashboard widget. * * @return array The translated strings. */ public function localize_dashboard_script() { return [ 'feed_header' => sprintf( /* translators: %1$s resolves to Yoast.com */ __( 'Latest blog posts on %1$s', 'wordpress-seo' ), 'Yoast.com' ), 'feed_footer' => __( 'Read more like this on our SEO blog', 'wordpress-seo' ), 'wp_version' => substr( $GLOBALS['wp_version'], 0, 3 ) . '-' . ( is_plugin_active( 'classic-editor/classic-editor.php' ) ? '1' : '0' ), 'php_version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION, ]; } /** * Checks if the current screen is the dashboard screen. * * @return bool Whether or not this is the dashboard screen. */ private function is_dashboard_screen() { $current_screen = get_current_screen(); return ( $current_screen instanceof WP_Screen && $current_screen->id === 'dashboard' ); } /** * Returns true when the dashboard widget should be shown. * * @return bool */ private function show_widget() { $analysis_seo = new WPSEO_Metabox_Analysis_SEO(); return $analysis_seo->is_enabled() && current_user_can( 'edit_posts' ); } } admin/statistics/class-statistics-service.php000064400000016075147206602470015513 0ustar00statistics = $statistics; } /** * Fetches statistics by REST request. * * @return WP_REST_Response The response object. */ public function get_statistics() { // Switch to the user locale with fallback to the site locale. switch_to_locale( get_user_locale() ); $this->labels = $this->labels(); $statistics = $this->statistic_items(); $data = [ 'header' => $this->get_header_from_statistics( $statistics ), 'seo_scores' => $statistics['scores'], ]; return new WP_REST_Response( $data ); } /** * Gets a header summarizing the given statistics results. * * @param array $statistics The statistics results. * * @return string The header summing up the statistics results. */ private function get_header_from_statistics( array $statistics ) { // Personal interpretation to allow release, should be looked at later. if ( $statistics['division'] === false ) { return __( 'You don\'t have any published posts, your SEO scores will appear here once you make your first post!', 'wordpress-seo' ); } if ( $statistics['division']['good'] > 0.66 ) { return __( 'Hey, your SEO is doing pretty well! Check out the stats:', 'wordpress-seo' ); } return __( 'Below are your published posts\' SEO scores. Now is as good a time as any to start improving some of your posts!', 'wordpress-seo' ); } /** * An array representing items to be added to the At a Glance dashboard widget. * * @return array The statistics for the current user. */ private function statistic_items() { $transient = $this->get_transient(); $user_id = get_current_user_id(); if ( isset( $transient[ $user_id ] ) ) { return $transient[ $user_id ]; } return $this->set_statistic_items_for_user( $transient, $user_id ); } /** * Gets the statistics transient value. Returns array if transient wasn't set. * * @return array|mixed Returns the transient or an empty array if the transient doesn't exist. */ private function get_transient() { $transient = get_transient( self::CACHE_TRANSIENT_KEY ); if ( $transient === false ) { return []; } return $transient; } /** * Set the statistics transient cache for a specific user. * * @param array $transient The current stored transient with the cached data. * @param int $user The user's ID to assign the retrieved values to. * * @return array The statistics transient for the user. */ private function set_statistic_items_for_user( $transient, $user ) { $scores = $this->get_seo_scores_with_post_count(); $division = $this->get_seo_score_division( $scores ); $transient[ $user ] = [ // Use array_values because array_filter may return non-zero indexed arrays. 'scores' => array_values( array_filter( $scores, [ $this, 'filter_items' ] ) ), 'division' => $division, ]; set_transient( self::CACHE_TRANSIENT_KEY, $transient, DAY_IN_SECONDS ); return $transient[ $user ]; } /** * Gets the division of SEO scores. * * @param array $scores The SEO scores. * * @return array|bool The division of SEO scores, false if there are no posts. */ private function get_seo_score_division( array $scores ) { $total = 0; $division = []; foreach ( $scores as $score ) { $total += $score['count']; } if ( $total === 0 ) { return false; } foreach ( $scores as $score ) { $division[ $score['seo_rank'] ] = ( $score['count'] / $total ); } return $division; } /** * Get all SEO ranks and data associated with them. * * @return array An array of SEO scores and associated data. */ private function get_seo_scores_with_post_count() { $ranks = WPSEO_Rank::get_all_ranks(); return array_map( [ $this, 'map_rank_to_widget' ], $ranks ); } /** * Converts a rank to data usable in the dashboard widget. * * @param WPSEO_Rank $rank The rank to map. * * @return array The mapped rank. */ private function map_rank_to_widget( WPSEO_Rank $rank ) { return [ 'seo_rank' => $rank->get_rank(), 'label' => $this->get_label_for_rank( $rank ), 'count' => $this->statistics->get_post_count( $rank ), 'link' => $this->get_link_for_rank( $rank ), ]; } /** * Returns a dashboard widget label to use for a certain rank. * * @param WPSEO_Rank $rank The rank to return a label for. * * @return string The label for the rank. */ private function get_label_for_rank( WPSEO_Rank $rank ) { return $this->labels[ $rank->get_rank() ]; } /** * Determines the labels for the various scoring ranks that are known within Yoast SEO. * * @return array Array containing the translatable labels. */ private function labels() { return [ WPSEO_Rank::NO_FOCUS => sprintf( /* translators: %1$s expands to an opening strong tag, %2$s expands to a closing strong tag */ __( 'Posts %1$swithout%2$s a focus keyphrase', 'wordpress-seo' ), '', '' ), WPSEO_Rank::BAD => sprintf( /* translators: %s expands to the score */ __( 'Posts with the SEO score: %s', 'wordpress-seo' ), '' . __( 'Needs improvement', 'wordpress-seo' ) . '' ), WPSEO_Rank::OK => sprintf( /* translators: %s expands to the score */ __( 'Posts with the SEO score: %s', 'wordpress-seo' ), '' . __( 'OK', 'wordpress-seo' ) . '' ), WPSEO_Rank::GOOD => sprintf( /* translators: %s expands to the score */ __( 'Posts with the SEO score: %s', 'wordpress-seo' ), '' . __( 'Good', 'wordpress-seo' ) . '' ), WPSEO_Rank::NO_INDEX => __( 'Posts that should not show up in search results', 'wordpress-seo' ), ]; } /** * Filter items if they have a count of zero. * * @param array $item The item to potentially filter out. * * @return bool Whether or not the count is zero. */ private function filter_items( $item ) { return $item['count'] !== 0; } /** * Returns a link for the overview of posts of a certain rank. * * @param WPSEO_Rank $rank The rank to return a link for. * * @return string The link that shows an overview of posts with that rank. */ private function get_link_for_rank( WPSEO_Rank $rank ) { if ( current_user_can( 'edit_others_posts' ) === false ) { return esc_url( admin_url( 'edit.php?post_status=publish&post_type=post&seo_filter=' . $rank->get_rank() . '&author=' . get_current_user_id() ) ); } return esc_url( admin_url( 'edit.php?post_status=publish&post_type=post&seo_filter=' . $rank->get_rank() ) ); } } admin/statistics/class-statistics-integration.php000064400000001347147206602470016372 0ustar00 $site_label pairs. */ public function get_site_choices( $include_empty = false, $show_title = false ) { $choices = []; if ( $include_empty ) { $choices['-'] = __( 'None', 'wordpress-seo' ); } $criteria = [ 'deleted' => 0, 'network_id' => get_current_network_id(), ]; $sites = get_sites( $criteria ); foreach ( $sites as $site ) { $site_name = $site->domain . $site->path; if ( $show_title ) { $site_name = $site->blogname . ' (' . $site->domain . $site->path . ')'; } $choices[ $site->blog_id ] = $site->blog_id . ': ' . $site_name; $site_states = $this->get_site_states( $site ); if ( ! empty( $site_states ) ) { $choices[ $site->blog_id ] .= ' [' . implode( ', ', $site_states ) . ']'; } } return $choices; } /** * Gets the states of a site. * * @param WP_Site $site Site object. * * @return array Array of $state_slug => $state_label pairs. */ public function get_site_states( $site ) { $available_states = [ 'public' => __( 'public', 'wordpress-seo' ), 'archived' => __( 'archived', 'wordpress-seo' ), 'mature' => __( 'mature', 'wordpress-seo' ), 'spam' => __( 'spam', 'wordpress-seo' ), 'deleted' => __( 'deleted', 'wordpress-seo' ), ]; $site_states = []; foreach ( $available_states as $state_slug => $state_label ) { if ( $site->$state_slug === '1' ) { $site_states[ $state_slug ] = $state_label; } } return $site_states; } /** * Handles a request to update plugin network options. * * This method works similar to how option updates are handled in `wp-admin/options.php` and * `wp-admin/network/settings.php`. * * @return void */ public function handle_update_options_request() { // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: Nonce verification will happen in verify_request below. if ( ! isset( $_POST['network_option_group'] ) || ! is_string( $_POST['network_option_group'] ) ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: Nonce verification will happen in verify_request below. $option_group = sanitize_text_field( wp_unslash( $_POST['network_option_group'] ) ); if ( empty( $option_group ) ) { return; } $this->verify_request( "{$option_group}-network-options" ); $whitelist_options = Yoast_Network_Settings_API::get()->get_whitelist_options( $option_group ); if ( empty( $whitelist_options ) ) { add_settings_error( $option_group, 'settings_updated', __( 'You are not allowed to modify unregistered network settings.', 'wordpress-seo' ), 'error' ); $this->terminate_request(); return; } // phpcs:disable WordPress.Security.NonceVerification -- Nonce verified via `verify_request()` above. foreach ( $whitelist_options as $option_name ) { $value = null; if ( isset( $_POST[ $option_name ] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: Adding sanitize_text_field around this will break the saving of settings because it expects a string: https://github.com/Yoast/wordpress-seo/issues/12440. $value = wp_unslash( $_POST[ $option_name ] ); } WPSEO_Options::update_site_option( $option_name, $value ); } // phpcs:enable WordPress.Security.NonceVerification $settings_errors = get_settings_errors(); if ( empty( $settings_errors ) ) { add_settings_error( $option_group, 'settings_updated', __( 'Settings Updated.', 'wordpress-seo' ), 'updated' ); } $this->terminate_request(); } /** * Handles a request to restore a site's default settings. * * @return void */ public function handle_restore_site_request() { $this->verify_request( 'wpseo-network-restore', 'restore_site_nonce' ); $option_group = 'wpseo_ms'; // phpcs:ignore WordPress.Security.NonceVerification -- Nonce verified via `verify_request()` above. $site_id = ! empty( $_POST[ $option_group ]['site_id'] ) ? (int) $_POST[ $option_group ]['site_id'] : 0; if ( ! $site_id ) { add_settings_error( $option_group, 'settings_updated', __( 'No site has been selected to restore.', 'wordpress-seo' ), 'error' ); $this->terminate_request(); return; } $site = get_site( $site_id ); if ( ! $site ) { /* translators: %s expands to the ID of a site within a multisite network. */ add_settings_error( $option_group, 'settings_updated', sprintf( __( 'Site with ID %d not found.', 'wordpress-seo' ), $site_id ), 'error' ); } else { WPSEO_Options::reset_ms_blog( $site_id ); /* translators: %s expands to the name of a site within a multisite network. */ add_settings_error( $option_group, 'settings_updated', sprintf( __( '%s restored to default SEO settings.', 'wordpress-seo' ), esc_html( $site->blogname ) ), 'updated' ); } $this->terminate_request(); } /** * Outputs nonce, action and option group fields for a network settings page in the plugin. * * @param string $option_group Option group name for the current page. * * @return void */ public function settings_fields( $option_group ) { ?> enqueue_script( 'network-admin' ); $translations = [ /* translators: %s: success message */ 'success_prefix' => __( 'Success: %s', 'wordpress-seo' ), /* translators: %s: error message */ 'error_prefix' => __( 'Error: %s', 'wordpress-seo' ), ]; $asset_manager->localize_script( 'network-admin', 'wpseoNetworkAdminGlobalL10n', $translations ); } /** * Hooks in the necessary actions and filters. * * @return void */ public function register_hooks() { if ( ! $this->meets_requirements() ) { return; } add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] ); add_action( 'admin_action_' . self::UPDATE_OPTIONS_ACTION, [ $this, 'handle_update_options_request' ] ); add_action( 'admin_action_' . self::RESTORE_SITE_ACTION, [ $this, 'handle_restore_site_request' ] ); } /** * Hooks in the necessary AJAX actions. * * @return void */ public function register_ajax_hooks() { add_action( 'wp_ajax_' . self::UPDATE_OPTIONS_ACTION, [ $this, 'handle_update_options_request' ] ); add_action( 'wp_ajax_' . self::RESTORE_SITE_ACTION, [ $this, 'handle_restore_site_request' ] ); } /** * Checks whether the requirements to use this class are met. * * @return bool True if requirements are met, false otherwise. */ public function meets_requirements() { return is_multisite() && is_network_admin(); } /** * Verifies that the current request is valid. * * @param string $action Nonce action. * @param string $query_arg Optional. Nonce query argument. Default '_wpnonce'. * * @return void */ public function verify_request( $action, $query_arg = '_wpnonce' ) { $has_access = current_user_can( 'wpseo_manage_network_options' ); if ( wp_doing_ajax() ) { check_ajax_referer( $action, $query_arg ); if ( ! $has_access ) { wp_die( -1, 403 ); } return; } check_admin_referer( $action, $query_arg ); if ( ! $has_access ) { wp_die( esc_html__( 'You are not allowed to perform this action.', 'wordpress-seo' ) ); } } /** * Terminates the current request by either redirecting back or sending an AJAX response. * * @return void */ public function terminate_request() { if ( wp_doing_ajax() ) { $settings_errors = get_settings_errors(); if ( ! empty( $settings_errors ) && $settings_errors[0]['type'] === 'updated' ) { wp_send_json_success( $settings_errors, 200 ); } wp_send_json_error( $settings_errors, 400 ); } $this->persist_settings_errors(); $this->redirect_back( [ 'settings-updated' => 'true' ] ); } /** * Persists settings errors. * * Settings errors are stored in a transient for 30 seconds so that this transient * can be retrieved on the next page load. * * @return void */ protected function persist_settings_errors() { /* * A regular transient is used here, since it is automatically cleared right after the redirect. * A network transient would be cleaner, but would require a lot of copied code from core for * just a minor adjustment when displaying settings errors. */ set_transient( 'settings_errors', get_settings_errors(), 30 ); } /** * Redirects back to the referer URL, with optional query arguments. * * @param array $query_args Optional. Query arguments to add to the redirect URL. Default none. * * @return void */ protected function redirect_back( $query_args = [] ) { $sendback = wp_get_referer(); if ( ! empty( $query_args ) ) { $sendback = add_query_arg( $query_args, $sendback ); } wp_safe_redirect( $sendback ); exit; } } admin/listeners/class-listener.php000064400000000460147206602470013315 0ustar00plugin_file = $plugin_file; $this->add_suffix = $add_suffix; } /** * Determines the URL of the asset on the dev server. * * @param WPSEO_Admin_Asset $asset The asset to determine the URL for. * @param string $type The type of asset. Usually JS or CSS. * * @return string The URL of the asset. */ public function get_url( WPSEO_Admin_Asset $asset, $type ) { $path = $this->get_path( $asset, $type ); if ( empty( $path ) ) { return ''; } return plugins_url( $path, $this->plugin_file ); } /** * Determines the path relative to the plugin folder of an asset. * * @param WPSEO_Admin_Asset $asset The asset to determine the path for. * @param string $type The type of asset. * * @return string The path to the asset file. */ protected function get_path( WPSEO_Admin_Asset $asset, $type ) { $relative_path = ''; $rtl_suffix = ''; switch ( $type ) { case WPSEO_Admin_Asset::TYPE_JS: $relative_path = 'js/dist/' . $asset->get_src(); if ( $this->add_suffix ) { $relative_path .= $asset->get_suffix() . '.js'; } break; case WPSEO_Admin_Asset::TYPE_CSS: // Path and suffix for RTL stylesheets. if ( is_rtl() && $asset->has_rtl() ) { $rtl_suffix = '-rtl'; } $relative_path = 'css/dist/' . $asset->get_src() . $rtl_suffix . $asset->get_suffix() . '.css'; break; } return $relative_path; } } admin/class-option-tabs.php000064400000004407147206602470011724 0ustar00base = sanitize_title( $base ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $tab = isset( $_GET['tab'] ) && is_string( $_GET['tab'] ) ? sanitize_text_field( wp_unslash( $_GET['tab'] ) ) : ''; $this->active_tab = empty( $tab ) ? $active_tab : $tab; } /** * Get the base. * * @return string */ public function get_base() { return $this->base; } /** * Add a tab. * * @param WPSEO_Option_Tab $tab Tab to add. * * @return $this */ public function add_tab( WPSEO_Option_Tab $tab ) { $this->tabs[] = $tab; return $this; } /** * Get active tab. * * @return WPSEO_Option_Tab|null Get the active tab. */ public function get_active_tab() { if ( empty( $this->active_tab ) ) { return null; } $active_tabs = array_filter( $this->tabs, [ $this, 'is_active_tab' ] ); if ( ! empty( $active_tabs ) ) { $active_tabs = array_values( $active_tabs ); if ( count( $active_tabs ) === 1 ) { return $active_tabs[0]; } } return null; } /** * Is the tab the active tab. * * @param WPSEO_Option_Tab $tab Tab to check for active tab. * * @return bool */ public function is_active_tab( WPSEO_Option_Tab $tab ) { return ( $tab->get_name() === $this->active_tab ); } /** * Get all tabs. * * @return WPSEO_Option_Tab[] */ public function get_tabs() { return $this->tabs; } /** * Display the tabs. * * @param Yoast_Form $yform Yoast Form needed in the views. * * @return void */ public function display( Yoast_Form $yform ) { $formatter = new WPSEO_Option_Tabs_Formatter(); $formatter->run( $this, $yform ); } } admin/exceptions/class-file-size-exception.php000064400000002102147206602470015517 0ustar00register_yoast_plugins(); $this->register_yoast_plugins_status(); } /** * Registers all the available Yoast SEO plugins. * * @return void */ protected function register_yoast_plugins() { $this->plugins = [ 'yoast-seo-premium' => [ 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/1y7' ), 'title' => 'Yoast SEO Premium', 'description' => sprintf( /* translators: %1$s expands to Yoast SEO */ __( 'The premium version of %1$s with more features & support.', 'wordpress-seo' ), 'Yoast SEO' ), 'installed' => false, 'slug' => 'wordpress-seo-premium/wp-seo-premium.php', 'version_sync' => true, 'premium' => true, ], 'video-seo-for-wordpress-seo-by-yoast' => [ 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/1y8' ), 'title' => 'Video SEO', 'description' => __( 'Optimize your videos to show them off in search results and get more clicks!', 'wordpress-seo' ), 'installed' => false, 'slug' => 'wpseo-video/video-seo.php', 'version_sync' => true, 'premium' => true, ], 'yoast-news-seo' => [ 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/1y9' ), 'title' => 'News SEO', 'description' => __( 'Are you in Google News? Increase your traffic from Google News by optimizing for it!', 'wordpress-seo' ), 'installed' => false, 'slug' => 'wpseo-news/wpseo-news.php', 'version_sync' => true, 'premium' => true, ], 'local-seo-for-yoast-seo' => [ 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/1ya' ), 'title' => 'Local SEO', 'description' => __( 'Rank better locally and in Google Maps, without breaking a sweat!', 'wordpress-seo' ), 'installed' => false, 'slug' => 'wordpress-seo-local/local-seo.php', 'version_sync' => true, 'premium' => true, ], 'yoast-woocommerce-seo' => [ 'url' => WPSEO_Shortlinker::get( 'https://yoa.st/1o0' ), 'title' => 'Yoast WooCommerce SEO', 'description' => sprintf( /* translators: %1$s expands to Yoast SEO */ __( 'Seamlessly integrate WooCommerce with %1$s and get extra features!', 'wordpress-seo' ), 'Yoast SEO' ), '_dependencies' => [ 'WooCommerce' => [ 'slug' => 'woocommerce/woocommerce.php', // Kept for backwards compatibility, in case external code uses get_dependencies(). Deprecated in 22.4. 'conditional' => new WooCommerce_Conditional(), ], ], 'installed' => false, 'slug' => 'wpseo-woocommerce/wpseo-woocommerce.php', 'version_sync' => true, 'premium' => true, ], ]; } /** * Sets certain plugin properties based on WordPress' status. * * @return void */ protected function register_yoast_plugins_status() { foreach ( $this->plugins as $name => $plugin ) { $plugin_slug = $plugin['slug']; $plugin_path = WP_PLUGIN_DIR . '/' . $plugin_slug; if ( file_exists( $plugin_path ) ) { $plugin_data = get_plugin_data( $plugin_path, false, false ); $this->plugins[ $name ]['installed'] = true; $this->plugins[ $name ]['version'] = $plugin_data['Version']; $this->plugins[ $name ]['active'] = is_plugin_active( $plugin_slug ); } } } /** * Checks if there are dependencies available for the plugin. * * @param array $plugin The information available about the plugin. * * @return bool Whether there is a dependency present. */ public function has_dependencies( $plugin ) { return ( isset( $plugin['_dependencies'] ) && ! empty( $plugin['_dependencies'] ) ); } /** * Gets the dependencies for the plugin. * * @param array $plugin The information available about the plugin. * * @return array Array containing all the dependencies associated with the plugin. */ public function get_dependencies( $plugin ) { if ( ! $this->has_dependencies( $plugin ) ) { return []; } return $plugin['_dependencies']; } /** * Checks if all dependencies are satisfied. * * @param array $plugin The information available about the plugin. * * @return bool Whether or not the dependencies are satisfied. */ public function dependencies_are_satisfied( $plugin ) { if ( ! $this->has_dependencies( $plugin ) ) { return true; } $dependencies = $this->get_dependencies( $plugin ); $active_dependencies = array_filter( $dependencies, [ $this, 'is_dependency_active' ] ); return count( $active_dependencies ) === count( $dependencies ); } /** * Checks whether or not one of the plugins is properly installed and usable. * * @param array $plugin The information available about the plugin. * * @return bool Whether or not the plugin is properly installed. */ public function is_installed( $plugin ) { if ( empty( $plugin ) ) { return false; } return $this->is_available( $plugin ); } /** * Checks for the availability of the plugin. * * @param array $plugin The information available about the plugin. * * @return bool Whether or not the plugin is available. */ public function is_available( $plugin ) { return isset( $plugin['installed'] ) && $plugin['installed'] === true; } /** * Checks whether a dependency is active. * * @param array $dependency The information about the dependency to look for. * * @return bool Whether or not the dependency is active. */ public function is_dependency_active( $dependency ) { return $dependency['conditional']->is_met(); } /** * Gets an array of plugins that have defined dependencies. * * @return array Array of the plugins that have dependencies. */ public function get_plugins_with_dependencies() { return array_filter( $this->plugins, [ $this, 'has_dependencies' ] ); } /** * Determines whether or not a plugin is active. * * @param string $plugin The plugin slug to check. * * @return bool Whether or not the plugin is active. * * @deprecated 23.4 * @codeCoverageIgnore */ public function is_active( $plugin ) { _deprecated_function( __METHOD__, 'Yoast SEO 23.4', 'is_plugin_active' ); return is_plugin_active( $plugin ); } /** * Gets all the possibly available plugins. * * @return array Array containing the information about the plugins. * * @deprecated 23.4 * @codeCoverageIgnore */ public function get_plugins() { _deprecated_function( __METHOD__, 'Yoast SEO 23.4', 'WPSEO_Addon_Manager::get_addon_filenames' ); return $this->plugins; } /** * Gets a specific plugin. Returns an empty array if it cannot be found. * * @param string $plugin The plugin to search for. * * @return array The plugin properties. * * @deprecated 23.4 * @codeCoverageIgnore */ public function get_plugin( $plugin ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- needed for BC reasons _deprecated_function( __METHOD__, 'Yoast SEO 23.4', 'WPSEO_Addon_Manager::get_plugin_file' ); if ( ! isset( $this->plugins[ $plugin ] ) ) { return []; } return $this->plugins[ $plugin ]; } /** * Gets the version of the plugin. * * @param array $plugin The information available about the plugin. * * @return string The version associated with the plugin. * * @deprecated 23.4 * @codeCoverageIgnore */ public function get_version( $plugin ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- needed for BC reasons _deprecated_function( __METHOD__, 'Yoast SEO 23.4', 'WPSEO_Addon_Manager::get_installed_addons_versions' ); if ( ! isset( $plugin['version'] ) ) { return ''; } return $plugin['version']; } /** * Checks whether a dependency is available. * * @param array $dependency The information about the dependency to look for. * * @return bool Whether or not the dependency is available. * @deprecated 22.4 * @codeCoverageIgnore */ public function is_dependency_available( $dependency ) { _deprecated_function( __METHOD__, 'Yoast SEO 22.4' ); return isset( get_plugins()[ $dependency['slug'] ] ); } /** * Gets the names of the dependencies. * * @param array $plugin The plugin to get the dependency names from. * * @return array Array containing the names of the associated dependencies. * @deprecated 23.4 * @codeCoverageIgnore */ public function get_dependency_names( $plugin ) { // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found, VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- needed for BC reasons _deprecated_function( __METHOD__, 'Yoast SEO 23.4' ); if ( ! $this->has_dependencies( $plugin ) ) { return []; } return array_keys( $plugin['_dependencies'] ); } /** * Determines whether or not a plugin is a Premium product. * * @param array $plugin The plugin to check. * * @return bool Whether or not the plugin is a Premium product. * * @deprecated 23.4 * @codeCoverageIgnore */ public function is_premium( $plugin ) { _deprecated_function( __METHOD__, 'Yoast SEO 23.4' ); return isset( $plugin['premium'] ) && $plugin['premium'] === true; } /** * Gets all installed plugins. * * @return array The installed plugins. * * @deprecated 23.4 * @codeCoverageIgnore */ public function get_installed_plugins() { _deprecated_function( __METHOD__, 'Yoast SEO 23.4', 'WPSEO_Addon_Manager::get_installed_addons_versions' ); $installed = []; foreach ( $this->plugins as $plugin_key => $plugin ) { if ( $this->is_installed( $plugin ) ) { $installed[ $plugin_key ] = $plugin; } } return $installed; } } admin/class-collector.php000064400000001755147206602470011456 0ustar00collections[] = $collection; } /** * Collects the data from the collection objects. * * @return array The collected data. */ public function collect() { $data = []; foreach ( $this->collections as $collection ) { $data = array_merge( $data, $collection->get() ); } return $data; } /** * Returns the collected data as a JSON encoded string. * * @return false|string The encode string. */ public function get_as_json() { return WPSEO_Utils::format_json_encode( $this->collect() ); } } admin/taxonomy/class-taxonomy.php000064400000034466147206602470013231 0ustar00taxonomy = $this::get_taxonomy(); add_action( 'edit_term', [ $this, 'update_term' ], 99, 3 ); add_action( 'init', [ $this, 'custom_category_descriptions_allow_html' ] ); add_action( 'admin_init', [ $this, 'admin_init' ] ); if ( self::is_term_overview( $GLOBALS['pagenow'] ) ) { new WPSEO_Taxonomy_Columns(); } $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); $this->analysis_inclusive_language = new WPSEO_Metabox_Analysis_Inclusive_Language(); } /** * Add hooks late enough for taxonomy object to be available for checks. * * @return void */ public function admin_init() { $taxonomy = get_taxonomy( $this->taxonomy ); if ( empty( $taxonomy ) || empty( $taxonomy->public ) || ! $this->show_metabox() ) { return; } // Adds custom category description editor. Needs a hook that runs before the description field. add_action( "{$this->taxonomy}_term_edit_form_top", [ $this, 'custom_category_description_editor' ] ); add_action( sanitize_text_field( $this->taxonomy ) . '_edit_form', [ $this, 'term_metabox' ], 90, 1 ); add_action( 'admin_enqueue_scripts', [ $this, 'admin_enqueue_scripts' ] ); } /** * Show the SEO inputs for term. * * @param stdClass|WP_Term $term Term to show the edit boxes for. * * @return void */ public function term_metabox( $term ) { if ( WPSEO_Metabox::is_internet_explorer() ) { $this->show_internet_explorer_notice(); return; } $metabox = new WPSEO_Taxonomy_Metabox( $this->taxonomy, $term ); $metabox->display(); } /** * Renders the content for the internet explorer metabox. * * @return void */ private function show_internet_explorer_notice() { $product_title = YoastSEO()->helpers->product->get_product_name(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $product_title is hardcoded. printf( '

    %1$s

    ', $product_title ); echo '
    '; $content = sprintf( /* translators: 1: Link start tag to the Firefox website, 2: Link start tag to the Chrome website, 3: Link start tag to the Edge website, 4: Link closing tag. */ esc_html__( 'The browser you are currently using is unfortunately rather dated. Since we strive to give you the best experience possible, we no longer support this browser. Instead, please use %1$sFirefox%4$s, %2$sChrome%4$s or %3$sMicrosoft Edge%4$s.', 'wordpress-seo' ), '', '', '', '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Output escaped above. echo new Alert_Presenter( $content ); echo '
    '; } /** * Queue assets for taxonomy screens. * * @since 1.5.0 * * @return void */ public function admin_enqueue_scripts() { $pagenow = $GLOBALS['pagenow']; if ( ! ( self::is_term_edit( $pagenow ) || self::is_term_overview( $pagenow ) ) ) { return; } $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'scoring' ); $asset_manager->enqueue_style( 'monorepo' ); $tag_id = $this::get_tag_id(); if ( self::is_term_edit( $pagenow ) && ! is_null( $tag_id ) ) { wp_enqueue_media(); // Enqueue files needed for upload functionality. $asset_manager->enqueue_style( 'metabox-css' ); $asset_manager->enqueue_style( 'ai-generator' ); $asset_manager->enqueue_script( 'term-edit' ); /** * Remove the emoji script as it is incompatible with both React and any * contenteditable fields. */ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); $asset_manager->localize_script( 'term-edit', 'wpseoAdminL10n', WPSEO_Utils::get_admin_l10n() ); $script_data = [ 'analysis' => [ 'plugins' => [ 'replaceVars' => [ 'replace_vars' => $this->get_replace_vars(), 'recommended_replace_vars' => $this->get_recommended_replace_vars(), 'scope' => $this->determine_scope(), ], 'shortcodes' => [ 'wpseo_shortcode_tags' => $this->get_valid_shortcode_tags(), 'wpseo_filter_shortcodes_nonce' => wp_create_nonce( 'wpseo-filter-shortcodes' ), ], ], 'worker' => [ 'url' => YoastSEO()->helpers->asset->get_asset_url( 'yoast-seo-analysis-worker' ), 'dependencies' => YoastSEO()->helpers->asset->get_dependency_urls_by_handle( 'yoast-seo-analysis-worker' ), 'keywords_assessment_url' => YoastSEO()->helpers->asset->get_asset_url( 'yoast-seo-used-keywords-assessment' ), 'log_level' => WPSEO_Utils::get_analysis_worker_log_level(), ], ], 'metabox' => $this->localize_term_scraper_script( $tag_id ), 'isTerm' => true, 'postId' => $tag_id, 'termType' => $this->get_taxonomy(), 'usedKeywordsNonce' => wp_create_nonce( 'wpseo-keyword-usage' ), ]; /** * The website information repository. * * @var $repo Website_Information_Repository */ $repo = YoastSEO()->classes->get( Website_Information_Repository::class ); $term_information = $repo->get_term_site_information(); $term_information->set_term( get_term_by( 'id', $tag_id, $this::get_taxonomy() ) ); $script_data = array_merge_recursive( $term_information->get_legacy_site_information(), $script_data ); $asset_manager->localize_script( 'term-edit', 'wpseoScriptData', $script_data ); $asset_manager->enqueue_user_language_script(); } if ( self::is_term_overview( $pagenow ) ) { $asset_manager->enqueue_script( 'edit-page' ); } } /** * Update the taxonomy meta data on save. * * @param int $term_id ID of the term to save data for. * @param int $tt_id The taxonomy_term_id for the term. * @param string $taxonomy The taxonomy the term belongs to. * * @return void */ public function update_term( $term_id, $tt_id, $taxonomy ) { // Bail if this is a multisite installation and the site has been switched. if ( is_multisite() && ms_is_switched() ) { return; } /* Create post array with only our values. */ $new_meta_data = []; foreach ( WPSEO_Taxonomy_Meta::$defaults_per_term as $key => $default ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: Nonce is already checked by WordPress before executing this action. if ( isset( $_POST[ $key ] ) && is_string( $_POST[ $key ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: $data is getting sanitized later. $data = wp_unslash( $_POST[ $key ] ); $new_meta_data[ $key ] = ( $key !== 'wpseo_canonical' ) ? WPSEO_Utils::sanitize_text_field( $data ) : WPSEO_Utils::sanitize_url( $data ); } // If analysis is disabled remove that analysis score value from the DB. if ( $this->is_meta_value_disabled( $key ) ) { $new_meta_data[ $key ] = ''; } } // Saving the values. WPSEO_Taxonomy_Meta::set_values( $term_id, $taxonomy, $new_meta_data ); } /** * Determines if the given meta value key is disabled. * * @param string $key The key of the meta value. * @return bool Whether the given meta value key is disabled. */ public function is_meta_value_disabled( $key ) { if ( $key === 'wpseo_linkdex' && ! $this->analysis_seo->is_enabled() ) { return true; } if ( $key === 'wpseo_content_score' && ! $this->analysis_readability->is_enabled() ) { return true; } if ( $key === 'wpseo_inclusive_language_score' && ! $this->analysis_inclusive_language->is_enabled() ) { return true; } return false; } /** * Allows post-kses-filtered HTML in term descriptions. * * @return void */ public function custom_category_descriptions_allow_html() { remove_filter( 'term_description', 'wp_kses_data' ); remove_filter( 'pre_term_description', 'wp_filter_kses' ); add_filter( 'term_description', 'wp_kses_post' ); add_filter( 'pre_term_description', 'wp_filter_post_kses' ); } /** * Output the WordPress editor. * * @return void */ public function custom_category_description_editor() { wp_editor( '', 'description' ); } /** * Pass variables to js for use with the term-scraper. * * @param int $term_id The ID of the term to localize the script for. * * @return array */ public function localize_term_scraper_script( $term_id ) { $term = get_term_by( 'id', $term_id, $this::get_taxonomy() ); $taxonomy = get_taxonomy( $term->taxonomy ); $term_formatter = new WPSEO_Metabox_Formatter( new WPSEO_Term_Metabox_Formatter( $taxonomy, $term ) ); return $term_formatter->get_values(); } /** * Pass some variables to js for replacing variables. * * @return array */ public function localize_replace_vars_script() { return [ 'replace_vars' => $this->get_replace_vars(), 'recommended_replace_vars' => $this->get_recommended_replace_vars(), 'scope' => $this->determine_scope(), ]; } /** * Determines the scope based on the current taxonomy. * This can be used by the replacevar plugin to determine if a replacement needs to be executed. * * @return string String decribing the current scope. */ private function determine_scope() { $taxonomy = $this::get_taxonomy(); if ( $taxonomy === 'category' ) { return 'category'; } if ( $taxonomy === 'post_tag' ) { return 'tag'; } return 'term'; } /** * Determines if a given page is the term overview page. * * @param string $page The string to check for the term overview page. * * @return bool */ public static function is_term_overview( $page ) { return $page === 'edit-tags.php'; } /** * Determines if a given page is the term edit page. * * @param string $page The string to check for the term edit page. * * @return bool */ public static function is_term_edit( $page ) { return $page === 'term.php'; } /** * Function to get the labels for the current taxonomy. * * @return object|null Labels for the current taxonomy or null if the taxonomy is not set. */ public static function get_labels() { $term = self::get_taxonomy(); if ( $term !== '' ) { $taxonomy = get_taxonomy( $term ); return $taxonomy->labels; } return null; } /** * Retrieves a template. * Check if metabox for current taxonomy should be displayed. * * @return bool */ private function show_metabox() { $option_key = 'display-metabox-tax-' . $this->taxonomy; return WPSEO_Options::get( $option_key ); } /** * Getting the taxonomy from the URL. * * @return string */ private static function get_taxonomy() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['taxonomy'] ) && is_string( $_GET['taxonomy'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); } return ''; } /** * Get the current tag ID from the GET parameters. * * @return int|null the tag ID if it exists, null otherwise. */ private static function get_tag_id() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['tag_ID'] ) && is_string( $_GET['tag_ID'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form information, We are casting to an integer. $tag_id = (int) wp_unslash( $_GET['tag_ID'] ); if ( $tag_id > 0 ) { return $tag_id; } } return null; } /** * Prepares the replace vars for localization. * * @return array The replacement variables. */ private function get_replace_vars() { $term_id = $this::get_tag_id(); $term = get_term_by( 'id', $term_id, $this::get_taxonomy() ); $cached_replacement_vars = []; $vars_to_cache = [ 'date', 'id', 'sitename', 'sitedesc', 'sep', 'page', 'term_title', 'term_description', 'term_hierarchy', 'category_description', 'tag_description', 'searchphrase', 'currentyear', ]; foreach ( $vars_to_cache as $var ) { $cached_replacement_vars[ $var ] = wpseo_replace_vars( '%%' . $var . '%%', $term ); } return $cached_replacement_vars; } /** * Prepares the recommended replace vars for localization. * * @return array The recommended replacement variables. */ private function get_recommended_replace_vars() { $recommended_replace_vars = new WPSEO_Admin_Recommended_Replace_Vars(); $taxonomy = $this::get_taxonomy(); if ( $taxonomy === '' ) { return []; } // What is recommended depends on the current context. $page_type = $recommended_replace_vars->determine_for_term( $taxonomy ); return $recommended_replace_vars->get_recommended_replacevars_for( $page_type ); } /** * Returns an array with shortcode tags for all registered shortcodes. * * @return array Array with shortcode tags. */ private function get_valid_shortcode_tags() { $shortcode_tags = []; foreach ( $GLOBALS['shortcode_tags'] as $tag => $description ) { $shortcode_tags[] = $tag; } return $shortcode_tags; } } admin/taxonomy/class-taxonomy-columns.php000064400000016007147206602470014676 0ustar00taxonomy = $this->get_taxonomy(); if ( ! empty( $this->taxonomy ) ) { add_filter( 'manage_edit-' . $this->taxonomy . '_columns', [ $this, 'add_columns' ] ); add_filter( 'manage_' . $this->taxonomy . '_custom_column', [ $this, 'parse_column' ], 10, 3 ); } $this->analysis_seo = new WPSEO_Metabox_Analysis_SEO(); $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); $this->indexable_repository = YoastSEO()->classes->get( Indexable_Repository::class ); $this->score_icon_helper = YoastSEO()->helpers->score_icon; } /** * Adds an SEO score column to the terms table, right after the description column. * * @param array $columns Current set columns. * * @return array */ public function add_columns( array $columns ) { if ( $this->display_metabox( $this->taxonomy ) === false ) { return $columns; } $new_columns = []; foreach ( $columns as $column_name => $column_value ) { $new_columns[ $column_name ] = $column_value; if ( $column_name === 'description' && $this->analysis_seo->is_enabled() ) { $new_columns['wpseo-score'] = '' . __( 'SEO score', 'wordpress-seo' ) . ''; } if ( $column_name === 'description' && $this->analysis_readability->is_enabled() ) { $new_columns['wpseo-score-readability'] = '' . __( 'Readability score', 'wordpress-seo' ) . ''; } } return $new_columns; } /** * Parses the column. * * @param string $content The current content of the column. * @param string $column_name The name of the column. * @param int $term_id ID of requested taxonomy. * * @return string */ public function parse_column( $content, $column_name, $term_id ) { switch ( $column_name ) { case 'wpseo-score': return $this->get_score_value( $term_id ); case 'wpseo-score-readability': return $this->get_score_readability_value( $term_id ); } return $content; } /** * Retrieves the taxonomy from the $_GET or $_POST variable. * * @return string|null The current taxonomy or null when it is not set. */ public function get_current_taxonomy() { // phpcs:disable WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( ! empty( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] === 'POST' ) { if ( isset( $_POST['taxonomy'] ) && is_string( $_POST['taxonomy'] ) ) { return sanitize_text_field( wp_unslash( $_POST['taxonomy'] ) ); } } elseif ( isset( $_GET['taxonomy'] ) && is_string( $_GET['taxonomy'] ) ) { return sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); } // phpcs:enable WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended return null; } /** * Returns the posted/get taxonomy value if it is set. * * @return string|null */ private function get_taxonomy() { // phpcs:disable WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( wp_doing_ajax() ) { if ( isset( $_POST['taxonomy'] ) && is_string( $_POST['taxonomy'] ) ) { return sanitize_text_field( wp_unslash( $_POST['taxonomy'] ) ); } } elseif ( isset( $_GET['taxonomy'] ) && is_string( $_GET['taxonomy'] ) ) { return sanitize_text_field( wp_unslash( $_GET['taxonomy'] ) ); } // phpcs:enable WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended return null; } /** * Parses the value for the score column. * * @param int $term_id ID of requested term. * * @return string */ private function get_score_value( $term_id ) { $indexable = $this->indexable_repository->find_by_id_and_type( (int) $term_id, 'term' ); return $this->score_icon_helper->for_seo( $indexable, '', __( 'Term is set to noindex.', 'wordpress-seo' ) ); } /** * Parses the value for the readability score column. * * @param int $term_id ID of the requested term. * * @return string The HTML for the readability score indicator. */ private function get_score_readability_value( $term_id ) { $score = (int) WPSEO_Taxonomy_Meta::get_term_meta( $term_id, $this->taxonomy, 'content_score' ); return $this->score_icon_helper->for_readability( $score ); } /** * Check if the taxonomy is indexable. * * @param mixed $term The current term. * * @return bool Whether the term is indexable. */ private function is_indexable( $term ) { // When the no_index value is not empty and not default, check if its value is index. $no_index = WPSEO_Taxonomy_Meta::get_term_meta( $term->term_id, $this->taxonomy, 'noindex' ); // Check if the default for taxonomy is empty (this will be index). if ( ! empty( $no_index ) && $no_index !== 'default' ) { return ( $no_index === 'index' ); } if ( is_object( $term ) ) { $no_index_key = 'noindex-tax-' . $term->taxonomy; // If the option is false, this means we want to index it. return WPSEO_Options::get( $no_index_key, false ) === false; } return true; } /** * Wraps the WPSEO_Metabox check to determine whether the metabox should be displayed either by * choice of the admin or because the taxonomy is not public. * * @since 7.0 * * @param string|null $taxonomy Optional. The taxonomy to test, defaults to the current taxonomy. * * @return bool Whether the meta box (and associated columns etc) should be hidden. */ private function display_metabox( $taxonomy = null ) { $current_taxonomy = $this->get_current_taxonomy(); if ( ! isset( $taxonomy ) && ! empty( $current_taxonomy ) ) { $taxonomy = $current_taxonomy; } return WPSEO_Utils::is_metabox_active( $taxonomy, 'taxonomy' ); } } admin/taxonomy/class-taxonomy-fields.php000064400000012037147206602470014463 0ustar00get_content_fields(); break; case 'settings': $fields = $this->get_settings_fields(); break; case 'social': $fields = $this->get_social_fields(); break; } return $this->filter_hidden_fields( $fields ); } /** * Returns array with the fields for the general tab. * * @return array */ protected function get_content_fields() { $fields = [ 'title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'desc' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'linkdex' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'content_score' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'inclusive_language_score' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'focuskw' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'is_cornerstone' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; /** * Filter: 'wpseo_taxonomy_content_fields' - Adds the possibility to register additional content fields. * * @param array $additional_fields The additional fields. */ $additional_fields = apply_filters( 'wpseo_taxonomy_content_fields', [] ); return array_merge( $fields, $additional_fields ); } /** * Returns array with the fields for the settings tab. * * @return array */ protected function get_settings_fields() { return [ 'noindex' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'bctitle' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => ( WPSEO_Options::get( 'breadcrumbs-enable' ) !== true ), ], 'canonical' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; } /** * Returning the fields for the social media tab. * * @return array */ protected function get_social_fields() { $fields = []; if ( WPSEO_Options::get( 'opengraph', false ) === true ) { $fields = [ 'opengraph-title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-description' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-image' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'opengraph-image-id' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ]; } if ( WPSEO_Options::get( 'twitter', false ) === true ) { $fields = array_merge( $fields, [ 'twitter-title' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-description' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-image' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], 'twitter-image-id' => [ 'label' => '', 'description' => '', 'type' => 'hidden', 'options' => '', 'hide' => false, ], ] ); } return $fields; } /** * Filter the hidden fields. * * @param array $fields Array with the form fields that has will be filtered. * * @return array */ protected function filter_hidden_fields( array $fields ) { foreach ( $fields as $field_name => $field_options ) { if ( ! empty( $field_options['hide'] ) ) { unset( $fields[ $field_name ] ); } } return $fields; } } admin/taxonomy/class-taxonomy-fields-presenter.php000064400000014074147206602470016473 0ustar00tax_meta = WPSEO_Taxonomy_Meta::get_term_meta( (int) $term->term_id, $term->taxonomy ); } /** * Displaying the form fields. * * @param array $fields Array with the fields that will be displayed. * * @return string */ public function html( array $fields ) { $content = ''; foreach ( $fields as $field_name => $field_configuration ) { $content .= $this->form_row( 'wpseo_' . $field_name, $field_configuration ); } return $content; } /** * Create a row in the form table. * * @param string $field_name Variable the row controls. * @param array $field_configuration Array with the field configuration. * * @return string */ private function form_row( $field_name, array $field_configuration ) { $esc_field_name = esc_attr( $field_name ); $options = (array) $field_configuration['options']; if ( ! empty( $field_configuration['description'] ) ) { $options['description'] = $field_configuration['description']; } $label = $this->get_label( $field_configuration['label'], $esc_field_name ); $field = $this->get_field( $field_configuration['type'], $esc_field_name, $this->get_field_value( $field_name ), $options ); $help_content = ( $field_configuration['options']['help'] ?? '' ); $help_button_text = ( $field_configuration['options']['help-button'] ?? '' ); $help = new WPSEO_Admin_Help_Panel( $field_name, $help_button_text, $help_content ); return $this->parse_row( $label, $help, $field ); } /** * Generates the html for the given field config. * * @param string $field_type The fieldtype, e.g: text, checkbox, etc. * @param string $field_name The name of the field. * @param string $field_value The value of the field. * @param array $options Array with additional options. * * @return string */ private function get_field( $field_type, $field_name, $field_value, array $options ) { $class = $this->get_class( $options ); $field = ''; $description = ''; $aria_describedby = ''; if ( ! empty( $options['description'] ) ) { $aria_describedby = ' aria-describedby="' . $field_name . '-desc"'; $description = '

    ' . $options['description'] . '

    '; } switch ( $field_type ) { case 'div': $field .= '
    '; break; case 'url': $field .= ''; break; case 'text': $field .= ''; break; case 'checkbox': $field .= ''; break; case 'textarea': $rows = 3; if ( ! empty( $options['rows'] ) ) { $rows = $options['rows']; } $field .= ''; break; case 'select': if ( is_array( $options ) && $options !== [] ) { $field .= ''; } break; case 'hidden': $field .= ''; break; } return $field . $description; } /** * Getting the value for given field_name. * * @param string $field_name The fieldname to get the value for. * * @return string */ private function get_field_value( $field_name ) { if ( isset( $this->tax_meta[ $field_name ] ) && $this->tax_meta[ $field_name ] !== '' ) { return $this->tax_meta[ $field_name ]; } return ''; } /** * Getting the class attributes if $options contains a class key. * * @param array $options The array with field options. * * @return string */ private function get_class( array $options ) { if ( ! empty( $options['class'] ) ) { return ' class="' . esc_attr( $options['class'] ) . '"'; } return ''; } /** * Getting the label HTML. * * @param string $label The label value. * @param string $field_name The target field. * * @return string */ private function get_label( $label, $field_name ) { if ( $label !== '' ) { return ''; } return ''; } /** * Returns the HTML for the row which contains label, help and the field. * * @param string $label The html for the label if there was a label set. * @param WPSEO_Admin_Help_Panel $help The help panel to render in this row. * @param string $field The html for the field. * * @return string */ private function parse_row( $label, WPSEO_Admin_Help_Panel $help, $field ) { if ( $label !== '' || $help !== '' ) { return $label . $help->get_button_html() . $help->get_panel_html() . $field; } return $field; } } admin/taxonomy/class-taxonomy-metabox.php000064400000014060147206602470014652 0ustar00term = $term; $this->taxonomy = $taxonomy; $this->is_social_enabled = WPSEO_Options::get( 'opengraph', false ) || WPSEO_Options::get( 'twitter', false ); $this->seo_analysis = new WPSEO_Metabox_Analysis_SEO(); $this->readability_analysis = new WPSEO_Metabox_Analysis_Readability(); $this->inclusive_language_analysis = new WPSEO_Metabox_Analysis_Inclusive_Language(); } /** * Shows the Yoast SEO metabox for the term. * * @return void */ public function display() { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $this->get_product_title() returns a hard-coded string. printf( '

    %1$s

    ', $this->get_product_title() ); echo '
    '; echo '
    '; $this->render_hidden_fields(); $this->render_tabs(); echo '
    '; echo '
    '; } /** * Renders the metabox hidden fields. * * @return void */ protected function render_hidden_fields() { $fields_presenter = new WPSEO_Taxonomy_Fields_Presenter( $this->term ); $field_definitions = new WPSEO_Taxonomy_Fields(); echo $fields_presenter->html( $field_definitions->get( 'content' ) ); if ( WPSEO_Capability_Utils::current_user_can( 'wpseo_edit_advanced_metadata' ) || WPSEO_Options::get( 'disableadvanced_meta' ) === false ) { echo $fields_presenter->html( $field_definitions->get( 'settings' ) ); } if ( $this->is_social_enabled ) { echo $fields_presenter->html( $field_definitions->get( 'social' ) ); } } /** * Renders the metabox tabs. * * @return void */ protected function render_tabs() { echo '
    '; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: $this->get_product_title() returns a hard-coded string. printf( '
      ', $this->get_product_title() ); $tabs = $this->get_tabs(); foreach ( $tabs as $tab ) { $tab->display_link(); } echo '
    '; foreach ( $tabs as $tab ) { $tab->display_content(); } echo '
    '; } /** * Returns the relevant metabox sections for the current view. * * @return WPSEO_Metabox_Section[] */ private function get_tabs() { $tabs = []; $label = __( 'SEO', 'wordpress-seo' ); if ( $this->seo_analysis->is_enabled() ) { $label = '' . $label; } $tabs[] = new WPSEO_Metabox_Section_React( 'content', $label ); if ( $this->readability_analysis->is_enabled() ) { $tabs[] = new WPSEO_Metabox_Section_Readability(); } if ( $this->inclusive_language_analysis->is_enabled() ) { $tabs[] = new WPSEO_Metabox_Section_Inclusive_Language(); } if ( $this->is_social_enabled ) { $tabs[] = new WPSEO_Metabox_Section_React( 'social', '' . __( 'Social', 'wordpress-seo' ), '', [ 'html_after' => '
    ', ] ); } $tabs = array_merge( $tabs, $this->get_additional_tabs() ); return $tabs; } /** * Returns the metabox tabs that have been added by other plugins. * * @return WPSEO_Metabox_Section_Additional[] */ protected function get_additional_tabs() { $tabs = []; /** * Private filter: 'yoast_free_additional_taxonomy_metabox_sections'. * * Meant for internal use only. Allows adding additional tabs to the Yoast SEO metabox for taxonomies. * * @param array[] $tabs { * An array of arrays with tab specifications. * * @type array $tab { * A tab specification. * * @type string $name The name of the tab. Used in the HTML IDs, href and aria properties. * @type string $link_content The content of the tab link. * @type string $content The content of the tab. * @type array $options { * Optional. Extra options. * * @type string $link_class Optional. The class for the tab link. * @type string $link_aria_label Optional. The aria label of the tab link. * } * } * } */ $requested_tabs = apply_filters( 'yoast_free_additional_taxonomy_metabox_sections', [] ); foreach ( $requested_tabs as $tab ) { if ( is_array( $tab ) && array_key_exists( 'name', $tab ) && array_key_exists( 'link_content', $tab ) && array_key_exists( 'content', $tab ) ) { $options = array_key_exists( 'options', $tab ) ? $tab['options'] : []; $tabs[] = new WPSEO_Metabox_Section_Additional( $tab['name'], $tab['link_content'], $tab['content'], $options ); } } return $tabs; } /** * Retrieves the product title. * * @return string The product title. */ protected function get_product_title() { return YoastSEO()->helpers->product->get_product_name(); } } admin/class-bulk-editor-list-table.php000064400000072631147206602470013750 0ustar00page_type) there will be constructed an url part, for subpages and * navigation. * * @var string */ protected $page_url; /** * The settings which will be used in the __construct. * * @var array */ protected $settings; /** * Holds the pagination config. * * @var array */ protected $pagination = []; /** * Holds the sanitized data from the user input. * * @var array */ protected $input_fields = []; /** * The field in the database where meta field is saved. * * Should be set in the child class. * * @var string */ protected $target_db_field = ''; /** * Class constructor. * * @param array $args The arguments. */ public function __construct( $args = [] ) { parent::__construct( $this->settings ); $args = wp_parse_args( $args, [ 'nonce' => '', 'input_fields' => [], ] ); $this->input_fields = $args['input_fields']; if ( isset( $_SERVER['REQUEST_URI'] ) ) { $this->request_url = sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ); } $this->current_page = ( ! empty( $this->input_fields['paged'] ) ) ? $this->input_fields['paged'] : 1; $this->current_filter = ( ! empty( $this->input_fields['post_type_filter'] ) ) ? $this->input_fields['post_type_filter'] : 1; $this->current_status = ( ! empty( $this->input_fields['post_status'] ) ) ? $this->input_fields['post_status'] : 1; $this->current_order = [ 'order' => ( ! empty( $this->input_fields['order'] ) ) ? $this->input_fields['order'] : 'asc', 'orderby' => ( ! empty( $this->input_fields['orderby'] ) ) ? $this->input_fields['orderby'] : 'post_title', ]; $this->nonce = $args['nonce']; $this->page_url = "&nonce={$this->nonce}&type={$this->page_type}#top#{$this->page_type}"; $this->populate_editable_post_types(); } /** * Prepares the data and renders the page. * * @return void */ public function show_page() { $this->prepare_page_navigation(); $this->prepare_items(); $this->views(); $this->display(); } /** * Used in the constructor to build a reference list of post types the current user can edit. * * @return void */ protected function populate_editable_post_types() { $post_types = get_post_types( [ 'public' => true, 'exclude_from_search' => false, ], 'object' ); $this->all_posts = []; $this->own_posts = []; if ( is_array( $post_types ) && $post_types !== [] ) { foreach ( $post_types as $post_type ) { if ( ! current_user_can( $post_type->cap->edit_posts ) ) { continue; } if ( current_user_can( $post_type->cap->edit_others_posts ) ) { $this->all_posts[] = esc_sql( $post_type->name ); } else { $this->own_posts[] = esc_sql( $post_type->name ); } } } } /** * Will show the navigation for the table like page navigation and page filter. * * @param string $which Table nav location (such as top). * * @return void */ public function display_tablenav( $which ) { // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $post_status = isset( $_GET['post_status'] ) && is_string( $_GET['post_status'] ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : ''; $order_by = isset( $_GET['orderby'] ) && is_string( $_GET['orderby'] ) ? sanitize_text_field( wp_unslash( $_GET['orderby'] ) ) : ''; $order = isset( $_GET['order'] ) && is_string( $_GET['order'] ) ? sanitize_text_field( wp_unslash( $_GET['order'] ) ) : ''; $post_type_filter = isset( $_GET['post_type_filter'] ) && is_string( $_GET['post_type_filter'] ) ? sanitize_text_field( wp_unslash( $_GET['post_type_filter'] ) ) : ''; // phpcs:enable WordPress.Security.NonceVerification.Recommended; ?>
    extra_tablenav( $which ); $this->pagination( $which ); ?>
    prepare(), * passing the current user_id in as the first parameter. */ public function get_base_subquery() { global $wpdb; $all_posts_string = "'" . implode( "', '", $this->all_posts ) . "'"; $own_posts_string = "'" . implode( "', '", $this->own_posts ) . "'"; $post_author = esc_sql( (int) get_current_user_id() ); $subquery = "( SELECT * FROM {$wpdb->posts} WHERE post_type IN ({$all_posts_string}) UNION ALL SELECT * FROM {$wpdb->posts} WHERE post_type IN ({$own_posts_string}) AND post_author = {$post_author} ) sub_base"; return $subquery; } /** * Gets the views. * * @return array The views. */ public function get_views() { global $wpdb; $status_links = []; $states = get_post_stati( [ 'show_in_admin_all_list' => true ] ); $subquery = $this->get_base_subquery(); $total_posts = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(ID) FROM {$subquery} WHERE post_status IN (" . implode( ', ', array_fill( 0, count( $states ), '%s' ) ) . ')', $states ) ); $post_status = isset( $_GET['post_status'] ) && is_string( $_GET['post_status'] ) ? sanitize_text_field( wp_unslash( $_GET['post_status'] ) ) : ''; $current_link_attributes = empty( $post_status ) ? ' class="current" aria-current="page"' : ''; $localized_text = sprintf( /* translators: %s expands to the number of posts in localized format. */ _nx( 'All (%s)', 'All (%s)', $total_posts, 'posts', 'wordpress-seo' ), number_format_i18n( $total_posts ) ); $status_links['all'] = '' . $localized_text . ''; $post_stati = get_post_stati( [ 'show_in_admin_all_list' => true ], 'objects' ); if ( is_array( $post_stati ) && $post_stati !== [] ) { foreach ( $post_stati as $status ) { $status_name = esc_sql( $status->name ); $total = (int) $wpdb->get_var( $wpdb->prepare( " SELECT COUNT(ID) FROM {$subquery} WHERE post_status = %s ", $status_name ) ); if ( $total === 0 ) { continue; } $current_link_attributes = ''; if ( $status_name === $post_status ) { $current_link_attributes = ' class="current" aria-current="page"'; } $status_links[ $status_name ] = '' . sprintf( translate_nooped_plural( $status->label_count, $total ), number_format_i18n( $total ) ) . ''; } } unset( $post_stati, $status, $status_name, $total, $current_link_attributes ); $trashed_posts = $wpdb->get_var( "SELECT COUNT(ID) FROM {$subquery} WHERE post_status IN ('trash') " ); $current_link_attributes = ''; if ( $post_status === 'trash' ) { $current_link_attributes = 'class="current" aria-current="page"'; } $localized_text = sprintf( /* translators: %s expands to the number of trashed posts in localized format. */ _nx( 'Trash (%s)', 'Trash (%s)', $trashed_posts, 'posts', 'wordpress-seo' ), number_format_i18n( $trashed_posts ) ); $status_links['trash'] = '' . $localized_text . ''; return $status_links; } /** * Outputs extra table navigation. * * @param string $which Table nav location (such as top). * * @return void */ public function extra_tablenav( $which ) { if ( $which === 'top' ) { $post_types = get_post_types( [ 'public' => true, 'exclude_from_search' => false, ] ); $instance_type = esc_attr( $this->page_type ); if ( is_array( $post_types ) && $post_types !== [] ) { global $wpdb; echo '
    '; $post_types = esc_sql( $post_types ); $post_types = "'" . implode( "', '", $post_types ) . "'"; $states = get_post_stati( [ 'show_in_admin_all_list' => true ] ); $states['trash'] = 'trash'; $subquery = $this->get_base_subquery(); $post_types = $wpdb->get_results( $wpdb->prepare( "SELECT DISTINCT post_type FROM {$subquery} WHERE post_status IN (" . implode( ', ', array_fill( 0, count( $states ), '%s' ) ) . ') ORDER BY post_type ASC', $states ) ); $post_type_filter = isset( $_GET['post_type_filter'] ) && is_string( $_GET['post_type_filter'] ) ? sanitize_text_field( wp_unslash( $_GET['post_type_filter'] ) ) : ''; $selected = ( ! empty( $post_type_filter ) ) ? $post_type_filter : '-1'; $options = ''; if ( is_array( $post_types ) && $post_types !== [] ) { foreach ( $post_types as $post_type ) { $obj = get_post_type_object( $post_type->post_type ); $options .= sprintf( '', esc_html( $obj->labels->name ), esc_attr( $post_type->post_type ), selected( $selected, $post_type->post_type, false ) ); } } printf( '', esc_attr( 'post-type-filter-' . $instance_type ), /* translators: Hidden accessibility text. */ esc_html__( 'Filter by content type', 'wordpress-seo' ) ); printf( '', // phpcs:ignore WordPress.Security.EscapeOutput -- Reason: $options is properly escaped above. $options, esc_attr( 'post-type-filter-' . $instance_type ) ); submit_button( esc_html__( 'Filter', 'wordpress-seo' ), 'button', false, false, [ 'id' => 'post-query-submit' ] ); echo '
    '; } } } /** * Gets a list of sortable columns. * * The format is: 'internal-name' => array( 'orderby', bool ). * * @return array */ public function get_sortable_columns() { return [ 'col_page_title' => [ 'post_title', true ], 'col_post_type' => [ 'post_type', false ], 'col_post_date' => [ 'post_date', false ], ]; } /** * Sets the correct pagenumber and pageurl for the navigation. * * @return void */ public function prepare_page_navigation() { $request_url = $this->request_url . $this->page_url; $current_page = $this->current_page; $current_filter = $this->current_filter; $current_status = $this->current_status; $current_order = $this->current_order; /* * If current type doesn't compare with objects page_type, then we have to unset * some vars in the requested url (which will be used for internal table urls). */ if ( isset( $this->input_fields['type'] ) && $this->input_fields['type'] !== $this->page_type ) { $request_url = remove_query_arg( 'paged', $request_url ); // Page will be set with value 1 below. $request_url = remove_query_arg( 'post_type_filter', $request_url ); $request_url = remove_query_arg( 'post_status', $request_url ); $request_url = remove_query_arg( 'orderby', $request_url ); $request_url = remove_query_arg( 'order', $request_url ); $request_url = add_query_arg( 'pages', 1, $request_url ); $current_page = 1; $current_filter = '-1'; $current_status = ''; $current_order = [ 'orderby' => 'post_title', 'order' => 'asc', ]; } $_SERVER['REQUEST_URI'] = $request_url; $_GET['paged'] = $current_page; $_REQUEST['paged'] = $current_page; $_REQUEST['post_type_filter'] = $current_filter; $_GET['post_type_filter'] = $current_filter; $_GET['post_status'] = $current_status; $_GET['orderby'] = $current_order['orderby']; $_GET['order'] = $current_order['order']; } /** * Preparing the requested pagerows and setting the needed variables. * * @return void */ public function prepare_items() { $post_type_clause = $this->get_post_type_clause(); $all_states = $this->get_all_states(); $subquery = $this->get_base_subquery(); // Setting the column headers. $this->set_column_headers(); // Count the total number of needed items and setting pagination given $total_items. $total_items = $this->count_items( $subquery, $all_states, $post_type_clause ); $this->set_pagination( $total_items ); // Getting items given $query. $query = $this->parse_item_query( $subquery, $all_states, $post_type_clause ); $this->get_items( $query ); // Get the metadata for the current items ($this->items). $this->get_meta_data(); } /** * Getting the columns for first row. * * @return array */ public function get_columns() { return $this->merge_columns(); } /** * Setting the column headers. * * @return void */ protected function set_column_headers() { $columns = $this->get_columns(); $hidden = []; $sortable = $this->get_sortable_columns(); $this->_column_headers = [ $columns, $hidden, $sortable ]; } /** * Counting total items. * * @param string $subquery SQL FROM part. * @param string $all_states SQL IN part. * @param string $post_type_clause SQL post type part. * * @return mixed */ protected function count_items( $subquery, $all_states, $post_type_clause ) { global $wpdb; return (int) $wpdb->get_var( "SELECT COUNT(ID) FROM {$subquery} WHERE post_status IN ({$all_states}) {$post_type_clause} " ); } /** * Getting the post_type_clause filter. * * @return string */ protected function get_post_type_clause() { // Filter Block. $post_type_clause = ''; $post_type_filter = isset( $_GET['post_type_filter'] ) && is_string( $_GET['post_type_filter'] ) ? sanitize_text_field( wp_unslash( $_GET['post_type_filter'] ) ) : ''; if ( ! empty( $post_type_filter ) && get_post_type_object( $post_type_filter ) ) { $post_types = esc_sql( $post_type_filter ); $post_type_clause = "AND post_type IN ('{$post_types}')"; } return $post_type_clause; } /** * Setting the pagination. * * Total items is the number of all visible items. * * @param int $total_items Total items counts. * * @return void */ protected function set_pagination( $total_items ) { // Calculate items per page. $per_page = $this->get_items_per_page( 'wpseo_posts_per_page', 10 ); $paged = isset( $_GET['paged'] ) && is_string( $_GET['paged'] ) ? esc_sql( sanitize_text_field( wp_unslash( $_GET['paged'] ) ) ) : ''; if ( empty( $paged ) || ! is_numeric( $paged ) ) { $paged = 1; } else { $paged = (int) $paged; } if ( $paged <= 0 ) { $paged = 1; } $this->set_pagination_args( [ 'total_items' => $total_items, 'total_pages' => ceil( $total_items / $per_page ), 'per_page' => $per_page, ] ); $this->pagination = [ 'per_page' => $per_page, 'offset' => ( ( $paged - 1 ) * $per_page ), ]; } /** * Parse the query to get items from database. * * Based on given parameters there will be parse a query which will get all the pages/posts and other post_types * from the database. * * @param string $subquery SQL FROM part. * @param string $all_states SQL IN part. * @param string $post_type_clause SQL post type part. * * @return string */ protected function parse_item_query( $subquery, $all_states, $post_type_clause ) { // Order By block. $orderby = isset( $_GET['orderby'] ) && is_string( $_GET['orderby'] ) ? sanitize_text_field( wp_unslash( $_GET['orderby'] ) ) : ''; $orderby = ! empty( $orderby ) ? esc_sql( $orderby ) : 'post_title'; $orderby = $this->sanitize_orderby( $orderby ); // Order clause. $order = isset( $_GET['order'] ) && is_string( $_GET['order'] ) ? sanitize_text_field( wp_unslash( $_GET['order'] ) ) : ''; $order = ! empty( $order ) ? esc_sql( strtoupper( $order ) ) : 'ASC'; $order = $this->sanitize_order( $order ); // Get all needed results. $query = " SELECT ID, post_title, post_type, post_status, post_modified, post_date FROM {$subquery} WHERE post_status IN ({$all_states}) $post_type_clause ORDER BY {$orderby} {$order} LIMIT %d,%d "; return $query; } /** * Heavily restricts the possible columns by which a user can order the table * in the bulk editor, thereby preventing a possible CSRF vulnerability. * * @param string $orderby The column by which we want to order. * * @return string */ protected function sanitize_orderby( $orderby ) { $valid_column_names = [ 'post_title', 'post_type', 'post_date', ]; if ( in_array( $orderby, $valid_column_names, true ) ) { return $orderby; } return 'post_title'; } /** * Makes sure the order clause is always ASC or DESC for the bulk editor table, * thereby preventing a possible CSRF vulnerability. * * @param string $order Whether we want to sort ascending or descending. * * @return string SQL order string (ASC, DESC). */ protected function sanitize_order( $order ) { if ( in_array( strtoupper( $order ), [ 'ASC', 'DESC' ], true ) ) { return $order; } return 'ASC'; } /** * Getting all the items. * * @param string $query SQL query to use. * * @return void */ protected function get_items( $query ) { global $wpdb; $this->items = $wpdb->get_results( $wpdb->prepare( $query, $this->pagination['offset'], $this->pagination['per_page'] ) ); } /** * Getting all the states. * * @return string */ protected function get_all_states() { global $wpdb; $states = get_post_stati( [ 'show_in_admin_all_list' => true ] ); $states['trash'] = 'trash'; if ( ! empty( $this->input_fields['post_status'] ) ) { $requested_state = $this->input_fields['post_status']; if ( in_array( $requested_state, $states, true ) ) { $states = [ $requested_state ]; } if ( $requested_state !== 'trash' ) { unset( $states['trash'] ); } } return $wpdb->prepare( implode( ', ', array_fill( 0, count( $states ), '%s' ) ), $states ); } /** * Based on $this->items and the defined columns, the table rows will be displayed. * * @return void */ public function display_rows() { $records = $this->items; list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); if ( ( is_array( $records ) && $records !== [] ) && ( is_array( $columns ) && $columns !== [] ) ) { foreach ( $records as $record ) { echo ''; foreach ( $columns as $column_name => $column_display_name ) { $classes = ''; if ( $primary === $column_name ) { $classes .= ' has-row-actions column-primary'; } $attributes = $this->column_attributes( $column_name, $hidden, $classes, $column_display_name ); $column_value = $this->parse_column( $column_name, $record ); if ( method_exists( $this, 'parse_page_specific_column' ) && empty( $column_value ) ) { $column_value = $this->parse_page_specific_column( $column_name, $record, $attributes ); } if ( ! empty( $column_value ) ) { printf( '%1$s', $column_value, $attributes ); } } echo ''; } } } /** * Getting the attributes for each table cell. * * @param string $column_name Column name string. * @param array $hidden Set of hidden columns. * @param string $classes Additional CSS classes. * @param string $column_display_name Column display name string. * * @return string */ protected function column_attributes( $column_name, $hidden, $classes, $column_display_name ) { $attributes = ''; $class = [ $column_name, "column-$column_name$classes" ]; if ( in_array( $column_name, $hidden, true ) ) { $class[] = 'hidden'; } if ( ! empty( $class ) ) { $attributes = 'class="' . esc_attr( implode( ' ', $class ) ) . '"'; } $attributes .= ' data-colname="' . esc_attr( $column_display_name ) . '"'; return $attributes; } /** * Parsing the title. * * @param WP_Post $rec Post object. * * @return string */ protected function parse_page_title_column( $rec ) { $title = empty( $rec->post_title ) ? __( '(no title)', 'wordpress-seo' ) : $rec->post_title; $return = sprintf( '%1$s', stripslashes( wp_strip_all_tags( $title ) ) ); $post_type_object = get_post_type_object( $rec->post_type ); $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $rec->ID ); $actions = []; if ( $can_edit_post && $rec->post_status !== 'trash' ) { $actions['edit'] = sprintf( '%s', esc_url( get_edit_post_link( $rec->ID, true ) ), /* translators: Hidden accessibility text; %s: post title. */ esc_attr( sprintf( __( 'Edit “%s”', 'wordpress-seo' ), $title ) ), __( 'Edit', 'wordpress-seo' ) ); } if ( $post_type_object->public ) { if ( in_array( $rec->post_status, [ 'pending', 'draft', 'future' ], true ) ) { if ( $can_edit_post ) { $actions['view'] = sprintf( '%s', esc_url( add_query_arg( 'preview', 'true', get_permalink( $rec->ID ) ) ), /* translators: Hidden accessibility text; %s: post title. */ esc_attr( sprintf( __( 'Preview “%s”', 'wordpress-seo' ), $title ) ), __( 'Preview', 'wordpress-seo' ) ); } } elseif ( $rec->post_status !== 'trash' ) { $actions['view'] = sprintf( '%s', esc_url( get_permalink( $rec->ID ) ), /* translators: Hidden accessibility text; %s: post title. */ esc_attr( sprintf( __( 'View “%s”', 'wordpress-seo' ), $title ) ), __( 'View', 'wordpress-seo' ) ); } } $return .= $this->row_actions( $actions ); return $return; } /** * Parsing the column based on the $column_name. * * @param string $column_name Column name. * @param WP_Post $rec Post object. * * @return string */ protected function parse_column( $column_name, $rec ) { static $date_format; if ( ! isset( $date_format ) ) { $date_format = get_option( 'date_format' ); } switch ( $column_name ) { case 'col_page_title': $column_value = $this->parse_page_title_column( $rec ); break; case 'col_page_slug': $permalink = get_permalink( $rec->ID ); $display_slug = str_replace( get_bloginfo( 'url' ), '', $permalink ); $column_value = sprintf( '%1$s', stripslashes( rawurldecode( $display_slug ) ), esc_url( $permalink ) ); break; case 'col_post_type': $post_type = get_post_type_object( $rec->post_type ); $column_value = $post_type->labels->singular_name; break; case 'col_post_status': $post_status = get_post_status_object( $rec->post_status ); $column_value = $post_status->label; break; case 'col_post_date': $column_value = date_i18n( $date_format, strtotime( $rec->post_date ) ); break; case 'col_row_action': $column_value = sprintf( '%2$s %3$s', $rec->ID, esc_html__( 'Save', 'wordpress-seo' ), esc_html__( 'Save all', 'wordpress-seo' ) ); break; } if ( ! empty( $column_value ) ) { return $column_value; } } /** * Parse the field where the existing meta-data value is displayed. * * @param int $record_id Record ID. * @param string $attributes HTML attributes. * @param bool|array $values Optional values data array. * * @return string */ protected function parse_meta_data_field( $record_id, $attributes, $values = false ) { // Fill meta data if exists in $this->meta_data. $meta_data = ( ! empty( $this->meta_data[ $record_id ] ) ) ? $this->meta_data[ $record_id ] : []; $meta_key = WPSEO_Meta::$meta_prefix . $this->target_db_field; $meta_value = ( ! empty( $meta_data[ $meta_key ] ) ) ? $meta_data[ $meta_key ] : ''; if ( ! empty( $values ) ) { $meta_value = $values[ $meta_value ]; } $id = "wpseo-existing-$this->target_db_field-$record_id"; // $attributes correctly escaped, verified by Alexander. See WPSEO_Bulk_Description_List_Table::parse_page_specific_column. return sprintf( '%1$s', esc_html( $meta_value ), $attributes, esc_attr( $id ) ); } /** * Method for setting the meta data, which belongs to the records that will be shown on the current page. * * This method will loop through the current items ($this->items) for getting the post_id. With this data * ($needed_ids) the method will query the meta-data table for getting the title. * * @return void */ protected function get_meta_data() { $post_ids = $this->get_post_ids(); $meta_data = $this->get_meta_data_result( $post_ids ); $this->parse_meta_data( $meta_data ); // Little housekeeping. unset( $post_ids, $meta_data ); } /** * Getting all post_ids from to $this->items. * * @return array */ protected function get_post_ids() { $post_ids = []; foreach ( $this->items as $item ) { $post_ids[] = $item->ID; } return $post_ids; } /** * Getting the meta_data from database. * * @param array $post_ids Post IDs for SQL IN part. * * @return mixed */ protected function get_meta_data_result( array $post_ids ) { global $wpdb; $where = $wpdb->prepare( 'post_id IN (' . implode( ', ', array_fill( 0, count( $post_ids ), '%d' ) ) . ')', $post_ids ); $where .= $wpdb->prepare( ' AND meta_key = %s', WPSEO_Meta::$meta_prefix . $this->target_db_field ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- They are prepared on the lines above. return $wpdb->get_results( "SELECT * FROM {$wpdb->postmeta} WHERE {$where}" ); } /** * Setting $this->meta_data. * * @param array $meta_data Meta data set. * * @return void */ protected function parse_meta_data( $meta_data ) { foreach ( $meta_data as $row ) { $this->meta_data[ $row->post_id ][ $row->meta_key ] = $row->meta_value; } } /** * This method will merge general array with given parameter $columns. * * @param array $columns Optional columns set. * * @return array */ protected function merge_columns( $columns = [] ) { $columns = array_merge( [ 'col_page_title' => __( 'WP Page Title', 'wordpress-seo' ), 'col_post_type' => __( 'Content Type', 'wordpress-seo' ), 'col_post_status' => __( 'Post Status', 'wordpress-seo' ), 'col_post_date' => __( 'Publication date', 'wordpress-seo' ), 'col_page_slug' => __( 'Page URL/Slug', 'wordpress-seo' ), ], $columns ); $columns['col_row_action'] = __( 'Action', 'wordpress-seo' ); return $columns; } } admin/class-meta-columns.php000064400000061602147206602470012071 0ustar00analysis_seo = new WPSEO_Metabox_Analysis_SEO(); $this->analysis_readability = new WPSEO_Metabox_Analysis_Readability(); $this->admin_columns_cache = YoastSEO()->classes->get( Admin_Columns_Cache_Integration::class ); $this->score_icon_helper = YoastSEO()->helpers->score_icon; } /** * Sets up up the hooks. * * @return void */ public function setup_hooks() { $this->set_post_type_hooks(); if ( $this->analysis_seo->is_enabled() ) { add_action( 'restrict_manage_posts', [ $this, 'posts_filter_dropdown' ] ); } if ( $this->analysis_readability->is_enabled() ) { add_action( 'restrict_manage_posts', [ $this, 'posts_filter_dropdown_readability' ] ); } add_filter( 'request', [ $this, 'column_sort_orderby' ] ); add_filter( 'default_hidden_columns', [ $this, 'column_hidden' ], 10, 1 ); } /** * Adds the column headings for the SEO plugin for edit posts / pages overview. * * @param array $columns Already existing columns. * * @return array Array containing the column headings. */ public function column_heading( $columns ) { if ( $this->display_metabox() === false ) { return $columns; } $added_columns = []; if ( $this->analysis_seo->is_enabled() ) { $added_columns['wpseo-score'] = '' . __( 'SEO score', 'wordpress-seo' ) . ''; } if ( $this->analysis_readability->is_enabled() ) { $added_columns['wpseo-score-readability'] = '' . __( 'Readability score', 'wordpress-seo' ) . ''; } $added_columns['wpseo-title'] = __( 'SEO Title', 'wordpress-seo' ); $added_columns['wpseo-metadesc'] = __( 'Meta Desc.', 'wordpress-seo' ); if ( $this->analysis_seo->is_enabled() ) { $added_columns['wpseo-focuskw'] = __( 'Keyphrase', 'wordpress-seo' ); } return array_merge( $columns, $added_columns ); } /** * Displays the column content for the given column. * * @param string $column_name Column to display the content for. * @param int $post_id Post to display the column content for. * * @return void */ public function column_content( $column_name, $post_id ) { if ( $this->display_metabox() === false ) { return; } switch ( $column_name ) { case 'wpseo-score': // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Correctly escaped in render_score_indicator() method. echo $this->parse_column_score( $post_id ); return; case 'wpseo-score-readability': // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Correctly escaped in render_score_indicator() method. echo $this->parse_column_score_readability( $post_id ); return; case 'wpseo-title': $meta = $this->get_meta( $post_id ); if ( $meta ) { echo esc_html( $meta->title ); } return; case 'wpseo-metadesc': $metadesc_val = ''; $meta = $this->get_meta( $post_id ); if ( $meta ) { $metadesc_val = $meta->meta_description; } if ( $metadesc_val === '' ) { echo '', /* translators: Hidden accessibility text. */ esc_html__( 'Meta description not set.', 'wordpress-seo' ), ''; return; } echo esc_html( $metadesc_val ); return; case 'wpseo-focuskw': $focuskw_val = WPSEO_Meta::get_value( 'focuskw', $post_id ); if ( $focuskw_val === '' ) { echo '', /* translators: Hidden accessibility text. */ esc_html__( 'Focus keyphrase not set.', 'wordpress-seo' ), ''; return; } echo esc_html( $focuskw_val ); return; } } /** * Indicates which of the SEO columns are sortable. * * @param array $columns Appended with their orderby variable. * * @return array Array containing the sortable columns. */ public function column_sort( $columns ) { if ( $this->display_metabox() === false ) { return $columns; } $columns['wpseo-metadesc'] = 'wpseo-metadesc'; if ( $this->analysis_seo->is_enabled() ) { $columns['wpseo-focuskw'] = 'wpseo-focuskw'; $columns['wpseo-score'] = 'wpseo-score'; } if ( $this->analysis_readability->is_enabled() ) { $columns['wpseo-score-readability'] = 'wpseo-score-readability'; } return $columns; } /** * Hides the SEO title, meta description and focus keyword columns if the user hasn't chosen which columns to hide. * * @param array $hidden The hidden columns. * * @return array Array containing the columns to hide. */ public function column_hidden( $hidden ) { if ( ! is_array( $hidden ) ) { $hidden = []; } array_push( $hidden, 'wpseo-title', 'wpseo-metadesc' ); if ( $this->analysis_seo->is_enabled() ) { $hidden[] = 'wpseo-focuskw'; } return $hidden; } /** * Adds a dropdown that allows filtering on the posts SEO Quality. * * @return void */ public function posts_filter_dropdown() { if ( ! $this->can_display_filter() ) { return; } $ranks = WPSEO_Rank::get_all_ranks(); /* translators: Hidden accessibility text. */ echo ''; echo ''; } /** * Adds a dropdown that allows filtering on the posts Readability Quality. * * @return void */ public function posts_filter_dropdown_readability() { if ( ! $this->can_display_filter() ) { return; } $ranks = WPSEO_Rank::get_all_readability_ranks(); /* translators: Hidden accessibility text. */ echo ''; echo ''; } /** * Generates an '; } /** * Returns the meta object for a given post ID. * * @param int $post_id The post ID. * * @return Meta The meta object. */ protected function get_meta( $post_id ) { $indexable = $this->admin_columns_cache->get_indexable( $post_id ); return YoastSEO()->meta->for_indexable( $indexable, 'Post_Type' ); } /** * Determines the SEO score filter to be later used in the meta query, based on the passed SEO filter. * * @param string $seo_filter The SEO filter to use to determine what further filter to apply. * * @return array The SEO score filter. */ protected function determine_seo_filters( $seo_filter ) { if ( $seo_filter === WPSEO_Rank::NO_FOCUS ) { return $this->create_no_focus_keyword_filter(); } if ( $seo_filter === WPSEO_Rank::NO_INDEX ) { return $this->create_no_index_filter(); } $rank = new WPSEO_Rank( $seo_filter ); return $this->create_seo_score_filter( $rank->get_starting_score(), $rank->get_end_score() ); } /** * Determines the Readability score filter to the meta query, based on the passed Readability filter. * * @param string $readability_filter The Readability filter to use to determine what further filter to apply. * * @return array The Readability score filter. */ protected function determine_readability_filters( $readability_filter ) { $rank = new WPSEO_Rank( $readability_filter ); return $this->create_readability_score_filter( $rank->get_starting_score(), $rank->get_end_score() ); } /** * Creates a keyword filter for the meta query, based on the passed Keyword filter. * * @param string $keyword_filter The keyword filter to use. * * @return array The keyword filter. */ protected function get_keyword_filter( $keyword_filter ) { return [ 'post_type' => get_query_var( 'post_type', 'post' ), 'key' => WPSEO_Meta::$meta_prefix . 'focuskw', 'value' => sanitize_text_field( $keyword_filter ), ]; } /** * Determines whether the passed filter is considered to be valid. * * @param mixed $filter The filter to check against. * * @return bool Whether the filter is considered valid. */ protected function is_valid_filter( $filter ) { return ! empty( $filter ) && is_string( $filter ); } /** * Collects the filters and merges them into a single array. * * @return array Array containing all the applicable filters. */ protected function collect_filters() { $active_filters = []; $seo_filter = $this->get_current_seo_filter(); $readability_filter = $this->get_current_readability_filter(); $current_keyword_filter = $this->get_current_keyword_filter(); if ( $this->is_valid_filter( $seo_filter ) ) { $active_filters = array_merge( $active_filters, $this->determine_seo_filters( $seo_filter ) ); } if ( $this->is_valid_filter( $readability_filter ) ) { $active_filters = array_merge( $active_filters, $this->determine_readability_filters( $readability_filter ) ); } if ( $this->is_valid_filter( $current_keyword_filter ) ) { /** * Adapt the meta query used to filter the post overview on keyphrase. * * @internal * * @param array $keyphrase The keyphrase used in the filter. * @param array $keyword_filter The current keyword filter. */ $keyphrase_filter = apply_filters( 'wpseo_change_keyphrase_filter_in_request', $this->get_keyword_filter( $current_keyword_filter ), $current_keyword_filter ); if ( is_array( $keyphrase_filter ) ) { $active_filters = array_merge( $active_filters, [ $keyphrase_filter ] ); } } /** * Adapt the active applicable filters on the posts overview. * * @internal * * @param array $active_filters The current applicable filters. */ return apply_filters( 'wpseo_change_applicable_filters', $active_filters ); } /** * Modify the query based on the filters that are being passed. * * @param array $vars Query variables that need to be modified based on the filters. * * @return array Array containing the meta query to use for filtering the posts overview. */ public function column_sort_orderby( $vars ) { $collected_filters = $this->collect_filters(); $order_by_column = $vars['orderby']; if ( isset( $order_by_column ) ) { // Based on the selected column, create a meta query. $order_by = $this->filter_order_by( $order_by_column ); /** * Adapt the order by part of the query on the posts overview. * * @internal * * @param array $order_by The current order by. * @param string $order_by_column The current order by column. */ $order_by = apply_filters( 'wpseo_change_order_by', $order_by, $order_by_column ); $vars = array_merge( $vars, $order_by ); } return $this->build_filter_query( $vars, $collected_filters ); } /** * Retrieves the meta robots query values to be used within the meta query. * * @return array Array containing the query parameters regarding meta robots. */ protected function get_meta_robots_query_values() { return [ 'relation' => 'OR', [ 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', 'compare' => 'NOT EXISTS', ], [ 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', 'value' => '1', 'compare' => '!=', ], ]; } /** * Determines the score filters to be used. If more than one is passed, it created an AND statement for the query. * * @param array $score_filters Array containing the score filters. * * @return array Array containing the score filters that need to be applied to the meta query. */ protected function determine_score_filters( $score_filters ) { if ( count( $score_filters ) > 1 ) { return array_merge( [ 'relation' => 'AND' ], $score_filters ); } return $score_filters; } /** * Retrieves the post type from the $_GET variable. * * @return string|null The sanitized current post type or null when the variable is not set in $_GET. */ public function get_current_post_type() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['post_type'] ) && is_string( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['post_type'] ) ); } return null; } /** * Retrieves the SEO filter from the $_GET variable. * * @return string|null The sanitized seo filter or null when the variable is not set in $_GET. */ public function get_current_seo_filter() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['seo_filter'] ) && is_string( $_GET['seo_filter'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['seo_filter'] ) ); } return null; } /** * Retrieves the Readability filter from the $_GET variable. * * @return string|null The sanitized readability filter or null when the variable is not set in $_GET. */ public function get_current_readability_filter() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['readability_filter'] ) && is_string( $_GET['readability_filter'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['readability_filter'] ) ); } return null; } /** * Retrieves the keyword filter from the $_GET variable. * * @return string|null The sanitized seo keyword filter or null when the variable is not set in $_GET. */ public function get_current_keyword_filter() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['seo_kw_filter'] ) && is_string( $_GET['seo_kw_filter'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['seo_kw_filter'] ) ); } return null; } /** * Uses the vars to create a complete filter query that can later be executed to filter out posts. * * @param array $vars Array containing the variables that will be used in the meta query. * @param array $filters Array containing the filters that we need to apply in the meta query. * * @return array Array containing the complete filter query. */ protected function build_filter_query( $vars, $filters ) { // If no filters were applied, just return everything. if ( count( $filters ) === 0 ) { return $vars; } $result = [ 'meta_query' => [] ]; $result['meta_query'] = array_merge( $result['meta_query'], [ $this->determine_score_filters( $filters ) ] ); $current_seo_filter = $this->get_current_seo_filter(); // This only applies for the SEO score filter because it can because the SEO score can be altered by the no-index option. if ( $this->is_valid_filter( $current_seo_filter ) && ! in_array( $current_seo_filter, [ WPSEO_Rank::NO_INDEX, WPSEO_Rank::NO_FOCUS ], true ) ) { $result['meta_query'] = array_merge( $result['meta_query'], [ $this->get_meta_robots_query_values() ] ); } return array_merge( $vars, $result ); } /** * Creates a Readability score filter. * * @param number $low The lower boundary of the score. * @param number $high The higher boundary of the score. * * @return array The Readability Score filter. */ protected function create_readability_score_filter( $low, $high ) { return [ [ 'key' => WPSEO_Meta::$meta_prefix . 'content_score', 'value' => [ $low, $high ], 'type' => 'numeric', 'compare' => 'BETWEEN', ], ]; } /** * Creates an SEO score filter. * * @param number $low The lower boundary of the score. * @param number $high The higher boundary of the score. * * @return array The SEO score filter. */ protected function create_seo_score_filter( $low, $high ) { return [ [ 'key' => WPSEO_Meta::$meta_prefix . 'linkdex', 'value' => [ $low, $high ], 'type' => 'numeric', 'compare' => 'BETWEEN', ], ]; } /** * Creates a filter to retrieve posts that were set to no-index. * * @return array Array containin the no-index filter. */ protected function create_no_index_filter() { return [ [ 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', 'value' => '1', 'compare' => '=', ], ]; } /** * Creates a filter to retrieve posts that have no keyword set. * * @return array Array containing the no focus keyword filter. */ protected function create_no_focus_keyword_filter() { return [ [ 'key' => WPSEO_Meta::$meta_prefix . 'meta-robots-noindex', 'value' => 'needs-a-value-anyway', 'compare' => 'NOT EXISTS', ], [ 'key' => WPSEO_Meta::$meta_prefix . 'linkdex', 'value' => 'needs-a-value-anyway', 'compare' => 'NOT EXISTS', ], ]; } /** * Determines whether a particular post_id is of an indexable post type. * * @param string $post_id The post ID to check. * * @return bool Whether or not it is indexable. */ protected function is_indexable( $post_id ) { if ( ! empty( $post_id ) && ! $this->uses_default_indexing( $post_id ) ) { return WPSEO_Meta::get_value( 'meta-robots-noindex', $post_id ) === '2'; } $post = get_post( $post_id ); if ( is_object( $post ) ) { // If the option is false, this means we want to index it. return WPSEO_Options::get( 'noindex-' . $post->post_type, false ) === false; } return true; } /** * Determines whether the given post ID uses the default indexing settings. * * @param int $post_id The post ID to check. * * @return bool Whether or not the default indexing is being used for the post. */ protected function uses_default_indexing( $post_id ) { return WPSEO_Meta::get_value( 'meta-robots-noindex', $post_id ) === '0'; } /** * Returns filters when $order_by is matched in the if-statement. * * @param string $order_by The ID of the column by which to order the posts. * * @return array Array containing the order filters. */ private function filter_order_by( $order_by ) { switch ( $order_by ) { case 'wpseo-metadesc': return [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Reason: Only used when user requests sorting. 'meta_key' => WPSEO_Meta::$meta_prefix . 'metadesc', 'orderby' => 'meta_value', ]; case 'wpseo-focuskw': return [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Reason: Only used when user requests sorting. 'meta_key' => WPSEO_Meta::$meta_prefix . 'focuskw', 'orderby' => 'meta_value', ]; case 'wpseo-score': return [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Reason: Only used when user requests sorting. 'meta_key' => WPSEO_Meta::$meta_prefix . 'linkdex', 'orderby' => 'meta_value_num', ]; case 'wpseo-score-readability': return [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key -- Reason: Only used when user requests sorting. 'meta_key' => WPSEO_Meta::$meta_prefix . 'content_score', 'orderby' => 'meta_value_num', ]; } return []; } /** * Parses the score column. * * @param int $post_id The ID of the post for which to show the score. * * @return string The HTML for the SEO score indicator. */ private function parse_column_score( $post_id ) { $meta = $this->get_meta( $post_id ); if ( $meta ) { return $this->score_icon_helper->for_seo( $meta->indexable, '', __( 'Post is set to noindex.', 'wordpress-seo' ) ); } } /** * Parsing the readability score column. * * @param int $post_id The ID of the post for which to show the readability score. * * @return string The HTML for the readability score indicator. */ private function parse_column_score_readability( $post_id ) { $meta = $this->get_meta( $post_id ); if ( $meta ) { return $this->score_icon_helper->for_readability( $meta->indexable->readability_score ); } } /** * Sets up the hooks for the post_types. * * @return void */ private function set_post_type_hooks() { $post_types = WPSEO_Post_Type::get_accessible_post_types(); if ( ! is_array( $post_types ) || $post_types === [] ) { return; } foreach ( $post_types as $post_type ) { if ( $this->display_metabox( $post_type ) === false ) { continue; } add_filter( 'manage_' . $post_type . '_posts_columns', [ $this, 'column_heading' ], 10, 1 ); add_action( 'manage_' . $post_type . '_posts_custom_column', [ $this, 'column_content' ], 10, 2 ); add_action( 'manage_edit-' . $post_type . '_sortable_columns', [ $this, 'column_sort' ], 10, 2 ); } unset( $post_type ); } /** * Wraps the WPSEO_Metabox check to determine whether the metabox should be displayed either by * choice of the admin or because the post type is not a public post type. * * @since 7.0 * * @param string|null $post_type Optional. The post type to test, defaults to the current post post_type. * * @return bool Whether or not the meta box (and associated columns etc) should be hidden. */ private function display_metabox( $post_type = null ) { $current_post_type = $this->get_current_post_type(); if ( ! isset( $post_type ) && ! empty( $current_post_type ) ) { $post_type = $current_post_type; } return WPSEO_Utils::is_metabox_active( $post_type, 'post_type' ); } /** * Determines whether or not filter dropdowns should be displayed. * * @return bool Whether or the current page can display the filter drop downs. */ public function can_display_filter() { if ( $GLOBALS['pagenow'] === 'upload.php' ) { return false; } if ( $this->display_metabox() === false ) { return false; } $screen = get_current_screen(); if ( $screen === null ) { return false; } return WPSEO_Post_Type::is_post_type_accessible( $screen->post_type ); } } admin/class-admin-asset-manager.php000064400000046405147206602470013306 0ustar00asset_location = $asset_location; $this->prefix = $prefix; } /** * Enqueues scripts. * * @param string $script The name of the script to enqueue. * * @return void */ public function enqueue_script( $script ) { wp_enqueue_script( $this->prefix . $script ); } /** * Enqueues styles. * * @param string $style The name of the style to enqueue. * * @return void */ public function enqueue_style( $style ) { wp_enqueue_style( $this->prefix . $style ); } /** * Enqueues the appropriate language for the user. * * @return void */ public function enqueue_user_language_script() { $this->enqueue_script( 'language-' . YoastSEO()->helpers->language->get_researcher_language() ); } /** * Registers scripts based on it's parameters. * * @param WPSEO_Admin_Asset $script The script to register. * * @return void */ public function register_script( WPSEO_Admin_Asset $script ) { $url = $script->get_src() ? $this->get_url( $script, WPSEO_Admin_Asset::TYPE_JS ) : false; $args = [ 'in_footer' => $script->is_in_footer(), ]; if ( $script->get_strategy() !== '' ) { $args['strategy'] = $script->get_strategy(); } wp_register_script( $this->prefix . $script->get_name(), $url, $script->get_deps(), $script->get_version(), $args ); if ( in_array( 'wp-i18n', $script->get_deps(), true ) ) { wp_set_script_translations( $this->prefix . $script->get_name(), 'wordpress-seo' ); } } /** * Registers styles based on it's parameters. * * @param WPSEO_Admin_Asset $style The style to register. * * @return void */ public function register_style( WPSEO_Admin_Asset $style ) { wp_register_style( $this->prefix . $style->get_name(), $this->get_url( $style, WPSEO_Admin_Asset::TYPE_CSS ), $style->get_deps(), $style->get_version(), $style->get_media() ); } /** * Calls the functions that register scripts and styles with the scripts and styles to be registered as arguments. * * @return void */ public function register_assets() { $this->register_scripts( $this->scripts_to_be_registered() ); $this->register_styles( $this->styles_to_be_registered() ); } /** * Registers all the scripts passed to it. * * @param array $scripts The scripts passed to it. * * @return void */ public function register_scripts( $scripts ) { foreach ( $scripts as $script ) { $script = new WPSEO_Admin_Asset( $script ); $this->register_script( $script ); } } /** * Registers all the styles it receives. * * @param array $styles Styles that need to be registered. * * @return void */ public function register_styles( $styles ) { foreach ( $styles as $style ) { $style = new WPSEO_Admin_Asset( $style ); $this->register_style( $style ); } } /** * Localizes the script. * * @param string $handle The script handle. * @param string $object_name The object name. * @param array $data The l10n data. * * @return void */ public function localize_script( $handle, $object_name, $data ) { wp_localize_script( $this->prefix . $handle, $object_name, $data ); } /** * Adds an inline script. * * @param string $handle The script handle. * @param string $data The l10n data. * @param string $position Optional. Whether to add the inline script before the handle or after. * * @return void */ public function add_inline_script( $handle, $data, $position = 'after' ) { wp_add_inline_script( $this->prefix . $handle, $data, $position ); } /** * A list of styles that shouldn't be registered but are needed in other locations in the plugin. * * @return array */ public function special_styles() { $flat_version = $this->flatten_version( WPSEO_VERSION ); $asset_args = [ 'name' => 'inside-editor', 'src' => 'inside-editor-' . $flat_version, ]; return [ 'inside-editor' => new WPSEO_Admin_Asset( $asset_args ) ]; } /** * Flattens a version number for use in a filename. * * @param string $version The original version number. * * @return string The flattened version number. */ public function flatten_version( $version ) { $parts = explode( '.', $version ); if ( count( $parts ) === 2 && preg_match( '/^\d+$/', $parts[1] ) === 1 ) { $parts[] = '0'; } return implode( '', $parts ); } /** * Creates a default location object for use in the admin asset manager. * * @return WPSEO_Admin_Asset_Location The location to use in the asset manager. */ public static function create_default_location() { if ( defined( 'YOAST_SEO_DEV_SERVER' ) && YOAST_SEO_DEV_SERVER ) { $url = defined( 'YOAST_SEO_DEV_SERVER_URL' ) ? YOAST_SEO_DEV_SERVER_URL : WPSEO_Admin_Asset_Dev_Server_Location::DEFAULT_URL; return new WPSEO_Admin_Asset_Dev_Server_Location( $url ); } return new WPSEO_Admin_Asset_SEO_Location( WPSEO_FILE, false ); } /** * Checks if the given script is enqueued. * * @param string $script The script to check. * * @return bool True when the script is enqueued. */ public function is_script_enqueued( $script ) { return wp_script_is( $this->prefix . $script ); } /** * Returns the scripts that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array The scripts that need to be registered. */ protected function scripts_to_be_registered() { $header_scripts = [ 'admin-global', 'block-editor', 'classic-editor', 'post-edit', 'help-scout-beacon', 'redirect-old-features-tab', ]; $additional_dependencies = [ 'analysis-worker' => [ self::PREFIX . 'analysis-package' ], 'api-client' => [ 'wp-api' ], 'crawl-settings' => [ 'jquery' ], 'dashboard-widget' => [ self::PREFIX . 'api-client' ], 'wincher-dashboard-widget' => [ self::PREFIX . 'api-client' ], 'editor-modules' => [ 'jquery' ], 'elementor' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'indexation' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'first-time-configuration' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'integrations-page' => [ self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'post-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'block-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'reindex-links' => [ 'jquery-ui-core', 'jquery-ui-progressbar', ], 'settings' => [ 'jquery-ui-core', 'jquery-ui-progressbar', self::PREFIX . 'api-client', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'term-edit' => [ self::PREFIX . 'api-client', self::PREFIX . 'classic-editor', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', ], 'general-page' => [ self::PREFIX . 'api-client', ], ]; $plugin_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/plugin.php', 'ext_length' => 3, 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $external_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/externals.php', 'ext_length' => 3, 'suffix' => '-package', 'base_dir' => 'externals/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $language_scripts = $this->load_generated_asset_file( [ 'asset_file' => __DIR__ . '/../src/generated/assets/languages.php', 'ext_length' => 3, 'suffix' => '-language', 'base_dir' => 'languages/', 'additional_deps' => $additional_dependencies, 'header_scripts' => $header_scripts, ] ); $renamed_scripts = $this->load_renamed_scripts(); $scripts = array_merge( $plugin_scripts, $external_scripts, $language_scripts, $renamed_scripts ); $scripts['installation-success'] = [ 'name' => 'installation-success', 'src' => 'installation-success.js', 'deps' => [ 'wp-a11y', 'wp-dom-ready', 'wp-components', 'wp-element', 'wp-i18n', self::PREFIX . 'components-new-package', self::PREFIX . 'externals-components', ], 'version' => $scripts['installation-success']['version'], ]; $scripts['post-edit-classic'] = [ 'name' => 'post-edit-classic', 'src' => $scripts['post-edit']['src'], 'deps' => array_map( static function ( $dep ) { if ( $dep === self::PREFIX . 'block-editor' ) { return self::PREFIX . 'classic-editor'; } return $dep; }, $scripts['post-edit']['deps'] ), 'in_footer' => ! in_array( 'post-edit-classic', $header_scripts, true ), 'version' => $scripts['post-edit']['version'], ]; $scripts['workouts'] = [ 'name' => 'workouts', 'src' => 'workouts.js', 'deps' => [ 'clipboard', 'lodash', 'wp-api-fetch', 'wp-a11y', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-element', 'wp-i18n', self::PREFIX . 'externals-components', self::PREFIX . 'externals-contexts', self::PREFIX . 'externals-redux', self::PREFIX . 'analysis', self::PREFIX . 'react-select', self::PREFIX . 'components-new-package', ], 'version' => $scripts['workouts']['version'], ]; // Add the current language to every script that requires the analysis package. foreach ( $scripts as $name => $script ) { if ( substr( $name, -8 ) === 'language' ) { continue; } if ( in_array( self::PREFIX . 'analysis-package', $script['deps'], true ) ) { $scripts[ $name ]['deps'][] = self::PREFIX . YoastSEO()->helpers->language->get_researcher_language() . '-language'; } } return $scripts; } /** * Loads a generated asset file. * * @param array $args { * The arguments. * * @type string $asset_file The asset file to load. * @type int $ext_length The length of the extension, including suffix, of the filename. * @type string $suffix Optional. The suffix of the asset name. * @type array $additional_deps Optional. The additional dependencies assets may have. * @type string $base_dir Optional. The base directory of the asset. * @type string[] $header_scripts Optional. The script names that should be in the header. * } * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_generated_asset_file( $args ) { $args = wp_parse_args( $args, [ 'suffix' => '', 'additional_deps' => [], 'base_dir' => '', 'header_scripts' => [], ] ); $scripts = []; $assets = require $args['asset_file']; foreach ( $assets as $file => $data ) { $name = substr( $file, 0, -$args['ext_length'] ); $name = strtolower( preg_replace( '/([A-Z])/', '-$1', $name ) ); $name .= $args['suffix']; $deps = $data['dependencies']; if ( isset( $args['additional_deps'][ $name ] ) ) { $deps = array_merge( $deps, $args['additional_deps'][ $name ] ); } $scripts[ $name ] = [ 'name' => $name, 'src' => $args['base_dir'] . $file, 'deps' => $deps, 'in_footer' => ! in_array( $name, $args['header_scripts'], true ), 'version' => $data['version'], ]; } return $scripts; } /** * Loads the scripts that should be renamed for BC. * * @return array { * The scripts to be registered. * * @type string $name The name of the asset. * @type string $src The src of the asset. * @type string[] $deps The dependenies of the asset. * @type bool $in_footer Whether or not the asset should be in the footer. * } */ protected function load_renamed_scripts() { $scripts = []; $renamed_scripts = [ 'admin-global-script' => 'admin-global', 'analysis' => 'analysis-package', 'analysis-report' => 'analysis-report-package', 'api' => 'api-client', 'commons' => 'commons-package', 'edit-page' => 'edit-page-script', 'draft-js' => 'draft-js-package', 'feature-flag' => 'feature-flag-package', 'helpers' => 'helpers-package', 'jed' => 'jed-package', 'chart.js' => 'chart.js-package', 'network-admin-script' => 'network-admin', 'redux' => 'redux-package', 'replacement-variable-editor' => 'replacement-variable-editor-package', 'search-metadata-previews' => 'search-metadata-previews-package', 'social-metadata-forms' => 'social-metadata-forms-package', 'styled-components' => 'styled-components-package', 'style-guide' => 'style-guide-package', 'yoast-components' => 'components-new-package', ]; foreach ( $renamed_scripts as $original => $replacement ) { $scripts[] = [ 'name' => $original, 'src' => false, 'deps' => [ self::PREFIX . $replacement ], ]; } return $scripts; } /** * Returns the styles that need to be registered. * * @todo Data format is not self-documenting. Needs explanation inline. R. * * @return array Styles that need to be registered. */ protected function styles_to_be_registered() { $flat_version = $this->flatten_version( WPSEO_VERSION ); return [ [ 'name' => 'admin-css', 'src' => 'yst_plugin_tools-' . $flat_version, 'deps' => [ self::PREFIX . 'toggle-switch' ], ], [ 'name' => 'toggle-switch', 'src' => 'toggle-switch-' . $flat_version, ], [ 'name' => 'dismissible', 'src' => 'wpseo-dismissible-' . $flat_version, ], [ 'name' => 'notifications', 'src' => 'notifications-' . $flat_version, ], [ 'name' => 'alert', 'src' => 'alerts-' . $flat_version, ], [ 'name' => 'edit-page', 'src' => 'edit-page-' . $flat_version, ], [ 'name' => 'featured-image', 'src' => 'featured-image-' . $flat_version, ], [ 'name' => 'metabox-css', 'src' => 'metabox-' . $flat_version, 'deps' => [ self::PREFIX . 'admin-css', self::PREFIX . 'tailwind', 'wp-components', ], ], [ 'name' => 'ai-generator', 'src' => 'ai-generator-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind', self::PREFIX . 'introductions', ], ], [ 'name' => 'ai-fix-assessments', 'src' => 'ai-fix-assessments-' . $flat_version, ], [ 'name' => 'introductions', 'src' => 'introductions-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'wp-dashboard', 'src' => 'dashboard-' . $flat_version, ], [ 'name' => 'scoring', 'src' => 'yst_seo_score-' . $flat_version, ], [ 'name' => 'adminbar', 'src' => 'adminbar-' . $flat_version, 'deps' => [ 'admin-bar', ], ], [ 'name' => 'primary-category', 'src' => 'metabox-primary-category-' . $flat_version, ], [ 'name' => 'admin-global', 'src' => 'admin-global-' . $flat_version, ], [ 'name' => 'extensions', 'src' => 'yoast-extensions-' . $flat_version, 'deps' => [ 'wp-components', ], ], [ 'name' => 'filter-explanation', 'src' => 'filter-explanation-' . $flat_version, ], [ 'name' => 'monorepo', 'src' => 'monorepo-' . $flat_version, ], [ 'name' => 'structured-data-blocks', 'src' => 'structured-data-blocks-' . $flat_version, 'deps' => [ 'dashicons', 'forms', 'wp-edit-blocks', ], ], [ 'name' => 'elementor', 'src' => 'elementor-' . $flat_version, ], [ 'name' => 'tailwind', 'src' => 'tailwind-' . $flat_version, ], [ 'name' => 'new-settings', 'src' => 'new-settings-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'black-friday-banner', 'src' => 'black-friday-banner-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'academy', 'src' => 'academy-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'general-page', 'src' => 'general-page-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'support', 'src' => 'support-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'workouts', 'src' => 'workouts-' . $flat_version, 'deps' => [ self::PREFIX . 'monorepo', ], ], [ 'name' => 'first-time-configuration', 'src' => 'first-time-configuration-' . $flat_version, 'deps' => [ self::PREFIX . 'tailwind' ], ], [ 'name' => 'inside-editor', 'src' => 'inside-editor-' . $flat_version, ], ]; } /** * Determines the URL of the asset. * * @param WPSEO_Admin_Asset $asset The asset to determine the URL for. * @param string $type The type of asset. Usually JS or CSS. * * @return string The URL of the asset. */ protected function get_url( WPSEO_Admin_Asset $asset, $type ) { $scheme = wp_parse_url( $asset->get_src(), PHP_URL_SCHEME ); if ( in_array( $scheme, [ 'http', 'https' ], true ) ) { return $asset->get_src(); } return $this->asset_location->get_url( $asset, $type ); } } admin/class-admin-asset-analysis-worker-location.php000064400000003471147206602470016630 0ustar00flatten_version( WPSEO_VERSION ); } $analysis_worker = $name . '-' . $flat_version . '.js'; $this->asset_location = WPSEO_Admin_Asset_Manager::create_default_location(); $this->asset = new WPSEO_Admin_Asset( [ 'name' => $name, 'src' => $analysis_worker, ] ); } /** * Retrieves the analysis worker asset. * * @return WPSEO_Admin_Asset The analysis worker asset. */ public function get_asset() { return $this->asset; } /** * Determines the URL of the asset on the dev server. * * @param WPSEO_Admin_Asset $asset The asset to determine the URL for. * @param string $type The type of asset. Usually JS or CSS. * * @return string The URL of the asset. */ public function get_url( WPSEO_Admin_Asset $asset, $type ) { $scheme = wp_parse_url( $asset->get_src(), PHP_URL_SCHEME ); if ( in_array( $scheme, [ 'http', 'https' ], true ) ) { return $asset->get_src(); } return $this->asset_location->get_url( $asset, $type ); } } admin/class-gutenberg-compatibility.php000064400000004741147206602470014317 0ustar00current_version = $this->detect_installed_gutenberg_version(); } /** * Determines whether or not Gutenberg is installed. * * @return bool Whether or not Gutenberg is installed. */ public function is_installed() { return $this->current_version !== ''; } /** * Determines whether or not the currently installed version of Gutenberg is below the minimum supported version. * * @return bool True if the currently installed version is below the minimum supported version. False otherwise. */ public function is_below_minimum() { return version_compare( $this->current_version, $this->get_minimum_supported_version(), '<' ); } /** * Gets the currently installed version. * * @return string The currently installed version. */ public function get_installed_version() { return $this->current_version; } /** * Determines whether or not the currently installed version of Gutenberg is the latest, fully compatible version. * * @return bool Whether or not the currently installed version is fully compatible. */ public function is_fully_compatible() { return version_compare( $this->current_version, $this->get_latest_release(), '>=' ); } /** * Gets the latest released version of Gutenberg. * * @return string The latest release. */ protected function get_latest_release() { return self::CURRENT_RELEASE; } /** * Gets the minimum supported version of Gutenberg. * * @return string The minumum supported release. */ protected function get_minimum_supported_version() { return self::MINIMUM_SUPPORTED; } /** * Detects the currently installed Gutenberg version. * * @return string The currently installed Gutenberg version. Empty if the version couldn't be detected. */ protected function detect_installed_gutenberg_version() { if ( defined( 'GUTENBERG_VERSION' ) ) { return GUTENBERG_VERSION; } return ''; } } admin/class-yoast-plugin-conflict.php000064400000024520147206602470013715 0ustar00plugins the active plugins will be stored in this * property. * * @var array */ protected $active_conflicting_plugins = []; /** * Property for holding instance of itself. * * @var Yoast_Plugin_Conflict */ protected static $instance; /** * For the use of singleton pattern. Create instance of itself and return this instance. * * @param string $class_name Give the classname to initialize. If classname is * false (empty) it will use it's own __CLASS__. * * @return Yoast_Plugin_Conflict */ public static function get_instance( $class_name = '' ) { if ( is_null( self::$instance ) ) { if ( ! is_string( $class_name ) || $class_name === '' ) { $class_name = self::class; } self::$instance = new $class_name(); } return self::$instance; } /** * Setting instance, all active plugins and search for active plugins. * * Protected constructor to prevent creating a new instance of the * *Singleton* via the `new` operator from outside this class. */ protected function __construct() { // Set active plugins. $this->all_active_plugins = get_option( 'active_plugins' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['action'] ) && is_string( $_GET['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form information and only comparing the variable in a condition. $action = wp_unslash( $_GET['action'] ); if ( $action === 'deactivate' ) { $this->remove_deactivated_plugin(); } } // Search for active plugins. $this->search_active_plugins(); } /** * Check if there are conflicting plugins for given $plugin_section. * * @param string $plugin_section Type of plugin conflict (such as Open Graph or sitemap). * * @return bool */ public function check_for_conflicts( $plugin_section ) { static $sections_checked; // Return early if there are no active conflicting plugins at all. if ( empty( $this->active_conflicting_plugins ) ) { return false; } if ( $sections_checked === null ) { $sections_checked = []; } if ( ! in_array( $plugin_section, $sections_checked, true ) ) { $sections_checked[] = $plugin_section; return ( ! empty( $this->active_conflicting_plugins[ $plugin_section ] ) ); } return false; } /** * Checks for given $plugin_sections for conflicts. * * @param array $plugin_sections Set of sections. * * @return void */ public function check_plugin_conflicts( $plugin_sections ) { foreach ( $plugin_sections as $plugin_section => $readable_plugin_section ) { // Check for conflicting plugins and show error if there are conflicts. if ( $this->check_for_conflicts( $plugin_section ) ) { $this->set_error( $plugin_section, $readable_plugin_section ); } } // List of all active sections. $sections = array_keys( $plugin_sections ); // List of all sections. $all_plugin_sections = array_keys( $this->plugins ); /* * Get all sections that are inactive. * These plugins need to be cleared. * * This happens when Sitemaps or OpenGraph implementations toggle active/disabled. */ $inactive_sections = array_diff( $all_plugin_sections, $sections ); if ( ! empty( $inactive_sections ) ) { foreach ( $inactive_sections as $section ) { array_walk( $this->plugins[ $section ], [ $this, 'clear_error' ] ); } } // For active sections clear errors for inactive plugins. foreach ( $sections as $section ) { // By default, clear errors for all plugins of the section. $inactive_plugins = $this->plugins[ $section ]; // If there are active plugins, filter them from being cleared. if ( isset( $this->active_conflicting_plugins[ $section ] ) ) { $inactive_plugins = array_diff( $this->plugins[ $section ], $this->active_conflicting_plugins[ $section ] ); } array_walk( $inactive_plugins, [ $this, 'clear_error' ] ); } } /** * Setting an error on the screen. * * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). * @param string $readable_plugin_section This is the value for the translation. * * @return void */ protected function set_error( $plugin_section, $readable_plugin_section ) { $notification_center = Yoast_Notification_Center::get(); foreach ( $this->active_conflicting_plugins[ $plugin_section ] as $plugin_file ) { $plugin_name = $this->get_plugin_name( $plugin_file ); $error_message = ''; /* translators: %1$s: 'Facebook & Open Graph' plugin name(s) of possibly conflicting plugin(s), %2$s to Yoast SEO */ $error_message .= '

    ' . sprintf( __( 'The %1$s plugin might cause issues when used in conjunction with %2$s.', 'wordpress-seo' ), '' . $plugin_name . '', 'Yoast SEO' ) . '

    '; $error_message .= '

    ' . sprintf( $readable_plugin_section, 'Yoast SEO', $plugin_name ) . '

    '; /* translators: %s: 'Facebook' plugin name of possibly conflicting plugin */ $error_message .= '' . sprintf( __( 'Deactivate %s', 'wordpress-seo' ), $this->get_plugin_name( $plugin_file ) ) . ' '; $identifier = $this->get_notification_identifier( $plugin_file ); // Add the message to the notifications center. $notification_center->add_notification( new Yoast_Notification( $error_message, [ 'type' => Yoast_Notification::ERROR, 'id' => 'wpseo-conflict-' . $identifier, ] ) ); } } /** * Clear the notification for a plugin. * * @param string $plugin_file Clear the optional notification for this plugin. * * @return void */ public function clear_error( $plugin_file ) { $identifier = $this->get_notification_identifier( $plugin_file ); $notification_center = Yoast_Notification_Center::get(); $notification_center->remove_notification_by_id( 'wpseo-conflict-' . $identifier ); } /** * Loop through the $this->plugins to check if one of the plugins is active. * * This method will store the active plugins in $this->active_plugins. * * @return void */ protected function search_active_plugins() { foreach ( $this->plugins as $plugin_section => $plugins ) { $this->check_plugins_active( $plugins, $plugin_section ); } } /** * Loop through plugins and check if each plugin is active. * * @param array $plugins Set of plugins. * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). * * @return void */ protected function check_plugins_active( $plugins, $plugin_section ) { foreach ( $plugins as $plugin ) { if ( $this->check_plugin_is_active( $plugin ) ) { $this->add_active_plugin( $plugin_section, $plugin ); } } } /** * Check if given plugin exists in array with all_active_plugins. * * @param string $plugin Plugin basename string. * * @return bool */ protected function check_plugin_is_active( $plugin ) { return in_array( $plugin, $this->all_active_plugins, true ); } /** * Add plugin to the list of active plugins. * * This method will check first if key $plugin_section exists, if not it will create an empty array * If $plugin itself doesn't exist it will be added. * * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). * @param string $plugin Plugin basename string. * * @return void */ protected function add_active_plugin( $plugin_section, $plugin ) { if ( ! array_key_exists( $plugin_section, $this->active_conflicting_plugins ) ) { $this->active_conflicting_plugins[ $plugin_section ] = []; } if ( ! in_array( $plugin, $this->active_conflicting_plugins[ $plugin_section ], true ) ) { $this->active_conflicting_plugins[ $plugin_section ][] = $plugin; } } /** * Search in $this->plugins for the given $plugin. * * If there is a result it will return the plugin category. * * @param string $plugin Plugin basename string. * * @return int|string */ protected function find_plugin_category( $plugin ) { foreach ( $this->plugins as $plugin_section => $plugins ) { if ( in_array( $plugin, $plugins, true ) ) { return $plugin_section; } } } /** * Get plugin name from file. * * @param string $plugin Plugin path relative to plugins directory. * * @return string|bool Plugin name or false when no name is set. */ protected function get_plugin_name( $plugin ) { $plugin_details = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); if ( $plugin_details['Name'] !== '' ) { return $plugin_details['Name']; } return false; } /** * When being in the deactivation process the currently deactivated plugin has to be removed. * * @return void */ private function remove_deactivated_plugin() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: On the deactivation screen the nonce is already checked by WordPress itself. if ( ! isset( $_GET['plugin'] ) || ! is_string( $_GET['plugin'] ) ) { return; } // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: On the deactivation screen the nonce is already checked by WordPress itself. $deactivated_plugin = sanitize_text_field( wp_unslash( $_GET['plugin'] ) ); $key_to_remove = array_search( $deactivated_plugin, $this->all_active_plugins, true ); if ( $key_to_remove !== false ) { unset( $this->all_active_plugins[ $key_to_remove ] ); } } /** * Get the identifier from the plugin file. * * @param string $plugin_file Plugin file to get Identifier from. * * @return string */ private function get_notification_identifier( $plugin_file ) { return md5( $plugin_file ); } } admin/class-admin-user-profile.php000064400000006373147206602470013173 0ustar00availability_checker = $availability_checker; $this->notification_center = $notification_center; } /** * Registers all hooks to WordPress. * * @return void */ public function register_hooks() { add_action( 'admin_init', [ $this->availability_checker, 'register' ] ); add_action( 'admin_init', [ $this, 'add_notifications' ] ); } /** * Adds notifications (when necessary). * * @return void */ public function add_notifications() { $checker = $this->availability_checker; // Get all Yoast plugins that have dependencies. $plugins = $checker->get_plugins_with_dependencies(); foreach ( $plugins as $plugin_name => $plugin ) { $notification_id = 'wpseo-suggested-plugin-' . $plugin_name; if ( ! $checker->dependencies_are_satisfied( $plugin ) ) { $this->notification_center->remove_notification_by_id( $notification_id ); continue; } if ( ! $checker->is_installed( $plugin ) ) { $notification = $this->get_yoast_seo_suggested_plugins_notification( $notification_id, $plugin ); $this->notification_center->add_notification( $notification ); continue; } $this->notification_center->remove_notification_by_id( $notification_id ); } } /** * Build Yoast SEO suggested plugins notification. * * @param string $notification_id The id of the notification to be created. * @param array> $plugin The plugin to retrieve the data from. * * @return Yoast_Notification The notification containing the suggested plugin. */ protected function get_yoast_seo_suggested_plugins_notification( $notification_id, $plugin ) { $message = $this->create_install_suggested_plugin_message( $plugin ); return new Yoast_Notification( $message, [ 'id' => $notification_id, 'type' => Yoast_Notification::WARNING, 'capabilities' => [ 'install_plugins' ], ] ); } /** * Creates a message to suggest the installation of a particular plugin. * * @param array $suggested_plugin The suggested plugin. * * @return string The install suggested plugin message. */ protected function create_install_suggested_plugin_message( $suggested_plugin ) { /* translators: %1$s expands to an opening strong tag, %2$s expands to the dependency name, %3$s expands to a closing strong tag, %4$s expands to an opening anchor tag, %5$s expands to a closing anchor tag. */ $message = __( 'It looks like you aren\'t using our %1$s%2$s addon%3$s. %4$sUpgrade today%5$s to unlock more tools and SEO features to make your products stand out in search results.', 'wordpress-seo' ); $install_link = WPSEO_Admin_Utils::get_install_link( $suggested_plugin ); return sprintf( $message, '', $install_link, '', $this->create_more_information_link( $suggested_plugin['url'], $suggested_plugin['title'] ), '' ); } /** * Creates a more information link that directs the user to WordPress.org Plugin repository. * * @param string $url The URL to the plugin's page. * @param string $name The name of the plugin. * * @return string The more information link. */ protected function create_more_information_link( $url, $name ) { return sprintf( '', $url, /* translators: Hidden accessibility text; %1$s expands to the dependency name */ sprintf( __( 'More information about %1$s', 'wordpress-seo' ), $name ) ); } } admin/class-config.php000064400000012127147206602470010730 0ustar00asset_manager = new WPSEO_Admin_Asset_Manager(); } /** * Make sure the needed scripts are loaded for admin pages. * * @return void */ public function init() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // Don't load the scripts for the following pages. $page_exceptions = in_array( $page, [ Settings_Integration::PAGE, Academy_Integration::PAGE, Support_Integration::PAGE ], true ); $new_dashboard_page = ( $page === General_Page_Integration::PAGE && ! is_network_admin() ); if ( $page_exceptions || $new_dashboard_page ) { // Bail, this is managed in the applicable integration. return; } add_action( 'admin_enqueue_scripts', [ $this, 'config_page_scripts' ] ); add_action( 'admin_enqueue_scripts', [ $this, 'config_page_styles' ] ); } /** * Loads the required styles for the config page. * * @return void */ public function config_page_styles() { wp_enqueue_style( 'dashboard' ); wp_enqueue_style( 'thickbox' ); wp_enqueue_style( 'global' ); wp_enqueue_style( 'wp-admin' ); $this->asset_manager->enqueue_style( 'admin-css' ); $this->asset_manager->enqueue_style( 'monorepo' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; if ( $page === 'wpseo_licenses' ) { $this->asset_manager->enqueue_style( 'tailwind' ); } } /** * Loads the required scripts for the config page. * * @return void */ public function config_page_scripts() { $this->asset_manager->enqueue_script( 'settings' ); wp_enqueue_script( 'dashboard' ); wp_enqueue_script( 'thickbox' ); $alert_dismissal_action = YoastSEO()->classes->get( Alert_Dismissal_Action::class ); $dismissed_alerts = $alert_dismissal_action->all_dismissed(); $script_data = [ 'dismissedAlerts' => $dismissed_alerts, 'isRtl' => is_rtl(), 'isPremium' => YoastSEO()->helpers->product->is_premium(), 'currentPromotions' => YoastSEO()->classes->get( Promotion_Manager::class )->get_current_promotions(), 'webinarIntroFirstTimeConfigUrl' => $this->get_webinar_shortlink(), 'linkParams' => WPSEO_Shortlinker::get_query_params(), 'pluginUrl' => plugins_url( '', WPSEO_FILE ), ]; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; if ( in_array( $page, [ WPSEO_Admin::PAGE_IDENTIFIER, 'wpseo_workouts' ], true ) ) { wp_enqueue_media(); $script_data['userEditUrl'] = add_query_arg( 'user_id', '{user_id}', admin_url( 'user-edit.php' ) ); } if ( $page === 'wpseo_tools' ) { $this->enqueue_tools_scripts(); } $this->asset_manager->localize_script( 'settings', 'wpseoScriptData', $script_data ); $this->asset_manager->enqueue_user_language_script(); } /** * Enqueues and handles all the tool dependencies. * * @return void */ private function enqueue_tools_scripts() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $tool = isset( $_GET['tool'] ) && is_string( $_GET['tool'] ) ? sanitize_text_field( wp_unslash( $_GET['tool'] ) ) : ''; if ( empty( $tool ) ) { $this->asset_manager->enqueue_script( 'yoast-seo' ); } if ( $tool === 'bulk-editor' ) { $this->asset_manager->enqueue_script( 'bulk-editor' ); } } /** * Returns the appropriate shortlink for the Webinar. * * @return string The shortlink for the Webinar. */ private function get_webinar_shortlink() { if ( YoastSEO()->helpers->product->is_premium() ) { return WPSEO_Shortlinker::get( 'https://yoa.st/webinar-intro-first-time-config-premium' ); } return WPSEO_Shortlinker::get( 'https://yoa.st/webinar-intro-first-time-config' ); } } admin/class-expose-shortlinks.php000064400000021127147206602470013164 0ustar00 'https://yoa.st/allow-search-engines', 'shortlinks.advanced.follow_links' => 'https://yoa.st/follow-links', 'shortlinks.advanced.meta_robots' => 'https://yoa.st/meta-robots-advanced', 'shortlinks.advanced.breadcrumbs_title' => 'https://yoa.st/breadcrumbs-title', 'shortlinks.metabox.schema.explanation' => 'https://yoa.st/400', 'shortlinks.metabox.schema.page_type' => 'https://yoa.st/402', 'shortlinks.sidebar.schema.explanation' => 'https://yoa.st/401', 'shortlinks.sidebar.schema.page_type' => 'https://yoa.st/403', 'shortlinks.focus_keyword_info' => 'https://yoa.st/focus-keyword', 'shortlinks.nofollow_sponsored' => 'https://yoa.st/nofollow-sponsored', 'shortlinks.snippet_preview_info' => 'https://yoa.st/snippet-preview', 'shortlinks.cornerstone_content_info' => 'https://yoa.st/1i9', 'shortlinks.upsell.social_preview.social' => 'https://yoa.st/social-preview-facebook', 'shortlinks.upsell.social_preview.x' => 'https://yoa.st/social-preview-twitter', 'shortlinks.upsell.sidebar.news' => 'https://yoa.st/get-news-sidebar', 'shortlinks.upsell.sidebar.focus_keyword_synonyms_button' => 'https://yoa.st/keyword-synonyms-popup-sidebar', 'shortlinks.upsell.sidebar.premium_seo_analysis_button' => 'https://yoa.st/premium-seo-analysis-sidebar', 'shortlinks.upsell.sidebar.focus_keyword_additional_button' => 'https://yoa.st/add-keywords-popup-sidebar', 'shortlinks.upsell.sidebar.additional_link' => 'https://yoa.st/textlink-keywords-sidebar', 'shortlinks.upsell.sidebar.additional_button' => 'https://yoa.st/add-keywords-sidebar', 'shortlinks.upsell.sidebar.keyphrase_distribution' => 'https://yoa.st/keyphrase-distribution-sidebar', 'shortlinks.upsell.sidebar.word_complexity' => 'https://yoa.st/word-complexity-sidebar', 'shortlinks.upsell.sidebar.internal_linking_suggestions' => 'https://yoa.st/internal-linking-suggestions-sidebar', 'shortlinks.upsell.sidebar.highlighting_seo_analysis' => 'https://yoa.st/highlighting-seo-analysis', 'shortlinks.upsell.sidebar.highlighting_readability_analysis' => 'https://yoa.st/highlighting-readability-analysis', 'shortlinks.upsell.sidebar.highlighting_inclusive_analysis' => 'https://yoa.st/highlighting-inclusive-analysis', 'shortlinks.upsell.metabox.news' => 'https://yoa.st/get-news-metabox', 'shortlinks.upsell.metabox.go_premium' => 'https://yoa.st/pe-premium-page', 'shortlinks.upsell.metabox.focus_keyword_synonyms_button' => 'https://yoa.st/keyword-synonyms-popup', 'shortlinks.upsell.metabox.premium_seo_analysis_button' => 'https://yoa.st/premium-seo-analysis-metabox', 'shortlinks.upsell.metabox.focus_keyword_additional_button' => 'https://yoa.st/add-keywords-popup', 'shortlinks.upsell.metabox.additional_link' => 'https://yoa.st/textlink-keywords-metabox', 'shortlinks.upsell.metabox.additional_button' => 'https://yoa.st/add-keywords-metabox', 'shortlinks.upsell.metabox.keyphrase_distribution' => 'https://yoa.st/keyphrase-distribution-metabox', 'shortlinks.upsell.metabox.word_complexity' => 'https://yoa.st/word-complexity-metabox', 'shortlinks.upsell.metabox.internal_linking_suggestions' => 'https://yoa.st/internal-linking-suggestions-metabox', 'shortlinks.upsell.gsc.create_redirect_button' => 'https://yoa.st/redirects', 'shortlinks.readability_analysis_info' => 'https://yoa.st/readability-analysis', 'shortlinks.inclusive_language_analysis_info' => 'https://yoa.st/inclusive-language-analysis', 'shortlinks.activate_premium_info' => 'https://yoa.st/activate-subscription', 'shortlinks.upsell.sidebar.morphology_upsell_metabox' => 'https://yoa.st/morphology-upsell-metabox', 'shortlinks.upsell.sidebar.morphology_upsell_sidebar' => 'https://yoa.st/morphology-upsell-sidebar', 'shortlinks.semrush.volume_help' => 'https://yoa.st/3-v', 'shortlinks.semrush.trend_help' => 'https://yoa.st/3-v', 'shortlinks.semrush.prices' => 'https://yoa.st/semrush-prices', 'shortlinks.semrush.premium_landing_page' => 'https://yoa.st/413', 'shortlinks.wincher.seo_performance' => 'https://yoa.st/wincher-integration', 'shortlinks-insights-estimated_reading_time' => 'https://yoa.st/4fd', 'shortlinks-insights-flesch_reading_ease' => 'https://yoa.st/34r', 'shortlinks-insights-flesch_reading_ease_sidebar' => 'https://yoa.st/4mf', 'shortlinks-insights-flesch_reading_ease_metabox' => 'https://yoa.st/4mg', 'shortlinks-insights-flesch_reading_ease_article' => 'https://yoa.st/34s', 'shortlinks-insights-keyword_research_link' => 'https://yoa.st/keyword-research-metabox', 'shortlinks-insights-upsell-sidebar-prominent_words' => 'https://yoa.st/prominent-words-upsell-sidebar', 'shortlinks-insights-upsell-metabox-prominent_words' => 'https://yoa.st/prominent-words-upsell-metabox', 'shortlinks-insights-upsell-elementor-prominent_words' => 'https://yoa.st/prominent-words-upsell-elementor', 'shortlinks-insights-word_count' => 'https://yoa.st/word-count', 'shortlinks-insights-upsell-sidebar-text_formality' => 'https://yoa.st/formality-upsell-sidebar', 'shortlinks-insights-upsell-metabox-text_formality' => 'https://yoa.st/formality-upsell-metabox', 'shortlinks-insights-upsell-elementor-text_formality' => 'https://yoa.st/formality-upsell-elementor', 'shortlinks-insights-text_formality_info_free' => 'https://yoa.st/formality-free', 'shortlinks-insights-text_formality_info_premium' => 'https://yoa.st/formality', ]; /** * Registers all hooks to WordPress. * * @return void */ public function register_hooks() { add_filter( 'wpseo_admin_l10n', [ $this, 'expose_shortlinks' ] ); } /** * Adds shortlinks to the passed array. * * @param array $input The array to add shortlinks to. * * @return array The passed array with the additional shortlinks. */ public function expose_shortlinks( $input ) { foreach ( $this->get_shortlinks() as $key => $shortlink ) { $input[ $key ] = WPSEO_Shortlinker::get( $shortlink ); } $input['default_query_params'] = WPSEO_Shortlinker::get_query_params(); return $input; } /** * Retrieves the shortlinks. * * @return array The shortlinks. */ private function get_shortlinks() { if ( ! $this->is_term_edit() ) { return $this->shortlinks; } $shortlinks = $this->shortlinks; $shortlinks['shortlinks.upsell.metabox.focus_keyword_synonyms_button'] = 'https://yoa.st/keyword-synonyms-popup-term'; $shortlinks['shortlinks.upsell.metabox.focus_keyword_additional_button'] = 'https://yoa.st/add-keywords-popup-term'; $shortlinks['shortlinks.upsell.metabox.additional_link'] = 'https://yoa.st/textlink-keywords-metabox-term'; $shortlinks['shortlinks.upsell.metabox.additional_button'] = 'https://yoa.st/add-keywords-metabox-term'; $shortlinks['shortlinks.upsell.sidebar.morphology_upsell_metabox'] = 'https://yoa.st/morphology-upsell-metabox-term'; $shortlinks['shortlinks.upsell.metabox.keyphrase_distribution'] = 'https://yoa.st/keyphrase-distribution-metabox-term'; $shortlinks['shortlinks.upsell.metabox.word_complexity'] = 'https://yoa.st/word-complexity-metabox-term'; $shortlinks['shortlinks.upsell.metabox.internal_linking_suggestions'] = 'https://yoa.st/internal-linking-suggestions-metabox-term'; return $shortlinks; } /** * Checks if the current page is a term edit page. * * @return bool True when page is term edit. */ private function is_term_edit() { global $pagenow; return WPSEO_Taxonomy::is_term_edit( $pagenow ); } } admin/class-yoast-input-validation.php000064400000016275147206602470014117 0ustar00 */ private static $error_descriptions = []; /** * Check whether an option group is a Yoast SEO setting. * * The normal pattern is 'yoast' . $option_name . 'options'. * * @since 12.0 * * @param string $group_name The option group name. * * @return bool Whether or not it's an Yoast SEO option group. */ public static function is_yoast_option_group_name( $group_name ) { return ( strpos( $group_name, 'yoast' ) !== false ); } /** * Adds an error message to the document title when submitting a settings * form and errors are returned. * * Uses the WordPress `admin_title` filter in the WPSEO_Option subclasses. * * @since 12.0 * * @param string $admin_title The page title, with extra context added. * * @return string The modified or original admin title. */ public static function add_yoast_admin_document_title_errors( $admin_title ) { $errors = get_settings_errors(); $error_count = 0; foreach ( $errors as $error ) { // For now, filter the admin title only in the Yoast SEO settings pages. if ( self::is_yoast_option_group_name( $error['setting'] ) && $error['code'] !== 'settings_updated' ) { ++$error_count; } } if ( $error_count > 0 ) { return sprintf( /* translators: %1$s: amount of errors, %2$s: the admin page title */ _n( 'The form contains %1$s error. %2$s', 'The form contains %1$s errors. %2$s', $error_count, 'wordpress-seo' ), number_format_i18n( $error_count ), $admin_title ); } return $admin_title; } /** * Checks whether a specific form input field was submitted with an invalid value. * * @since 12.1 * * @param string $error_code Must be the same slug-name used for the field variable and for `add_settings_error()`. * * @return bool Whether or not the submitted input field contained an invalid value. */ public static function yoast_form_control_has_error( $error_code ) { $errors = get_settings_errors(); foreach ( $errors as $error ) { if ( $error['code'] === $error_code ) { return true; } } return false; } /** * Sets the error descriptions. * * @since 12.1 * * @param array $descriptions An associative array of error descriptions. * For each entry, the key must be the setting variable. * * @return void * * @deprecated 23.3 * @codeCoverageIgnore */ public static function set_error_descriptions( $descriptions = [] ) { // @phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable, Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Needed for BC. _deprecated_function( __METHOD__, 'Yoast SEO 23.3' ); } /** * Gets all the error descriptions. * * @since 12.1 * * @deprecated 23.3 * @codeCoverageIgnore * * @return array An associative array of error descriptions. */ public static function get_error_descriptions() { _deprecated_function( __METHOD__, 'Yoast SEO 23.3' ); return []; } /** * Gets a specific error description. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string|null The error description. */ public static function get_error_description( $error_code ) { if ( ! isset( self::$error_descriptions[ $error_code ] ) ) { return null; } return self::$error_descriptions[ $error_code ]; } /** * Gets the aria-invalid HTML attribute based on the submitted invalid value. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string The aria-invalid HTML attribute or empty string. */ public static function get_the_aria_invalid_attribute( $error_code ) { if ( self::yoast_form_control_has_error( $error_code ) ) { return ' aria-invalid="true"'; } return ''; } /** * Gets the aria-describedby HTML attribute based on the submitted invalid value. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string The aria-describedby HTML attribute or empty string. */ public static function get_the_aria_describedby_attribute( $error_code ) { if ( self::yoast_form_control_has_error( $error_code ) && self::get_error_description( $error_code ) ) { return ' aria-describedby="' . esc_attr( $error_code ) . '-error-description"'; } return ''; } /** * Gets the error description wrapped in a HTML paragraph. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string The error description HTML or empty string. */ public static function get_the_error_description( $error_code ) { $error_description = self::get_error_description( $error_code ); if ( self::yoast_form_control_has_error( $error_code ) && $error_description ) { return '

    ' . $error_description . '

    '; } return ''; } /** * Adds the submitted invalid value to the WordPress `$wp_settings_errors` global. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * @param string $dirty_value The submitted invalid value. * * @return void */ public static function add_dirty_value_to_settings_errors( $error_code, $dirty_value ) { global $wp_settings_errors; if ( ! is_array( $wp_settings_errors ) ) { return; } foreach ( $wp_settings_errors as $index => $error ) { if ( $error['code'] === $error_code ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride -- This is a deliberate action. $wp_settings_errors[ $index ]['yoast_dirty_value'] = $dirty_value; } } } /** * Gets an invalid submitted value. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string The submitted invalid input field value. * * @deprecated 23.3 * @codeCoverageIgnore */ public static function get_dirty_value( $error_code ) { // @phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable, Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Needed for BC. _deprecated_function( __METHOD__, 'Yoast SEO 23.3' ); return ''; } /** * Gets a specific invalid value message. * * @since 12.1 * * @param string $error_code Code of the error set via `add_settings_error()`, normally the variable name. * * @return string The error invalid value message or empty string. * * @deprecated 23.3 * @codeCoverageIgnore */ public static function get_dirty_value_message( $error_code ) { // @phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable, Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Needed for BC. _deprecated_function( __METHOD__, 'Yoast SEO 23.3' ); return ''; } } admin/capabilities/class-capability-manager-integration.php000064400000006053147206602470020167 0ustar00manager = $manager; } /** * Registers the hooks. * * @return void */ public function register_hooks() { add_filter( 'members_get_capabilities', [ $this, 'get_capabilities' ] ); add_action( 'members_register_cap_groups', [ $this, 'action_members_register_cap_group' ] ); add_filter( 'ure_capabilities_groups_tree', [ $this, 'filter_ure_capabilities_groups_tree' ] ); add_filter( 'ure_custom_capability_groups', [ $this, 'filter_ure_custom_capability_groups' ], 10, 2 ); } /** * Get the Yoast SEO capabilities. * Optionally append them to an existing array. * * @param array $caps Optional existing capability list. * @return array */ public function get_capabilities( array $caps = [] ) { if ( ! did_action( 'wpseo_register_capabilities' ) ) { do_action( 'wpseo_register_capabilities' ); } return array_merge( $caps, $this->manager->get_capabilities() ); } /** * Add capabilities to its own group in the Members plugin. * * @see members_register_cap_group() * * @return void */ public function action_members_register_cap_group() { if ( ! function_exists( 'members_register_cap_group' ) ) { return; } // Register the yoast group. $args = [ 'label' => esc_html__( 'Yoast SEO', 'wordpress-seo' ), 'caps' => $this->get_capabilities(), 'icon' => 'dashicons-admin-plugins', 'diff_added' => true, ]; members_register_cap_group( 'wordpress-seo', $args ); } /** * Adds Yoast SEO capability group in the User Role Editor plugin. * * @see URE_Capabilities_Groups_Manager::get_groups_tree() * * @param array $groups Current groups. * * @return array Filtered list of capabilty groups. */ public function filter_ure_capabilities_groups_tree( $groups = [] ) { $groups = (array) $groups; $groups['wordpress-seo'] = [ 'caption' => 'Yoast SEO', 'parent' => 'custom', 'level' => 3, ]; return $groups; } /** * Adds capabilities to the Yoast SEO group in the User Role Editor plugin. * * @see URE_Capabilities_Groups_Manager::get_cap_groups() * * @param array $groups Current capability groups. * @param string $cap_id Capability identifier. * * @return array List of filtered groups. */ public function filter_ure_custom_capability_groups( $groups = [], $cap_id = '' ) { if ( in_array( $cap_id, $this->get_capabilities(), true ) ) { $groups = (array) $groups; $groups[] = 'wordpress-seo'; } return $groups; } } admin/capabilities/class-register-capabilities.php000064400000006250147206602470016367 0ustar00register( 'wpseo_bulk_edit', [ 'editor', 'wpseo_editor', 'wpseo_manager' ] ); $manager->register( 'wpseo_edit_advanced_metadata', [ 'editor', 'wpseo_editor', 'wpseo_manager' ] ); $manager->register( 'wpseo_manage_options', [ 'administrator', 'wpseo_manager' ] ); $manager->register( 'view_site_health_checks', [ 'wpseo_manager' ] ); } /** * Revokes the 'wpseo_manage_options' capability from administrator users if it should * only be granted to network administrators. * * @param array $allcaps An array of all the user's capabilities. * @param array $caps Actual capabilities being checked. * @param array $args Optional parameters passed to has_cap(), typically object ID. * @param WP_User $user The user object. * * @return array Possibly modified array of the user's capabilities. */ public function filter_user_has_wpseo_manage_options_cap( $allcaps, $caps, $args, $user ) { // We only need to do something if 'wpseo_manage_options' is being checked. if ( ! in_array( 'wpseo_manage_options', $caps, true ) ) { return $allcaps; } // If the user does not have 'wpseo_manage_options' anyway, we don't need to revoke access. if ( empty( $allcaps['wpseo_manage_options'] ) ) { return $allcaps; } // If the user does not have 'delete_users', they are not an administrator. if ( empty( $allcaps['delete_users'] ) ) { return $allcaps; } $options = WPSEO_Options::get_instance(); if ( $options->get( 'access' ) === 'superadmin' && ! is_super_admin( $user->ID ) ) { unset( $allcaps['wpseo_manage_options'] ); } return $allcaps; } /** * Maybe add manage_privacy_options capability for wpseo_manager user role. * * @param string[] $caps Primitive capabilities required of the user. * @param string[] $cap Capability being checked. * * @return string[] Filtered primitive capabilities required of the user. */ public function map_meta_cap_for_seo_manager( $caps, $cap ) { $user = wp_get_current_user(); // No multisite support. if ( is_multisite() ) { return $caps; } // User must be of role wpseo_manager. if ( ! in_array( 'wpseo_manager', $user->roles, true ) ) { return $caps; } // Remove manage_options cap requirement if requested cap is manage_privacy_options. if ( $cap === 'manage_privacy_options' ) { return array_diff( $caps, [ 'manage_options' ] ); } return $caps; } } admin/capabilities/class-capability-utils.php000064400000004536147206602470015400 0ustar00 $applicable_roles ] ); } /** * Retrieves the roles that have the specified capability. * * @param string $capability The name of the capability. * * @return array The names of the roles that have the capability. */ public static function get_applicable_roles( $capability ) { $roles = wp_roles(); $role_names = $roles->get_names(); $applicable_roles = []; foreach ( array_keys( $role_names ) as $role_name ) { $role = $roles->get_role( $role_name ); if ( ! $role ) { continue; } // Add role if it has the capability. if ( array_key_exists( $capability, $role->capabilities ) && $role->capabilities[ $capability ] === true ) { $applicable_roles[] = $role_name; } } return $applicable_roles; } /** * Checks if the current user has at least one of the supplied capabilities. * * @param array $capabilities Capabilities to check against. * * @return bool True if the user has at least one capability. */ protected static function has_any( array $capabilities ) { foreach ( $capabilities as $capability ) { if ( self::has( $capability ) ) { return true; } } return false; } /** * Checks if the user has a certain capability. * * @param string $capability Capability to check against. * * @return bool True if the user has the capability. */ protected static function has( $capability ) { return current_user_can( $capability ); } } admin/capabilities/class-capability-manager.php000064400000001455147206602470015647 0ustar00capabilities[ $capability ] ) ) { $this->capabilities[ $capability ] = $roles; return; } // Combine configurations. $this->capabilities[ $capability ] = array_merge( $roles, $this->capabilities[ $capability ] ); // Remove doubles. $this->capabilities[ $capability ] = array_unique( $this->capabilities[ $capability ] ); } /** * Returns the list of registered capabilitities. * * @return string[] Registered capabilities. */ public function get_capabilities() { return array_keys( $this->capabilities ); } /** * Returns a list of WP_Role roles. * * The string array of role names are converted to actual WP_Role objects. * These are needed to be able to use the API on them. * * @param array $roles Roles to retrieve the objects for. * * @return WP_Role[] List of WP_Role objects. */ protected function get_wp_roles( array $roles ) { $wp_roles = array_map( 'get_role', $roles ); return array_filter( $wp_roles ); } /** * Filter capability roles. * * @param string $capability Capability to filter roles for. * @param array $roles List of roles which can be filtered. * * @return array Filtered list of roles for the capability. */ protected function filter_roles( $capability, array $roles ) { /** * Filter: Allow changing roles that a capability is added to. * * @param array $roles The default roles to be filtered. */ $filtered = apply_filters( $capability . '_roles', $roles ); // Make sure we have the expected type. if ( ! is_array( $filtered ) ) { return []; } return $filtered; } } admin/capabilities/class-capability-manager-vip.php000064400000003640147206602470016441 0ustar00capabilities as $capability => $roles ) { $role_capabilities = $this->get_role_capabilities( $role_capabilities, $capability, $roles ); } foreach ( $role_capabilities as $role => $capabilities ) { wpcom_vip_add_role_caps( $role, $capabilities ); } } /** * Removes the registered capabilities from the system * * @return void */ public function remove() { // Remove from any role it has been added to. $roles = wp_roles()->get_names(); $roles = array_keys( $roles ); $role_capabilities = []; foreach ( array_keys( $this->capabilities ) as $capability ) { // Allow filtering of roles. $role_capabilities = $this->get_role_capabilities( $role_capabilities, $capability, $roles ); } foreach ( $role_capabilities as $role => $capabilities ) { wpcom_vip_remove_role_caps( $role, $capabilities ); } } /** * Returns the roles which the capability is registered on. * * @param array $role_capabilities List of all roles with their capabilities. * @param string $capability Capability to filter roles for. * @param array $roles List of default roles. * * @return array List of capabilities. */ protected function get_role_capabilities( $role_capabilities, $capability, $roles ) { // Allow filtering of roles. $filtered_roles = $this->filter_roles( $capability, $roles ); foreach ( $filtered_roles as $role ) { if ( ! isset( $add_role_caps[ $role ] ) ) { $role_capabilities[ $role ] = []; } $role_capabilities[ $role ][] = $capability; } return $role_capabilities; } } admin/capabilities/class-capability-manager-wp.php000064400000002331147206602470016265 0ustar00capabilities as $capability => $roles ) { $filtered_roles = $this->filter_roles( $capability, $roles ); $wp_roles = $this->get_wp_roles( $filtered_roles ); foreach ( $wp_roles as $wp_role ) { $wp_role->add_cap( $capability ); } } } /** * Unregisters the capabilities from the system. * * @return void */ public function remove() { // Remove from any roles it has been added to. $roles = wp_roles()->get_names(); $roles = array_keys( $roles ); foreach ( $this->capabilities as $capability => $_roles ) { $registered_roles = array_unique( array_merge( $roles, $this->capabilities[ $capability ] ) ); // Allow filtering of roles. $filtered_roles = $this->filter_roles( $capability, $registered_roles ); $wp_roles = $this->get_wp_roles( $filtered_roles ); foreach ( $wp_roles as $wp_role ) { $wp_role->remove_cap( $capability ); } } } } admin/capabilities/class-capability-manager-factory.php000064400000001373147206602470017313 0ustar00 'wpseo_bulk_title', 'plural' => 'wpseo_bulk_titles', 'ajax' => true, ]; /** * The field in the database where meta field is saved. * * @var string */ protected $target_db_field = 'title'; /** * The columns shown on the table. * * @return array */ public function get_columns() { $columns = [ /* translators: %1$s expands to Yoast SEO */ 'col_existing_yoast_seo_title' => sprintf( __( 'Existing %1$s Title', 'wordpress-seo' ), 'Yoast SEO' ), /* translators: %1$s expands to Yoast SEO */ 'col_new_yoast_seo_title' => sprintf( __( 'New %1$s Title', 'wordpress-seo' ), 'Yoast SEO' ), ]; return $this->merge_columns( $columns ); } /** * Parse the title columns. * * @param string $column_name Column name. * @param object $record Data object. * @param string $attributes HTML attributes. * * @return string */ protected function parse_page_specific_column( $column_name, $record, $attributes ) { // Fill meta data if exists in $this->meta_data. $meta_data = ( ! empty( $this->meta_data[ $record->ID ] ) ) ? $this->meta_data[ $record->ID ] : []; switch ( $column_name ) { case 'col_existing_yoast_seo_title': // @todo Inconsistent return/echo behavior R. // I traced the escaping of the attributes to WPSEO_Bulk_List_Table::column_attributes. // The output of WPSEO_Bulk_List_Table::parse_meta_data_field is properly escaped. // phpcs:ignore WordPress.Security.EscapeOutput echo $this->parse_meta_data_field( $record->ID, $attributes ); break; case 'col_new_yoast_seo_title': return sprintf( '', 'wpseo-new-title-' . $record->ID, $record->ID ); } unset( $meta_data ); } } admin/ajax/class-shortcode-filter.php000064400000003067147206602470013666 0ustar00 $shortcode, 'output' => do_shortcode( $shortcode ), ]; } // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: WPSEO_Utils::format_json_encode is considered safe. wp_die( WPSEO_Utils::format_json_encode( $parsed_shortcodes ) ); } } admin/ajax/class-yoast-plugin-conflict-ajax.php000064400000006662147206602470015570 0ustar00 sanitize_text_field( $conflict_data['section'] ), 'plugins' => sanitize_text_field( $conflict_data['plugins'] ), ]; $this->dismissed_conflicts = $this->get_dismissed_conflicts( $conflict_data['section'] ); $this->compare_plugins( $conflict_data['plugins'] ); $this->save_dismissed_conflicts( $conflict_data['section'] ); wp_die( 'true' ); } /** * Getting the user option from the database. * * @return bool|array */ private function get_dismissed_option() { return get_user_meta( get_current_user_id(), $this->option_name, true ); } /** * Getting the dismissed conflicts from the database * * @param string $plugin_section Type of conflict group (such as Open Graph or sitemap). * * @return array */ private function get_dismissed_conflicts( $plugin_section ) { $dismissed_conflicts = $this->get_dismissed_option(); if ( is_array( $dismissed_conflicts ) && array_key_exists( $plugin_section, $dismissed_conflicts ) ) { return $dismissed_conflicts[ $plugin_section ]; } return []; } /** * Storing the conflicting plugins as an user option in the database. * * @param string $plugin_section Plugin conflict type (such as Open Graph or sitemap). * * @return void */ private function save_dismissed_conflicts( $plugin_section ) { $dismissed_conflicts = $this->get_dismissed_option(); $dismissed_conflicts[ $plugin_section ] = $this->dismissed_conflicts; update_user_meta( get_current_user_id(), $this->option_name, $dismissed_conflicts ); } /** * Loop through the plugins to compare them with the already stored dismissed plugin conflicts. * * @param array $posted_plugins Plugin set to check. * * @return void */ public function compare_plugins( array $posted_plugins ) { foreach ( $posted_plugins as $posted_plugin ) { $this->compare_plugin( $posted_plugin ); } } /** * Check if plugin is already dismissed, if not store it in the array that will be saved later. * * @param string $posted_plugin Plugin to check against dismissed conflicts. * * @return void */ private function compare_plugin( $posted_plugin ) { if ( ! in_array( $posted_plugin, $this->dismissed_conflicts, true ) ) { $this->dismissed_conflicts[] = $posted_plugin; } } } admin/ajax/class-yoast-dismissable-notice.php000064400000003716147206602470015325 0ustar00notice_name = $notice_name; $this->notice_type = $notice_type; add_action( 'wp_ajax_wpseo_dismiss_' . $notice_name, [ $this, 'dismiss_notice' ] ); } /** * Handles the dismiss notice request. * * @return void */ public function dismiss_notice() { check_ajax_referer( 'wpseo-dismiss-' . $this->notice_name ); $this->save_dismissed(); wp_die( 'true' ); } /** * Storing the dismissed value in the database. The target location is based on the set notification type. * * @return void */ private function save_dismissed() { if ( $this->notice_type === self::FOR_SITE ) { update_option( 'wpseo_dismiss_' . $this->notice_name, 1 ); return; } if ( $this->notice_type === self::FOR_NETWORK ) { update_site_option( 'wpseo_dismiss_' . $this->notice_name, 1 ); return; } update_user_meta( get_current_user_id(), 'wpseo_dismiss_' . $this->notice_name, 1 ); } } admin/class-option-tab.php000064400000004334147206602470011540 0ustar00name = sanitize_title( $name ); $this->label = $label; $this->arguments = $arguments; } /** * Gets the name. * * @return string The name. */ public function get_name() { return $this->name; } /** * Gets the label. * * @return string The label. */ public function get_label() { return $this->label; } /** * Retrieves whether the tab needs a save button. * * @return bool True whether the tabs needs a save button. */ public function has_save_button() { return (bool) $this->get_argument( 'save_button', true ); } /** * Retrieves whether the tab hosts beta functionalities. * * @return bool True whether the tab hosts beta functionalities. */ public function is_beta() { return (bool) $this->get_argument( 'beta', false ); } /** * Retrieves whether the tab hosts premium functionalities. * * @return bool True whether the tab hosts premium functionalities. */ public function is_premium() { return (bool) $this->get_argument( 'premium', false ); } /** * Gets the option group. * * @return string The option group. */ public function get_opt_group() { return $this->get_argument( 'opt_group' ); } /** * Retrieves the variable from the supplied arguments. * * @param string $variable Variable to retrieve. * @param string|mixed $default_value Default to use when variable not found. * * @return mixed|string The retrieved variable. */ protected function get_argument( $variable, $default_value = '' ) { return array_key_exists( $variable, $this->arguments ) ? $this->arguments[ $variable ] : $default_value; } } admin/pages/tools.php000064400000005507147206602470010623 0ustar00admin_header( false ); if ( $tool_page === '' ) { $tools = []; $tools['import-export'] = [ 'title' => __( 'Import and Export', 'wordpress-seo' ), 'desc' => __( 'Import settings from other SEO plugins and export your settings for re-use on (another) site.', 'wordpress-seo' ), ]; if ( WPSEO_Utils::allow_system_file_edit() === true && ! is_multisite() ) { $tools['file-editor'] = [ 'title' => __( 'File editor', 'wordpress-seo' ), 'desc' => __( 'This tool allows you to quickly change important files for your SEO, like your robots.txt and, if you have one, your .htaccess file.', 'wordpress-seo' ), ]; } $tools['bulk-editor'] = [ 'title' => __( 'Bulk editor', 'wordpress-seo' ), 'desc' => __( 'This tool allows you to quickly change titles and descriptions of your posts and pages without having to go into the editor for each page.', 'wordpress-seo' ), ]; echo '

    '; printf( /* translators: %1$s expands to Yoast SEO */ esc_html__( '%1$s comes with some very powerful built-in tools:', 'wordpress-seo' ), 'Yoast SEO' ); echo '

    '; echo '
    '; } else { echo '', esc_html__( '« Back to Tools page', 'wordpress-seo' ), ''; $tool_pages = [ 'bulk-editor', 'import-export' ]; if ( WPSEO_Utils::allow_system_file_edit() === true && ! is_multisite() ) { $tool_pages[] = 'file-editor'; } if ( in_array( $tool_page, $tool_pages, true ) ) { require_once WPSEO_PATH . 'admin/views/tool-' . $tool_page . '.php'; } } $yform->admin_footer( false ); admin/pages/redirects.php000064400000000376147206602470011446 0ustar00admin_header( true, 'wpseo' ); do_action( 'wpseo_all_admin_notices' ); $dashboard_tabs = new WPSEO_Option_Tabs( 'dashboard' ); $dashboard_tabs->add_tab( new WPSEO_Option_Tab( 'dashboard', __( 'Dashboard', 'wordpress-seo' ), [ 'save_button' => false, ] ) ); /** * Allows the addition of tabs to the dashboard by calling $dashboard_tabs->add_tab(). */ do_action( 'wpseo_settings_tabs_dashboard', $dashboard_tabs ); $dashboard_tabs->display( $yform ); do_action( 'wpseo_dashboard' ); $yform->admin_footer(); admin/pages/network.php000064400000001677147206602470011160 0ustar00admin_header( true, 'wpseo_ms' ); $network_tabs = new WPSEO_Option_Tabs( 'network' ); $network_tabs->add_tab( new WPSEO_Option_Tab( 'general', __( 'General', 'wordpress-seo' ) ) ); $network_tabs->add_tab( new WPSEO_Option_Tab( 'features', __( 'Features', 'wordpress-seo' ) ) ); $network_tabs->add_tab( new WPSEO_Option_Tab( 'integrations', __( 'Integrations', 'wordpress-seo' ) ) ); $network_tabs->add_tab( new WPSEO_Option_Tab( 'crawl-settings', __( 'Crawl settings', 'wordpress-seo' ), [ 'save_button' => true, ] ) ); $network_tabs->add_tab( new WPSEO_Option_Tab( 'restore-site', __( 'Restore Site', 'wordpress-seo' ), [ 'save_button' => false ] ) ); $network_tabs->display( $yform ); $yform->admin_footer(); admin/class-admin-recommended-replace-vars.php000064400000013760147206602470015421 0ustar00 [ 'sitename', 'title', 'sep', 'primary_category' ], 'post' => [ 'sitename', 'title', 'sep', 'primary_category' ], // Homepage. 'homepage' => [ 'sitename', 'sitedesc', 'sep' ], // Custom post type. 'custom_post_type' => [ 'sitename', 'title', 'sep' ], // Taxonomies. 'category' => [ 'sitename', 'term_title', 'sep', 'term_hierarchy' ], 'post_tag' => [ 'sitename', 'term_title', 'sep' ], 'post_format' => [ 'sitename', 'term_title', 'sep', 'page' ], // Custom taxonomy. 'term-in-custom-taxonomy' => [ 'sitename', 'term_title', 'sep', 'term_hierarchy' ], // Settings - archive pages. 'author_archive' => [ 'sitename', 'title', 'sep', 'page' ], 'date_archive' => [ 'sitename', 'sep', 'date', 'page' ], 'custom-post-type_archive' => [ 'sitename', 'title', 'sep', 'page' ], // Settings - special pages. 'search' => [ 'sitename', 'searchphrase', 'sep', 'page' ], '404' => [ 'sitename', 'sep' ], ]; /** * Determines the page type of the current term. * * @param string $taxonomy The taxonomy name. * * @return string The page type. */ public function determine_for_term( $taxonomy ) { $recommended_replace_vars = $this->get_recommended_replacevars(); if ( array_key_exists( $taxonomy, $recommended_replace_vars ) ) { return $taxonomy; } return 'term-in-custom-taxonomy'; } /** * Determines the page type of the current post. * * @param WP_Post $post A WordPress post instance. * * @return string The page type. */ public function determine_for_post( $post ) { if ( $post instanceof WP_Post === false ) { return 'post'; } if ( $post->post_type === 'page' && $this->is_homepage( $post ) ) { return 'homepage'; } $recommended_replace_vars = $this->get_recommended_replacevars(); if ( array_key_exists( $post->post_type, $recommended_replace_vars ) ) { return $post->post_type; } return 'custom_post_type'; } /** * Determines the page type for a post type. * * @param string $post_type The name of the post_type. * @param string $fallback The page type to fall back to. * * @return string The page type. */ public function determine_for_post_type( $post_type, $fallback = 'custom_post_type' ) { $page_type = $post_type; $recommended_replace_vars = $this->get_recommended_replacevars(); $has_recommended_replacevars = $this->has_recommended_replace_vars( $recommended_replace_vars, $page_type ); if ( ! $has_recommended_replacevars ) { return $fallback; } return $page_type; } /** * Determines the page type for an archive page. * * @param string $name The name of the archive. * @param string $fallback The page type to fall back to. * * @return string The page type. */ public function determine_for_archive( $name, $fallback = 'custom-post-type_archive' ) { $page_type = $name . '_archive'; $recommended_replace_vars = $this->get_recommended_replacevars(); $has_recommended_replacevars = $this->has_recommended_replace_vars( $recommended_replace_vars, $page_type ); if ( ! $has_recommended_replacevars ) { return $fallback; } return $page_type; } /** * Retrieves the recommended replacement variables for the given page type. * * @param string $page_type The page type. * * @return array The recommended replacement variables. */ public function get_recommended_replacevars_for( $page_type ) { $recommended_replace_vars = $this->get_recommended_replacevars(); $has_recommended_replace_vars = $this->has_recommended_replace_vars( $recommended_replace_vars, $page_type ); if ( ! $has_recommended_replace_vars ) { return []; } return $recommended_replace_vars[ $page_type ]; } /** * Retrieves the recommended replacement variables. * * @return array The recommended replacement variables. */ public function get_recommended_replacevars() { /** * Filter: Adds the possibility to add extra recommended replacement variables. * * @param array $additional_replace_vars Empty array to add the replacevars to. */ $recommended_replace_vars = apply_filters( 'wpseo_recommended_replace_vars', $this->recommended_replace_vars ); if ( ! is_array( $recommended_replace_vars ) ) { return $this->recommended_replace_vars; } return $recommended_replace_vars; } /** * Returns whether the given page type has recommended replace vars. * * @param array $recommended_replace_vars The recommended replace vars * to check in. * @param string $page_type The page type to check. * * @return bool True if there are associated recommended replace vars. */ private function has_recommended_replace_vars( $recommended_replace_vars, $page_type ) { if ( ! isset( $recommended_replace_vars[ $page_type ] ) ) { return false; } if ( ! is_array( $recommended_replace_vars[ $page_type ] ) ) { return false; } return true; } /** * Determines whether or not a post is the homepage. * * @param WP_Post $post The WordPress global post object. * * @return bool True if the given post is the homepage. */ private function is_homepage( $post ) { if ( $post instanceof WP_Post === false ) { return false; } /* * The page on front returns a string with normal WordPress interaction, while the post ID is an int. * This way we make sure we always compare strings. */ $post_id = (int) $post->ID; $page_on_front = (int) get_option( 'page_on_front' ); return get_option( 'show_on_front' ) === 'page' && $page_on_front === $post_id; } } admin/class-yoast-columns.php000064400000007022147206602470012276 0ustar00display_links(); $meta_columns_present = $this->display_meta_columns(); if ( ! ( $link_columns_present || $meta_columns_present ) ) { return; } $help_tab_content = sprintf( /* translators: %1$s: Yoast SEO */ __( '%1$s adds several columns to this page.', 'wordpress-seo' ), 'Yoast SEO' ); if ( $meta_columns_present ) { $help_tab_content .= ' ' . sprintf( /* translators: %1$s: Link to article about content analysis, %2$s: Anchor closing */ __( 'We\'ve written an article about %1$show to use the SEO score and Readability score%2$s.', 'wordpress-seo' ), '', '' ); } if ( $link_columns_present ) { $help_tab_content .= ' ' . sprintf( /* translators: %1$s: Link to article about text links, %2$s: Anchor closing tag, %3$s: Emphasis open tag, %4$s: Emphasis close tag */ __( 'The links columns show the number of articles on this site linking %3$sto%4$s this article and the number of URLs linked %3$sfrom%4$s this article. Learn more about %1$show to use these features to improve your internal linking%2$s, which greatly enhances your SEO.', 'wordpress-seo' ), '', '', '', '' ); } $screen = get_current_screen(); $screen->add_help_tab( [ /* translators: %s expands to Yoast */ 'title' => sprintf( __( '%s Columns', 'wordpress-seo' ), 'Yoast' ), 'id' => 'yst-columns', 'content' => '

    ' . $help_tab_content . '

    ', 'priority' => 15, ] ); } /** * Retrieves the post type from the $_GET variable. * * @return string The current post type. */ private function get_current_post_type() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['post_type'] ) && is_string( $_GET['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['post_type'] ) ); } return ''; } /** * Whether we are showing link columns on this overview page. * This depends on the post being accessible or not. * * @return bool Whether the linking columns are shown */ private function display_links() { $current_post_type = $this->get_current_post_type(); if ( empty( $current_post_type ) ) { return false; } return WPSEO_Post_Type::is_post_type_accessible( $current_post_type ); } /** * Wraps the WPSEO_Metabox check to determine whether the metabox should be displayed either by * choice of the admin or because the post type is not a public post type. * * @return bool Whether the meta box (and associated columns etc) should be hidden. */ private function display_meta_columns() { $current_post_type = $this->get_current_post_type(); if ( empty( $current_post_type ) ) { return false; } return WPSEO_Utils::is_metabox_active( $current_post_type, 'post_type' ); } } admin/class-yoast-notification-center.php000064400000064126147206602470014572 0ustar00get_notification_by_id( $notification_id ); if ( ( $notification instanceof Yoast_Notification ) === false ) { // Permit legacy. $options = [ 'id' => $notification_id, 'dismissal_key' => $notification_id, ]; $notification = new Yoast_Notification( '', $options ); } if ( self::maybe_dismiss_notification( $notification ) ) { die( '1' ); } die( '-1' ); } /** * Check if the user has dismissed a notification. * * @param Yoast_Notification $notification The notification to check for dismissal. * @param int|null $user_id User ID to check on. * * @return bool */ public static function is_notification_dismissed( Yoast_Notification $notification, $user_id = null ) { $user_id = self::get_user_id( $user_id ); $dismissal_key = $notification->get_dismissal_key(); // This checks both the site-specific user option and the meta value. $current_value = get_user_option( $dismissal_key, $user_id ); // Migrate old user meta to user option on-the-fly. if ( ! empty( $current_value ) && metadata_exists( 'user', $user_id, $dismissal_key ) && update_user_option( $user_id, $dismissal_key, $current_value ) ) { delete_user_meta( $user_id, $dismissal_key ); } return ! empty( $current_value ); } /** * Checks if the notification is being dismissed. * * @param Yoast_Notification $notification Notification to check dismissal of. * @param string $meta_value Value to set the meta value to if dismissed. * * @return bool True if dismissed. */ public static function maybe_dismiss_notification( Yoast_Notification $notification, $meta_value = 'seen' ) { // Only persistent notifications are dismissible. if ( ! $notification->is_persistent() ) { return false; } // If notification is already dismissed, we're done. if ( self::is_notification_dismissed( $notification ) ) { return true; } $dismissal_key = $notification->get_dismissal_key(); $notification_id = $notification->get_id(); $is_dismissing = ( $dismissal_key === self::get_user_input( 'notification' ) ); if ( ! $is_dismissing ) { $is_dismissing = ( $notification_id === self::get_user_input( 'notification' ) ); } // Fallback to ?dismissal_key=1&nonce=bla when JavaScript fails. if ( ! $is_dismissing ) { $is_dismissing = ( self::get_user_input( $dismissal_key ) === '1' ); } if ( ! $is_dismissing ) { return false; } $user_nonce = self::get_user_input( 'nonce' ); if ( wp_verify_nonce( $user_nonce, $notification_id ) === false ) { return false; } return self::dismiss_notification( $notification, $meta_value ); } /** * Dismisses a notification. * * @param Yoast_Notification $notification Notification to dismiss. * @param string $meta_value Value to save in the dismissal. * * @return bool True if dismissed, false otherwise. */ public static function dismiss_notification( Yoast_Notification $notification, $meta_value = 'seen' ) { // Dismiss notification. return update_user_option( get_current_user_id(), $notification->get_dismissal_key(), $meta_value ) !== false; } /** * Restores a notification. * * @param Yoast_Notification $notification Notification to restore. * * @return bool True if restored, false otherwise. */ public static function restore_notification( Yoast_Notification $notification ) { $user_id = get_current_user_id(); $dismissal_key = $notification->get_dismissal_key(); // Restore notification. $restored = delete_user_option( $user_id, $dismissal_key ); // Delete unprefixed user meta too for backward-compatibility. if ( metadata_exists( 'user', $user_id, $dismissal_key ) ) { $restored = delete_user_meta( $user_id, $dismissal_key ) && $restored; } return $restored; } /** * Clear dismissal information for the specified Notification. * * When a cause is resolved, the next time it is present we want to show * the message again. * * @param string|Yoast_Notification $notification Notification to clear the dismissal of. * * @return bool */ public function clear_dismissal( $notification ) { global $wpdb; if ( $notification instanceof Yoast_Notification ) { $dismissal_key = $notification->get_dismissal_key(); } if ( is_string( $notification ) ) { $dismissal_key = $notification; } if ( empty( $dismissal_key ) ) { return false; } // Remove notification dismissal for all users. $deleted = delete_metadata( 'user', 0, $wpdb->get_blog_prefix() . $dismissal_key, '', true ); // Delete unprefixed user meta too for backward-compatibility. $deleted = delete_metadata( 'user', 0, $dismissal_key, '', true ) || $deleted; return $deleted; } /** * Retrieves notifications from the storage and merges in previous notification changes. * * The current user in WordPress is not loaded shortly before the 'init' hook, but the plugin * sometimes needs to add or remove notifications before that. In such cases, the transactions * are not actually executed, but added to a queue. That queue is then handled in this method, * after notifications for the current user have been set up. * * @return void */ public function setup_current_notifications() { $this->retrieve_notifications_from_storage( get_current_user_id() ); foreach ( $this->queued_transactions as $transaction ) { list( $callback, $args ) = $transaction; call_user_func_array( $callback, $args ); } $this->queued_transactions = []; } /** * Add notification to the cookie. * * @param Yoast_Notification $notification Notification object instance. * * @return void */ public function add_notification( Yoast_Notification $notification ) { $callback = [ $this, __FUNCTION__ ]; $args = func_get_args(); if ( $this->queue_transaction( $callback, $args ) ) { return; } // Don't add if the user can't see it. if ( ! $notification->display_for_current_user() ) { return; } $notification_id = $notification->get_id(); $user_id = $notification->get_user_id(); // Empty notifications are always added. if ( $notification_id !== '' ) { // If notification ID exists in notifications, don't add again. $present_notification = $this->get_notification_by_id( $notification_id, $user_id ); if ( ! is_null( $present_notification ) ) { $this->remove_notification( $present_notification, false ); } if ( is_null( $present_notification ) ) { $this->new[] = $notification_id; } } // Add to list. $this->notifications[ $user_id ][] = $notification; $this->notifications_need_storage = true; } /** * Get the notification by ID and user ID. * * @param string $notification_id The ID of the notification to search for. * @param int|null $user_id The ID of the user. * * @return Yoast_Notification|null */ public function get_notification_by_id( $notification_id, $user_id = null ) { $user_id = self::get_user_id( $user_id ); $notifications = $this->get_notifications_for_user( $user_id ); foreach ( $notifications as $notification ) { if ( $notification_id === $notification->get_id() ) { return $notification; } } return null; } /** * Display the notifications. * * @param bool $echo_as_json True when notifications should be printed directly. * * @return void */ public function display_notifications( $echo_as_json = false ) { // Never display notifications for network admin. if ( is_network_admin() ) { return; } $sorted_notifications = $this->get_sorted_notifications(); $notifications = array_filter( $sorted_notifications, [ $this, 'is_notification_persistent' ] ); if ( empty( $notifications ) ) { return; } array_walk( $notifications, [ $this, 'remove_notification' ] ); $notifications = array_unique( $notifications ); if ( $echo_as_json ) { $notification_json = []; foreach ( $notifications as $notification ) { $notification_json[] = $notification->render(); } // phpcs:ignore WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe. echo WPSEO_Utils::format_json_encode( $notification_json ); return; } foreach ( $notifications as $notification ) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: Temporarily disabled, see: https://github.com/Yoast/wordpress-seo-premium/issues/2510 and https://github.com/Yoast/wordpress-seo-premium/issues/2511. echo $notification; } } /** * Remove notification after it has been displayed. * * @param Yoast_Notification $notification Notification to remove. * @param bool $resolve Resolve as fixed. * * @return void */ public function remove_notification( Yoast_Notification $notification, $resolve = true ) { $callback = [ $this, __FUNCTION__ ]; $args = func_get_args(); if ( $this->queue_transaction( $callback, $args ) ) { return; } $index = false; // ID of the user to show the notification for, defaults to current user id. $user_id = $notification->get_user_id(); $notifications = $this->get_notifications_for_user( $user_id ); // Match persistent Notifications by ID, non persistent by item in the array. if ( $notification->is_persistent() ) { foreach ( $notifications as $current_index => $present_notification ) { if ( $present_notification->get_id() === $notification->get_id() ) { $index = $current_index; break; } } } else { $index = array_search( $notification, $notifications, true ); } if ( $index === false ) { return; } if ( $notification->is_persistent() && $resolve ) { ++$this->resolved; $this->clear_dismissal( $notification ); } unset( $notifications[ $index ] ); $this->notifications[ $user_id ] = array_values( $notifications ); $this->notifications_need_storage = true; } /** * Removes a notification by its ID. * * @param string $notification_id The notification id. * @param bool $resolve Resolve as fixed. * * @return void */ public function remove_notification_by_id( $notification_id, $resolve = true ) { $notification = $this->get_notification_by_id( $notification_id ); if ( $notification === null ) { return; } $this->remove_notification( $notification, $resolve ); $this->notifications_need_storage = true; } /** * Get the notification count. * * @param bool $dismissed Count dismissed notifications. * * @return int Number of notifications */ public function get_notification_count( $dismissed = false ) { $notifications = $this->get_notifications_for_user( get_current_user_id() ); $notifications = array_filter( $notifications, [ $this, 'filter_persistent_notifications' ] ); if ( ! $dismissed ) { $notifications = array_filter( $notifications, [ $this, 'filter_dismissed_notifications' ] ); } return count( $notifications ); } /** * Get the number of notifications resolved this execution. * * These notifications have been resolved and should be counted when active again. * * @return int */ public function get_resolved_notification_count() { return $this->resolved; } /** * Return the notifications sorted on type and priority. * * @return array|Yoast_Notification[] Sorted Notifications */ public function get_sorted_notifications() { $notifications = $this->get_notifications_for_user( get_current_user_id() ); if ( empty( $notifications ) ) { return []; } // Sort by severity, error first. usort( $notifications, [ $this, 'sort_notifications' ] ); return $notifications; } /** * AJAX display notifications. * * @return void */ public function ajax_get_notifications() { $echo = false; // phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are not processing form data. if ( isset( $_POST['version'] ) && is_string( $_POST['version'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are only comparing the variable in a condition. $echo = wp_unslash( $_POST['version'] ) === '2'; } // Display the notices. $this->display_notifications( $echo ); // AJAX die. exit; } /** * Remove storage when the plugin is deactivated. * * @return void */ public function deactivate_hook() { $this->clear_notifications(); } /** * Returns the given user ID if it exists. * Otherwise, this function returns the ID of the current user. * * @param int $user_id The user ID to check. * * @return int The user ID to use. */ private static function get_user_id( $user_id ) { if ( $user_id ) { return $user_id; } return get_current_user_id(); } /** * Splits the notifications on user ID. * * In other terms, it returns an associative array, * mapping user ID to a list of notifications for this user. * * @param array|Yoast_Notification[] $notifications The notifications to split. * * @return array The notifications, split on user ID. */ private function split_on_user_id( $notifications ) { $split_notifications = []; foreach ( $notifications as $notification ) { $split_notifications[ $notification->get_user_id() ][] = $notification; } return $split_notifications; } /** * Save persistent notifications to storage. * * We need to be able to retrieve these so they can be dismissed at any time during the execution. * * @since 3.2 * * @return void */ public function update_storage() { /** * Plugins might exit on the plugins_loaded hook. * This prevents the pluggable.php file from loading, as it's loaded after the plugins_loaded hook. * As we need functions defined in pluggable.php, make sure it's loaded. */ require_once ABSPATH . WPINC . '/pluggable.php'; $notifications = $this->notifications; /** * One array of Yoast_Notifications, merged from multiple arrays. * * @var Yoast_Notification[] $merged_notifications */ $merged_notifications = []; if ( ! empty( $notifications ) ) { $merged_notifications = array_merge( ...$notifications ); } /** * Filter: 'yoast_notifications_before_storage' - Allows developer to filter notifications before saving them. * * @param Yoast_Notification[] $notifications */ $filtered_merged_notifications = apply_filters( 'yoast_notifications_before_storage', $merged_notifications ); // The notifications were filtered and therefore need to be stored. if ( $merged_notifications !== $filtered_merged_notifications ) { $merged_notifications = $filtered_merged_notifications; $this->notifications_need_storage = true; } $notifications = $this->split_on_user_id( $merged_notifications ); // No notifications to store, clear storage if it was previously present. if ( empty( $notifications ) ) { $this->remove_storage(); return; } // Only store notifications if changes are made. if ( $this->notifications_need_storage ) { array_walk( $notifications, [ $this, 'store_notifications_for_user' ] ); } } /** * Stores the notifications to its respective user's storage. * * @param array|Yoast_Notification[] $notifications The notifications to store. * @param int $user_id The ID of the user for which to store the notifications. * * @return void */ private function store_notifications_for_user( $notifications, $user_id ) { $notifications_as_arrays = array_map( [ $this, 'notification_to_array' ], $notifications ); update_user_option( $user_id, self::STORAGE_KEY, $notifications_as_arrays ); } /** * Provide a way to verify present notifications. * * @return array|Yoast_Notification[] Registered notifications. */ public function get_notifications() { if ( ! $this->notifications ) { return []; } return array_merge( ...$this->notifications ); } /** * Returns the notifications for the given user. * * @param int $user_id The id of the user to check. * * @return Yoast_Notification[] The notifications for the user with the given ID. */ public function get_notifications_for_user( $user_id ) { if ( array_key_exists( $user_id, $this->notifications ) ) { return $this->notifications[ $user_id ]; } return []; } /** * Get newly added notifications. * * @return array */ public function get_new_notifications() { return array_map( [ $this, 'get_notification_by_id' ], $this->new ); } /** * Get information from the User input. * * Note that this function does not handle nonce verification. * * @param string $key Key to retrieve. * * @return string non-sanitized value of key if set, an empty string otherwise. */ private static function get_user_input( $key ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized,WordPress.Security.NonceVerification.Missing -- Reason: We are not processing form information and only using this variable in a comparison. $request_method = isset( $_SERVER['REQUEST_METHOD'] ) && is_string( $_SERVER['REQUEST_METHOD'] ) ? strtoupper( wp_unslash( $_SERVER['REQUEST_METHOD'] ) ) : ''; // phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: This function does not sanitize variables. // phpcs:disable WordPress.Security.NonceVerification.Recommended,WordPress.Security.NonceVerification.Missing -- Reason: This function does not verify a nonce. if ( $request_method === 'POST' ) { if ( isset( $_POST[ $key ] ) && is_string( $_POST[ $key ] ) ) { return wp_unslash( $_POST[ $key ] ); } } elseif ( isset( $_GET[ $key ] ) && is_string( $_GET[ $key ] ) ) { return wp_unslash( $_GET[ $key ] ); } // phpcs:enable WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Missing,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized return ''; } /** * Retrieve the notifications from storage and fill the relevant property. * * @param int $user_id The ID of the user to retrieve notifications for. * * @return void */ private function retrieve_notifications_from_storage( $user_id ) { if ( $this->notifications_retrieved ) { return; } $this->notifications_retrieved = true; $stored_notifications = get_user_option( self::STORAGE_KEY, $user_id ); // Check if notifications are stored. if ( empty( $stored_notifications ) ) { return; } if ( is_array( $stored_notifications ) ) { $notifications = array_map( [ $this, 'array_to_notification' ], $stored_notifications ); // Apply array_values to ensure we get a 0-indexed array. $notifications = array_values( array_filter( $notifications, [ $this, 'filter_notification_current_user' ] ) ); $this->notifications[ $user_id ] = $notifications; } } /** * Sort on type then priority. * * @param Yoast_Notification $a Compare with B. * @param Yoast_Notification $b Compare with A. * * @return int 1, 0 or -1 for sorting offset. */ private function sort_notifications( Yoast_Notification $a, Yoast_Notification $b ) { $a_type = $a->get_type(); $b_type = $b->get_type(); if ( $a_type === $b_type ) { return WPSEO_Utils::calc( $b->get_priority(), 'compare', $a->get_priority() ); } if ( $a_type === 'error' ) { return -1; } if ( $b_type === 'error' ) { return 1; } return 0; } /** * Clear local stored notifications. * * @return void */ private function clear_notifications() { $this->notifications = []; $this->notifications_retrieved = false; } /** * Filter out non-persistent notifications. * * @since 3.2 * * @param Yoast_Notification $notification Notification to test for persistent. * * @return bool */ private function filter_persistent_notifications( Yoast_Notification $notification ) { return $notification->is_persistent(); } /** * Filter out dismissed notifications. * * @param Yoast_Notification $notification Notification to check. * * @return bool */ private function filter_dismissed_notifications( Yoast_Notification $notification ) { return ! self::maybe_dismiss_notification( $notification ); } /** * Convert Notification to array representation. * * @since 3.2 * * @param Yoast_Notification $notification Notification to convert. * * @return array */ private function notification_to_array( Yoast_Notification $notification ) { $notification_data = $notification->to_array(); if ( isset( $notification_data['nonce'] ) ) { unset( $notification_data['nonce'] ); } return $notification_data; } /** * Convert stored array to Notification. * * @param array $notification_data Array to convert to Notification. * * @return Yoast_Notification */ private function array_to_notification( $notification_data ) { if ( isset( $notification_data['options']['nonce'] ) ) { unset( $notification_data['options']['nonce'] ); } if ( isset( $notification_data['message'] ) && is_subclass_of( $notification_data['message'], Abstract_Presenter::class, false ) ) { $notification_data['message'] = $notification_data['message']->present(); } if ( isset( $notification_data['options']['user'] ) ) { $notification_data['options']['user_id'] = $notification_data['options']['user']->ID; unset( $notification_data['options']['user'] ); $this->notifications_need_storage = true; } return new Yoast_Notification( $notification_data['message'], $notification_data['options'] ); } /** * Filter notifications that should not be displayed for the current user. * * @param Yoast_Notification $notification Notification to test. * * @return bool */ private function filter_notification_current_user( Yoast_Notification $notification ) { return $notification->display_for_current_user(); } /** * Checks if given notification is persistent. * * @param Yoast_Notification $notification The notification to check. * * @return bool True when notification is not persistent. */ private function is_notification_persistent( Yoast_Notification $notification ) { return ! $notification->is_persistent(); } /** * Queues a notification transaction for later execution if notifications are not yet set up. * * @param callable $callback Callback that performs the transaction. * @param array $args Arguments to pass to the callback. * * @return bool True if transaction was queued, false if it can be performed immediately. */ private function queue_transaction( $callback, $args ) { if ( $this->notifications_retrieved ) { return false; } $this->add_transaction_to_queue( $callback, $args ); return true; } /** * Adds a notification transaction to the queue for later execution. * * @param callable $callback Callback that performs the transaction. * @param array $args Arguments to pass to the callback. * * @return void */ private function add_transaction_to_queue( $callback, $args ) { $this->queued_transactions[] = [ $callback, $args ]; } /** * Removes all notifications from storage. * * @return bool True when notifications got removed. */ protected function remove_storage() { if ( ! $this->has_stored_notifications() ) { return false; } delete_user_option( get_current_user_id(), self::STORAGE_KEY ); return true; } /** * Checks if there are stored notifications. * * @return bool True when there are stored notifications. */ protected function has_stored_notifications() { $stored_notifications = $this->get_stored_notifications(); return ! empty( $stored_notifications ); } /** * Retrieves the stored notifications. * * @codeCoverageIgnore * * @return array|false Array with notifications or false when not set. */ protected function get_stored_notifications() { return get_user_option( self::STORAGE_KEY, get_current_user_id() ); } } admin/class-admin-utils.php000064400000004224147206602470011710 0ustar00%s', $install_url, $plugin['title'] ); } /** * Gets a visually hidden accessible message for links that open in a new browser tab. * * @return string The visually hidden accessible message. */ public static function get_new_tab_message() { return sprintf( '%s', /* translators: Hidden accessibility text. */ esc_html__( '(Opens in a new browser tab)', 'wordpress-seo' ) ); } } admin/class-yoast-network-settings-api.php000064400000010264147206602470014716 0ustar00 $option_group, 'sanitize_callback' => null, ]; $args = wp_parse_args( $args, $defaults ); if ( ! isset( $this->whitelist_options[ $option_group ] ) ) { $this->whitelist_options[ $option_group ] = []; } $this->whitelist_options[ $option_group ][] = $option_name; if ( ! empty( $args['sanitize_callback'] ) ) { add_filter( "sanitize_option_{$option_name}", [ $this, 'filter_sanitize_option' ], 10, 2 ); } if ( array_key_exists( 'default', $args ) ) { add_filter( "default_site_option_{$option_name}", [ $this, 'filter_default_option' ], 10, 2 ); } $this->registered_settings[ $option_name ] = $args; } /** * Gets the registered settings and their data. * * @return array Array of $option_name => $data pairs. */ public function get_registered_settings() { return $this->registered_settings; } /** * Gets the whitelisted options for a given option group. * * @param string $option_group Option group. * * @return array List of option names, or empty array if unknown option group. */ public function get_whitelist_options( $option_group ) { if ( ! isset( $this->whitelist_options[ $option_group ] ) ) { return []; } return $this->whitelist_options[ $option_group ]; } /** * Filters sanitization for a network option value. * * This method is added as a filter to `sanitize_option_{$option}` for network options that are * registered with a sanitize callback. * * @param string $value The sanitized option value. * @param string $option The option name. * * @return string The filtered sanitized option value. */ public function filter_sanitize_option( $value, $option ) { if ( empty( $this->registered_settings[ $option ] ) ) { return $value; } return call_user_func( $this->registered_settings[ $option ]['sanitize_callback'], $value ); } /** * Filters the default value for a network option. * * This function is added as a filter to `default_site_option_{$option}` for network options that * are registered with a default. * * @param mixed $default_value Existing default value to return. * @param string $option The option name. * * @return mixed The filtered default value. */ public function filter_default_option( $default_value, $option ) { // If a default value was manually passed to the function, allow it to override. if ( $default_value !== false ) { return $default_value; } if ( empty( $this->registered_settings[ $option ] ) ) { return $default_value; } return $this->registered_settings[ $option ]['default']; } /** * Checks whether the requirements to use this class are met. * * @return bool True if requirements are met, false otherwise. */ public function meets_requirements() { return is_multisite(); } /** * Gets the singleton instance of this class. * * @return Yoast_Network_Settings_API The singleton instance. */ public static function get() { if ( self::$instance === null ) { self::$instance = new self(); } return self::$instance; } } admin/class-my-yoast-proxy.php000064400000014217147206602470012426 0ustar00is_proxy_page() ) { return; } // Register the page for the proxy. add_action( 'admin_menu', [ $this, 'add_proxy_page' ] ); add_action( 'admin_init', [ $this, 'handle_proxy_page' ] ); } /** * Registers the proxy page. It does not actually add a link to the dashboard. * * @codeCoverageIgnore * * @return void */ public function add_proxy_page() { add_dashboard_page( '', '', 'read', self::PAGE_IDENTIFIER, '' ); } /** * Renders the requested proxy page and exits to prevent the WordPress UI from loading. * * @codeCoverageIgnore * * @return void */ public function handle_proxy_page() { $this->render_proxy_page(); // Prevent the WordPress UI from loading. exit; } /** * Renders the requested proxy page. * * This is separated from the exits to be able to test it. * * @return void */ public function render_proxy_page() { $proxy_options = $this->determine_proxy_options(); if ( $proxy_options === [] ) { // Do not accept any other file than implemented. $this->set_header( 'HTTP/1.0 501 Requested file not implemented' ); return; } // Set the headers before serving the remote file. $this->set_header( 'Content-Type: ' . $proxy_options['content_type'] ); $this->set_header( 'Cache-Control: max-age=' . self::CACHE_CONTROL_MAX_AGE ); try { echo $this->get_remote_url_body( $proxy_options['url'] ); } catch ( Exception $e ) { /* * Reset the file headers because the loading failed. * * Note: Due to supporting PHP 5.2 `header_remove` can not be used here. * Overwrite the headers instead. */ $this->set_header( 'Content-Type: text/plain' ); $this->set_header( 'Cache-Control: max-age=0' ); $this->set_header( 'HTTP/1.0 500 ' . $e->getMessage() ); } } /** * Tries to load the given url via `wp_remote_get`. * * @codeCoverageIgnore * * @param string $url The url to load. * * @return string The body of the response. * * @throws Exception When `wp_remote_get` returned an error. * @throws Exception When the response code is not 200. */ protected function get_remote_url_body( $url ) { $response = wp_remote_get( $url ); if ( $response instanceof WP_Error ) { throw new Exception( 'Unable to retrieve file from MyYoast' ); } if ( wp_remote_retrieve_response_code( $response ) !== 200 ) { throw new Exception( 'Received unexpected response from MyYoast' ); } return wp_remote_retrieve_body( $response ); } /** * Determines the proxy options based on the file and plugin version arguments. * * When the file is known it returns an array like this: * * $array = array( * 'content_type' => 'the content type' * 'url' => 'the url, possibly with the plugin version' * ) * * * @return array Empty for an unknown file. See format above for known files. */ protected function determine_proxy_options() { if ( $this->get_proxy_file() === 'research-webworker' ) { return [ 'content_type' => 'text/javascript; charset=UTF-8', 'url' => 'https://my.yoast.com/api/downloads/file/analysis-worker?plugin_version=' . $this->get_plugin_version(), ]; } return []; } /** * Checks if the current page is the MyYoast proxy page. * * @codeCoverageIgnore * * @return bool True when the page request parameter equals the proxy page. */ protected function is_proxy_page() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $page = isset( $_GET['page'] ) && is_string( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; return $page === self::PAGE_IDENTIFIER; } /** * Returns the proxy file from the HTTP request parameters. * * @codeCoverageIgnore * * @return string The sanitized file request parameter or an empty string if it does not exist. */ protected function get_proxy_file() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['file'] ) && is_string( $_GET['file'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. return sanitize_text_field( wp_unslash( $_GET['file'] ) ); } return ''; } /** * Returns the plugin version from the HTTP request parameters. * * @codeCoverageIgnore * * @return string The sanitized plugin_version request parameter or an empty string if it does not exist. */ protected function get_plugin_version() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['plugin_version'] ) && is_string( $_GET['plugin_version'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $plugin_version = sanitize_text_field( wp_unslash( $_GET['plugin_version'] ) ); // Replace slashes to secure against requiring a file from another path. return str_replace( [ '/', '\\' ], '_', $plugin_version ); } return ''; } /** * Sets the HTTP header. * * This is a tiny helper function to enable better testing. * * @codeCoverageIgnore * * @param string $header The header to set. * * @return void */ protected function set_header( $header ) { header( $header ); } } admin/class-database-proxy.php000064400000017004147206602470012405 0ustar00table_name = $table_name; $this->suppress_errors = (bool) $suppress_errors; $this->is_multisite_table = (bool) $is_multisite_table; $this->database = $database; // If the table prefix was provided, strip it as it's handled automatically. $table_prefix = $this->get_table_prefix(); if ( ! empty( $table_prefix ) && strpos( $this->table_name, $table_prefix ) === 0 ) { $this->table_prefix = substr( $this->table_name, strlen( $table_prefix ) ); } if ( ! $this->is_table_registered() ) { $this->register_table(); } } /** * Inserts data into the database. * * @param array $data Data to insert. * @param array|string|null $format Formats for the data. * * @return false|int Total amount of inserted rows or false on error. */ public function insert( array $data, $format = null ) { $this->pre_execution(); $result = $this->database->insert( $this->get_table_name(), $data, $format ); $this->post_execution(); return $result; } /** * Updates data in the database. * * @param array $data Data to update on the table. * @param array $where Where condition as key => value array. * @param array|string|null $format Optional. Data prepare format. * @param array|string|null $where_format Optional. Where prepare format. * * @return false|int False when the update request is invalid, int on number of rows changed. */ public function update( array $data, array $where, $format = null, $where_format = null ) { $this->pre_execution(); $result = $this->database->update( $this->get_table_name(), $data, $where, $format, $where_format ); $this->post_execution(); return $result; } /** * Upserts data in the database. * * Performs an insert into and if key is duplicate it will update the existing record. * * @param array $data Data to update on the table. * @param array|null $where Unused. Where condition as key => value array. * @param array|string|null $format Optional. Data prepare format. * @param array|string|null $where_format Optional. Where prepare format. * * @return false|int False when the upsert request is invalid, int on number of rows changed. */ public function upsert( array $data, ?array $where = null, $format = null, $where_format = null ) { if ( $where_format !== null ) { _deprecated_argument( __METHOD__, '7.7.0', 'The where_format argument is deprecated' ); } $this->pre_execution(); $update = []; $keys = []; $columns = array_keys( $data ); foreach ( $columns as $column ) { $keys[] = '`' . $column . '`'; $update[] = sprintf( '`%1$s` = VALUES(`%1$s`)', $column ); } $query = sprintf( 'INSERT INTO `%1$s` (%2$s) VALUES ( %3$s ) ON DUPLICATE KEY UPDATE %4$s', $this->get_table_name(), implode( ', ', $keys ), implode( ', ', array_fill( 0, count( $data ), '%s' ) ), implode( ', ', $update ) ); $result = $this->database->query( $this->database->prepare( $query, array_values( $data ) ) ); $this->post_execution(); return $result; } /** * Deletes a record from the database. * * @param array $where Where clauses for the query. * @param array|string|null $format Formats for the data. * * @return false|int */ public function delete( array $where, $format = null ) { $this->pre_execution(); $result = $this->database->delete( $this->get_table_name(), $where, $format ); $this->post_execution(); return $result; } /** * Executes the given query and returns the results. * * @param string $query The query to execute. * * @return array|object|null The resultset */ public function get_results( $query ) { $this->pre_execution(); $results = $this->database->get_results( $query ); $this->post_execution(); return $results; } /** * Creates a table to the database. * * @param array $columns The columns to create. * @param array $indexes The indexes to use. * * @return bool True when creation is successful. */ public function create_table( array $columns, array $indexes = [] ) { $create_table = sprintf( 'CREATE TABLE IF NOT EXISTS %1$s ( %2$s ) %3$s', $this->get_table_name(), implode( ',', array_merge( $columns, $indexes ) ), $this->database->get_charset_collate() ); $this->pre_execution(); $is_created = (bool) $this->database->query( $create_table ); $this->post_execution(); return $is_created; } /** * Checks if there is an error. * * @return bool Returns true when there is an error. */ public function has_error() { return ( $this->database->last_error !== '' ); } /** * Executed before a query will be ran. * * @return void */ protected function pre_execution() { if ( $this->suppress_errors ) { $this->last_suppressed_state = $this->database->suppress_errors(); } } /** * Executed after a query has been ran. * * @return void */ protected function post_execution() { if ( $this->suppress_errors ) { $this->database->suppress_errors( $this->last_suppressed_state ); } } /** * Returns the full table name. * * @return string Full table name including prefix. */ public function get_table_name() { return $this->get_table_prefix() . $this->table_name; } /** * Returns the prefix to use for the table. * * @return string The table prefix depending on the database context. */ protected function get_table_prefix() { if ( $this->is_multisite_table ) { return $this->database->base_prefix; } return $this->database->get_blog_prefix(); } /** * Registers the table with WordPress. * * @return void */ protected function register_table() { $table_name = $this->table_name; $full_table_name = $this->get_table_name(); $this->database->$table_name = $full_table_name; if ( $this->is_multisite_table ) { $this->database->ms_global_tables[] = $table_name; return; } $this->database->tables[] = $table_name; } /** * Checks if the table has been registered with WordPress. * * @return bool True if the table is registered, false otherwise. */ protected function is_table_registered() { if ( $this->is_multisite_table ) { return in_array( $this->table_name, $this->database->ms_global_tables, true ); } return in_array( $this->table_name, $this->database->tables, true ); } } admin/class-plugin-conflict.php000064400000010055147206602470012556 0ustar00> */ protected $plugins = [ // The plugin which are writing OG metadata. 'open_graph' => Conflicting_Plugins::OPEN_GRAPH_PLUGINS, 'xml_sitemaps' => Conflicting_Plugins::XML_SITEMAPS_PLUGINS, 'cloaking' => Conflicting_Plugins::CLOAKING_PLUGINS, 'seo' => Conflicting_Plugins::SEO_PLUGINS, ]; /** * Overrides instance to set with this class as class. * * @param string $class_name Optional class name. * * @return Yoast_Plugin_Conflict */ public static function get_instance( $class_name = self::class ) { return parent::get_instance( $class_name ); } /** * After activating any plugin, this method will be executed by a hook. * * If the activated plugin is conflicting with ours a notice will be shown. * * @param string|bool $plugin Optional plugin basename to check. * * @return void */ public static function hook_check_for_plugin_conflicts( $plugin = false ) { // The instance of the plugin. $instance = self::get_instance(); // Only add the plugin as an active plugin if $plugin isn't false. if ( $plugin && is_string( $plugin ) ) { $instance->add_active_plugin( $instance->find_plugin_category( $plugin ), $plugin ); } $plugin_sections = []; // Only check for open graph problems when they are enabled. if ( WPSEO_Options::get( 'opengraph' ) ) { /* translators: %1$s expands to Yoast SEO, %2$s: 'Facebook' plugin name of possibly conflicting plugin with regard to creating OpenGraph output. */ $plugin_sections['open_graph'] = __( 'Both %1$s and %2$s create Open Graph output, which might make Facebook, X, LinkedIn and other social networks use the wrong texts and images when your pages are being shared.', 'wordpress-seo' ) . '

    ' . '' /* translators: %1$s expands to Yoast SEO. */ . sprintf( __( 'Configure %1$s\'s Open Graph settings', 'wordpress-seo' ), 'Yoast SEO' ) . ''; } // Only check for XML conflicts if sitemaps are enabled. if ( WPSEO_Options::get( 'enable_xml_sitemap' ) ) { /* translators: %1$s expands to Yoast SEO, %2$s: 'Google XML Sitemaps' plugin name of possibly conflicting plugin with regard to the creation of sitemaps. */ $plugin_sections['xml_sitemaps'] = __( 'Both %1$s and %2$s can create XML sitemaps. Having two XML sitemaps is not beneficial for search engines and might slow down your site.', 'wordpress-seo' ) . '

    ' . '' /* translators: %1$s expands to Yoast SEO. */ . sprintf( __( 'Toggle %1$s\'s XML Sitemap', 'wordpress-seo' ), 'Yoast SEO' ) . ''; } /* translators: %2$s expands to 'RS Head Cleaner' plugin name of possibly conflicting plugin with regard to differentiating output between search engines and normal users. */ $plugin_sections['cloaking'] = __( 'The plugin %2$s changes your site\'s output and in doing that differentiates between search engines and normal users, a process that\'s called cloaking. We highly recommend that you disable it.', 'wordpress-seo' ); /* translators: %1$s expands to Yoast SEO, %2$s: 'SEO' plugin name of possibly conflicting plugin with regard to the creation of duplicate SEO meta. */ $plugin_sections['seo'] = __( 'Both %1$s and %2$s manage the SEO of your site. Running two SEO plugins at the same time is detrimental.', 'wordpress-seo' ); $instance->check_plugin_conflicts( $plugin_sections ); } } admin/class-yoast-notifications.php000064400000017204147206602470013472 0ustar00add_hooks(); } /** * Add hooks * * @return void */ private function add_hooks() { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. if ( isset( $_GET['page'] ) && is_string( $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reason: We are not processing form information. $page = sanitize_text_field( wp_unslash( $_GET['page'] ) ); if ( $page === self::ADMIN_PAGE ) { add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_assets' ] ); } } // Needed for adminbar and Notifications page. add_action( 'admin_init', [ self::class, 'collect_notifications' ], 99 ); // Add AJAX hooks. add_action( 'wp_ajax_yoast_dismiss_notification', [ $this, 'ajax_dismiss_notification' ] ); add_action( 'wp_ajax_yoast_restore_notification', [ $this, 'ajax_restore_notification' ] ); } /** * Enqueue assets. * * @return void */ public function enqueue_assets() { $asset_manager = new WPSEO_Admin_Asset_Manager(); $asset_manager->enqueue_style( 'notifications' ); } /** * Handle ajax request to dismiss a notification. * * @return void */ public function ajax_dismiss_notification() { $notification = $this->get_notification_from_ajax_request(); if ( $notification ) { $notification_center = Yoast_Notification_Center::get(); $notification_center->maybe_dismiss_notification( $notification ); $this->output_ajax_response( $notification->get_type() ); } wp_die(); } /** * Handle ajax request to restore a notification. * * @return void */ public function ajax_restore_notification() { $notification = $this->get_notification_from_ajax_request(); if ( $notification ) { $notification_center = Yoast_Notification_Center::get(); $notification_center->restore_notification( $notification ); $this->output_ajax_response( $notification->get_type() ); } wp_die(); } /** * Create AJAX response data. * * @param string $type Notification type. * * @return void */ private function output_ajax_response( $type ) { $html = $this->get_view_html( $type ); // phpcs:disable WordPress.Security.EscapeOutput -- Reason: WPSEO_Utils::format_json_encode is safe. echo WPSEO_Utils::format_json_encode( [ 'html' => $html, 'total' => self::get_active_notification_count(), ] ); // phpcs:enable -- Reason: WPSEO_Utils::format_json_encode is safe. } /** * Get the HTML to return in the AJAX request. * * @param string $type Notification type. * * @return bool|string */ private function get_view_html( $type ) { switch ( $type ) { case 'error': $view = 'errors'; break; case 'warning': default: $view = 'warnings'; break; } // Re-collect notifications. self::collect_notifications(); /** * Stops PHPStorm from nagging about this variable being unused. The variable is used in the view. * * @noinspection PhpUnusedLocalVariableInspection */ $notifications_data = self::get_template_variables(); ob_start(); include WPSEO_PATH . 'admin/views/partial-notifications-' . $view . '.php'; $html = ob_get_clean(); return $html; } /** * Extract the Yoast Notification from the AJAX request. * * This function does not handle nonce verification. * * @return Yoast_Notification|null A Yoast_Notification on success, null on failure. */ private function get_notification_from_ajax_request() { // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: This function does not handle nonce verification. if ( ! isset( $_POST['notification'] ) || ! is_string( $_POST['notification'] ) ) { return null; } // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Reason: This function does not handle nonce verification. $notification_id = sanitize_text_field( wp_unslash( $_POST['notification'] ) ); if ( empty( $notification_id ) ) { return null; } $notification_center = Yoast_Notification_Center::get(); return $notification_center->get_notification_by_id( $notification_id ); } /** * Collect the notifications and group them together. * * @return void */ public static function collect_notifications() { $notification_center = Yoast_Notification_Center::get(); $notifications = $notification_center->get_sorted_notifications(); self::$notification_count = count( $notifications ); self::$errors = array_filter( $notifications, [ self::class, 'filter_error_notifications' ] ); self::$dismissed_errors = array_filter( self::$errors, [ self::class, 'filter_dismissed_notifications' ] ); self::$active_errors = array_diff( self::$errors, self::$dismissed_errors ); self::$warnings = array_filter( $notifications, [ self::class, 'filter_warning_notifications' ] ); self::$dismissed_warnings = array_filter( self::$warnings, [ self::class, 'filter_dismissed_notifications' ] ); self::$active_warnings = array_diff( self::$warnings, self::$dismissed_warnings ); } /** * Get the variables needed in the views. * * @return array */ public static function get_template_variables() { return [ 'metrics' => [ 'total' => self::$notification_count, 'active' => self::get_active_notification_count(), 'errors' => count( self::$errors ), 'warnings' => count( self::$warnings ), ], 'errors' => [ 'dismissed' => self::$dismissed_errors, 'active' => self::$active_errors, ], 'warnings' => [ 'dismissed' => self::$dismissed_warnings, 'active' => self::$active_warnings, ], ]; } /** * Get the number of active notifications. * * @return int */ public static function get_active_notification_count() { return ( count( self::$active_errors ) + count( self::$active_warnings ) ); } /** * Filter out any non-errors. * * @param Yoast_Notification $notification Notification to test. * * @return bool */ private static function filter_error_notifications( Yoast_Notification $notification ) { return $notification->get_type() === 'error'; } /** * Filter out any non-warnings. * * @param Yoast_Notification $notification Notification to test. * * @return bool */ private static function filter_warning_notifications( Yoast_Notification $notification ) { return $notification->get_type() !== 'error'; } /** * Filter out any dismissed notifications. * * @param Yoast_Notification $notification Notification to test. * * @return bool */ private static function filter_dismissed_notifications( Yoast_Notification $notification ) { return Yoast_Notification_Center::is_notification_dismissed( $notification ); } } class_alias( Yoast_Notifications::class, 'Yoast_Alerts' ); blocks/dynamic-blocks/breadcrumbs/block.json000064400000001057147206602470015211 0ustar00{ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "version": "22.8", "name": "yoast-seo/breadcrumbs", "title": "Yoast Breadcrumbs", "description": "Adds the Yoast SEO breadcrumbs to your template or content.", "category": "yoast-internal-linking-blocks", "icon": "admin-links", "keywords": [ "SEO", "breadcrumbs", "internal linking", "site structure" ], "textdomain": "wordpress-seo", "attributes": { "className": { "type": "string" } }, "example": { "attributes": {} } } blocks/structured-data-blocks/faq/block.json000064400000001676147206602470015165 0ustar00{ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "version": "22.7", "name": "yoast/faq-block", "title": "Yoast FAQ", "description": "List your Frequently Asked Questions in an SEO-friendly way.", "category": "yoast-structured-data-blocks", "icon": "editor-ul", "keywords": [ "FAQ", "Frequently Asked Questions", "Schema", "SEO", "Structured Data" ], "textdomain": "wordpress-seo", "attributes": { "questions": { "type": "array" }, "additionalListCssClasses": { "type": "string" } }, "example": { "attributes": { "steps": [ { "id": "faq-question-1", "question": [ ], "answer": [ ] }, { "id": "faq-question-2", "question": [ ], "answer": [ ] } ] } }, "editorScript": "yoast-seo-faq-block", "editorStyle": "yoast-seo-structured-data-blocks" } blocks/structured-data-blocks/how-to/block.json000064400000003017147206602470015622 0ustar00{ "$schema": "https://schemas.wp.org/trunk/block.json", "apiVersion": 3, "version": "22.7", "name": "yoast/how-to-block", "title": "Yoast How-to", "description": "Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.", "category": "yoast-structured-data-blocks", "icon": "editor-ol", "keywords": [ "How-to", "How to", "Schema", "SEO", "Structured Data" ], "supports": { "multiple": false }, "textdomain": "wordpress-seo", "attributes": { "hasDuration": { "type": "boolean" }, "days": { "type": "string" }, "hours": { "type": "string" }, "minutes": { "type": "string" }, "description": { "type": "string", "source": "html", "selector": ".schema-how-to-description" }, "jsonDescription": { "type": "string" }, "steps": { "type": "array" }, "additionalListCssClasses": { "type": "string" }, "unorderedList": { "type": "boolean" }, "durationText": { "type": "string" }, "defaultDurationText": { "type": "string" } }, "example": { "attributes": { "steps": [ { "id": "how-to-step-example-1", "name": [ ], "text": [ ] }, { "id": "how-to-step-example-2", "name": [ ], "text": [ ] } ] } }, "editorScript": "yoast-seo-how-to-block", "editorStyle": "yoast-seo-structured-data-blocks" } js/dist/elementor.js000064400000732344147206602470010500 0ustar00(()=>{var e={6746:(e,t,s)=>{"use strict";var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=i(s(9196)),r=i(s(9156)),o=i(s(6743));function i(e){return e&&e.__esModule?e:{default:e}}var l=void 0;function c(e,t){var s,o,i,d,u,p,m,h,g=[],y={};for(p=0;p "+l);if("componentClose"===u.type)throw new Error("Missing opening component token: `"+u.value+"`");if("componentOpen"===u.type){s=t[u.value],i=p;break}g.push(t[u.value])}else g.push(u.value);return s&&(d=function(e,t){var s,a,n=t[e],r=0;for(a=e+1;a{"use strict";function t(e){return e.match(/^\{\{\//)?{type:"componentClose",value:e.replace(/\W/g,"")}:e.match(/\/\}\}$/)?{type:"componentSelfClosing",value:e.replace(/\W/g,"")}:e.match(/^\{\{/)?{type:"componentOpen",value:e.replace(/\W/g,"")}:{type:"string",value:e}}e.exports=function(e){return e.split(/(\{\{\/?\s*\w+\s*\/?\}\})/g).map(t)}},9156:(e,t,s)=>{"use strict";var a=s(9196),n="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,r=s(7942),o=s(9179),i=s(397),l=".",c=":",d="function"==typeof Symbol&&Symbol.iterator,u="@@iterator";function p(e,t){return e&&"object"==typeof e&&null!=e.key?(s=e.key,a={"=":"=0",":":"=2"},"$"+(""+s).replace(/[=:]/g,(function(e){return a[e]}))):t.toString(36);var s,a}function m(e,t,s,a){var r,i=typeof e;if("undefined"!==i&&"boolean"!==i||(e=null),null===e||"string"===i||"number"===i||"object"===i&&e.$$typeof===n)return s(a,e,""===t?l+p(e,0):t),1;var h=0,g=""===t?l:t+c;if(Array.isArray(e))for(var y=0;y{"use strict";function t(e){return function(){return e}}var s=function(){};s.thatReturns=t,s.thatReturnsFalse=t(!1),s.thatReturnsTrue=t(!0),s.thatReturnsNull=t(null),s.thatReturnsThis=function(){return this},s.thatReturnsArgument=function(e){return e},e.exports=s},9179:e=>{"use strict";e.exports=function(e,t,s,a,n,r,o,i){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[s,a,n,r,o,i],d=0;(l=new Error(t.replace(/%s/g,(function(){return c[d++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},397:(e,t,s)=>{"use strict";var a=s(7942);e.exports=a},4530:(e,t)=>{var s;!function(){"use strict";var a={}.hasOwnProperty;function n(){for(var e=[],t=0;t{"use strict";e.exports=window.React}},t={};function s(a){var n=t[a];if(void 0!==n)return n.exports;var r=t[a]={exports:{}};return e[a](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var a in t)s.o(t,a)&&!s.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};s.r(e),s.d(e,{authorFirstName:()=>fn,authorLastName:()=>wn,category:()=>kn,categoryTitle:()=>xn,currentDate:()=>bn,currentDay:()=>En,currentMonth:()=>vn,currentYear:()=>Sn,date:()=>Rn,excerpt:()=>Tn,focusKeyphrase:()=>Cn,id:()=>In,modified:()=>Ln,name:()=>Pn,page:()=>An,pageNumber:()=>On,pageTotal:()=>Fn,permalink:()=>Mn,postContent:()=>Dn,postDay:()=>Nn,postMonth:()=>qn,postTypeNamePlural:()=>Bn,postTypeNameSingular:()=>$n,postYear:()=>Un,primaryCategory:()=>Wn,searchPhrase:()=>Kn,separator:()=>Yn,siteDescription:()=>zn,siteName:()=>Hn,tag:()=>jn,term404:()=>Vn,termDescription:()=>Gn,termHierarchy:()=>Zn,termTitle:()=>Xn,title:()=>Qn,userDescription:()=>Jn});var t={};s.r(t),s.d(t,{DISMISS_ALERT:()=>Wc,SNIPPET_EDITOR_FIND_CUSTOM_FIELDS:()=>Kc,wistiaEmbedPermission:()=>Yc});var a={};s.r(a),s.d(a,{loadSnippetEditorData:()=>Gc,updateData:()=>Vc});var n={};s.r(n),s.d(n,{getSnippetEditorData:()=>nd,getSnippetEditorSlug:()=>ad});var r={};s.r(r),s.d(r,{getAnalysisData:()=>pd});var o={};s.r(o),s.d(o,{getWincherPermalink:()=>Ud});const i=window.wp.data,l=window.wp.hooks;var c=s(9196),d=s.n(c);const u=window.wp.components,p=window.wp.element,m=window.wp.i18n,h=window.yoast.uiLibrary,g=window.yoast.propTypes;var y=s.n(g);y().string.isRequired;const f=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),w=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{fillRule:"evenodd",d:"M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),b=({learnMoreLink:e,thumbnail:t,wistiaEmbedPermission:s,upsellLink:a,isProductCopy:n,title:r,upsellLabel:o,newToText:i,bundleNote:l})=>{const{onClose:d,initialFocus:u}=(0,h.useModalContext)(),g={a:(0,c.createElement)(F,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,c.createElement)(w,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"})};return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,c.createElement)("div",{className:"yst-relative yst-w-full"},(0,c.createElement)(ie,{videoId:"vmrahpfjxp",thumbnail:t,wistiaEmbedPermission:s}),(0,c.createElement)(h.Badge,{className:"yst-absolute yst-top-0 yst-right-2 yst-mt-2 yst-ml-2",variant:"info"},"Beta")),(0,c.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,c.createElement)("span",{className:"yst-logo-icon"}),i))),(0,c.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,c.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},r),(0,c.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},n?(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,m.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for product titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),g):(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,m.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),g))),(0,c.createElement)("div",{className:"yst-w-full yst-flex yst-mt-10"},(0,c.createElement)(h.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:u},(0,c.createElement)(f,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),o,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,m.__)("(Opens in a new browser tab)","wordpress-seo")))),l,(0,c.createElement)(h.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:d},(0,m.__)("Close","wordpress-seo"))))};b.propTypes={learnMoreLink:y().string.isRequired,upsellLink:y().string.isRequired,thumbnail:y().shape({src:y().string.isRequired,width:y().string,height:y().string}).isRequired,wistiaEmbedPermission:y().shape({value:y().bool.isRequired,status:y().string.isRequired,set:y().func.isRequired}).isRequired,title:y().string,upsellLabel:y().string,newToText:y().string,isProductCopy:y().bool,bundleNote:y().oneOfType([y().string,y().element])},b.defaultProps={title:(0,m.__)("Use AI to write your titles & meta descriptions!","wordpress-seo"),upsellLabel:(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,m.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),newToText:"Yoast SEO Premium",isProductCopy:!1,bundleNote:""};var E;function v(){return v=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",v({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1000 1000"},e),E||(E=c.createElement("path",{fill:"#fff",d:"M500 0C223.9 0 0 223.9 0 500s223.9 500 500 500 500-223.9 500-500S776.1 0 500 0Zm87.2 412.4c0-21.9 4.3-40.2 13.1-54.4s24-27.1 45.9-38.2l10.1-4.9c17.8-9 22.4-16.7 22.4-26 0-11.1-9.5-19.1-25-19.1-18.3 0-32.2 9.5-41.8 28.9l-24.7-24.8c5.4-11.6 14.1-20.9 25.8-28.1a70.8 70.8 0 0 1 38.9-11.1c17.8 0 33.3 4.6 45.9 14.2s19.4 22.7 19.4 39.4c0 26.6-15 42.9-43.1 57.3l-15.7 8c-16.8 8.5-25.1 16-27.4 29.4h85.4v35.4H587.2Zm-82.1 373.3c-157.8 0-285.7-127.9-285.7-285.7s127.9-285.7 285.7-285.7a286.4 286.4 0 0 1 55.9 5.5l-55.9 116.9c-90 0-163.3 73.3-163.3 163.3s73.3 163.3 163.3 163.3a162.8 162.8 0 0 0 106.4-39.6l61.8 107.2a283.9 283.9 0 0 1-168.2 54.8ZM705 704.1l-70.7-122.5H492.9l70.7-122.4H705l70.7 122.4Z"}))),k=window.lodash,x=window.ReactDOM;var S,R,T;(R=S||(S={})).Pop="POP",R.Push="PUSH",R.Replace="REPLACE",function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(T||(T={})),new Set(["lazy","caseSensitive","path","id","index","children"]),Error;const C=["post","put","patch","delete"],I=(new Set(C),["get",...C]);new Set(I),new Set([301,302,303,307,308]),new Set([307,308]),Symbol("deferred"),c.Component,c.startTransition,new Promise((()=>{})),c.Component,new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);try{window.__reactRouterVersion="6"}catch(e){}var L,P,A,O;new Map,c.startTransition,x.flushSync,c.useId,"undefined"!=typeof window&&void 0!==window.document&&window.document.createElement,(O=L||(L={})).UseScrollRestoration="useScrollRestoration",O.UseSubmit="useSubmit",O.UseSubmitFetcher="useSubmitFetcher",O.UseFetcher="useFetcher",O.useViewTransitionState="useViewTransitionState",(A=P||(P={})).UseFetcher="useFetcher",A.UseFetchers="useFetchers",A.UseScrollRestoration="useScrollRestoration",y().string.isRequired,y().string;const F=({href:e,children:t,...s})=>(0,c.createElement)(h.Link,{target:"_blank",rel:"noopener noreferrer",...s,href:e},t,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,m.__)("(Opens in a new browser tab)","wordpress-seo")));F.propTypes={href:y().string.isRequired,children:y().node},F.defaultProps={children:null};const M=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var D,N,q;function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",U({xmlns:"http://www.w3.org/2000/svg",id:"star-rating-half_svg__Layer_1","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),D||(D=c.createElement("defs",null,c.createElement("style",null,".star-rating-half_svg__cls-1{fill:#fbbf24}"))),N||(N=c.createElement("path",{d:"M250 392.04 98.15 471.87l29-169.09L4.3 183.03l169.77-24.67L250 4.52l75.93 153.84 169.77 24.67-122.85 119.75 29 169.09L250 392.04z",className:"star-rating-half_svg__cls-1"})),q||(q=c.createElement("path",{d:"m250 9.04 73.67 149.27.93 1.88 2.08.3 164.72 23.94-119.19 116.19-1.51 1.47.36 2.07 28.14 164.06-147.34-77.46-1.86-1-1.86 1-147.34 77.46 28.14-164.06.36-2.07-1.51-1.47L8.6 184.43l164.72-23.9 2.08-.3.93-1.88L250 9.04m0-9-77.25 156.49L0 181.64l125 121.89-29.51 172L250 394.3l154.51 81.23-29.51-172 125-121.89-172.75-25.11L250 0Z",className:"star-rating-half_svg__cls-1"})),c.createElement("path",{d:"m500 181.64-172.75-25.11L250 0v394.3l154.51 81.23L375 303.48l125-121.84z",style:{fill:"#f3f4f6"}}));function $(){return $=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",$({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),c.createElement("path",{d:"m250 0 77.25 156.53L500 181.64 375 303.48l29.51 172.05L250 394.3 95.49 475.53 125 303.48 0 181.64l172.75-25.11L250 0z",style:{fill:"#fbbf24"}}));var K,Y,z,H,j,V,G,Z,X;function Q(){return Q=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",Q({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 500 500"},e),K||(K=c.createElement("path",{fill:"#a4286a",d:"M80 0h340a80 80 0 0 1 80 80v420H80a80 80 0 0 1-80-80V80A80 80 0 0 1 80 0z"})),Y||(Y=c.createElement("path",{fill:"#6c2548",d:"M437.61 2 155.89 500H500V80a80 80 0 0 0-62.39-78z"})),z||(z=c.createElement("path",{fill:"#fff",d:"M74.4 337.3v34.9c21.6-.9 38.5-8 52.8-22.5s27.4-38 39.9-72.9l92.6-248h-44.8L140.3 236l-37-116.2h-41l54.4 139.8a57.54 57.54 0 0 1 0 41.8c-5.5 14.2-15.4 30.9-42.3 35.9z"})),H||(H=c.createElement("circle",{cx:368.33,cy:124.68,r:97.34,fill:"#9fda4f",transform:"rotate(-45 368.335 124.68)"})),j||(j=c.createElement("path",{fill:"#77b227",d:"m416.2 39.93-95.74 169.51A97.34 97.34 0 1 0 416.2 39.93z"})),V||(V=c.createElement("path",{fill:"#fec228",d:"m294.78 254.75-.15-.08-.13-.07a63.6 63.6 0 0 0-62.56 110.76h.13a63.6 63.6 0 0 0 62.71-110.67z"})),G||(G=c.createElement("path",{fill:"#f49a00",d:"m294.5 254.59-62.56 110.76a63.6 63.6 0 1 0 62.56-110.76z"})),Z||(Z=c.createElement("path",{fill:"#ff4e47",d:"M222.31 450.07A38.16 38.16 0 0 0 203 416.83a38.18 38.18 0 1 0 19.41 33.27z"})),X||(X=c.createElement("path",{fill:"#ed261f",d:"m202.9 416.8-37.54 66.48a38.17 38.17 0 0 0 37.54-66.48z"}))),ee=({link:e,linkProps:t,isPromotionActive:s})=>{let a=(0,p.useMemo)((()=>(0,m.__)("Use AI to generate titles and meta descriptions, automatically redirect deleted pages, get 24/7 support, and much, much more!","wordpress-seo")),[]),n=(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,m.__)("%1$sGet%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,c.createElement)("span",{className:"yst-whitespace-nowrap"})});const r=s("black-friday-2024-promotion");return r&&(a=(0,p.useMemo)((()=>(0,m.__)("If you were thinking about upgrading, now's the time! 30% OFF ends 3rd Dec 11am (CET)","wordpress-seo")),[]),n=(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,m.__)("%1$sBuy%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,c.createElement)("span",{className:"yst-whitespace-nowrap"})})),(0,c.createElement)("div",{className:"yst-p-6 yst-rounded-lg yst-text-white yst-bg-primary-500 yst-shadow"},(0,c.createElement)("figure",{className:"yst-logo-square yst-w-16 yst-h-16 yst-mx-auto yst-overflow-hidden yst-border yst-border-white yst-rounded-xl yst-rounded-br-none yst-relative yst-z-10 yst-mt-[-2.6rem]"},(0,c.createElement)(J,null)),r&&(0,c.createElement)("div",{className:"sidebar__sale_banner_container"},(0,c.createElement)("div",{className:"sidebar__sale_banner"},(0,c.createElement)("span",{className:"banner_text"},(0,m.__)("30% OFF - BLACK FRIDAY","wordpress-seo")))),(0,c.createElement)(h.Title,{as:"h2",className:"yst-mt-6 yst-text-base yst-font-extrabold yst-text-white"},n),(0,c.createElement)("p",{className:"yst-mt-2"},a),(0,c.createElement)(h.Button,{as:"a",variant:"upsell",href:e,target:"_blank",rel:"noopener",className:"yst-flex yst-justify-center yst-gap-2 yst-mt-4 focus:yst-ring-offset-primary-500",...t},(0,c.createElement)("span",null,r?(0,m.__)("Buy now","wordpress-seo"):n),(0,c.createElement)(M,{className:"yst-w-4 yst-h-4 yst-icon-rtl"})),(0,c.createElement)("p",{className:"yst-text-center yst-text-xs yst-mx-2 yst-font-light yst-leading-5 yst-mt-2"},!r&&(0,c.createElement)(c.Fragment,null,(0,m.__)("Only $/€/£99 per year (ex VAT)","wordpress-seo"),(0,c.createElement)("br",null)),(0,m.__)("30-day money back guarantee.","wordpress-seo")),(0,c.createElement)("hr",{className:"yst-border-t yst-border-primary-300 yst-my-4"}),(0,c.createElement)("a",{className:"yst-block yst-mt-4 yst-no-underline",href:"https://www.g2.com/products/yoast-yoast/reviews",target:"_blank",rel:"noopener noreferrer"},(0,c.createElement)("span",{className:"yst-font-medium yst-text-white hover:yst-underline"},(0,m.__)("Read reviews from real users","wordpress-seo")),(0,c.createElement)("span",{className:"yst-flex yst-gap-2 yst-mt-2 yst-items-center"},(0,c.createElement)(_,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)("span",{className:"yst-flex yst-gap-1"},(0,c.createElement)(W,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(W,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(W,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(W,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(B,{className:"yst-w-5 yst-h-5"})),(0,c.createElement)("span",{className:"yst-text-sm yst-font-semibold yst-text-white"},"4.6 / 5"))))};ee.propTypes={link:y().string.isRequired,linkProps:y().object,isPromotionActive:y().func},ee.defaultProps={linkProps:{},isPromotionActive:k.noop};const te=window.yoast.reactHelmet,se="idle",ae="loading",ne="showPlay",re="askPermission",oe="isPlaying",ie=({videoId:e,thumbnail:t,wistiaEmbedPermission:s})=>{const[a,n]=(0,p.useState)(s.value?oe:ne),r=(0,p.useCallback)((()=>n(oe)),[n]),o=(0,p.useCallback)((()=>{s.value?r():n(re)}),[s.value,r,n]),i=(0,p.useCallback)((()=>n(ne)),[n]),l=(0,p.useCallback)((()=>{s.set(!0),r()}),[s.set,r]);return(0,c.createElement)(c.Fragment,null,s.value&&(0,c.createElement)(te.Helmet,null,(0,c.createElement)("script",{src:"https://fast.wistia.com/assets/external/E-v1.js",async:!0})),(0,c.createElement)("div",{className:"yst-relative yst-w-full yst-h-0 yst-pt-[56.25%] yst-overflow-hidden yst-rounded-md yst-drop-shadow-md yst-bg-white"},a===ne&&(0,c.createElement)("button",{type:"button",className:"yst-absolute yst-inset-0 yst-button yst-p-0 yst-border-none yst-bg-white yst-transition-opacity yst-duration-1000 yst-opacity-100",onClick:o},(0,c.createElement)("img",{className:"yst-w-full yst-h-auto",alt:"",loading:"lazy",decoding:"async",...t})),a===re&&(0,c.createElement)("div",{className:"yst-absolute yst-inset-0 yst-flex yst-flex-col yst-items-center yst-justify-center yst-bg-white"},(0,c.createElement)("p",{className:"yst-max-w-xs yst-mx-auto yst-text-center"},s.status===ae&&(0,c.createElement)(h.Spinner,null),s.status!==ae&&(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO. %2$s expands to Wistia. */ (0,m.__)("To see this video, you need to allow %1$s to load embedded videos from %2$s.","wordpress-seo"),"Yoast SEO","Wistia")),(0,c.createElement)("div",{className:"yst-flex yst-mt-6 yst-gap-x-4"},(0,c.createElement)(h.Button,{type:"button",variant:"secondary",onClick:i,disabled:s.status===ae},(0,m.__)("Deny","wordpress-seo")),(0,c.createElement)(h.Button,{type:"button",variant:"primary",onClick:l,disabled:s.status===ae},(0,m.__)("Allow","wordpress-seo")))),s.value&&a===oe&&(0,c.createElement)("div",{className:"yst-absolute yst-w-full yst-h-full yst-top-0 yst-left-0"},null===e&&(0,c.createElement)(h.Spinner,{className:"yst-h-full yst-mx-auto"}),null!==e&&(0,c.createElement)("div",{className:`wistia_embed wistia_async_${e} videoFoam=true`}))))};ie.propTypes={videoId:y().string.isRequired,thumbnail:y().shape({src:y().string.isRequired,width:y().string,height:y().string}).isRequired,wistiaEmbedPermission:y().shape({value:y().bool.isRequired,status:y().string.isRequired,set:y().func.isRequired}).isRequired};const le=({learnMoreLink:e,thumbnail:t,wistiaEmbedPermission:s,upsellLink:a,upsellLabel:n})=>{const{onClose:r,initialFocus:o}=(0,h.useModalContext)(),i={a:(0,c.createElement)(F,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,c.createElement)(w,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"}),br:(0,c.createElement)("br",null)};return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,c.createElement)("div",{className:"yst-relative yst-w-full"},(0,c.createElement)(ie,{videoId:"vun9z1dpfh",thumbnail:t,wistiaEmbedPermission:s}),(0,c.createElement)(h.Badge,{className:"yst-absolute yst-right-0 yst-mr-4 yst-text-center yst-justify-center",variant:"info",style:{top:"-8px"}},(0,m.__)("Beta","wordpress-seo-premium"))),(0,c.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,c.createElement)("span",{className:"yst-logo-icon"}),"Yoast SEO Premium"))),(0,c.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,c.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},(0,m.sprintf)(/* translators: %s: Expands to "Yoast AI" */ (0,m.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,c.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */ (0,m.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"
    ","","",""),i))),(0,c.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,c.createElement)(h.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:o},(0,c.createElement)(f,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),n,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,m.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,c.createElement)(h.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:r},(0,m.__)("Close","wordpress-seo"))))};le.propTypes={learnMoreLink:y().string.isRequired,upsellLink:y().string.isRequired,thumbnail:y().shape({src:y().string.isRequired,width:y().string,height:y().string}).isRequired,wistiaEmbedPermission:y().shape({value:y().bool.isRequired,status:y().string.isRequired,set:y().func.isRequired}).isRequired,upsellLabel:y().string},le.defaultProps={upsellLabel:(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,m.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),y().bool.isRequired,y().func,y().func,y().string.isRequired,y().string.isRequired,y().string.isRequired,y().string.isRequired;const ce="yoast-seo/editor",de=()=>{const e=(0,i.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-learn-more")),[]),t=(0,i.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell")),[]),s=(0,i.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell-woo-seo-premium-bundle")),[]),a=(0,i.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell-woo-seo")),[]),n=(0,i.useSelect)((e=>e(ce).getIsPremium()),[]),r=(0,i.useSelect)((e=>e(ce).getIsWooSeoActive()),[]),o=(0,i.useSelect)((e=>e(ce).getIsWooCommerceActive()),[]),l=(0,i.useSelect)((e=>e(ce).getIsProduct()),[]),d=(0,i.useSelect)((e=>e(ce).getIsProductTerm()),[]),u={upsellLink:t};if(o&&l&&(u.title=(0,m.__)("Generate product titles & descriptions with AI!","wordpress-seo"),u.isProductCopy=!0),o&&(l||d)){const e=(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium, %2$s expands to Yoast WooCommerce SEO. */ (0,m.__)("%1$s + %2$s","wordpress-seo"),"Yoast SEO Premium","Yoast WooCommerce SEO");u.newToText=(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium and Yoast WooCommerce SEO. */ (0,m.__)("New in %1$s","wordpress-seo"),e),n?(u.upsellLabel=(0,m.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,m.__)("Unlock with %1$s","wordpress-seo"),"Yoast WooCommerce SEO"),u.upsellLink=a):r||(u.upsellLabel=`${(0,m.sprintf)(/* translators: %1$s expands to Woo Premium bundle. */ (0,m.__)("Unlock with the %1$s","wordpress-seo"),"Woo Premium bundle")}*`,u.bundleNote=(0,c.createElement)("div",{className:"yst-text-xs yst-text-slate-500 yst-mt-2"},`*${e}`),u.upsellLink=s)}const h=(0,i.useSelect)((e=>e(ce).selectImageLink("ai-generator-preview.png")),[]),g=(0,p.useMemo)((()=>({src:h,width:"432",height:"244"})),[h]),y=(0,i.useSelect)((e=>e(ce).selectWistiaEmbedPermissionValue()),[]),f=(0,i.useSelect)((e=>e(ce).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:w}=(0,i.useDispatch)(ce),E=(0,p.useMemo)((()=>({value:y,status:f,set:w})),[y,f,w]);return(0,c.createElement)(b,{learnMoreLink:e,thumbnail:g,wistiaEmbedPermission:E,...u})},ue=({fieldId:e})=>{const[t,,,s,a]=(0,h.useToggleState)(!1),n=(0,p.useCallback)((()=>{s()}),[s]),r=(0,p.useRef)(null);return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("button",{type:"button",id:`yst-replacevar__use-ai-button__${e}`,className:"yst-replacevar__use-ai-button-upsell",onClick:n},(0,m.__)("Use AI","wordpress-seo")),(0,c.createElement)(h.Modal,{className:"yst-introduction-modal",isOpen:t,onClose:a,initialFocus:r},(0,c.createElement)(h.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl"},(0,c.createElement)(de,{onClose:a,focusElementRef:r}))))};ue.propTypes={fieldId:y().string.isRequired};const pe="yoast-seo/editor",me=window.yoast.analysis;function he(){}const ge=window.yoast.externals.redux;function ye(e){return e.sort(((e,t)=>e._identifier.localeCompare(t._identifier)))}function fe(){return(0,k.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1})}function we(){const e=fe();return(0,k.get)(e,"contentLocale","en_US")}function be(){const e=fe();return!0===(0,k.get)(e,"contentAnalysisActive",!1)}function Ee(){const e=fe();return!0===(0,k.get)(e,"keywordAnalysisActive",!1)}function ve(){const e=fe();return!0===(0,k.get)(e,"inclusiveLanguageAnalysisActive",!1)}const _e=window.yoast.featureFlag;class ke{constructor(e){this.refresh=e,this.loaded=!1,this.preloadThreshold=3e3,this.plugins={},this.modifications={},this._registerPlugin=this._registerPlugin.bind(this),this._ready=this._ready.bind(this),this._reloaded=this._reloaded.bind(this),this._registerModification=this._registerModification.bind(this),this._registerAssessment=this._registerAssessment.bind(this),this._applyModifications=this._applyModifications.bind(this),setTimeout(this._pollLoadingPlugins.bind(this),1500)}_registerPlugin(e,t){return(0,k.isString)(e)?(0,k.isUndefined)(t)||(0,k.isObject)(t)?!1===this._validateUniqueness(e)?(console.error("Failed to register plugin. Plugin with name "+e+" already exists"),!1):(this.plugins[e]=t,!0):(console.error("Failed to register plugin "+e+". Expected parameters `options` to be a object."),!1):(console.error("Failed to register plugin. Expected parameter `pluginName` to be a string."),!1)}_ready(e){return(0,k.isString)(e)?(0,k.isUndefined)(this.plugins[e])?(console.error("Failed to modify status for plugin "+e+". The plugin was not properly registered."),!1):(this.plugins[e].status="ready",!0):(console.error("Failed to modify status for plugin "+e+". Expected parameter `pluginName` to be a string."),!1)}_reloaded(e){return(0,k.isString)(e)?(0,k.isUndefined)(this.plugins[e])?(console.error("Failed to reload Content Analysis for plugin "+e+". The plugin was not properly registered."),!1):(this.refresh(),!0):(console.error("Failed to reload Content Analysis for "+e+". Expected parameter `pluginName` to be a string."),!1)}_registerModification(e,t,s,a){if(!(0,k.isString)(e))return console.error("Failed to register modification for plugin "+s+". Expected parameter `modification` to be a string."),!1;if(!(0,k.isFunction)(t))return console.error("Failed to register modification for plugin "+s+". Expected parameter `callable` to be a function."),!1;if(!(0,k.isString)(s))return console.error("Failed to register modification for plugin "+s+". Expected parameter `pluginName` to be a string."),!1;if(!1===this._validateOrigin(s))return console.error("Failed to register modification for plugin "+s+". The integration has not finished loading yet."),!1;const n={callable:t,origin:s,priority:(0,k.isNumber)(a)?a:10};return(0,k.isUndefined)(this.modifications[e])&&(this.modifications[e]=[]),this.modifications[e].push(n),!0}_registerAssessment(e,t,s,a){return(0,k.isString)(t)?(0,k.isObject)(s)?(0,k.isString)(a)?(t=a+"-"+t,e.addAssessment(t,s),!0):(console.error("Failed to register assessment for plugin "+a+". Expected parameter `pluginName` to be a string."),!1):(console.error("Failed to register assessment for plugin "+a+". Expected parameter `assessment` to be a function."),!1):(console.error("Failed to register test for plugin "+a+". Expected parameter `name` to be a string."),!1)}_applyModifications(e,t,s){let a=this.modifications[e];return!(0,k.isArray)(a)||a.length<1||(a=this._stripIllegalModifications(a),a.sort(((e,t)=>e.priority-t.priority)),(0,k.forEach)(a,(function(a){const n=a.callable(t,s);typeof n==typeof t?t=n:console.error("Modification with name "+e+" performed by plugin with name "+a.origin+" was ignored because the data that was returned by it was of a different type than the data we had passed it.")}))),t}_pollLoadingPlugins(e){e=(0,k.isUndefined)(e)?0:e,!0===this._allReady()?(this.loaded=!0,this.refresh()):e>=this.preloadThreshold?(this._pollTimeExceeded(),this.loaded=!0,this.refresh()):(e+=50,setTimeout(this._pollLoadingPlugins.bind(this,e),50))}_allReady(){return(0,k.reduce)(this.plugins,(function(e,t){return e&&"ready"===t.status}),!0)}_pollTimeExceeded(){(0,k.forEach)(this.plugins,(function(e,t){(0,k.isUndefined)(e.options)||"ready"===e.options.status||(console.error("Error: Plugin "+t+". did not finish loading in time."),delete this.plugins[t])}))}_stripIllegalModifications(e){return(0,k.forEach)(e,((t,s)=>{!1===this._validateOrigin(t.origin)&&delete e[s]})),e}_validateOrigin(e){return"ready"===this.plugins[e].status}_validateUniqueness(e){return(0,k.isUndefined)(this.plugins[e])}}let xe=null;const Se=()=>{if(null===xe){const e=(0,i.dispatch)("yoast-seo/editor").runAnalysis;xe=window.YoastSEO.app&&window.YoastSEO.app.pluggable?window.YoastSEO.app.pluggable:new ke(e)}return xe},Re=e=>Se()._ready(e),Te=e=>Se()._reloaded(e),Ce=(e,t,s,a)=>Se()._registerModification(e,t,s,a),Ie=(e,t)=>Se()._registerPlugin(e,t),Le=(e,t,s)=>Se().loaded?Se()._applyModifications(e,t,s):t,Pe="yoastmark";function Ae(e,t){return e._properties.position.startOffset>t.length||e._properties.position.endOffset>t.length}function Oe(e,t,s){const a=e.dom;let n=e.getContent();if(n=me.markers.removeMarks(n),(0,k.isEmpty)(s))return void e.setContent(n);n=s[0].hasPosition()?function(e,t){if(!t)return"";for(let s=(e=(0,k.orderBy)(e,(e=>e._properties.position.startOffset),["asc"])).length-1;s>=0;s--){const a=e[s];Ae(a,t)||(t=a.applyWithPosition(t))}return t}(s,n):function(e,t,s,a){const{fieldsToMark:n,selectedHTML:r}=me.languageProcessing.getFieldsToMark(s,a);return(0,k.forEach)(s,(function(t){"acf_content"!==e.id&&(t._properties.marked=me.languageProcessing.normalizeHTML(t._properties.marked),t._properties.original=me.languageProcessing.normalizeHTML(t._properties.original)),n.length>0?r.forEach((e=>{const s=t.applyWithReplace(e);a=a.replace(e,s)})):a=t.applyWithReplace(a)})),a}(e,0,s,n),e.setContent(n),function(e){let t=e.getContent();t=t.replace(new RegExp("<yoastmark.+?>","g"),"").replace(new RegExp("</yoastmark>","g"),""),e.setContent(t)}(e);const r=a.select(Pe);(0,k.forEach)(r,(function(e){e.setAttribute("data-mce-bogus","1")}))}function Fe(e){return window.test=e,Oe.bind(null,e)}k.noop,k.noop,k.noop;const Me="content";function De(e){if("undefined"==typeof tinyMCE||void 0===tinyMCE.editors||0===tinyMCE.editors.length)return!1;const t=tinyMCE.get(e);return null!==t&&!t.isHidden()}window.wp.annotations;const Ne=function(e){return(0,k.uniq)((0,k.flatten)(e.map((e=>{if(!(0,k.isUndefined)(e.getFieldsToMark()))return e.getFieldsToMark()}))))},qe=window.wp.richText,Ue=/(<([a-z]|\/)[^<>]+>)/gi,{htmlEntitiesRegex:Be}=me.helpers.htmlEntities,We=e=>{let t=0;return(0,k.forEachRight)(e,(e=>{const[s]=e;let a=s.length;/^<\/?br/.test(s)&&(a-=1),t+=a})),t},Ke="",Ye="",ze='';function He(e,t,s,a,n){const r=a.clientId,o=(0,qe.create)({html:e,multilineTag:s.multilineTag,multilineWrapperTag:s.multilineWrapperTag}).text;return(0,k.flatMap)(n,(s=>{let n;return n=s.hasBlockPosition&&s.hasBlockPosition()?function(e,t,s,a,n){if(t===e.getBlockClientId()){let t=e.getBlockPositionStart(),r=e.getBlockPositionEnd();if(e.isMarkForFirstBlockSection()){const e=((e,t,s)=>{const a="yoast/faq-block"===s?'':'';return{blockStartOffset:e-=a.length,blockEndOffset:t-=a.length}})(t,r,s);t=e.blockStartOffset,r=e.blockEndOffset}if(a.slice(t,r)===n.slice(t,r))return[{startOffset:t,endOffset:r}];const o=((e,t,s)=>{const a=s.slice(0,e),n=s.slice(0,t),r=((e,t,s,a)=>{const n=[...e.matchAll(Ue)];s-=We(n);const r=[...t.matchAll(Ue)];return{blockStartOffset:s,blockEndOffset:a-=We(r)}})(a,n,e,t),o=((e,t,s,a)=>{let n=[...e.matchAll(Be)];return(0,k.forEachRight)(n,(e=>{const[,t]=e;s-=t.length})),n=[...t.matchAll(Be)],(0,k.forEachRight)(n,(e=>{const[,t]=e;a-=t.length})),{blockStartOffset:s,blockEndOffset:a}})(a,n,e=r.blockStartOffset,t=r.blockEndOffset);return{blockStartOffset:e=o.blockStartOffset,blockEndOffset:t=o.blockEndOffset}})(t,r,a);return[{startOffset:o.blockStartOffset,endOffset:o.blockEndOffset}]}return[]}(s,r,a.name,e,o):function(e,t){const s=t.getOriginal().replace(/(<([^>]+)>)/gi,""),a=t.getMarked().replace(/(<(?!\/?yoastmark)[^>]+>)/gi,""),n=function(e,t,s=!0){const a=[];if(0===e.length)return a;let n,r=0;for(s||(t=t.toLowerCase(),e=e.toLowerCase());(n=e.indexOf(t,r))>-1;)a.push(n),r=n+t.length;return a}(e,s);if(0===n.length)return[];const r=function(e){let t=e.indexOf(Ke);const s=t>=0;s||(t=e.indexOf(ze));let a=null;const n=[];for(;t>=0;){if(a=(e=s?e.replace(Ke,""):e.replace(ze,"")).indexOf(Ye),a{n.forEach((a=>{const n=a+e.startOffset;let r=a+e.endOffset;0===e.startOffset&&e.endOffset===t.getOriginal().length&&(r=a+s.length),o.push({startOffset:n,endOffset:r})}))})),o}(o,s),n?n.map((e=>({...e,block:r,richTextIdentifier:t}))):[]}))}const je=e=>e[0].toUpperCase()+e.slice(1),Ve=(e,t,s,a,n)=>(e=e.map((e=>{const r=`${e.id}-${n[0]}`,o=`${e.id}-${n[1]}`,i=je(n[0]),l=je(n[1]),c=e[`json${i}`],d=e[`json${l}`],{marksForFirstSection:u,marksForSecondSection:p}=((e,t)=>({marksForFirstSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&e.isMarkForFirstBlockSection():e)),marksForSecondSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&!e.isMarkForFirstBlockSection():e))}))(t,e),m=He(c,r,s,a,u),h=He(d,o,s,a,p);return m.concat(h)})),(0,k.flattenDeep)(e)),Ge="yoast";let Ze=[];const Xe={"core/paragraph":[{key:"content"}],"core/list":[{key:"values",multilineTag:"li",multilineWrapperTag:["ul","ol"]}],"core/list-item":[{key:"content"}],"core/heading":[{key:"content"}],"core/audio":[{key:"caption"}],"core/embed":[{key:"caption"}],"core/gallery":[{key:"caption"}],"core/image":[{key:"caption"}],"core/table":[{key:"caption"}],"core/video":[{key:"caption"}],"yoast/faq-block":[{key:"questions"}],"yoast/how-to-block":[{key:"steps"},{key:"jsonDescription"}]};function Qe(){const e=Ze.shift();e&&((0,i.dispatch)("core/annotations").__experimentalAddAnnotation(e),Je())}function Je(){(0,k.isFunction)(window.requestIdleCallback)?window.requestIdleCallback(Qe,{timeout:1e3}):setTimeout(Qe,150)}const et=(e,t)=>{return(0,k.flatMap)((s=e.name,Xe.hasOwnProperty(s)?Xe[s]:[]),(s=>"yoast/faq-block"===e.name?((e,t,s)=>{const a=t.attributes[e.key];return 0===a.length?[]:Ve(a,s,e,t,["question","answer"])})(s,e,t):"yoast/how-to-block"===e.name?((e,t,s)=>{const a=t.attributes[e.key];if(a&&0===a.length)return[];const n=[];return"steps"===e.key&&n.push(Ve(a,s,e,t,["name","text"])),"jsonDescription"===e.key&&(s=s.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?!e.getBlockAttributeId():e)),n.push(He(a,"description",e,t,s))),(0,k.flattenDeep)(n)})(s,e,t):function(e,t,s){const a=e.key,n=((e,t)=>{const s=e.attributes[t];return"string"==typeof s?s:(s||"").toString()})(t,a);return He(n,a,e,t,s)}(s,e,t)));var s};function tt(e,t){return(0,k.flatMap)(e,(e=>{const s=function(e){return e.innerBlocks.length>0}(e)?tt(e.innerBlocks,t):[];return et(e,t).concat(s)}))}function st(e){Ze=[],(0,i.dispatch)("core/annotations").__experimentalRemoveAnnotationsBySource(Ge);const t=Ne(e);if(0===e.length)return;let s=(0,i.select)("core/block-editor").getBlocks();var a;t.length>0&&(s=s.filter((e=>t.some((t=>"core/"+t===e.name))))),a=tt(s,e),Ze=a.map((e=>({blockClientId:e.block,source:Ge,richTextIdentifier:e.richTextIdentifier,range:{start:e.startOffset,end:e.endOffset}}))),Je()}function at(e,t){let s;De(Me)&&((0,k.isUndefined)(s)&&(s=Fe(tinyMCE.get(Me))),s(e,t)),(0,i.select)("core/block-editor")&&(0,k.isFunction)((0,i.select)("core/block-editor").getBlocks)&&(0,i.select)("core/annotations")&&(0,k.isFunction)((0,i.dispatch)("core/annotations").__experimentalAddAnnotation)&&(function(e,t){tinyMCE.editors.map((e=>Fe(e))).forEach((s=>s(e,t)))}(e,t),st(t)),(0,l.doAction)("yoast.analysis.applyMarks",t)}function nt(){const e=(0,i.select)("yoast-seo/editor").isMarkingAvailable(),t=(0,i.select)("yoast-seo/editor").getMarkerPauseStatus();return!e||t?k.noop:at}const rt=(0,k.debounce)((async function(e,t){const{text:s,...a}=t,n=new me.Paper(s,a);try{const t=await e.analyze(n),{seo:s,readability:a,inclusiveLanguage:r}=t.result;if(s){const e=s[""];e.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(n,e.marks)})),e.results=ye(e.results),(0,i.dispatch)("yoast-seo/editor").setSeoResultsForKeyword(n.getKeyword(),e.results),(0,i.dispatch)("yoast-seo/editor").setOverallSeoScore(e.score,n.getKeyword())}a&&(a.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(n,e.marks)})),a.results=ye(a.results),(0,i.dispatch)("yoast-seo/editor").setReadabilityResults(a.results),(0,i.dispatch)("yoast-seo/editor").setOverallReadabilityScore(a.score)),r&&(r.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(n,e.marks)})),r.results=ye(r.results),(0,i.dispatch)("yoast-seo/editor").setInclusiveLanguageResults(r.results),(0,i.dispatch)("yoast-seo/editor").setOverallInclusiveLanguageScore(r.score)),(0,l.doAction)("yoast.analysis.run",t,{paper:n})}catch(e){}}),500);function ot(){const{getAnalysisData:e,getEditorDataTitle:t,getIsFrontPage:s}=(0,i.select)("yoast-seo/editor");let a=e();a={...a,textTitle:t(),isFrontPage:s()};const n=function(e){return e.title=Le("data_page_title",e.title),e.title=Le("title",e.title),e.description=Le("data_meta_desc",e.description),e.text=Le("content",e.text),e}(a);return(0,l.applyFilters)("yoast.analysis.data",n)}const it=()=>{const{getContentLocale:e}=(0,i.select)("yoast-seo/editor"),t=((...e)=>()=>e.map((e=>e())))(e,ot),s=(()=>{const{setEstimatedReadingTime:e,setFleschReadingEase:t,setTextLength:s}=(0,i.dispatch)("yoast-seo/editor"),a=(0,k.get)(window,"YoastSEO.analysis.worker.runResearch",k.noop);return()=>{const n=me.Paper.parse(ot());a("readingTime",n).then((t=>e(t.result))),a("getFleschReadingScore",n).then((e=>{e.result&&t(e.result)})),a("wordCountInText",n).then((e=>s(e.result)))}})();return setTimeout(s,1500),((e,t)=>{let s=e();return()=>{const a=e();(0,k.isEqual)(a,s)||(s=a,t((0,k.clone)(a)))}})(t,s)},lt=window.yoast.styledComponents;var ct=s.n(lt);const dt=window.yoast.externals.contexts,ut=({theme:e,location:t,children:s})=>(0,c.createElement)(dt.LocationProvider,{value:t},(0,c.createElement)(lt.ThemeProvider,{theme:e},s));ut.propTypes={theme:y().object.isRequired,location:y().oneOf(["sidebar","metabox","modal"]).isRequired,children:y().element.isRequired};const pt=ut,mt=[];let ht=null;class gt extends p.Component{constructor(e){super(e),this.state={registeredComponents:[]}}registerComponent(e,t){this.setState({registeredComponents:[...this.state.registeredComponents,{key:e,Component:t}]})}render(){return this.state.registeredComponents.map((({Component:e,key:t})=>(0,c.createElement)(e,{key:t})))}}function yt(e,t){null===ht||null===ht.current?mt.push({key:e,Component:t}):ht.current.registerComponent(e,t)}const ft=()=>!0;class wt extends $e.modules.hookUI.Base{constructor(e,t,s,a=ft){super(),this.command=e,this.id=t,this.callback=s,this.conditions=a}getCommand(){return this.command}getId(){return this.id}getConditions(...e){return this.conditions(...e)}apply(...e){return this.callback(...e)}}class bt extends $e.modules.hookData.Base{constructor(e,t,s,a=ft){super(),this.command=e,this.id=t,this.callback=s,this.conditions=a.bind(this)}getCommand(){return this.command}getId(){return this.id}getConditions(...e){return this.conditions(...e)}apply(...e){return this.callback(...e)}}function Et(e,t,s,a=ft){return $e.hooks.registerUIAfter(new wt(e,t,s,a))}function vt(e,t,s,a=ft){return $e.hooks.registerUIBefore(new wt(e,t,s,a))}function _t(e,t,s,a=ft){return $e.hooks.registerDataAfter(new bt(e,t,s,a))}const kt=e=>{return parseInt(null===(t=document.getElementById("post_ID"))||void 0===t?void 0:t.value,10)===e;var t},xt=()=>{var e;return kt(null===(e=elementor.documents.getCurrent())||void 0===e?void 0:e.id)},St=["yoast_wpseo_linkdex","yoast_wpseo_content_score","yoast_wpseo_inclusive_language_score","yoast_wpseo_words_for_linking","yoast_wpseo_estimated-reading-time-minutes"],Rt=["yoast_wpseo_focuskeywords","hidden_wpseo_focuskeywords"],Tt=e=>{let t="";e&&(t=(0,m.sprintf)(/* translators: %1$s translates to the Post Label in singular form */ (0,m.__)("Unfortunately we cannot save changes to your SEO settings while you are working on a draft of an already-published %1$s. If you want to save your SEO changes, make sure to click 'Update', or wait to make your SEO changes until you are ready to update the %1$s.","wordpress-seo"),wpseoAdminL10n.postTypeNameSingular.toLowerCase())),"draft"===elementor.settings.page.model.get("post_status")&&(t=""),(0,i.select)("yoast-seo/editor").getWarningMessage()!==t&&(0,i.dispatch)("yoast-seo/editor").setWarningMessage(t)},Ct=(e,t,s)=>null===t?null:(0,p.createPortal)(e,t,s),It=({id:e,children:t})=>{const s=(0,p.useRef)(document.getElementById(e)),[a,n]=(0,p.useState)((()=>Ct(t,s.current,e))),r=(0,p.useCallback)((()=>{const a=document.getElementById(e);a!==s.current&&(s.current=a,n(Ct(t,a,e)))}),[e,t]);return((e,t,s={childList:!0,subtree:!0})=>{(0,p.useEffect)((()=>{const a=new MutationObserver(t);return a.observe(e,s),()=>a.disconnect()}),[e,t])})(document.body,r),a},Lt=({handleRefreshClick:e,supportLink:t})=>(0,c.createElement)("div",{className:"yst-flex yst-gap-2"},(0,c.createElement)(h.Button,{onClick:e},(0,m.__)("Refresh this page","wordpress-seo")),(0,c.createElement)(h.Button,{variant:"secondary",as:"a",href:t,target:"_blank",rel:"noopener"},(0,m.__)("Contact support","wordpress-seo")));Lt.propTypes={handleRefreshClick:y().func.isRequired,supportLink:y().string.isRequired};const Pt=({handleRefreshClick:e,supportLink:t})=>(0,c.createElement)("div",{className:"yst-grid yst-grid-cols-1 yst-gap-y-2"},(0,c.createElement)(h.Button,{className:"yst-order-last",onClick:e},(0,m.__)("Refresh this page","wordpress-seo")),(0,c.createElement)(h.Button,{variant:"secondary",as:"a",href:t,target:"_blank",rel:"noopener"},(0,m.__)("Contact support","wordpress-seo")));Pt.propTypes={handleRefreshClick:y().func.isRequired,supportLink:y().string.isRequired};const At=({error:e,children:t})=>(0,c.createElement)("div",{role:"alert",className:"yst-max-w-screen-sm yst-p-8 yst-space-y-4"},(0,c.createElement)(h.Title,null,(0,m.__)("Something went wrong. An unexpected error occurred.","wordpress-seo")),(0,c.createElement)("p",null,(0,m.__)("We're very sorry, but it seems like the following error has interrupted our application:","wordpress-seo")),(0,c.createElement)(h.Alert,{variant:"error"},(null==e?void 0:e.message)||(0,m.__)("Undefined error message.","wordpress-seo")),(0,c.createElement)("p",null,(0,m.__)("Unfortunately, this means that any unsaved changes in this section will be lost. You can try and refresh this page to resolve the problem. If this error still occurs, please get in touch with our support team, and we'll get you all the help you need!","wordpress-seo")),t);At.propTypes={error:y().object.isRequired,children:y().node},At.VerticalButtons=Pt,At.HorizontalButtons=Lt;const Ot=({error:e})=>{const t=(0,p.useCallback)((()=>{var e,t;return null===(e=window)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.reload()}),[]),s=(0,i.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/elementor-error-support")),[]),a=(0,i.useSelect)((e=>e("yoast-seo/editor").getPreference("isRtl",!1)),[]);return(0,c.createElement)(h.Root,{context:{isRtl:a}},(0,c.createElement)(At,{error:e},(0,c.createElement)(At.VerticalButtons,{supportLink:s,handleRefreshClick:t})))};function Ft(){return(0,c.createElement)(h.ErrorBoundary,{FallbackComponent:Ot},(0,c.createElement)(u.Slot,{name:"YoastElementor"},(e=>{return void 0===(t=e).length?t:(0,k.flatten)(t).sort(((e,t)=>void 0===e.props.renderPriority?1:e.props.renderPriority-t.props.renderPriority));var t})))}Ot.propTypes={error:y().object.isRequired};const Mt=window.wp.compose,Dt=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{fillRule:"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z",clipRule:"evenodd"}))})),Nt=window.wp.url,qt=()=>[(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$sAI%2$s: Better SEO titles and meta descriptions, faster.","wordpress-seo"),"",""),(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$sMultiple keywords%2$s: Rank higher for more searches.","wordpress-seo"),"",""),(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$sSuper fast%2$s internal linking suggestions.","wordpress-seo"),"",""),(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$sNo more broken links%2$s: Automatic redirect manager.","wordpress-seo"),"",""),(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$sAppealing social previews%2$s people actually want to click on.","wordpress-seo"),"",""),(0,m.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,m.__)("%1$s24/7 support%2$s: Also on evenings and weekends.","wordpress-seo"),"","")];var Ut=s(4530),Bt=s.n(Ut);const $t=({className:e,...t})=>(0,c.createElement)("span",{className:Bt()("yst-grow yst-overflow-hidden yst-overflow-ellipsis yst-whitespace-nowrap yst-font-wp yst-text-[#555] yst-text-base yst-leading-[normal] yst-subpixel-antialiased yst-text-left",e),...t});$t.displayName="MetaboxButton.Text",$t.propTypes={className:y().string},$t.defaultProps={className:""};const Wt=({className:e,...t})=>(0,c.createElement)("button",{type:"button",className:Bt()("yst-flex yst-items-center yst-w-full yst-pt-4 yst-pb-4 yst-pr-4 yst-pl-6 yst-space-x-2 yst-border-t yst-border-t-[rgb(0,0,0,0.2)] yst-rounded-none yst-transition-all hover:yst-bg-[#f0f0f0] focus:yst-outline focus:yst-outline-[1px] focus:yst-outline-[color:#0066cd] focus:-yst-outline-offset-1 focus:yst-shadow-[0_0_3px_rgba(8,74,103,0.8)]",e),...t});Wt.propTypes={className:y().string},Wt.defaultProps={className:""},Wt.Text=$t;const Kt=window.yoast.componentsNew,Yt=e=>(0,c.createElement)("div",{className:"yoast components-panel__body"},(0,c.createElement)("h2",{className:"components-panel__body-title"},(0,c.createElement)("button",{id:e.id,onClick:e.onClick,className:"components-button components-panel__body-toggle",type:"button"},e.prefixIcon&&(0,c.createElement)("span",{className:"yoast-icon-span",style:{fill:`${e.prefixIcon&&e.prefixIcon.color||""}`}},(0,c.createElement)(Kt.SvgIcon,{size:e.prefixIcon.size,icon:e.prefixIcon.icon})),(0,c.createElement)("span",{className:"yoast-title-container"},(0,c.createElement)("div",{className:"yoast-title"},e.title),(0,c.createElement)("div",{className:"yoast-subtitle"},e.subTitle)),e.children,e.suffixIcon&&(0,c.createElement)(Kt.SvgIcon,{size:e.suffixIcon.size,icon:e.suffixIcon.icon}),e.SuffixHeroIcon))),zt=Yt;Yt.propTypes={onClick:y().func.isRequired,title:y().string.isRequired,id:y().string,subTitle:y().string,suffixIcon:y().object,SuffixHeroIcon:y().object,prefixIcon:y().object,children:y().node},Yt.defaultProps={id:"",suffixIcon:null,SuffixHeroIcon:null,prefixIcon:null,subTitle:"",children:null};const Ht=window.yoast.helpers,jt=ct().div` padding: 25px 32px 32px; color: #303030; `,Vt=ct().ul` margin: 0; padding: 0; li { list-style-image: var(--yoast-svg-icon-check); margin: 0.5rem 0 0 1.5rem; line-height: 1.4em; &::marker { font-size: 1.5rem; } } `,Gt=ct().span` display: block; margin-top: 4px; `,Zt=ct().h2` margin-top: 0; margin-bottom: 0.25rem; color: #303030; font-size: 0.8125rem; font-weight: 600; `,Xt=ct().p` display: block; margin: 0.25rem 0 1rem 0 !important; max-width: 420px; `,Qt=ct().hr` margin-top: 1.5rem; margin-bottom: 1rem; border-top: 0; border-bottom: 1px solid #E2E8F0; `,Jt=ct().div` text-align: center; `,es=ct().a` width: 100%; `,ts=(0,Ht.makeOutboundLink)(es);class ss extends p.Component{constructor(e){super(e),this.state={defaultPrice:"99"}}createBenefitsList(e){return e.length>0&&(0,c.createElement)(Vt,{role:"list"},e.map(((e,t)=>(0,c.createElement)("li",{key:`upsell-benefit-${t}`},(0,p.createInterpolateElement)(e,{strong:(0,c.createElement)("strong",null)})))))}render(){const e=(0,i.select)("yoast-seo/editor").isPromotionActive("black-friday-2024-promotion"),{defaultPrice:t}=this.state,s=e?"69.30":null,a=s||t;return(0,c.createElement)(p.Fragment,null,e&&(0,c.createElement)("div",{className:"yst-flex yst-items-center yst-text-lg yst-content-between yst-bg-black yst-text-amber-300 yst-h-9 yst-border-amber-300 yst-border-y yst-border-x-0 yst-border-solid yst-px-6"},(0,c.createElement)("div",{className:"yst-mx-auto"},(0,m.__)("30% OFF - BLACK FRIDAY","wordpress-seo"))),(0,c.createElement)(jt,null,(0,c.createElement)(Zt,null,this.props.title),(0,c.createElement)(Xt,null,this.props.description),(0,c.createElement)(Jt,null,(0,c.createElement)(ts,{...this.props.upsellButton},this.props.upsellButtonText,this.props.upsellButtonHasCaret&&(0,c.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,c.createElement)("div",{className:"yst-text-slate-600 yst-my-4"},s&&(0,c.createElement)(p.Fragment,null,(0,c.createElement)("span",{className:"yst-text-slate-500 yst-line-through"},t)," "),(0,c.createElement)("span",{className:"yst-text-slate-900 yst-text-2xl yst-font-bold"},a)," ",(0,m.__)("$ USD / € EUR / £ GBP per year (ex. VAT)","wordpress-seo")),(0,c.createElement)(Gt,{id:this.props.upsellButton["aria-describedby"]},this.props.upsellButtonLabel)),(0,c.createElement)(Qt,null),(0,c.createElement)(Zt,null,this.props.benefitsTitle),this.createBenefitsList(this.props.benefits)))}}ss.propTypes={title:y().node,benefits:y().array,benefitsTitle:y().node,description:y().node,upsellButton:y().object,upsellButtonText:y().string.isRequired,upsellButtonLabel:y().string,upsellButtonHasCaret:y().bool},ss.defaultProps={title:null,description:null,benefits:[],benefitsTitle:null,upsellButton:{href:"",className:"button button-primary"},upsellButtonLabel:"",upsellButtonHasCaret:!0};const as=ss,ns=ct().div` min-width: 600px; @media screen and ( max-width: 680px ) { min-width: 0; width: 86vw; } `,rs=ct().div` @media screen and ( min-width: 600px ) { max-width: 420px; } `,os=(ct()(Kt.Icon)` float: ${(0,Ht.getDirectionalStyle)("right","left")}; margin: ${(0,Ht.getDirectionalStyle)("0 0 16px 16px","0 16px 16px 0")}; && { width: 150px; height: 150px; @media screen and ( max-width: 680px ) { width: 80px; height: 80px; } } `,"yoast yoast-gutenberg-modal"),is=e=>{const{title:t,className:s,showYoastIcon:a,additionalClassName:n,...r}=e,o=a?(0,c.createElement)("span",{className:"yoast-icon"}):null;return(0,c.createElement)(u.Modal,{title:t,className:`${s} ${n}`,icon:o,...r},e.children)};is.propTypes={title:y().string,className:y().string,showYoastIcon:y().bool,children:y().oneOfType([y().node,y().arrayOf(y().node)]),additionalClassName:y().string},is.defaultProps={title:"Yoast SEO",className:os,showYoastIcon:!0,children:null,additionalClassName:""};const ls=is,cs=()=>{const[e,,,t,s]=(0,h.useToggleState)(!1),{locationContext:a}=(0,dt.useRootContext)(),n=(0,h.useSvgAria)(),r=a.includes("sidebar"),o=a.includes("metabox"),i=wpseoAdminL10n[r?"shortlinks.upsell.sidebar.internal_linking_suggestions":"shortlinks.upsell.metabox.internal_linking_suggestions"];return(0,c.createElement)(c.Fragment,null,e&&(0,c.createElement)(ls,{title:(0,m.__)("Get internal linking suggestions","wordpress-seo"),onRequestClose:s,additionalClassName:"",id:"yoast-internal-linking-suggestions-upsell",className:`${os} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,c.createElement)(rs,null,(0,c.createElement)(as,{title:(0,m.__)("Rank higher by connecting your content","wordpress-seo"),description:(0,m.sprintf)(/* translators: %s expands to Yoast SEO Premium. */ (0,m.__)("%s automatically suggests to what content you can link with easy drag-and-drop functionality, which is good for your SEO!","wordpress-seo"),"Yoast SEO Premium"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qt(),upsellButtonText:(0,m.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:(0,Nt.addQueryArgs)(i,{context:a}),className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,m.__)("1 year free support and updates included!","wordpress-seo")}))),r&&(0,c.createElement)(zt,{id:"yoast-internal-linking-suggestions-sidebar-modal-open-button",title:(0,m.__)("Internal linking suggestions","wordpress-seo"),onClick:t},(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...n})))),o&&(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(Wt,{id:"yoast-internal-linking-suggestions-metabox-modal-open-button",onClick:t},(0,c.createElement)(Wt.Text,null,(0,m.__)("Internal linking suggestions","wordpress-seo")),(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...n}),(0,c.createElement)("span",null,"Premium")))))},ds=window.yoast.externals.components;function us(){return(0,Mt.createHigherOrderComponent)((function(e){return(0,Mt.pure)((function(t){const s=(0,p.useContext)(dt.LocationContext);return(0,p.createElement)(e,{...t,location:s})}))}),"withLocation")}const ps=(0,Mt.compose)([(0,i.withSelect)((e=>{const{isCornerstoneContent:t}=e("yoast-seo/editor");return{isCornerstone:t(),learnMoreUrl:wpseoAdminL10n["shortlinks.cornerstone_content_info"]}})),(0,i.withDispatch)((e=>{const{toggleCornerstoneContent:t}=e("yoast-seo/editor");return{onChange:t}})),us()])(ds.CollapsibleCornerstone),ms=(0,Mt.compose)([(0,i.withSelect)(((e,t)=>{const{isAlertDismissed:s}=e(t.store||"yoast-seo/editor");return{isAlertDismissed:s(t.alertKey)}})),(0,i.withDispatch)(((e,t)=>{const{dismissAlert:s}=e(t.store||"yoast-seo/editor");return{onDismissed:()=>s(t.alertKey)}}))]),hs=({children:e,id:t,hasIcon:s=!0,title:a,image:n=null,isAlertDismissed:r,onDismissed:o})=>r?null:(0,c.createElement)("div",{id:t,className:"notice-yoast yoast is-dismissible yoast-webinar-dashboard yoast-general-page-notices"},(0,c.createElement)("div",{className:"notice-yoast__container"},(0,c.createElement)("div",null,(0,c.createElement)("div",{className:"notice-yoast__header"},s&&(0,c.createElement)("span",{className:"yoast-icon"}),(0,c.createElement)("h2",{className:"notice-yoast__header-heading yoast-notice-migrated-header"},a)),(0,c.createElement)("div",{className:"notice-yoast-content"},(0,c.createElement)("p",null,e))),n&&(0,c.createElement)(n,{height:"60"})),(0,c.createElement)("button",{type:"button",className:"notice-dismiss",onClick:o},(0,c.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,m.__)("Dismiss this notice.","wordpress-seo"))));hs.propTypes={children:y().node.isRequired,id:y().string.isRequired,hasIcon:y().bool,title:y().any.isRequired,image:y().elementType,isAlertDismissed:y().bool.isRequired,onDismissed:y().func.isRequired};const gs=ms(hs),ys=({store:e="yoast-seo/editor",image:t=null,title:s,promoId:a,alertKey:n,children:r,...o})=>(0,i.select)(e).isPromotionActive(a)&&(0,c.createElement)(gs,{alertKey:n,store:e,id:n,title:s,image:t,...o},r);ys.propTypes={store:y().string,image:y().elementType,title:y().any.isRequired,promoId:y().string.isRequired,alertKey:y().string.isRequired,children:y().node};const fs=({store:e="yoast-seo/editor",location:t="sidebar",...s})=>{const a=(0,i.useSelect)((t=>t(e).getIsPremium()),[e]),n=(0,i.useSelect)((t=>t(e).selectLinkParams()),[e]),r="sidebar"===t?(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium */ (0,m.__)("Now with 30%% OFF: %1$s","wordpress-seo"),"Yoast SEO Premium"):(0,p.createInterpolateElement)((0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium, %2$s expands to a link on yoast.com, %3$s expands to the anchor end tag. */ (0,m.__)("Now with 30%% OFF: %1$s %2$sBuy now!%3$s","wordpress-seo"),"Yoast SEO Premium","",""),{a:(0,c.createElement)("a",{href:(0,Nt.addQueryArgs)("https://yoa.st/black-friday-sale",n),target:"_blank",rel:"noreferrer"})});return a?null:(0,c.createElement)(ys,{id:`black-friday-2024-promotion-${t}`,promoId:"black-friday-2024-promotion",alertKey:"black-friday-2024-promotion",store:e,title:r,...s},(0,c.createElement)("span",{className:"yoast-bf-sale-badge"},(0,m.__)("BLACK FRIDAY SALE","wordpress-seo")," "),"sidebar"===t&&(0,c.createElement)("a",{className:"yst-block yst--mb-[1em]",href:(0,Nt.addQueryArgs)("https://yoa.st/black-friday-sale",n),target:"_blank",rel:"noreferrer"},(0,m.__)("Buy now!","wordpress-seo")))};fs.propTypes={store:y().string,location:y().oneOf(["sidebar","metabox"])};const ws="trustpilot-review-notification",bs="yoast-seo/editor";const Es=()=>{const e=(0,i.useSelect)((e=>e(bs).getIsPremium()),[]),t=(0,i.useSelect)((e=>e(bs).isAlertDismissed(ws)),[]),{overallScore:s}=(0,i.useSelect)((e=>e(bs).getResultsForFocusKeyword()),[]),{dismissAlert:a}=(0,i.useDispatch)(bs),n=(0,p.useCallback)((()=>a(ws)),[a]),[r,o]=(0,p.useState)(!1);return(0,p.useEffect)((()=>{var e,t;"good"===(null===(t=s,(0,k.isNil)(t)||(t/=10),e=function(e){switch(e){case"feedback":return{className:"na",screenReaderText:(0,m.__)("Not available","wordpress-seo"),screenReaderReadabilityText:(0,m.__)("Not available","wordpress-seo"),screenReaderInclusiveLanguageText:(0,m.__)("Not available","wordpress-seo")};case"bad":return{className:"bad",screenReaderText:(0,m.__)("Needs improvement","wordpress-seo"),screenReaderReadabilityText:(0,m.__)("Needs improvement","wordpress-seo"),screenReaderInclusiveLanguageText:(0,m.__)("Needs improvement","wordpress-seo")};case"ok":return{className:"ok",screenReaderText:(0,m.__)("OK SEO score","wordpress-seo"),screenReaderReadabilityText:(0,m.__)("OK","wordpress-seo"),screenReaderInclusiveLanguageText:(0,m.__)("Potentially non-inclusive","wordpress-seo")};case"good":return{className:"good",screenReaderText:(0,m.__)("Good SEO score","wordpress-seo"),screenReaderReadabilityText:(0,m.__)("Good","wordpress-seo"),screenReaderInclusiveLanguageText:(0,m.__)("Good","wordpress-seo")};default:return{className:"loading",screenReaderText:"",screenReaderReadabilityText:"",screenReaderInclusiveLanguageText:""}}}(me.interpreters.scoreToRating(t)))||void 0===e?void 0:e.className)&&o(!0)}),[s]),{shouldShow:!e&&!t&&r,dismiss:n}},vs=(0,Ht.makeOutboundLink)(),_s=()=>{const{shouldShow:e,dismiss:t}=Es(),{locationContext:s}=(0,dt.useRootContext)(),a=(0,i.useSelect)((e=>e(bs).selectLink("https://yoa.st/trustpilot-review",{context:s})),[s]);return(0,c.createElement)(hs,{alertKey:ws,store:bs,id:ws,title:(0,m.__)("Show Yoast SEO some love!","wordpress-seo"),hasIcon:!1,isAlertDismissed:!e,onDismissed:t},(0,m.__)("Happy with the plugin?","wordpress-seo")," ",(0,c.createElement)(vs,{href:a,rel:"noopener noreferrer"},(0,m.__)("Leave a quick review","wordpress-seo")),".")};var ks,xs,Ss,Rs,Ts,Cs,Is,Ls,Ps,As,Os,Fs,Ms,Ds,Ns,qs,Us,Bs,$s,Ws,Ks,Ys,zs,Hs,js,Vs,Gs,Zs,Xs,Qs,Js,ea,ta,sa,aa,na,ra,oa,ia,la,ca,da,ua,pa,ma,ha,ga;function ya(){return ya=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",ya({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 448 360"},e),ks||(ks=c.createElement("circle",{cx:226,cy:211,r:149,fill:"#f0ecf0"})),xs||(xs=c.createElement("path",{fill:"#fbd2a6",d:"M173.53 189.38s-35.47-5.3-41.78-11c-9.39-24.93-29.61-48-35.47-66.21-.71-2.24 3.72-11.39 3.53-15.41s-5.34-11.64-5.23-14-.09-15.27-.09-15.27l-4.75-.72s-5.13 6.07-3.56 9.87c-1.73-4.19 4.3 7.93.5 9.35 0 0-6-5.94-11.76-8.27s-19.57-3.65-19.57-3.65L43.19 73l-4.42.6L31 69.7l-2.85 5.12 7.53 5.29L40.86 92l17.19 10.2 10.2 10.56 9.86 3.56s26.49 79.67 45 92c17 11.33 37.23 15.92 37.23 15.92z"})),Ss||(Ss=c.createElement("path",{fill:"#a4286a",d:"M270.52 345.13c2.76-14.59 15.94-35.73 30.24-54.58 16.22-21.39 14-79.66-33.19-91.46-17.3-4.32-52.25-1-59.85-3.41C186.54 189 170 187 168 190.17c-5 10.51-7.73 27.81-5.51 36.26 1.18 4.73 3.54 5.91 20.49 13.4-5.12 15-16.35 26.3-22.86 37s7.88 27.2 7.1 33.51c-.48 3.8-4.26 21.13-7.18 34.25a149.47 149.47 0 0 0 110.3 8.66 25.66 25.66 0 0 1 .18-8.12z"})),Rs||(Rs=c.createElement("path",{fill:"#9a5815",d:"M206.76 66.43c-5 14.4-1.42 25.67-3.93 40.74-10 60.34-24.08 43.92-31.44 93.6 7.24-14.19 14.32-15.82 20.63-23.11-.83 3.09-10.25 13.75-8.05 34.81 9.85-8.51 6.35-8.75 11.86-8.54.36 3.25 3.53 3.22-3.59 10.53 2.52.69 17.42-14.32 20.16-12.66s0 5.72-6 7.76c2.15 2.2 30.47-3.87 43.81-14.71 4.93-4 10-13.16 13.38-18.2 7.17-10.62 12.38-24.77 17.71-36.6 8.94-19.87 15.09-39.34 16.11-61.31.53-10.44-3.41-18.44-4.41-28.86-2.57-27.8-67.63-37.26-86.24 16.55z"})),Ts||(Ts=c.createElement("path",{fill:"#efb17c",d:"M277.74 179.06c.62-.79 1.24-1.59 1.84-2.39-.85 2.59-1.52 3.73-1.84 2.39z"})),Cs||(Cs=c.createElement("path",{fill:"#fbd2a6",d:"M216.1 206.72c3.69-5.42 8.28-3.35 15.57-8.28 3.76-3.06 1.57-9.46 1.77-11.82 18.25 4.56 37.38-1.18 49.07-16 .62 5.16-2.77 22.27-.2 27 4.73 8.67 13.4 18.92 13.4 18.92-35.47-2.76-63.45 39-89.86 44.54 5.52-28.74-2.36-35.84 10.25-54.36z"})),Is||(Is=c.createElement("path",{fill:"#f6b488",d:"m235.21 167.9 53.21-25.23s-3.65 24-6.5 32.72c-64.05 62.66-46.47-7.33-46.71-7.49z"})),Ls||(Ls=c.createElement("path",{fill:"#fbd2a6",d:"M226.86 50.64C215 59.31 206.37 93.21 204 95.57c-19.46 19.47-3.59 41.39-3.94 51.24-.2 5.52-4.14 25.42 5.72 29.36 22.22 8.89 60-3.48 67.19-12.61 13.28-16.75 40.89-94.78 17.74-108.19-7.92-4.58-42.78-20.18-63.85-4.73z"})),Ps||(Ps=c.createElement("path",{fill:"#e5766c",d:"M243.69 143.66c-10.7-6.16-8.56-6.73-19.76-12.71-3.86-2.07-3.94.64-6.32 0-2.91-.79-1.39-2.74-5.37-3.48-6.52-1.21-3.67 3.63-3.15 6 1.32 6.15-8.17 17.3 3.26 21.42 12.65 4.55 21.38-9.41 31.34-11.23z"})),As||(As=c.createElement("path",{fill:"#fff",d:"M240.68 143.9c-11.49-5.53-11.65-8.17-24.64-11.69-8.6-2.32-5.53 1-5.69 4.42-.2 4.16-1.26 9.87 4.9 12.66 9 4.09 18.16-6.02 25.43-5.39zm.7-40.9c-.16 1.26-.06 4.9 5.46 8.25 11.43-4.73 16.36-2.56 17-3.33 1.48-1.76-2-8.87-7.88-9.85-5.58-.94-14.14 1.24-14.58 4.93z"})),Os||(Os=c.createElement("path",{fill:"#000001",d:"M263.53 108.19c-4.32-4.33-6.85-6.24-12.26-8.21-2.77-1-6.18.18-8.65 1.67a3.65 3.65 0 0 0-1.24 1.23h-.12a3.73 3.73 0 0 1 1-1.52 12.53 12.53 0 0 1 11.93-3c4.73 1 9.43 4.63 9.42 9.82z"})),Fs||(Fs=c.createElement("circle",{cx:254.13,cy:104.05,r:4.19,fill:"#000001"})),Ms||(Ms=c.createElement("path",{fill:"#fff",d:"M225.26 99.22c-.29 1-6.6 3.45-10.92 1.48-1.15-3.24-5-6.43-5.25-6.71-.5-2.86 5.55-8 10.06-6.3a10.21 10.21 0 0 1 6.11 11.53z"})),Ds||(Ds=c.createElement("path",{fill:"#000001",d:"M209.29 94.21c-.19-2.34 1.84-4.1 3.65-5.2 7-3.87 13.18 3 12.43 10h-.12c-.14-4-2.38-8.44-6.47-9.11a3.19 3.19 0 0 0-2.42.31c-1.37.85-2.38 2-3.89 2.56-1 .45-1.92.42-3 1.4h-.22z"})),Ns||(Ns=c.createElement("circle",{cx:219.55,cy:95.28,r:4,fill:"#000001"})),qs||(qs=c.createElement("path",{fill:"#efb17c",d:"M218.66 120.27a27.32 27.32 0 0 0 4.54 3.45c-2.29-.72-4.28-.69-6.32-2.27-2.53-2-3.39-5.16-.73-7.72 10.24-9.82 12.56-13.82 14.77-24.42-1 12.37-6 17.77-10.63 23.18-2.53 2.97-4.68 5.06-1.63 7.78z"})),Us||(Us=c.createElement("path",{fill:"#a57c52",d:"M231.22 69.91c-.67-3.41-8.78-2.83-11.06-1.93-3.48 1.39-6.08 5.22-7.13 8.53 2.9-4.3 6.74-8.12 12.46-6 1.16.42 3.18 2.35 4.48 1.85s1.03-2.2 1.25-2.45zm32.16 8.56c-2.75-1.66-12.24-5.08-12.18.82 2.56.24 5-.19 7.64.95 11.22 4.76 12.77 17.61 12.85 17.86.2-.53.1 1.26.23.7-.02.2.95-12.12-8.54-20.33z"})),Bs||(Bs=c.createElement("path",{fill:"#fbd2a6",d:"M53.43 250.73c6.29 0-.6-.17 7.34 0 1.89.05-2.38-.7 0-.69 4.54-4.2 12.48-.74 20.6-2.45 4.55.35 3.93 1.35 5.59 4.19 4.89 8.38 4.78 14.21 14 19.56 16.42 8.38 66 12.92 88.49 18.86 5.52.83 42.64-20.15 61-23.75 6.51 10.74 11.46 28.68 8.39 34.93-6.54 13.3-57.07 25.4-75.91 25.15C156.47 326.18 94 294 92.2 293c-.94-.57.7-.7-7.68 0s-10.15.72-17.47-1.4c-3-.87-4.61-1.33-6.33-3.54-2 .22-3.39.2-4.78-1-3.15-2.74-4.84-6.61-2.73-10.06h-.12c-3.35-2.48-6.54-7.69-3.08-11.72 1-1.18 6.06-1.94 7.77-2.28-1.58-.29-6.37.19-7.49-.72-3.06-2.5-4.96-11.55 3.14-11.55z"})),$s||($s=c.createElement("path",{fill:"#a4286a",d:"M303.22 237.52c-9.87-11.88-41.59 8.19-47.8 12.34s-14.89 17.95-14.89 17.95c6 9.43 8.36 31 5.65 46.34l30.51-3s18-15.62 22.59-28.7 6.3-42.54 6.3-42.54"})),Ws||(Ws=c.createElement("path",{fill:"#cb9833",d:"M278.63 31.67c-6.08 0-22.91 4.07-22.93 12.91 0 11 47.9 38.38 16.14 85.85 10.21-.79 10.79-8.12 14.92-14.93-3.66 77-49.38 93.58-40.51 142.25 7.68-25.81 20.3-11.62 38.13-33.84 3.45 4.88 9 18.28-9.46 33.78 50-31.26 57.31-56.6 51.92-95C319.93 113.53 348.7 42 278.63 31.67z"})),Ks||(Ks=c.createElement("path",{fill:"#fbd2a6",d:"M283.64 126.83c-2.42 9.67-8 15.76-1.48 16.46A21.26 21.26 0 0 0 302 132.6c5.17-8.52 3.93-16.44-2.46-18s-13.48 2.56-15.9 12.23z"})),Ys||(Ys=c.createElement("path",{fill:"#efb17c",d:"M38 73.45c1.92 2 4.25 9.21 6.32 10.91 2.25 1.85 5.71 2.12 8.1 4.45 3.66-2 6-8.72 10-9.31-2.59 1.31-4.42 3.5-6.93 4.88-1.42.8-3 1.31-4.38 2.25-2.16-1.46-4.27-1.77-6.26-3.38-2.52-2.02-5.31-8-6.85-9.8z"})),zs||(zs=c.createElement("path",{fill:"#efb17c",d:"M39 74.4c4.83 1.1 12.52 6.44 15.89 10-3.22-1.34-14.73-6.15-15.89-10zm.62-1.5c6.71-.79 18 1.54 23.29 5.9-3.85-.2-5.42-1.48-9-2.94-4.08-1.69-8.83-2.03-14.29-2.96zm46.43 14.58c-3.72-1.32-10.52-1.13-13.22 3.52 2-1.16 1.84-2.11 4.18-1.72-3.81-4.15 8.16-.74 11.6-.24m-2.78 13.15c.56-3.29-8-7.81-10.58-9.17-6.25-3.29-12.16 1.36-19.33-4.53 5.94 6.1 14.23 2.5 19.55 5.76 3.06 1.88 8.65 6.09 9.35 9.38-.23-.4 1.29-1.44 1.01-1.44z"})),Hs||(Hs=c.createElement("circle",{cx:38.13,cy:30.03,r:3.14,fill:"#b89ac8"})),js||(js=c.createElement("circle",{cx:60.26,cy:39.96,r:3.14,fill:"#e31e0c"})),Vs||(Vs=c.createElement("circle",{cx:50.29,cy:25.63,r:3.14,fill:"#3baa45"})),Gs||(Gs=c.createElement("circle",{cx:22.19,cy:19.21,r:3.14,fill:"#2ca9e1"})),Zs||(Zs=c.createElement("circle",{cx:22.19,cy:30.03,r:3.14,fill:"#e31e0c"})),Xs||(Xs=c.createElement("circle",{cx:26.86,cy:8.28,r:3.14,fill:"#3baa45"})),Qs||(Qs=c.createElement("circle",{cx:49.32,cy:39.99,r:3.14,fill:"#e31e0c"})),Js||(Js=c.createElement("circle",{cx:63.86,cy:59.52,r:3.14,fill:"#f8ad39"})),ea||(ea=c.createElement("circle",{cx:50.88,cy:50.72,r:3.14,fill:"#3baa45"})),ta||(ta=c.createElement("circle",{cx:63.47,cy:76.17,r:3.14,fill:"#e31e0c"})),sa||(sa=c.createElement("circle",{cx:38.34,cy:14.83,r:3.14,fill:"#2ca9e1"})),aa||(aa=c.createElement("circle",{cx:44.44,cy:5.92,r:3.14,fill:"#f8ad39"})),na||(na=c.createElement("circle",{cx:57.42,cy:10.24,r:3.14,fill:"#e31e0c"})),ra||(ra=c.createElement("circle",{cx:66.81,cy:12.4,r:3.14,fill:"#2ca9e1"})),oa||(oa=c.createElement("circle",{cx:77.95,cy:5.14,r:3.14,fill:"#b89ac8"})),ia||(ia=c.createElement("circle",{cx:77.95,cy:30.34,r:3.14,fill:"#e31e0c"})),la||(la=c.createElement("circle",{cx:80.97,cy:16.55,r:3.14,fill:"#f8ad39"})),ca||(ca=c.createElement("circle",{cx:62.96,cy:27.27,r:3.14,fill:"#3baa45"})),da||(da=c.createElement("circle",{cx:75.36,cy:48.67,r:3.14,fill:"#2ca9e1"})),ua||(ua=c.createElement("circle",{cx:76.11,cy:65.31,r:3.14,fill:"#3baa45"})),pa||(pa=c.createElement("path",{fill:"#71b026",d:"M78.58 178.43C54.36 167.26 32 198.93 5 198.93c19.56 20.49 63.53 1.52 69 15.5 1.48-14.01 4.11-30.9 4.58-36z"})),ma||(ma=c.createElement("path",{fill:"#074a67",d:"M67.75 251.08c0-4.65 10.13-72.65 10.13-72.65h2.8l-9.09 72.3z"})),ha||(ha=c.createElement("ellipse",{cx:255.38,cy:103.18,fill:"#fff",rx:1.84,ry:1.77})),ga||(ga=c.createElement("ellipse",{cx:221.24,cy:94.75,fill:"#fff",rx:1.84,ry:1.77}))),wa=({store:e="yoast-seo/editor",image:t=fa,url:s,...a})=>(0,i.useSelect)((t=>t(e).getIsPremium()))?null:(0,c.createElement)(gs,{alertKey:"webinar-promo-notification",store:e,id:"webinar-promo-notification",title:(0,m.__)("Join our FREE webinar for SEO success","wordpress-seo"),image:t,url:s,...a},(0,m.__)("Feeling lost when it comes to optimizing your site for the search engines? Join our FREE webinar to gain the confidence that you need in order to start optimizing like a pro! You'll obtain the knowledge and tools to start effectively implementing SEO.","wordpress-seo")," ",(0,c.createElement)("a",{href:s,target:"_blank",rel:"noreferrer"},(0,m.__)("Sign up today!","wordpress-seo")));wa.propTypes={store:y().string,image:y().elementType,url:y().string.isRequired};const ba=wa,Ea=(e="yoast-seo/editor")=>{const t=(0,i.select)(e).isPromotionActive("black-friday-2024-promotion"),s=(0,i.select)(e).isAlertDismissed("black-friday-2024-promotion");return t?s:((e="yoast-seo/editor")=>{const t=(0,i.select)(e).isPromotionActive("black-friday-2023-checklist"),s=(0,i.select)(e).isAlertDismissed("black-friday-2023-sidebar-checklist");return!t||s})(e)},va=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{d:"M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z"}))})),_a=(e=null)=>(0,c.useMemo)((()=>{const t={role:"img","aria-hidden":"true"};return null!==e&&(t.focusable=e?"true":"false"),t}),[e]),ka=({id:e,postTypeName:t,children:s,title:a,isOpen:n,close:r,open:o,shouldCloseOnClickOutside:i,showChangesWarning:l,SuffixHeroIcon:d})=>(0,c.createElement)(p.Fragment,null,n&&(0,c.createElement)(dt.LocationProvider,{value:"modal"},(0,c.createElement)(ls,{title:a,onRequestClose:r,additionalClassName:"yoast-collapsible-modal yoast-post-settings-modal",id:"id",shouldCloseOnClickOutside:i},(0,c.createElement)("div",{className:"yoast-content-container"},(0,c.createElement)("div",{className:"yoast-modal-content"},s)),(0,c.createElement)("div",{className:"yoast-notice-container"},(0,c.createElement)("hr",null),(0,c.createElement)("div",{className:"yoast-button-container"},l&&(0,c.createElement)("p",null,/* Translators: %s translates to the Post Label in singular form */ (0,m.sprintf)((0,m.__)("Make sure to save your %s for changes to take effect","wordpress-seo"),t)),(0,c.createElement)("button",{className:"yoast-button yoast-button--primary yoast-button--post-settings-modal",type:"button",onClick:r},/* Translators: %s translates to the Post Label in singular form */ (0,m.sprintf)((0,m.__)("Return to your %s","wordpress-seo"),t)))))),(0,c.createElement)(zt,{id:e+"-open-button",title:a,SuffixHeroIcon:d,suffixIcon:d?null:{size:"20px",icon:"pencil-square"},onClick:o}));ka.propTypes={id:y().string.isRequired,postTypeName:y().string.isRequired,children:y().oneOfType([y().node,y().arrayOf(y().node)]).isRequired,title:y().string.isRequired,isOpen:y().bool.isRequired,open:y().func.isRequired,close:y().func.isRequired,shouldCloseOnClickOutside:y().bool,showChangesWarning:y().bool,SuffixHeroIcon:y().object},ka.defaultProps={shouldCloseOnClickOutside:!0,showChangesWarning:!0};const xa=ka,Sa=(0,Mt.compose)([(0,i.withSelect)(((e,t)=>{const{getPostOrPageString:s,getIsModalOpen:a}=e("yoast-seo/editor");return{postTypeName:s(),isOpen:a(t.id)}})),(0,i.withDispatch)(((e,t)=>{const{openEditorModal:s,closeEditorModal:a}=e("yoast-seo/editor");return{open:()=>s(t.id),close:a}}))])(xa),Ra=()=>{const e=(0,i.useSelect)((e=>e("yoast-seo/editor").getEstimatedReadingTime()),[]),t=(0,p.useMemo)((()=>(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-estimated_reading_time","")),[]);return(0,c.createElement)(Kt.InsightsCard,{amount:e,unit:(0,m._n)("minute","minutes",e,"wordpress-seo"),title:(0,m.__)("Reading time","wordpress-seo"),linkTo:t /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about reading time","wordpress-seo")})},Ta=(0,Ht.makeOutboundLink)();function Ca(e,t,s){const a=function(e){switch(e){case me.DIFFICULTY.FAIRLY_DIFFICULT:case me.DIFFICULTY.DIFFICULT:case me.DIFFICULTY.VERY_DIFFICULT:return(0,m.__)("Try to make shorter sentences, using less difficult words to improve readability","wordpress-seo");case me.DIFFICULTY.NO_DATA:return(0,m.__)("Continue writing to get insight into the readability of your text!","wordpress-seo");default:return(0,m.__)("Good job!","wordpress-seo")}}(t);return(0,c.createElement)("span",null,function(e,t){return-1===e?(0,m.sprintf)((0,m.__)("Your text should be slightly longer to calculate your Flesch reading ease score.","wordpress-seo")):(0,m.sprintf)( /* Translators: %1$s expands to the numeric Flesch reading ease score, %2$s expands to the easiness of reading (e.g. 'easy' or 'very difficult'). */ (0,m.__)("The copy scores %1$s in the test, which is considered %2$s to read.","wordpress-seo"),e,function(e){switch(e){case me.DIFFICULTY.NO_DATA:return(0,m.__)("no data","wordpress-seo");case me.DIFFICULTY.VERY_EASY:return(0,m.__)("very easy","wordpress-seo");case me.DIFFICULTY.EASY:return(0,m.__)("easy","wordpress-seo");case me.DIFFICULTY.FAIRLY_EASY:return(0,m.__)("fairly easy","wordpress-seo");case me.DIFFICULTY.OKAY:return(0,m.__)("okay","wordpress-seo");case me.DIFFICULTY.FAIRLY_DIFFICULT:return(0,m.__)("fairly difficult","wordpress-seo");case me.DIFFICULTY.DIFFICULT:return(0,m.__)("difficult","wordpress-seo");case me.DIFFICULTY.VERY_DIFFICULT:return(0,m.__)("very difficult","wordpress-seo")}}(t))}(e,t)," ",t>=me.DIFFICULTY.FAIRLY_DIFFICULT?(0,c.createElement)(Ta,{href:s},a+"."):a)}const Ia=()=>{let e=(0,i.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseScore()),[]);const t=(0,p.useMemo)((()=>(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease","")),[]),s=(0,i.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseDifficulty()),[e]),a=(0,p.useMemo)((()=>{const t=(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease_article","");return Ca(e,s,t)}),[e,s]);return-1===e&&(e="?"),(0,c.createElement)(Kt.InsightsCard,{amount:e,unit:(0,m.__)("out of 100","wordpress-seo"),title:(0,m.__)("Flesch reading ease","wordpress-seo"),linkTo:t /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about Flesch reading ease","wordpress-seo"),description:a})};let La,Pa,Aa,Oa;const Fa=/<(\/)?(\w+)\s*(\/)?>/g;function Ma(e,t,s,a,n){return{element:e,tokenStart:t,tokenLength:s,prevOffset:a,leadingTextStart:n,children:[]}}function Da(){const e=La.length-Pa;0!==e&&Aa.push(La.substring(Pa,Pa+e))}function Na(e){const{element:t,tokenStart:s,tokenLength:a,prevOffset:n,children:r}=e,o=Oa[Oa.length-1],i=La.substring(o.prevOffset,s);i&&o.children.push(i),o.children.push((0,p.cloneElement)(t,null,...r)),o.prevOffset=n||s+a}function qa(e){const t=function(){const e=Fa.exec(La);if(null===e)return["no-more-tokens"];const t=e.index,[s,a,n,r]=e,o=s.length;return r?["self-closed",n,t,o]:a?["closer",n,t,o]:["opener",n,t,o]}(),[s,a,n,r]=t,o=Oa.length,i=n>Pa?Pa:null;if(!e[a])return Da(),!1;switch(s){case"no-more-tokens":if(0!==o){const{leadingTextStart:e,tokenStart:t}=Oa.pop();Aa.push(La.substring(e,e+t))}return Da(),!1;case"self-closed":return 0===o?(null!==i&&Aa.push(La.substring(i,n)),Aa.push(e[a]),Pa=n+r,!0):(Na(Ma(e[a],n,r)),Pa=n+r,!0);case"opener":return Oa.push(Ma(e[a],n,r,n+r,i)),Pa=n+r,!0;case"closer":if(1===o)return function(e){const{element:t,leadingTextStart:s,prevOffset:a,tokenStart:n,children:r}=Oa.pop(),o=e?La.substring(a,e):La.substring(a);o&&r.push(o),null!==s&&Aa.push(La.substring(s,n)),Aa.push((0,p.cloneElement)(t,null,...r))}(n),Pa=n+r,!0;const t=Oa.pop(),s=La.substring(t.prevOffset,n);t.children.push(s),t.prevOffset=n+r;const l=Ma(t.element,t.tokenStart,t.tokenLength,n+r);return l.children=t.children,Na(l),Pa=n+r,!0;default:return Da(),!1}}const Ua=(e,t)=>{if(La=e,Pa=0,Aa=[],Oa=[],Fa.lastIndex=0,!(e=>{const t="object"==typeof e,s=t&&Object.values(e);return t&&s.length&&s.every((e=>(0,p.isValidElement)(e)))})(t))throw new TypeError("The conversionMap provided is not valid. It must be an object with values that are WPElements");do{}while(qa(t));return(0,p.createElement)(p.Fragment,null,...Aa)},Ba=({data:e,itemScreenReaderText:t,className:s,...a})=>{const n=(0,p.useMemo)((()=>{var t,s;return null!==(t=null===(s=(0,k.maxBy)(e,"number"))||void 0===s?void 0:s.number)&&void 0!==t?t:0}),[e]);return(0,c.createElement)("ul",{className:Bt()("yoast-data-model",s),...a},e.map((({name:e,number:s})=>(0,c.createElement)("li",{key:`${e}_dataItem`,style:{"--yoast-width":s/n*100+"%"}},e,(0,c.createElement)("span",null,s),t&&(0,c.createElement)("span",{className:"screen-reader-text"},(0,m.sprintf)(t,s))))))};Ba.propTypes={data:y().arrayOf(y().shape({name:y().string.isRequired,number:y().number.isRequired})),itemScreenReaderText:y().string,className:y().string},Ba.defaultProps={data:[],itemScreenReaderText:"",className:""};const $a=Ba,Wa=(0,Ht.makeOutboundLink)(),Ka=({location:e})=>{const t=(0,i.useSelect)((e=>{var t,s;return null===(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getPreference("isProminentWordsAvailable",!1))||void 0===t||t}),[]),s=(0,i.useSelect)((e=>e("yoast-seo/editor").getPreference("shouldUpsell",!1)),[]),a=(0,p.useMemo)((()=>(0,k.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${e}-prominent_words`,"")),[e]),n=(0,p.useMemo)((()=>{const e=(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-keyword_research_link","");return Ua((0,m.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,m.__)("Read our %1$sultimate guide to keyword research%2$s to learn more about keyword research and keyword strategy.","wordpress-seo"),"",""),{a:(0,c.createElement)(Wa,{href:e})})}),[]),r=(0,p.useMemo)((()=>Ua((0,m.sprintf)( // translators: %1$s expands to a starting `b` tag, %1$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,m.__)("With %1$s%3$s%2$s, this section will show you which words occur most often in your text. By checking these prominent words against your intended keyword(s), you'll know how to edit your text to be more focused.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,c.createElement)("b",null)})),[]),o=(0,i.useSelect)((e=>{var t,s;return null!==(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getProminentWords())&&void 0!==t?t:[]}),[]),l=(0,p.useMemo)((()=>{const e=(0,m.sprintf)( // translators: %1$s expands to Yoast SEO Premium. (0,m.__)("Get %s to enjoy the benefits of prominent words","wordpress-seo"),"Yoast SEO Premium").split(/\s+/);return e.map(((t,s)=>({name:t,number:e.length-s})))}),[]),d=(0,p.useMemo)((()=>s?l:o.map((({word:e,occurrence:t})=>({name:e,number:t})))),[o,l]);if(!t)return null;const{locationContext:u}=(0,dt.useRootContext)();return(0,c.createElement)("div",{className:"yoast-prominent-words"},(0,c.createElement)("div",{className:"yoast-field-group__title"},(0,c.createElement)("b",null,(0,m.__)("Prominent words","wordpress-seo"))),!s&&(0,c.createElement)("p",null,0===d.length?(0,m.__)("Once you add a bit more copy, we'll give you a list of words that occur the most in the content. These give an indication of what your content focuses on.","wordpress-seo"):(0,m.__)("The following words occur the most in the content. These give an indication of what your content focuses on. If the words differ a lot from your topic, you might want to rewrite your content accordingly.","wordpress-seo")),s&&(0,c.createElement)("p",null,r),s&&(0,c.createElement)(Wa,{href:(0,Nt.addQueryArgs)(a,{context:u}),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2",className:"yoast-button yoast-button-upsell"},(0,m.sprintf)( // translators: %s expands to `Premium` (part of add-on name). (0,m.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,c.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,c.createElement)("p",null,n),(0,c.createElement)($a,{data:d,itemScreenReaderText:/* translators: Hidden accessibility text; %d expands to the number of occurrences. */ (0,m.__)("%d occurrences","wordpress-seo"),"aria-label":(0,m.__)("Prominent words","wordpress-seo"),className:s?"yoast-data-model--upsell":null}))};Ka.propTypes={location:y().string.isRequired};const Ya=Ka,za=(0,Ht.makeOutboundLink)(),Ha=({location:e})=>{const t=(0,p.useMemo)((()=>(0,k.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${e}-text_formality`,"")),[e]),s=(0,p.useMemo)((()=>Ua((0,m.sprintf)( // Translators: %1$s expands to a starting `b` tag, %2$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,m.__)("%1$s%3$s%2$s will help you assess the formality level of your text.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,c.createElement)("b",null)})),[]);return(0,c.createElement)(p.Fragment,null,(0,c.createElement)("div",null,(0,c.createElement)("p",null,s),(0,c.createElement)(za,{href:t,className:"yoast-button yoast-button-upsell"},(0,m.sprintf)( // Translators: %s expands to `Premium` (part of add-on name). (0,m.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,c.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))))};Ha.propTypes={location:y().string.isRequired};const ja=Ha,Va=({location:e,name:t})=>{const s=(0,i.useSelect)((e=>e("yoast-seo/editor").isFormalitySupported()),[]),a=fe().isPremium,n=a?(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_premium",""):(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_free",""),r=(0,m.__)("Read more about text formality.","wordpress-seo");return s?(0,c.createElement)("div",{className:"yoast-text-formality"},(0,c.createElement)("div",{className:"yoast-field-group__title"},(0,c.createElement)("b",null,(0,m.__)("Text formality","wordpress-seo")),(0,c.createElement)(Kt.HelpIcon,{linkTo:n,linkText:r})),a?(0,c.createElement)(u.Slot,{name:t}):(0,c.createElement)(ja,{location:e})):null};Va.propTypes={location:y().string.isRequired,name:y().string.isRequired};const Ga=Va,Za=()=>{const e=(0,i.useSelect)((e=>e("yoast-seo/editor").getTextLength()),[]),t=(0,p.useMemo)((()=>(0,k.get)(window,"wpseoAdminL10n.shortlinks-insights-word_count","")),[]);let s=(0,m._n)("word","words",e.count,"wordpress-seo"),a=(0,m.__)("Word count","wordpress-seo"),n=(0,m.__)("Learn more about word count","wordpress-seo");return"character"===e.unit&&(s=(0,m._n)("character","characters",e.count,"wordpress-seo"),a=(0,m.__)("Character count","wordpress-seo"), /* translators: Hidden accessibility text. */ n=(0,m.__)("Learn more about character count","wordpress-seo")),(0,c.createElement)(Kt.InsightsCard,{amount:e.count,unit:s,title:a,linkTo:t,linkText:n})},Xa=ct()(va)` width: 18px; height: 18px; margin: 3px; `,Qa=({location:e})=>{const t=(0,i.useSelect)((e=>e("yoast-seo/editor").getIsElementorEditor()),[]),s=(0,i.useSelect)((e=>e("yoast-seo/editor").isFleschReadingEaseAvailable()),[]),a=_a();return(0,c.createElement)(Sa,{title:(0,m.__)("Insights","wordpress-seo"),id:`yoast-insights-modal-${e}`,shouldCloseOnClickOutside:!t,showChangesWarning:!1,SuffixHeroIcon:(0,c.createElement)(Xa,{className:"yst-text-slate-500",...a})},(0,c.createElement)("div",{className:"yoast-insights yoast-modal-content--columns"},(0,c.createElement)(Ya,{location:e}),(0,c.createElement)("div",null,s&&(0,c.createElement)("div",{className:"yoast-insights-row"},(0,c.createElement)(Ia,null)),(0,c.createElement)("div",{className:"yoast-insights-row yoast-insights-row--columns"},(0,c.createElement)(Ra,null),(0,c.createElement)(Za,null)),(0,_e.isFeatureEnabled)("TEXT_FORMALITY")&&(0,c.createElement)(Ga,{location:e,name:"YoastTextFormalityMetabox"}))))};Qa.propTypes={location:y().string},Qa.defaultProps={location:"sidebar"};const Ja=Qa;function en(e){return 0===e.message.length?null:(0,c.createElement)(Kt.Alert,{type:e.type},e.message)}en.propTypes={message:y().oneOfType([y().array,y().string]).isRequired,type:y().string.isRequired};const tn=(0,i.withSelect)((e=>{const{getWarningMessage:t}=e("yoast-seo/editor");return{message:t(),type:"info"}}))(en),sn=({children:e})=>(0,c.createElement)("div",null,e);sn.propTypes={renderPriority:y().number.isRequired,children:y().node.isRequired};const an=sn,nn=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{fillRule:"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z",clipRule:"evenodd"}))})),rn=window.yoast.searchMetadataPreviews,on=ct()(Kt.StyledSection)` &${Kt.StyledSectionBase} { padding: 0; & ${Kt.StyledHeading} { ${(0,Ht.getDirectionalStyle)("padding-left","padding-right")}: 20px; margin-left: ${(0,Ht.getDirectionalStyle)("0","20px")}; } } `,ln=({children:e,title:t,icon:s,hasPaperStyle:a,shoppingData:n})=>(0,c.createElement)(on,{headingLevel:3,headingText:t,headingIcon:s,headingIconColor:"#555",hasPaperStyle:a,shoppingData:n},e);ln.propTypes={children:y().element,title:y().string,icon:y().string,hasPaperStyle:y().bool,shoppingData:y().object},ln.defaultProps={hasPaperStyle:!0,shoppingData:null};const cn=ln,dn=window.wp.sanitize,{stripHTMLTags:un}=Ht.strings,pn=(0,k.memoize)(((e,t)=>0===e?k.noop:(0,k.debounce)((s=>t(s,e)),500))),mn=({link:e,text:t})=>(0,c.createElement)(h.Root,null,(0,c.createElement)("p",null,t),(0,c.createElement)(h.Button,{href:e,as:"a",className:"yst-gap-2 yst-mb-5 yst-mt-2",variant:"upsell",target:"_blank",rel:"noopener"},(0,c.createElement)(f,{className:"yst-w-4 yst-h-4 yst--ml-1 yst-shrink-0"}),(0,m.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,m.__)("Unlock with %1$s","wordpress-seo"),"Yoast WooCommerce SEO")));mn.propTypes={link:y().string.isRequired,text:y().string.isRequired};const hn=mn,gn=function(e,t){let s=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(s=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[s]&&(e.url=e.url.slice(0,s)+e.url.slice(s+1)),function(e){const t=(0,k.get)(window,["YoastSEO","app","pluggable"],!1);if(!t||!(0,k.get)(window,["YoastSEO","app","pluggable","loaded"],!1))return function(e){const t=(0,k.get)(window,["YoastSEO","wp","replaceVarsPlugin","replaceVariables"],k.identity);return{url:e.url,title:un(t(e.title)),description:un(t(e.description)),filteredSEOTitle:e.filteredSEOTitle?un(t(e.filteredSEOTitle)):""}}(e);const s=t._applyModifications.bind(t);return{url:e.url,title:un(s("data_page_title",e.title)),description:un(s("data_meta_desc",e.description)),filteredSEOTitle:e.filteredSEOTitle?un(s("data_page_title",e.filteredSEOTitle)):""}}(e)},yn=(0,Mt.compose)([(0,i.withSelect)((function(e){const{getBaseUrlFromSettings:t,getDateFromSettings:s,getFocusKeyphrase:a,getRecommendedReplaceVars:n,getReplaceVars:r,getShoppingData:o,getSiteIconUrlFromSettings:i,getSnippetEditorData:l,getSnippetEditorMode:c,getSnippetEditorPreviewImageUrl:d,getSnippetEditorWordsToHighlight:u,isCornerstoneContent:p,getIsTerm:m,getContentLocale:h,getSiteName:g}=e("yoast-seo/editor"),y=r();return y.forEach((e=>{""!==e.value||["title","excerpt","excerpt_only"].includes(e.name)||(e.value="%%"+e.name+"%%")})),{baseUrl:t(),data:l(),date:s(),faviconSrc:i(),keyword:a(),mobileImageSrc:d(),mode:c(),recommendedReplacementVariables:n(),replacementVariables:y,shoppingData:o(),wordsToHighlight:u(),isCornerstone:p(),isTaxonomy:m(),locale:h(),siteName:g()}})),(0,i.withDispatch)((function(e,t,{select:s}){const{updateData:a,switchMode:n,updateAnalysisData:r,findCustomFields:o}=e("yoast-seo/editor"),i=e("core/editor"),l=s("yoast-seo/editor").getPostId();return{onChange:(e,t)=>{switch(e){case"mode":n(t);break;case"slug":a({slug:t}),i&&i.editPost({slug:t});break;default:a({[e]:t})}},onChangeAnalysisData:r,onReplacementVariableSearchChange:pn(l,o)}}))])((e=>{const t=(0,i.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/product-google-preview-metabox")),[]),s=(0,i.useSelect)((e=>e("yoast-seo/editor").getIsWooSeoUpsell()),[]),a=(0,m.__)("Want an enhanced Google preview of how your WooCommerce products look in the search results?","wordpress-seo");return(0,c.createElement)(dt.LocationConsumer,null,(n=>(0,c.createElement)(cn,{icon:"eye",hasPaperStyle:e.hasPaperStyle},(0,c.createElement)(c.Fragment,null,s&&(0,c.createElement)(hn,{link:t,text:a}),(0,c.createElement)(rn.SnippetEditor,{...e,descriptionPlaceholder:(0,m.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:gn,showCloseButton:!1,idSuffix:n})))))})),fn={name:"author_first_name",label:"Author first name",placeholder:"%%author_first_name%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.author_first_name","")},regexp:new RegExp("%%author_first_name%%","g")},wn={name:"author_last_name",label:"Author last name",placeholder:"%%author_last_name%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.author_last_name","")},regexp:new RegExp("%%author_last_name%%","g")},bn={name:"currentdate",label:"Current date",placeholder:"%%currentdate%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentdate","")},regexp:new RegExp("%%currentdate%%","g")},En={name:"currentday",label:"Current day",placeholder:"%%currentday%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentday","")},regexp:new RegExp("%%currentday%%","g")},vn={name:"currentmonth",label:"Current month",placeholder:"%%currentmonth%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentmonth","")},regexp:new RegExp("%%currentmonth%%","g")},kn={name:"category",label:"Category",placeholder:"%%category%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.category","")},regexp:new RegExp("%%category%%","g")},xn={name:"category_title",label:"Category Title",placeholder:"%%category_title%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.category_title","")},regexp:new RegExp("%%category_title%%","g")},Sn={name:"currentyear",label:"Current year",placeholder:"%%currentyear%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentyear","")},regexp:new RegExp("%%currentyear%%","g")},Rn={name:"date",label:"Date",placeholder:"%%date%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.date","")},regexp:new RegExp("%%date%%","g")},Tn={name:"excerpt",label:"Excerpt",placeholder:"%%excerpt%%",aliases:[{name:"excerpt_only",label:"Excerpt only",placeholder:"%%excerpt_only%%"}],getReplacement:function(){return(0,i.select)("yoast-seo/editor").getEditorDataExcerptWithFallback()},regexp:new RegExp("%%excerpt%%|%%excerpt_only%%","g")},Cn={name:"focuskw",label:"Focus keyphrase",placeholder:"%%focuskw%%",aliases:[],getReplacement:function(){return(0,i.select)("yoast-seo/editor").getFocusKeyphrase()},regexp:new RegExp("%%focuskw%%|%%keyword%%","g")},In={name:"id",label:"ID",placeholder:"%%id%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.id","")},regexp:new RegExp("%%id%%","g")},Ln={name:"modified",label:"Modified",placeholder:"%%modified%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.modified","")},regexp:new RegExp("%%modified%%","g")},Pn={name:"name",label:"Name",placeholder:"%%name%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.name","")},regexp:new RegExp("%%name%%","g")},An={name:"page",label:"Page",placeholder:"%%page%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.page","")},regexp:new RegExp("%%page%%","g")},On={name:"pagenumber",label:"Pagenumber",placeholder:"%%pagenumber%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pagenumber","")},regexp:new RegExp("%%pagenumber%%","g")},Fn={name:"pagetotal",label:"Pagetotal",placeholder:"%%pagetotal%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pagetotal","")},regexp:new RegExp("%%pagetotal%%","g")},Mn={name:"permalink",label:"Permalink",placeholder:"%%permalink%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.permalink","")},regexp:new RegExp("%%permalink%%","g")},Dn={name:"post_content",label:"Post Content",placeholder:"%%post_content%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_content","")},regexp:new RegExp("%%post_content%%","g")},Nn={name:"post_day",label:"Post Day",placeholder:"%%post_day%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_day","")},regexp:new RegExp("%%post_day%%","g")},qn={name:"post_month",label:"Post Month",placeholder:"%%post_month%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_month","")},regexp:new RegExp("%%post_month%%","g")},Un={name:"post_year",label:"Post Year",placeholder:"%%post_year%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_year","")},regexp:new RegExp("%%post_year%%","g")},Bn={name:"pt_plural",label:"Post type (plural)",placeholder:"%%pt_plural%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pt_plural","")},regexp:new RegExp("%%pt_plural%%","g")},$n={name:"pt_single",label:"Post type (singular)",placeholder:"%%pt_single%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pt_single","")},regexp:new RegExp("%%pt_single%%","g")},Wn={name:"primary_category",label:"Primary category",placeholder:"%%primary_category%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.primary_category","")},regexp:new RegExp("%%primary_category%%","g")},Kn={name:"searchphrase",label:"Search phrase",placeholder:"%%searchphrase%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.searchphrase","")},regexp:new RegExp("%%searchphrase%%","g")},Yn={name:"sep",label:"Separator",placeholder:"%%sep%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sep","")},regexp:new RegExp("%%sep%%(\\s*%%sep%%)*","g")},zn={name:"sitedesc",label:"Tagline",placeholder:"%%sitedesc%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sitedesc","")},regexp:new RegExp("%%sitedesc%%","g")},Hn={name:"sitename",label:"Site title",placeholder:"%%sitename%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sitename","")},regexp:new RegExp("%%sitename%%","g")},jn={name:"tag",label:"Tag",placeholder:"%%tag%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.tag","")},regexp:new RegExp("%%tag%%","g")},Vn={name:"term404",label:"Term404",placeholder:"%%term404%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term404","")},regexp:new RegExp("%%term404%%","g")},Gn={name:"term_description",label:"Term description",placeholder:"%%term_description%%",aliases:[{name:"tag_description",label:"Tag description",placeholder:"%%tag_description%%"},{name:"category_description",label:"Category description",placeholder:"%%category_description%%"}],getReplacement:function(){return(0,k.get)(window,"YoastSEO.app.rawData.text","")},regexp:new RegExp("%%term_description%%|%%tag_description%%|%%category_description%%","g")},Zn={name:"term_hierarchy",label:"Term hierarchy",placeholder:"%%term_hierarchy%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term_hierarchy","")},regexp:new RegExp("%%term_hierarchy%%","g")},Xn={name:"term_title",label:"Term title",placeholder:"%%term_title%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term_title","")},regexp:new RegExp("%%term_title%%","g")},Qn={name:"title",label:"Title",placeholder:"%%title%%",aliases:[],getReplacement:function(){return(0,i.select)("yoast-seo/editor").getEditorDataTitle()},regexp:new RegExp("%%title%%","g")},Jn={name:"user_description",label:"User description",placeholder:"%%user_description%%",aliases:[],getReplacement:function(){return(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.user_description","")},regexp:new RegExp("%%user_description%%","g")};var er={source:"wpseoScriptData.analysis.plugins.replaceVars",scope:[],aliases:[]},tr=function(e,t,s){this.placeholder=e,this.replacement=t,this.options=(0,k.defaults)(s,er)};tr.prototype.getPlaceholder=function(e){return(e=e||!1)&&this.hasAlias()?this.placeholder+"|"+this.getAliases().join("|"):this.placeholder},tr.prototype.setSource=function(e){this.options.source=e},tr.prototype.hasScope=function(){return!(0,k.isEmpty)(this.options.scope)},tr.prototype.addScope=function(e){this.hasScope()||(this.options.scope=[]),this.options.scope.push(e)},tr.prototype.inScope=function(e){return!this.hasScope()||(0,k.indexOf)(this.options.scope,e)>-1},tr.prototype.hasAlias=function(){return!(0,k.isEmpty)(this.options.aliases)},tr.prototype.addAlias=function(e){this.hasAlias()||(this.options.aliases=[]),this.options.aliases.push(e)},tr.prototype.getAliases=function(){return this.options.aliases};const sr=tr,ar="replaceVariablePlugin";let nr=null,rr=null;const or=e=>{["content","title","snippet_title","snippet_meta","primary_category","data_page_title","data_meta_desc","excerpt"].forEach((t=>{Ce(t,e,ar,10)}))},ir=(e="")=>{switch(""===e&&(e=(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.scope","")),e){case"post":case"page":return["authorFirstName","authorLastName","category","categoryTitle","currentDate","currentDay","currentMonth","currentYear","date","excerpt","id","focusKeyphrase","modified","name","page","primaryCategory","pageNumber","pageTotal","permalink","postContent","postDay","postMonth","postYear","postTypeNamePlural","postTypeNameSingular","searchPhrase","separator","siteDescription","siteName","tag","title","userDescription"]}return[]},lr=e=>or((t=>t.replace(new RegExp(e.placeholder,"g"),e.replacement))),cr=()=>{if(null===rr){rr=[];const t=(0,k.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.hidden_replace_vars",[]);(null===nr&&(nr=ir().map((t=>null==e?void 0:e[t])).filter(Boolean)),nr).forEach((e=>{const s=t.includes(e.name);rr.push({name:e.name,label:e.label,value:e.placeholder,hidden:s}),e.aliases.forEach((e=>{rr.push({name:e.name,label:e.label,value:e.placeholder,hidden:s})}))}))}return rr},{stripHTMLTags:dr}=Ht.strings,ur=(e,t)=>{const s=(0,i.select)("yoast-seo/editor").getSnippetEditorTemplates();""===e.title&&(e.title=s.title),""===e.description&&(e.description=s.description);let a=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(a=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[a]&&(e.url=e.url.slice(0,a)+e.url.slice(a+1)),{url:e.url,title:dr(Le("data_page_title",e.title)),description:dr(Le("data_meta_desc",e.description)),filteredSEOTitle:dr(Le("data_page_title",e.filteredSEOTitle))}},pr=({isLoading:e,onLoad:t,location:s,...a})=>((0,p.useEffect)((()=>{setTimeout((()=>{e&&t()}))})),e?null:(0,c.createElement)(cn,{icon:"eye",hasPaperStyle:a.hasPaperStyle},(0,c.createElement)(rn.SnippetEditor,{...a,descriptionPlaceholder:(0,m.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:ur,showCloseButton:!1,idSuffix:s})));pr.propTypes={isLoading:y().bool.isRequired,onLoad:y().func.isRequired,hasPaperStyle:y().bool.isRequired,location:y().string.isRequired};const mr=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getBaseUrlFromSettings:t,getDateFromSettings:s,getEditorDataImageUrl:a,getFocusKeyphrase:n,getRecommendedReplaceVars:r,getSiteIconUrlFromSettings:o,getSnippetEditorData:i,getSnippetEditorIsLoading:l,getSnippetEditorMode:c,getSnippetEditorWordsToHighlight:d,isCornerstoneContent:u,getContentLocale:p,getSiteName:m}=e("yoast-seo/editor");return{baseUrl:t(),data:i(),date:s(),faviconSrc:o(),isLoading:l(),keyword:n(),mobileImageSrc:a(),mode:c(),recommendedReplacementVariables:r(),replacementVariables:cr(),wordsToHighlight:d(),isCornerstone:u(),locale:p(),siteName:m()}})),(0,i.withDispatch)((e=>{const{updateData:t,switchMode:s,updateAnalysisData:a,loadSnippetEditorData:n}=e("yoast-seo/editor");return{onChange:(e,a)=>{switch(e){case"mode":s(a);break;case"slug":t({slug:a});break;default:t({[e]:a})}},onChangeAnalysisData:a,onLoad:n}})),us()])(pr),hr=ct()(nn)` width: 18px; height: 18px; margin: 3px; `,gr=()=>{const e=_a(),t=(0,i.useSelect)((e=>e("yoast-seo/editor").getIsElementorEditor()),[]);return(0,c.createElement)(Sa,{title:(0,m.__)("Search appearance","wordpress-seo"),id:"yoast-search-appearance-modal",shouldCloseOnClickOutside:!1,SuffixHeroIcon:(0,c.createElement)(hr,{className:"yst-text-slate-500",...e})},!0===t&&(0,c.createElement)(mr,{showCloseButton:!1,hasPaperStyle:!1}),!1===t&&(0,c.createElement)(yn,{showCloseButton:!1,hasPaperStyle:!1}))},yr=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{d:"M15 8a3 3 0 10-2.977-2.63l-4.94 2.47a3 3 0 100 4.319l4.94 2.47a3 3 0 10.895-1.789l-4.94-2.47a3.027 3.027 0 000-.74l4.94-2.47C13.456 7.68 14.19 8 15 8z"}))})),fr=ct().p` color: #606770; flex-shrink: 0; font-size: 12px; line-height: 16px; overflow: hidden; padding: 0; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; margin: 0; position: ${e=>"landscape"===e.mode?"relative":"static"}; `,wr=e=>{const{siteUrl:t}=e;return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("span",{className:"screen-reader-text"},t),(0,c.createElement)(fr,{"aria-hidden":"true"},(0,c.createElement)("span",null,t)))};wr.propTypes={siteUrl:y().string.isRequired};const br=wr,Er=window.yoast.socialMetadataForms,vr=window.yoast.styleGuide,_r=ct().img` && { max-width: ${e=>e.width}px; height: ${e=>e.height}px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: none; } `,kr=ct().img` &&{ height: 100%; position: absolute; width: 100%; object-fit: cover; } `,xr=ct().div` padding-bottom: ${e=>e.aspectRatio}%; `,Sr=e=>{const{imageProps:t,width:s,height:a,imageMode:n}=e;return"landscape"===n?(0,c.createElement)(xr,{aspectRatio:t.aspectRatio},(0,c.createElement)(kr,{src:t.src,alt:t.alt})):(0,c.createElement)(_r,{src:t.src,alt:t.alt,width:s,height:a,imageProperties:t})};function Rr(e,t,s){return"landscape"===s?{widthRatio:t.width/e.landscapeWidth,heightRatio:t.height/e.landscapeHeight}:"portrait"===s?{widthRatio:t.width/e.portraitWidth,heightRatio:t.height/e.portraitHeight}:{widthRatio:t.width/e.squareWidth,heightRatio:t.height/e.squareHeight}}function Tr(e,t){return t.widthRatio<=t.heightRatio?{width:Math.round(e.width/t.widthRatio),height:Math.round(e.height/t.widthRatio)}:{width:Math.round(e.width/t.heightRatio),height:Math.round(e.height/t.heightRatio)}}async function Cr(e,t,s=!1){const a=await function(e){return new Promise(((t,s)=>{const a=new Image;a.onload=()=>{t({width:a.width,height:a.height})},a.onerror=s,a.src=e}))}(e);let n=s?"landscape":"square";"Facebook"===t&&(n=(0,Er.determineFacebookImageMode)(a));const r=function(e){return"Twitter"===e?Er.TWITTER_IMAGE_SIZES:Er.FACEBOOK_IMAGE_SIZES}(t),o=function(e,t,s){return"square"===s&&t.width===t.height?{width:e.squareWidth,height:e.squareHeight}:Tr(t,Rr(e,t,s))}(r,a,n);return{mode:n,height:o.height,width:o.width}}async function Ir(e,t,s=!1){try{return{imageProperties:await Cr(e,t,s),status:"loaded"}}catch(e){return{imageProperties:null,status:"errored"}}}Sr.propTypes={imageProps:y().shape({src:y().string.isRequired,alt:y().string.isRequired,aspectRatio:y().number.isRequired}).isRequired,width:y().number.isRequired,height:y().number.isRequired,imageMode:y().string},Sr.defaultProps={imageMode:"landscape"};const Lr=ct().div` position: relative; ${e=>"landscape"===e.mode?`max-width: ${e.dimensions.width}`:`min-width: ${e.dimensions.width}; height: ${e.dimensions.height}`}; overflow: hidden; background-color: ${vr.colors.$color_white}; `,Pr=ct().div` box-sizing: border-box; max-width: ${Er.FACEBOOK_IMAGE_SIZES.landscapeWidth}px; height: ${Er.FACEBOOK_IMAGE_SIZES.landscapeHeight}px; background-color: ${vr.colors.$color_grey}; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; display: flex; justify-content: center; align-items: center; text-decoration: underline; font-size: 14px; cursor: pointer; `;class Ar extends c.Component{constructor(e){super(e),this.state={imageProperties:null,status:"loading"},this.socialMedium="Facebook",this.handleFacebookImage=this.handleFacebookImage.bind(this),this.setState=this.setState.bind(this)}async handleFacebookImage(){try{const e=await Ir(this.props.src,this.socialMedium);this.setState(e),this.props.onImageLoaded(e.imageProperties.mode||"landscape")}catch(e){this.setState(e),this.props.onImageLoaded("landscape")}}componentDidUpdate(e){e.src!==this.props.src&&this.handleFacebookImage()}componentDidMount(){this.handleFacebookImage()}retrieveContainerDimensions(e){switch(e){case"square":return{height:Er.FACEBOOK_IMAGE_SIZES.squareHeight+"px",width:Er.FACEBOOK_IMAGE_SIZES.squareWidth+"px"};case"portrait":return{height:Er.FACEBOOK_IMAGE_SIZES.portraitHeight+"px",width:Er.FACEBOOK_IMAGE_SIZES.portraitWidth+"px"};case"landscape":return{height:Er.FACEBOOK_IMAGE_SIZES.landscapeHeight+"px",width:Er.FACEBOOK_IMAGE_SIZES.landscapeWidth+"px"}}}render(){const{imageProperties:e,status:t}=this.state;if("loading"===t||""===this.props.src||"errored"===t)return(0,c.createElement)(Pr,{onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,m.__)("Select image","wordpress-seo"));const s=this.retrieveContainerDimensions(e.mode);return(0,c.createElement)(Lr,{mode:e.mode,dimensions:s,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave,onClick:this.props.onImageClick},(0,c.createElement)(Sr,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:Er.FACEBOOK_IMAGE_SIZES.aspectRatio},width:e.width,height:e.height,imageMode:e.mode}))}}Ar.propTypes={src:y().string,alt:y().string,onImageLoaded:y().func,onImageClick:y().func,onMouseEnter:y().func,onMouseLeave:y().func},Ar.defaultProps={src:"",alt:"",onImageLoaded:k.noop,onImageClick:k.noop,onMouseEnter:k.noop,onMouseLeave:k.noop};const Or=Ar,Fr=ct().span` line-height: ${20}px; min-height : ${20}px; color: #1d2129; font-weight: 600; overflow: hidden; font-size: 16px; margin: 3px 0 0; letter-spacing: normal; white-space: normal; flex-shrink: 0; cursor: pointer; display: -webkit-box; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; `,Mr=ct().p` line-height: ${16}px; min-height : ${16}px; color: #606770; font-size: 14px; padding: 0; text-overflow: ellipsis; margin: 3px 0 0 0; display: -webkit-box; cursor: pointer; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; @media all and ( max-width: ${e=>e.maxWidth} ) { display: none; } `,Dr=e=>{switch(e){case"landscape":return"527px";case"square":case"portrait":return"369px";default:return"476px"}},Nr=ct().div` box-sizing: border-box; display: flex; flex-direction: ${e=>"landscape"===e.mode?"column":"row"}; background-color: #f2f3f5; max-width: 527px; `,qr=ct().div` box-sizing: border-box; background-color: #f2f3f5; margin: 0; padding: 10px 12px; position: relative; border-bottom: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-top: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-right: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border: ${e=>"landscape"===e.mode?"1px solid #dddfe2":""}; display: flex; flex-direction: column; flex-grow: 1; justify-content: ${e=>"landscape"===e.mode?"flex-start":"center"}; font-size: 12px; overflow: hidden; `;class Ur extends c.Component{constructor(e){super(e),this.state={imageMode:null,maxLineCount:0,descriptionLineCount:0},this.facebookTitleRef=d().createRef(),this.onImageLoaded=this.onImageLoaded.bind(this),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}onImageLoaded(e){this.setState({imageMode:e})}getTitleLineCount(){return this.facebookTitleRef.current.offsetHeight/20}maybeSetMaxLineCount(){const{imageMode:e,maxLineCount:t}=this.state,s="landscape"===e?2:5;s!==t&&this.setState({maxLineCount:s})}maybeSetDescriptionLineCount(){const{descriptionLineCount:e,maxLineCount:t,imageMode:s}=this.state,a=this.getTitleLineCount();let n=t-a;"portrait"===s&&(n=5===a?0:4),n!==e&&this.setState({descriptionLineCount:n})}componentDidUpdate(){this.maybeSetMaxLineCount(),this.maybeSetDescriptionLineCount()}render(){const{imageMode:e,maxLineCount:t,descriptionLineCount:s}=this.state;return(0,c.createElement)(Nr,{id:"facebookPreview",mode:e},(0,c.createElement)(Or,{src:this.props.imageUrl||this.props.imageFallbackUrl,alt:this.props.alt,onImageLoaded:this.onImageLoaded,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,c.createElement)(qr,{mode:e},(0,c.createElement)(br,{siteUrl:this.props.siteUrl,mode:e}),(0,c.createElement)(Fr,{ref:this.facebookTitleRef,onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle,lineCount:t},this.props.title),s>0&&(0,c.createElement)(Mr,{maxWidth:Dr(e),onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription,lineCount:s},this.props.description)))}}Ur.propTypes={siteUrl:y().string.isRequired,title:y().string.isRequired,description:y().string,imageUrl:y().string,imageFallbackUrl:y().string,alt:y().string,onSelect:y().func,onImageClick:y().func,onMouseHover:y().func},Ur.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{}};const Br=Ur,$r=ct().div` text-transform: lowercase; color: rgb(83, 100, 113); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; fill: currentcolor; display: flex; flex-direction: row; align-items: flex-end; `,Wr=e=>(0,c.createElement)($r,null,(0,c.createElement)("span",null,e.siteUrl));Wr.propTypes={siteUrl:y().string.isRequired};const Kr=Wr,Yr=(e,t=!0)=>e?`\n\t\t\tmax-width: ${Er.TWITTER_IMAGE_SIZES.landscapeWidth}px;\n\t\t\t${t?"border-bottom: 1px solid #E1E8ED;":""}\n\t\t\tborder-radius: 14px 14px 0 0;\n\t\t\t`:`\n\t\twidth: ${Er.TWITTER_IMAGE_SIZES.squareWidth}px;\n\t\t${t?"border-right: 1px solid #E1E8ED;":""}\n\t\tborder-radius: 14px 0 0 14px;\n\t\t`,zr=ct().div` position: relative; box-sizing: content-box; overflow: hidden; background-color: #e1e8ed; flex-shrink: 0; ${e=>Yr(e.isLarge)} `,Hr=ct().div` display: flex; justify-content: center; align-items: center; box-sizing: border-box; max-width: 100%; margin: 0; padding: 1em; text-align: center; font-size: 1rem; ${e=>Yr(e.isLarge,!1)} `,jr=ct()(Hr)` ${e=>e.isLarge&&`height: ${Er.TWITTER_IMAGE_SIZES.landscapeHeight}px;`} border-top-left-radius: 14px; ${e=>e.isLarge?"border-top-right-radius":"border-bottom-left-radius"}: 14px; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; text-decoration: underline; font-size: 14px; cursor: pointer; `;class Vr extends d().Component{constructor(e){super(e),this.state={status:"loading"},this.socialMedium="Twitter",this.handleTwitterImage=this.handleTwitterImage.bind(this),this.setState=this.setState.bind(this)}async handleTwitterImage(){if(null===this.props.src)return;const e=await Ir(this.props.src,this.socialMedium,this.props.isLarge);this.setState(e)}componentDidUpdate(e){e.src!==this.props.src&&this.handleTwitterImage()}componentDidMount(){this.handleTwitterImage()}render(){const{status:e,imageProperties:t}=this.state;return"loading"===e||""===this.props.src||"errored"===e?(0,c.createElement)(jr,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,m.__)("Select image","wordpress-seo")):(0,c.createElement)(zr,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,c.createElement)(Sr,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:Er.TWITTER_IMAGE_SIZES.aspectRatio},width:t.width,height:t.height,imageMode:t.mode}))}}Vr.propTypes={isLarge:y().bool.isRequired,src:y().string,alt:y().string,onImageClick:y().func,onMouseEnter:y().func,onMouseLeave:y().func},Vr.defaultProps={src:"",alt:"",onMouseEnter:k.noop,onImageClick:k.noop,onMouseLeave:k.noop};const Gr=ct().div` display: flex; flex-direction: column; padding: 12px; justify-content: center; margin: 0; box-sizing: border-box; flex: auto; min-width: 0px; gap:2px; > * { line-height:20px; min-height:20px; font-size:15px; } `,Zr=e=>(0,c.createElement)(Gr,null,e.children);Zr.propTypes={children:y().array.isRequired};const Xr=Zr,Qr=ct().p` white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(15, 20, 25); cursor: pointer; `,Jr=ct().p` max-height: 55px; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(83, 100, 113); display: -webkit-box; cursor: pointer; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @media all and ( max-width: ${Er.TWITTER_IMAGE_SIZES.landscapeWidth}px ) { display: none; } `,eo=ct().div` font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif; font-size: 15px; font-weight: 400; line-height: 20px; max-width: 507px; border: 1px solid #E1E8ED; box-sizing: border-box; border-radius: 14px; color: #292F33; background: #FFFFFF; text-overflow: ellipsis; display: flex; &:hover { background: #f5f8fa; border: 1px solid rgba(136,153,166,.5); } `,to=ct()(eo)` flex-direction: column; max-height: 370px; `,so=ct()(eo)` flex-direction: row; height: 125px; `;class ao extends c.Component{constructor(e){super(e),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}render(){const{isLarge:e,imageUrl:t,imageFallbackUrl:s,alt:a,title:n,description:r,siteUrl:o}=this.props,i=e?to:so;return(0,c.createElement)(i,{id:"twitterPreview"},(0,c.createElement)(Vr,{src:t||s,alt:a,isLarge:e,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,c.createElement)(Xr,null,(0,c.createElement)(Kr,{siteUrl:o}),(0,c.createElement)(Qr,{onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle},n),(0,c.createElement)(Jr,{onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription},r)))}}ao.propTypes={siteUrl:y().string.isRequired,title:y().string.isRequired,description:y().string,isLarge:y().bool,imageUrl:y().string,imageFallbackUrl:y().string,alt:y().string,onSelect:y().func,onImageClick:y().func,onMouseHover:y().func},ao.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{},isLarge:!0};const no=ao,ro=window.yoast.replacementVariableEditor;class oo extends c.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.SocialPreview="Social"===e.socialMediumName?Br:no,this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:e,onTitleChange:t,onSelectImageClick:s,onRemoveImageClick:a,socialMediumName:n,imageWarnings:r,siteUrl:o,description:i,descriptionInputPlaceholder:l,descriptionPreviewFallback:u,imageUrl:p,imageFallbackUrl:m,alt:h,title:g,titleInputPlaceholder:y,titlePreviewFallback:f,replacementVariables:w,recommendedReplacementVariables:b,applyReplacementVariables:E,onReplacementVariableSearchChange:v,isPremium:_,isLarge:k,socialPreviewLabel:x,idSuffix:S,activeMetaTabId:R}=this.props,T=E({title:g||f,description:i||u});return(0,c.createElement)(d().Fragment,null,x&&(0,c.createElement)(Kt.SimulatedLabel,null,x),(0,c.createElement)(this.SocialPreview,{onMouseHover:this.setHoveredField,onSelect:this.setActiveField,onImageClick:s,siteUrl:o,title:T.title,description:T.description,imageUrl:p,imageFallbackUrl:m,alt:h,isLarge:k,activeMetaTabId:R}),(0,c.createElement)(Er.SocialMetadataPreviewForm,{onDescriptionChange:e,socialMediumName:n,title:g,titleInputPlaceholder:y,onRemoveImageClick:a,imageSelected:!!p,imageUrl:p,onTitleChange:t,onSelectImageClick:s,description:i,descriptionInputPlaceholder:l,imageWarnings:r,replacementVariables:w,recommendedReplacementVariables:b,onReplacementVariableSearchChange:v,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:_,setEditorRef:this.setEditorRef,idSuffix:S}))}}oo.propTypes={title:y().string.isRequired,onTitleChange:y().func.isRequired,description:y().string.isRequired,onDescriptionChange:y().func.isRequired,imageUrl:y().string.isRequired,imageFallbackUrl:y().string.isRequired,onSelectImageClick:y().func.isRequired,onRemoveImageClick:y().func.isRequired,socialMediumName:y().string.isRequired,alt:y().string,isPremium:y().bool,imageWarnings:y().array,isLarge:y().bool,siteUrl:y().string,descriptionInputPlaceholder:y().string,titleInputPlaceholder:y().string,descriptionPreviewFallback:y().string,titlePreviewFallback:y().string,replacementVariables:ro.replacementVariablesShape,recommendedReplacementVariables:ro.recommendedReplacementVariablesShape,applyReplacementVariables:y().func,onReplacementVariableSearchChange:y().func,socialPreviewLabel:y().string,idSuffix:y().string,activeMetaTabId:y().string},oo.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,isLarge:!0,siteUrl:"",descriptionInputPlaceholder:"",titleInputPlaceholder:"",descriptionPreviewFallback:"",titlePreviewFallback:"",alt:"",applyReplacementVariables:e=>e,onReplacementVariableSearchChange:null,socialPreviewLabel:"",idSuffix:"",activeMetaTabId:""};const io={},lo=(e,t,{log:s=console.warn}={})=>{io[e]||(io[e]=!0,s(t))},co=(e,t=k.noop)=>{const s={};for(const a in e)Object.hasOwn(e,a)&&Object.defineProperty(s,a,{set:s=>{e[a]=s,t("set",a,s)},get:()=>(t("get",a),e[a])});return s};co({squareWidth:125,squareHeight:125,landscapeWidth:506,landscapeHeight:265,aspectRatio:50.2},((e,t)=>lo(`@yoast/social-metadata-previews/TWITTER_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "TWITTER_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`))),co({squareWidth:158,squareHeight:158,landscapeWidth:527,landscapeHeight:273,portraitWidth:158,portraitHeight:237,aspectRatio:52.2,largeThreshold:{width:446,height:233}},((e,t)=>lo(`@yoast/social-metadata-previews/FACEBOOK_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "FACEBOOK_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`)));const uo=ct().div` max-width: calc(527px + 1.5rem); `,po=e=>{const t="X"===e.socialMediumName?(0,m.__)("X share preview","wordpress-seo"):(0,m.__)("Social share preview","wordpress-seo"),{locationContext:s}=(0,h.useRootContext)();return(0,c.createElement)(h.Root,null,(0,c.createElement)(uo,null,(0,c.createElement)(h.FeatureUpsell,{shouldUpsell:!0,variant:"card",cardLink:(0,Nt.addQueryArgs)(wpseoAdminL10n["shortlinks.upsell.social_preview."+e.socialMediumName.toLowerCase()],{context:s}),cardText:(0,m.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,m.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2"},(0,c.createElement)("div",{className:"yst-grayscale yst-opacity-50"},(0,c.createElement)(h.Label,null,t),(0,c.createElement)(Br,{title:"",description:"",siteUrl:"",imageUrl:"",imageFallbackUrl:"",alt:"",onSelect:k.noop,onImageClick:k.noop,onMouseHover:k.noop})))))};po.propTypes={socialMediumName:y().oneOf(["Social","Twitter","X"]).isRequired};const mo=po;class ho extends p.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:e,onTitleChange:t,onSelectImageClick:s,onRemoveImageClick:a,socialMediumName:n,imageWarnings:r,description:o,descriptionInputPlaceholder:i,imageUrl:l,alt:d,title:u,titleInputPlaceholder:m,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,isPremium:f,location:w}=this.props;return(0,c.createElement)(p.Fragment,null,(0,c.createElement)(mo,{socialMediumName:n}),(0,c.createElement)(Er.SocialMetadataPreviewForm,{onDescriptionChange:e,socialMediumName:n,title:u,titleInputPlaceholder:m,onRemoveImageClick:a,imageSelected:!!l,imageUrl:l,imageAltText:d,onTitleChange:t,onSelectImageClick:s,description:o,descriptionInputPlaceholder:i,imageWarnings:r,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:f,setEditorRef:this.setEditorRef,idSuffix:w}))}}ho.propTypes={title:y().string.isRequired,onTitleChange:y().func.isRequired,description:y().string.isRequired,onDescriptionChange:y().func.isRequired,imageUrl:y().string.isRequired,onSelectImageClick:y().func.isRequired,onRemoveImageClick:y().func.isRequired,socialMediumName:y().string.isRequired,isPremium:y().bool,imageWarnings:y().array,descriptionInputPlaceholder:y().string,titleInputPlaceholder:y().string,replacementVariables:ro.replacementVariablesShape,recommendedReplacementVariables:ro.recommendedReplacementVariablesShape,onReplacementVariableSearchChange:y().func,location:y().string,alt:y().string},ho.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,descriptionInputPlaceholder:"",titleInputPlaceholder:"",onReplacementVariableSearchChange:null,location:"",alt:""};const go=ho,yo=e=>{const[t,s]=(0,p.useState)(""),a=(0,p.useCallback)((e=>{s(e.detail.metaTabId)}),[s]);(0,p.useEffect)((()=>(setTimeout(e.onLoad),window.addEventListener("YoastSEO:metaTabChange",a),()=>{window.removeEventListener("YoastSEO:metaTabChange",a)})),[]);const n=(0,p.useMemo)((()=>({...e,activeMetaTabId:t})),[e,t]);return e.isPremium?(0,c.createElement)(u.Slot,{name:`YoastFacebookPremium${e.location.charAt(0).toUpperCase()+e.location.slice(1)}`,fillProps:n}):(0,c.createElement)(go,{...n})};yo.propTypes={isPremium:y().bool.isRequired,onLoad:y().func.isRequired,location:y().string.isRequired};const fo=yo;function wo(e){(function(e){const t=window.wp.media();return t.on("select",(()=>{const s=t.state().get("selection").first();var a;e({type:(a=s.attributes).subtype,width:a.width,height:a.height,url:a.url,id:a.id,sizes:a.sizes,alt:a.alt||a.title||a.name})})),t})(e).open()}const bo=()=>{wo((e=>(0,i.dispatch)("yoast-seo/editor").setFacebookPreviewImage((e=>{const{width:t,height:s}=e,a=(0,Er.determineFacebookImageMode)({width:t,height:s}),n=Er.FACEBOOK_IMAGE_SIZES[a+"Width"],r=Er.FACEBOOK_IMAGE_SIZES[a+"Height"],o=Object.values(e.sizes).find((e=>e.width>=n&&e.height>=r));return{url:o?o.url:e.url,id:e.id,warnings:(0,Ht.validateFacebookImage)(e),alt:e.alt||""}})(e))))},Eo=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getFacebookDescription:t,getDescription:s,getFacebookTitle:a,getSeoTitle:n,getFacebookImageUrl:r,getImageFallback:o,getFacebookWarnings:i,getRecommendedReplaceVars:l,getReplaceVars:c,getSiteUrl:d,getSeoTitleTemplate:u,getSeoTitleTemplateNoFallback:p,getSocialTitleTemplate:m,getSeoDescriptionTemplate:h,getSocialDescriptionTemplate:g,getReplacedExcerpt:y,getFacebookAltText:f}=e("yoast-seo/editor");return{imageUrl:r(),imageFallbackUrl:o(),recommendedReplacementVariables:l(),replacementVariables:c(),description:t(),descriptionPreviewFallback:g()||s()||h()||y()||"",title:a(),titlePreviewFallback:m()||n()||p()||u()||"",imageWarnings:i(),siteUrl:d(),isPremium:!!fe().isPremium,titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"Social",alt:f()}})),(0,i.withDispatch)(((e,t,{select:s})=>{const{setFacebookPreviewTitle:a,setFacebookPreviewDescription:n,clearFacebookPreviewImage:r,loadFacebookPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:bo,onRemoveImageClick:r,onDescriptionChange:n,onTitleChange:a,onLoad:o,onReplacementVariableSearchChange:pn(l,i)}})),us()])(fo),vo=e=>((0,p.useEffect)((()=>{setTimeout(e.onLoad)}),[]),e.isPremium?(0,c.createElement)(u.Slot,{name:`YoastTwitterPremium${e.location.charAt(0).toUpperCase()+e.location.slice(1)}`,fillProps:e}):(0,c.createElement)(go,{...e}));vo.propTypes={isPremium:y().bool.isRequired,onLoad:y().func.isRequired,location:y().string.isRequired};const _o=vo,ko=()=>{wo((e=>(0,i.dispatch)("yoast-seo/editor").setTwitterPreviewImage((e=>{const t="summary"!==(0,k.get)(window,"wpseoScriptData.metabox.twitterCardType")?"landscape":"square",s=Er.TWITTER_IMAGE_SIZES[t+"Width"],a=Er.TWITTER_IMAGE_SIZES[t+"Height"],n=Object.values(e.sizes).find((e=>e.width>=s&&e.height>=a));return{url:n?n.url:e.url,id:e.id,warnings:(0,Ht.validateTwitterImage)(e),alt:e.alt||""}})(e))))},xo=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getTwitterDescription:t,getTwitterTitle:s,getTwitterImageUrl:a,getFacebookImageUrl:n,getFacebookTitle:r,getFacebookDescription:o,getDescription:i,getSeoTitle:l,getTwitterWarnings:c,getTwitterImageType:d,getImageFallback:u,getRecommendedReplaceVars:p,getReplaceVars:m,getSiteUrl:h,getSeoTitleTemplate:g,getSeoTitleTemplateNoFallback:y,getSocialTitleTemplate:f,getSeoDescriptionTemplate:w,getSocialDescriptionTemplate:b,getReplacedExcerpt:E,getTwitterAltText:v}=e("yoast-seo/editor");return{imageUrl:a(),imageFallbackUrl:n()||u(),recommendedReplacementVariables:p(),replacementVariables:m(),description:t(),descriptionPreviewFallback:b()||o()||i()||w()||E()||"",title:s(),titlePreviewFallback:f()||r()||l()||y()||g()||"",imageWarnings:c(),siteUrl:h(),isPremium:!!fe().isPremium,isLarge:"summary"!==d(),titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"X",alt:v()}})),(0,i.withDispatch)(((e,t,{select:s})=>{const{setTwitterPreviewTitle:a,setTwitterPreviewDescription:n,clearTwitterPreviewImage:r,loadTwitterPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:ko,onRemoveImageClick:r,onDescriptionChange:n,onTitleChange:a,onLoad:o,onReplacementVariableSearchChange:pn(l,i)}})),us()])(_o),So=ct()(Kt.Collapsible)` h2 > button { padding-left: 0; padding-top: 16px; &:hover { background-color: #f0f0f0; } } div[class^="collapsible_content"] { padding: 24px 0; margin: 0 24px; border-top: 1px solid rgba(0,0,0,0.2); } `,Ro=e=>(0,c.createElement)(So,{hasPadding:!1,hasSeparator:!0,...e}),To=ct().legend` margin: 16px 0; padding: 0; color: ${vr.colors.$color_headings}; font-size: 12px; font-weight: 300; `,Co=ct().legend` margin: 0 0 16px; padding: 0; color: ${vr.colors.$color_headings}; font-size: 12px; font-weight: 300; `,Io=ct()(yr)` width: 18px; height: 18px; margin: 3px; `,Lo=e=>{const{useOpenGraphData:t,useTwitterData:s}=e;if(!t&&!s)return;const a=_a();return(0,c.createElement)(Sa /* translators: Social media appearance refers to a preview of how a page will be represented on social media. */,{title:(0,m.__)("Social media appearance","wordpress-seo"),id:"yoast-social-appearance-modal",shouldCloseOnClickOutside:!1,SuffixHeroIcon:(0,c.createElement)(Io,{className:"yst-text-slate-500",...a})},t&&(0,c.createElement)(p.Fragment,null,(0,c.createElement)(Co,null,(0,m.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,c.createElement)(Eo,null),s&&(0,c.createElement)(To,null,(0,m.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below. If you leave these settings untouched, the 'Social media appearance' settings mentioned above will also be applied for sharing on X.","wordpress-seo"))),t&&s&&(0,c.createElement)(Ro,{title:(0,m.__)("X appearance","wordpress-seo"),hasSeparator:!0,initialIsOpen:!1},(0,c.createElement)(xo,null)),!t&&s&&(0,c.createElement)(p.Fragment,null,(0,c.createElement)(Co,null,(0,m.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below.","wordpress-seo")),(0,c.createElement)(xo,null)))};Lo.propTypes={useOpenGraphData:y().bool.isRequired,useTwitterData:y().bool.isRequired};const Po=Lo,Ao=(0,m.__)("Check your text on even more SEO criteria and get an enhanced keyphrase analysis, making it easier to optimize your content.","wordpress-seo"),Oo=e=>{const{locationContext:t}=(0,dt.useRootContext)(),s=(0,Nt.addQueryArgs)(wpseoAdminL10n[e.buyLink],{context:t});return(0,c.createElement)(as,{title:(0,m.__)("Get more help with writing content that ranks","wordpress-seo"),description:e.description,benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qt(),upsellButtonText:(0,m.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:s,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,m.__)("1 year of premium support and updates included!","wordpress-seo")})};Oo.propTypes={buyLink:y().string.isRequired,description:y().string},Oo.defaultProps={description:Ao};const Fo=Oo,Mo=({location:e})=>{const[t,s]=(0,p.useState)(!1),a=(0,p.useCallback)((()=>s(!1)),[]),n=(0,p.useCallback)((()=>s(!0)),[]),r=(0,h.useSvgAria)();return(0,c.createElement)(p.Fragment,null,t&&(0,c.createElement)(ls,{title:(0,m.__)("Unlock Premium SEO analysis","wordpress-seo"),onRequestClose:a,additionalClassName:"",className:`${os} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,id:"yoast-premium-seo-analysis-modal",shouldCloseOnClickOutside:!0},(0,c.createElement)(rs,null,(0,c.createElement)(Fo,{buyLink:`shortlinks.upsell.${e}.premium_seo_analysis_button`}))),"sidebar"===e&&(0,c.createElement)(zt,{id:"yoast-premium-seo-analysis-modal-open-button",title:(0,m.__)("Premium SEO analysis","wordpress-seo"),prefixIcon:{icon:"seo-score-none",color:vr.colors.$color_grey},onClick:n},(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...r})))),"metabox"===e&&(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(Wt,{id:"yoast-premium-seo-analysis-metabox-modal-open-button",onClick:n},(0,c.createElement)(Kt.SvgIcon,{icon:"seo-score-none",color:vr.colors.$color_grey}),(0,c.createElement)(Wt.Text,null,(0,m.__)("Premium SEO analysis","wordpress-seo")),(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...r}),(0,c.createElement)("span",null,"Premium")))))};Mo.propTypes={location:y().string},Mo.defaultProps={location:"sidebar"};const Do=Mo,No=e=>{const[t,s]=(0,p.useState)(!1),{prefixIcon:a}=e;return(0,c.createElement)("div",{className:"yoast components-panel__body "+(t?"is-opened":"")},(0,c.createElement)("h2",{className:"components-panel__body-title"},(0,c.createElement)("button",{onClick:function(){s(!t)},className:"components-button components-panel__body-toggle",type:"button",id:e.buttonId},(0,c.createElement)("span",{className:"yoast-icon-span",style:{fill:`${a&&a.color||""}`}},a&&(0,c.createElement)(Kt.SvgIcon,{icon:a.icon,color:a.color,size:a.size})),(0,c.createElement)("span",{className:"yoast-title-container"},(0,c.createElement)("div",{className:"yoast-title"},e.title),(0,c.createElement)("div",{className:"yoast-subtitle"},e.subTitle)),e.hasBetaBadgeLabel&&(0,c.createElement)(Kt.BetaBadge,null),(0,c.createElement)("span",{className:"yoast-chevron","aria-hidden":"true"}))),t&&e.children)},qo=No;No.propTypes={title:y().string.isRequired,children:y().oneOfType([y().node,y().arrayOf(y().node)]).isRequired,prefixIcon:y().object,subTitle:y().string,hasBetaBadgeLabel:y().bool,buttonId:y().string},No.defaultProps={prefixIcon:null,subTitle:"",hasBetaBadgeLabel:!1,buttonId:null};var Uo=s(6746);const Bo=(0,Ht.makeOutboundLink)(),$o=ct().div` padding: 16px; `,Wo="yoast-seo/editor";function Ko({location:e,show:t}){return t?(0,c.createElement)(Kt.Alert,{type:"info"},(0,m.sprintf)(/* translators: %s Expands to "Yoast News SEO" */ (0,m.__)("Are you working on a news article? %s helps you optimize your site for Google News.","wordpress-seo"),"Yoast News SEO")+" ",(0,c.createElement)(Bo,{href:window.wpseoAdminL10n[`shortlinks.upsell.${e}.news`]},(0,m.sprintf)(/* translators: %s: Expands to "Yoast News SEO". */ (0,m.__)("Buy %s now!","wordpress-seo"),"Yoast News SEO"))):null}Ko.propTypes={show:y().bool.isRequired,location:y().string.isRequired};const Yo=(e,t,s)=>{const a=(0,i.useSelect)((e=>e(Wo).getIsProduct()),[]),n=(0,i.useSelect)((e=>e(Wo).getIsWooSeoActive()),[]),r=a&&n?{name:(0,m.__)("Item Page","wordpress-seo"),value:"ItemPage"}:e.find((e=>e.value===t));return[{name:(0,m.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s expands to the current site wide default. */ (0,m.__)("Default for %1$s (%2$s)","wordpress-seo"),s,r?r.name:""),value:""},...e]},zo=e=>(0,m.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s and %3$s expand to a link to the Settings page */ (0,m.__)("You can change the default type for %1$s under Content types in the %2$sSettings%3$s.","wordpress-seo"),e,"{{link}}","{{/link}}");y().string.isRequired,y().string.isRequired,y().string.isRequired;const Ho=e=>{const t=Yo(e.pageTypeOptions,e.defaultPageType,e.postTypeName),s=Yo(e.articleTypeOptions,e.defaultArticleType,e.postTypeName),a=(0,i.useSelect)((e=>e(Wo).selectLink("https://yoa.st/product-schema-metabox")),[]),n=(0,i.useSelect)((e=>e(Wo).getIsWooSeoUpsell()),[]),[r,o]=(0,p.useState)(e.schemaArticleTypeSelected),l=(0,m.__)("Want your products stand out in search results with rich results like price, reviews and more?","wordpress-seo"),d=(0,i.useSelect)((e=>e(Wo).getIsProduct()),[]),u=(0,i.useSelect)((e=>e(Wo).getIsWooSeoActive()),[]),h=(0,i.useSelect)((e=>e(Wo).selectAdminLink("?page=wpseo_page_settings")),[]),g=d&&u,y=(0,p.useCallback)(((e,t)=>{o(t)}),[r]);return(0,p.useEffect)((()=>{y(null,e.schemaArticleTypeSelected)}),[e.schemaArticleTypeSelected]),(0,c.createElement)(p.Fragment,null,(0,c.createElement)(Kt.FieldGroup,{label:(0,m.__)("What type of page or content is this?","wordpress-seo"),linkTo:e.additionalHelpTextLink /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about page or content types","wordpress-seo")}),n&&(0,c.createElement)(hn,{link:a,text:l}),(0,c.createElement)(Kt.Select,{id:(0,Ht.join)(["yoast-schema-page-type",e.location]),options:t,label:(0,m.__)("Page type","wordpress-seo"),onChange:e.schemaPageTypeChange,selected:g?"ItemPage":e.schemaPageTypeSelected,disabled:g}),e.showArticleTypeInput&&(0,c.createElement)(Kt.Select,{id:(0,Ht.join)(["yoast-schema-article-type",e.location]),options:s,label:(0,m.__)("Article type","wordpress-seo"),onChange:e.schemaArticleTypeChange,selected:e.schemaArticleTypeSelected,onOptionFocus:y}),(0,c.createElement)(Ko,{location:e.location,show:!e.isNewsEnabled&&(b=r,E=e.defaultArticleType,"NewsArticle"===b||""===b&&"NewsArticle"===E)}),e.displayFooter&&!g&&(0,c.createElement)("p",null,(f=e.postTypeName,w=h,(0,Uo.Z)({mixedString:zo(f),components:{link:(0,c.createElement)("a",{href:w,target:"_blank",rel:"noreferrer"})}}))),g&&(0,c.createElement)("p",null,(0,m.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,m.__)("You have %1$s activated on your site, automatically setting the Page type for your products to 'Item Page'. As a result, the Page type selection is disabled.","wordpress-seo"),"Yoast WooCommerce SEO")));var f,w,b,E},jo=y().arrayOf(y().shape({name:y().string,value:y().string}));Ho.propTypes={schemaPageTypeChange:y().func,schemaPageTypeSelected:y().string,pageTypeOptions:jo.isRequired,schemaArticleTypeChange:y().func,schemaArticleTypeSelected:y().string,articleTypeOptions:jo.isRequired,showArticleTypeInput:y().bool.isRequired,additionalHelpTextLink:y().string.isRequired,helpTextLink:y().string.isRequired,helpTextTitle:y().string.isRequired,helpTextDescription:y().string.isRequired,postTypeName:y().string.isRequired,displayFooter:y().bool,defaultPageType:y().string.isRequired,defaultArticleType:y().string.isRequired,location:y().string.isRequired,isNewsEnabled:y().bool},Ho.defaultProps={schemaPageTypeChange:()=>{},schemaPageTypeSelected:null,schemaArticleTypeChange:()=>{},schemaArticleTypeSelected:null,displayFooter:!1,isNewsEnabled:!1};const Vo=e=>e.isMetabox?(0,p.createPortal)((0,c.createElement)($o,null,(0,c.createElement)(Ho,{...e})),document.getElementById("wpseo-meta-section-schema")):(0,c.createElement)(Ho,{...e});Vo.propTypes={showArticleTypeInput:y().bool,articleTypeLabel:y().string,additionalHelpTextLink:y().string,pageTypeLabel:y().string.isRequired,helpTextLink:y().string.isRequired,helpTextTitle:y().string.isRequired,helpTextDescription:y().string.isRequired,isMetabox:y().bool.isRequired,postTypeName:y().string.isRequired,displayFooter:y().bool,loadSchemaArticleData:y().func.isRequired,loadSchemaPageData:y().func.isRequired,location:y().string.isRequired},Vo.defaultProps={showArticleTypeInput:!1,articleTypeLabel:"",additionalHelpTextLink:"",displayFooter:!1};const Go=Vo;class Zo{static get articleTypeInput(){return document.getElementById("yoast_wpseo_schema_article_type")}static get defaultArticleType(){return Zo.articleTypeInput.getAttribute("data-default")}static get articleType(){return Zo.articleTypeInput.value}static set articleType(e){Zo.articleTypeInput.value=e}static get pageTypeInput(){return document.getElementById("yoast_wpseo_schema_page_type")}static get defaultPageType(){return Zo.pageTypeInput.getAttribute("data-default")}static get pageType(){return Zo.pageTypeInput.value}static set pageType(e){Zo.pageTypeInput.value=e}}const Xo=e=>{const t=null!==Zo.articleTypeInput;(0,p.useEffect)((()=>{e.loadSchemaPageData(),t&&e.loadSchemaArticleData()}),[]);const{pageTypeOptions:s,articleTypeOptions:a}=window.wpseoScriptData.metabox.schema,n={articleTypeLabel:(0,m.__)("Article type","wordpress-seo"),pageTypeLabel:(0,m.__)("Page type","wordpress-seo"),postTypeName:window.wpseoAdminL10n.postTypeNamePlural,helpTextTitle:(0,m.__)("Yoast SEO automatically describes your pages using schema.org","wordpress-seo"),helpTextDescription:(0,m.__)("This helps search engines understand your website and your content. You can change some of your settings for this page below.","wordpress-seo"),showArticleTypeInput:t,pageTypeOptions:s,articleTypeOptions:a},r={...e,...n,...(o=e.location,"metabox"===o?{helpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.page_type"],isMetabox:!0}:{helpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.page_type"],isMetabox:!1})};var o;return(0,c.createElement)(Go,{...r})};Xo.propTypes={displayFooter:y().bool.isRequired,schemaPageTypeSelected:y().string.isRequired,schemaArticleTypeSelected:y().string.isRequired,defaultArticleType:y().string.isRequired,defaultPageType:y().string.isRequired,loadSchemaPageData:y().func.isRequired,loadSchemaArticleData:y().func.isRequired,schemaPageTypeChange:y().func.isRequired,schemaArticleTypeChange:y().func.isRequired,location:y().string.isRequired};const Qo=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getPreferences:t,getPageType:s,getDefaultPageType:a,getArticleType:n,getDefaultArticleType:r}=e("yoast-seo/editor"),{displaySchemaSettingsFooter:o,isNewsEnabled:i}=t();return{displayFooter:o,isNewsEnabled:i,schemaPageTypeSelected:s(),schemaArticleTypeSelected:n(),defaultArticleType:r(),defaultPageType:a()}})),(0,i.withDispatch)((e=>{const{setPageType:t,setArticleType:s,getSchemaPageData:a,getSchemaArticleData:n}=e("yoast-seo/editor");return{loadSchemaPageData:a,loadSchemaArticleData:n,schemaPageTypeChange:t,schemaArticleTypeChange:s}})),us()])(Xo),Jo=({noIndex:e,onNoIndexChange:t,editorContext:s,isPrivateBlog:a})=>{const n=(e=>{const t=(0,m.__)("No","wordpress-seo"),s=(0,m.__)("Yes","wordpress-seo"),a=e.noIndex?t:s;return window.wpseoScriptData.isPost?[{name:(0,m.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,m.__)("%s (current default for %s)","wordpress-seo"),a,e.postTypeNamePlural),value:"0"},{name:t,value:"1"},{name:s,value:"2"}]:[{name:(0,m.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,m.__)("%s (current default for %s)","wordpress-seo"),a,e.postTypeNamePlural),value:"default"},{name:s,value:"index"},{name:t,value:"noindex"}]})(s);return(0,c.createElement)(dt.LocationConsumer,null,(s=>(0,c.createElement)(p.Fragment,null,a&&(0,c.createElement)(Kt.Alert,{type:"warning"},(0,m.__)("Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.","wordpress-seo")),(0,c.createElement)(Kt.Select,{label:(0,m.__)("Allow search engines to show this content in search results?","wordpress-seo"),onChange:t,id:(0,Ht.join)(["yoast-meta-robots-noindex",s]),options:n,selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.allow_search_engines"] /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about the no-index setting on our help page.","wordpress-seo")}))))};Jo.propTypes={noIndex:y().string.isRequired,onNoIndexChange:y().func.isRequired,editorContext:y().object.isRequired,isPrivateBlog:y().bool},Jo.defaultProps={isPrivateBlog:!1};const ei=({noFollow:e,onNoFollowChange:t})=>(0,c.createElement)(dt.LocationConsumer,null,(s=>{const a=(0,Ht.join)(["yoast-meta-robots-nofollow",s]);return(0,c.createElement)(Kt.RadioButtonGroup,{id:a,options:[{value:"0",label:"Yes"},{value:"1",label:"No"}],label:(0,m.__)("Should search engines follow links on this content?","wordpress-seo"),groupName:a,onChange:t,selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.follow_links"] /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about the no-follow setting on our help page.","wordpress-seo")})}));ei.propTypes={noFollow:y().string.isRequired,onNoFollowChange:y().func.isRequired};const ti=({advanced:e,onAdvancedChange:t})=>(0,c.createElement)(dt.LocationConsumer,null,(s=>{const a=(0,Ht.join)(["yoast-meta-robots-advanced",s]),n=`${a}-input`;return(0,c.createElement)(Kt.MultiSelect,{label:(0,m.__)("Meta robots advanced","wordpress-seo"),onChange:t,id:a,inputId:n,options:[{name:(0,m.__)("No Image Index","wordpress-seo"),value:"noimageindex"},{name:(0,m.__)("No Archive","wordpress-seo"),value:"noarchive"},{name:(0,m.__)("No Snippet","wordpress-seo"),value:"nosnippet"}],selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.meta_robots"] /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about advanced meta robots settings on our help page.","wordpress-seo")})}));ti.propTypes={advanced:y().array.isRequired,onAdvancedChange:y().func.isRequired};const si=({breadcrumbsTitle:e,onBreadcrumbsTitleChange:t})=>(0,c.createElement)(dt.LocationConsumer,null,(s=>(0,c.createElement)(Kt.TextInput,{label:(0,m.__)("Breadcrumbs Title","wordpress-seo"),id:(0,Ht.join)(["yoast-breadcrumbs-title",s]),onChange:t,value:e,linkTo:wpseoAdminL10n["shortlinks.advanced.breadcrumbs_title"] /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about the breadcrumbs title setting on our help page.","wordpress-seo")})));si.propTypes={breadcrumbsTitle:y().string.isRequired,onBreadcrumbsTitleChange:y().func.isRequired};const ai=({canonical:e,onCanonicalChange:t})=>(0,c.createElement)(dt.LocationConsumer,null,(s=>(0,c.createElement)(Kt.TextInput,{label:(0,m.__)("Canonical URL","wordpress-seo"),id:(0,Ht.join)(["yoast-canonical",s]),onChange:t,value:e,linkTo:"https://yoa.st/canonical-url" /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about canonical URLs on our help page.","wordpress-seo")})));ai.propTypes={canonical:y().string.isRequired,onCanonicalChange:y().func.isRequired};const ni=e=>{const{noIndex:t,noFollow:s,advanced:a,breadcrumbsTitle:n,canonical:r,onNoIndexChange:o,onNoFollowChange:i,onAdvancedChange:l,onBreadcrumbsTitleChange:d,onCanonicalChange:u,onLoad:m,isLoading:h,editorContext:g,isBreadcrumbsDisabled:y,isPrivateBlog:f}=e;(0,p.useEffect)((()=>{setTimeout((()=>{h&&m()}))}));const w={noIndex:t,onNoIndexChange:o,editorContext:g,isPrivateBlog:f},b={noFollow:s,onNoFollowChange:i},E={advanced:a,onAdvancedChange:l},v={breadcrumbsTitle:n,onBreadcrumbsTitleChange:d},_={canonical:r,onCanonicalChange:u};return h?null:(0,c.createElement)(p.Fragment,null,(0,c.createElement)(Jo,{...w}),g.isPost&&(0,c.createElement)(ei,{...b}),g.isPost&&(0,c.createElement)(ti,{...E}),!y&&(0,c.createElement)(si,{...v}),(0,c.createElement)(ai,{..._}))};ni.propTypes={noIndex:y().string.isRequired,canonical:y().string.isRequired,onNoIndexChange:y().func.isRequired,onCanonicalChange:y().func.isRequired,onLoad:y().func.isRequired,isLoading:y().bool.isRequired,editorContext:y().object.isRequired,isBreadcrumbsDisabled:y().bool.isRequired,isPrivateBlog:y().bool,advanced:y().array,onAdvancedChange:y().func,noFollow:y().string,onNoFollowChange:y().func,breadcrumbsTitle:y().string,onBreadcrumbsTitleChange:y().func},ni.defaultProps={advanced:[],onAdvancedChange:()=>{},noFollow:"",onNoFollowChange:()=>{},breadcrumbsTitle:"",onBreadcrumbsTitleChange:()=>{},isPrivateBlog:!1};const ri=ni,oi=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getNoIndex:t,getNoFollow:s,getAdvanced:a,getBreadcrumbsTitle:n,getCanonical:r,getIsLoading:o,getEditorContext:i,getPreferences:l}=e("yoast-seo/editor"),{isBreadcrumbsDisabled:c,isPrivateBlog:d}=l();return{noIndex:t(),noFollow:s(),advanced:a(),breadcrumbsTitle:n(),canonical:r(),isLoading:o(),editorContext:i(),isBreadcrumbsDisabled:c,isPrivateBlog:d}})),(0,i.withDispatch)((e=>{const{setNoIndex:t,setNoFollow:s,setAdvanced:a,setBreadcrumbsTitle:n,setCanonical:r,loadAdvancedSettingsData:o}=e("yoast-seo/editor");return{onNoIndexChange:t,onNoFollowChange:s,onAdvancedChange:a,onBreadcrumbsTitleChange:n,onCanonicalChange:r,onLoad:o}}))])(ri),ii=window.yoast.relatedKeyphraseSuggestions,li=()=>(0,c.createElement)("p",{className:"yoast-related-keyphrases-modal__loading-message"},(0,m.sprintf)(/* translators: %1$s expands to "Yoast SEO", %2$s expands to "Semrush". */ (0,m.__)("Please wait while %1$s connects to %2$s to get related keyphrases...","wordpress-seo"),"Yoast SEO","Semrush")," ",(0,c.createElement)(Kt.SvgIcon,{icon:"loading-spinner"})),ci=(0,Ht.makeOutboundLink)(),di=()=>(0,c.createElement)(p.Fragment,null,(0,c.createElement)("p",null,(0,m.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,m.__)("You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.","wordpress-seo"),"Semrush")),(0,c.createElement)(ci,{href:window.wpseoAdminL10n["shortlinks.semrush.prices"],className:"yoast-button-upsell"},(0,m.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,m.__)("Upgrade your %s plan","wordpress-seo"),"Semrush"),(0,c.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))),ui=window.wp.apiFetch;var pi=s.n(ui);const mi="yoast-semrush-country-selector",hi=[{value:"us",name:"United States - US"},{value:"uk",name:"United Kingdom - UK"},{value:"ca",name:"Canada - CA"},{value:"ru",name:"Russia - RU"},{value:"de",name:"Germany - DE"},{value:"fr",name:"France - FR"},{value:"es",name:"Spain - ES"},{value:"it",name:"Italy - IT"},{value:"br",name:"Brazil - BR"},{value:"au",name:"Australia - AU"},{value:"ar",name:"Argentina - AR"},{value:"be",name:"Belgium - BE"},{value:"ch",name:"Switzerland - CH"},{value:"dk",name:"Denmark - DK"},{value:"fi",name:"Finland - FI"},{value:"hk",name:"Hong Kong - HK"},{value:"ie",name:"Ireland - IE"},{value:"il",name:"Israel - IL"},{value:"mx",name:"Mexico - MX"},{value:"nl",name:"Netherlands - NL"},{value:"no",name:"Norway - NO"},{value:"pl",name:"Poland - PL"},{value:"se",name:"Sweden - SE"},{value:"sg",name:"Singapore - SG"},{value:"tr",name:"Turkey - TR"},{value:"jp",name:"Japan - JP"},{value:"in",name:"India - IN"},{value:"hu",name:"Hungary - HU"},{value:"af",name:"Afghanistan - AF"},{value:"al",name:"Albania - AL"},{value:"dz",name:"Algeria - DZ"},{value:"ao",name:"Angola - AO"},{value:"am",name:"Armenia - AM"},{value:"at",name:"Austria - AT"},{value:"az",name:"Azerbaijan - AZ"},{value:"bh",name:"Bahrain - BH"},{value:"bd",name:"Bangladesh - BD"},{value:"by",name:"Belarus - BY"},{value:"bz",name:"Belize - BZ"},{value:"bo",name:"Bolivia - BO"},{value:"ba",name:"Bosnia and Herzegovina - BA"},{value:"bw",name:"Botswana - BW"},{value:"bn",name:"Brunei - BN"},{value:"bg",name:"Bulgaria - BG"},{value:"cv",name:"Cabo Verde - CV"},{value:"kh",name:"Cambodia - KH"},{value:"cm",name:"Cameroon - CM"},{value:"cl",name:"Chile - CL"},{value:"co",name:"Colombia - CO"},{value:"cr",name:"Costa Rica - CR"},{value:"hr",name:"Croatia - HR"},{value:"cy",name:"Cyprus - CY"},{value:"cz",name:"Czech Republic - CZ"},{value:"cd",name:"Congo - CD"},{value:"do",name:"Dominican Republic - DO"},{value:"ec",name:"Ecuador - EC"},{value:"eg",name:"Egypt - EG"},{value:"sv",name:"El Salvador - SV"},{value:"ee",name:"Estonia - EE"},{value:"et",name:"Ethiopia - ET"},{value:"ge",name:"Georgia - GE"},{value:"gh",name:"Ghana - GH"},{value:"gr",name:"Greece - GR"},{value:"gt",name:"Guatemala - GT"},{value:"gy",name:"Guyana - GY"},{value:"ht",name:"Haiti - HT"},{value:"hn",name:"Honduras - HN"},{value:"is",name:"Iceland - IS"},{value:"id",name:"Indonesia - ID"},{value:"jm",name:"Jamaica - JM"},{value:"jo",name:"Jordan - JO"},{value:"kz",name:"Kazakhstan - KZ"},{value:"kw",name:"Kuwait - KW"},{value:"lv",name:"Latvia - LV"},{value:"lb",name:"Lebanon - LB"},{value:"lt",name:"Lithuania - LT"},{value:"lu",name:"Luxembourg - LU"},{value:"mg",name:"Madagascar - MG"},{value:"my",name:"Malaysia - MY"},{value:"mt",name:"Malta - MT"},{value:"mu",name:"Mauritius - MU"},{value:"md",name:"Moldova - MD"},{value:"mn",name:"Mongolia - MN"},{value:"me",name:"Montenegro - ME"},{value:"ma",name:"Morocco - MA"},{value:"mz",name:"Mozambique - MZ"},{value:"na",name:"Namibia - NA"},{value:"np",name:"Nepal - NP"},{value:"nz",name:"New Zealand - NZ"},{value:"ni",name:"Nicaragua - NI"},{value:"ng",name:"Nigeria - NG"},{value:"om",name:"Oman - OM"},{value:"py",name:"Paraguay - PY"},{value:"pe",name:"Peru - PE"},{value:"ph",name:"Philippines - PH"},{value:"pt",name:"Portugal - PT"},{value:"ro",name:"Romania - RO"},{value:"sa",name:"Saudi Arabia - SA"},{value:"sn",name:"Senegal - SN"},{value:"rs",name:"Serbia - RS"},{value:"sk",name:"Slovakia - SK"},{value:"si",name:"Slovenia - SI"},{value:"za",name:"South Africa - ZA"},{value:"kr",name:"South Korea - KR"},{value:"lk",name:"Sri Lanka - LK"},{value:"th",name:"Thailand - TH"},{value:"bs",name:"Bahamas - BS"},{value:"tt",name:"Trinidad and Tobago - TT"},{value:"tn",name:"Tunisia - TN"},{value:"ua",name:"Ukraine - UA"},{value:"ae",name:"United Arab Emirates - AE"},{value:"uy",name:"Uruguay - UY"},{value:"ve",name:"Venezuela - VE"},{value:"vn",name:"Vietnam - VN"},{value:"zm",name:"Zambia - ZM"},{value:"zw",name:"Zimbabwe - ZW"},{value:"ly",name:"Libya - LY"}];class gi extends p.Component{constructor(e){super(e),this.relatedKeyphrasesRequest=this.relatedKeyphrasesRequest.bind(this),this.onChangeHandler=this.onChangeHandler.bind(this)}componentDidMount(){this.props.response&&this.props.keyphrase===this.props.lastRequestKeyphrase||this.relatedKeyphrasesRequest()}storeCountryCode(e){pi()({path:"yoast/v1/semrush/country_code",method:"POST",data:{country_code:e}})}async relatedKeyphrasesRequest(){const{keyphrase:e,countryCode:t,newRequest:s}=this.props;s(t,e),this.storeCountryCode(t);const a=await this.doRequest(e,t);200!==a.status?this.handleFailedResponse(a):this.handleSuccessResponse(a)}handleSuccessResponse(e){const{setNoResultsFound:t,setRequestSucceeded:s}=this.props;0!==e.results.rows.length?s(e):t()}handleFailedResponse(e){const{setRequestLimitReached:t,setRequestFailed:s}=this.props;"error"in e&&(e.error.includes("TOTAL LIMIT EXCEEDED")?t():s(e))}async doRequest(e,t){return await pi()({path:(0,Nt.addQueryArgs)("/yoast/v1/semrush/related_keyphrases",{keyphrase:e,country_code:t})})}onChangeHandler(e){this.props.setCountry(e)}render(){return(0,c.createElement)("div",{id:mi},(0,c.createElement)(Kt.SingleSelect,{id:mi+"-select",label:(0,m.__)("Show results for:","wordpress-seo"),name:"semrush-country-code",options:hi,selected:this.props.countryCode,onChange:this.onChangeHandler,wrapperClassName:"yoast-field-group yoast-field-group--inline"}),(0,c.createElement)(Kt.NewButton,{id:mi+"-button",variant:"secondary",onClick:this.relatedKeyphrasesRequest},(0,m.__)("Select country","wordpress-seo")))}}gi.propTypes={keyphrase:y().string,countryCode:y().string,response:y().object,lastRequestKeyphrase:y().string,setCountry:y().func.isRequired,newRequest:y().func.isRequired,setNoResultsFound:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setRequestLimitReached:y().func.isRequired,setRequestFailed:y().func.isRequired},gi.defaultProps={keyphrase:"",countryCode:"us",response:{},lastRequestKeyphrase:""};const yi=gi,fi=(0,Ht.makeOutboundLink)(),wi=()=>(0,c.createElement)(Kt.Alert,{type:"info"},(0,m.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,m.__)("You’ll reach more people with multiple keyphrases! Want to quickly add these related keyphrases to the %s analyses for even better content optimization?","wordpress-seo"),"Yoast SEO")+" ",(0,c.createElement)(fi,{href:window.wpseoAdminL10n["shortlinks.semrush.premium_landing_page"]},(0,m.sprintf)(/* translators: %s: Expands to "Yoast SEO Premium". */ (0,m.__)("Explore %s!","wordpress-seo"),"Yoast SEO Premium"))),bi=()=>(0,c.createElement)(Kt.Alert,{type:"error"},(0,m.__)("We've encountered a problem trying to get related keyphrases. Please try again later.","wordpress-seo")),Ei=()=>(0,c.createElement)(Kt.Alert,{type:"warning"},(0,m.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,m.__)("You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.","wordpress-seo"),"Yoast SEO"));function vi(e){var t,s,a;const{response:n,lastRequestKeyphrase:r,keyphrase:o,newRequest:i,setCountry:l,renderAction:d,countryCode:u,requestLimitReached:g,setRequestFailed:y,setNoResultsFound:f,relatedKeyphrases:w,setRequestSucceeded:b,setRequestLimitReached:E,isPending:v,isRtl:_}=e,x=fe().isPremium,S=(0,Ht.makeOutboundLink)(),R="https://www.semrush.com/analytics/keywordoverview/?q="+encodeURIComponent(o)+"&db="+encodeURIComponent(u);return(0,c.createElement)(p.Fragment,null,!g&&(0,c.createElement)(p.Fragment,null,!x&&(0,c.createElement)(wi,null),x&&function(e){return e&&e.length>=4}(w)&&(0,c.createElement)(Ei,null),(0,c.createElement)(yi,{countryCode:u,setCountry:l,newRequest:i,keyphrase:o,setRequestFailed:y,setNoResultsFound:f,setRequestSucceeded:b,setRequestLimitReached:E,response:n,lastRequestKeyphrase:r})),function(e){const{isPending:t,requestLimitReached:s,isSuccess:a,response:n,requestHasData:r}=e;return t?(0,c.createElement)(li,null):s?(0,c.createElement)(di,null):!a&&function(e){return!(0,k.isEmpty)(e)&&"error"in e}(n)?(0,c.createElement)(bi,null):r?void 0:(0,c.createElement)("p",null,(0,m.__)("Sorry, there's no data available for that keyphrase/country combination.","wordpress-seo"))}(e),(0,c.createElement)(h.Root,{context:{isRtl:_}},(0,c.createElement)(ii.KeyphrasesTable,{relatedKeyphrases:w,columnNames:null==n||null===(t=n.results)||void 0===t?void 0:t.columnNames,data:null==n||null===(s=n.results)||void 0===s?void 0:s.rows,isPending:v,renderButton:d}),(null==n||null===(a=n.results)||void 0===a?void 0:a.rows)&&(0,c.createElement)("p",{className:"yst-mb-0 yst-mt-2"},(0,c.createElement)(S,{href:R},(0,m.sprintf)(/* translators: %s expands to Semrush */ (0,m.__)("Get more insights at %s","wordpress-seo"),"Semrush")))))}vi.propTypes={keyphrase:y().string,relatedKeyphrases:y().array,renderAction:y().func,requestLimitReached:y().bool,countryCode:y().string.isRequired,setCountry:y().func.isRequired,newRequest:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setRequestLimitReached:y().func.isRequired,setRequestFailed:y().func.isRequired,setNoResultsFound:y().func.isRequired,response:y().object,lastRequestKeyphrase:y().string,isRtl:y().bool,isPending:y().bool},vi.defaultProps={keyphrase:"",relatedKeyphrases:[],renderAction:null,requestLimitReached:!1,response:{},lastRequestKeyphrase:"",isRtl:!1,isPending:!1};const _i=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getFocusKeyphrase:t,getSEMrushSelectedCountry:s,getSEMrushRequestLimitReached:a,getSEMrushRequestResponse:n,getSEMrushRequestIsSuccess:r,getSEMrushIsRequestPending:o,getSEMrushRequestHasData:i,getSEMrushRequestKeyphrase:l,getPreference:c}=e("yoast-seo/editor");return{keyphrase:t(),countryCode:s(),requestLimitReached:a(),response:n(),isSuccess:r(),isPending:o(),requestHasData:i(),lastRequestKeyphrase:l(),isRtl:c("isRtl",!1)}})),(0,i.withDispatch)((e=>{const{setSEMrushChangeCountry:t,setSEMrushNewRequest:s,setSEMrushRequestSucceeded:a,setSEMrushRequestFailed:n,setSEMrushSetRequestLimitReached:r,setSEMrushNoResultsFound:o}=e("yoast-seo/editor");return{setCountry:e=>{t(e)},newRequest:(e,t)=>{s(e,t)},setRequestSucceeded:e=>{a(e)},setRequestFailed:e=>{n(e)},setRequestLimitReached:()=>{r()},setNoResultsFound:()=>{o()}}}))])(vi),ki=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{d:"M2 11a1 1 0 011-1h2a1 1 0 011 1v5a1 1 0 01-1 1H3a1 1 0 01-1-1v-5zM8 7a1 1 0 011-1h2a1 1 0 011 1v9a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM14 4a1 1 0 011-1h2a1 1 0 011 1v12a1 1 0 01-1 1h-2a1 1 0 01-1-1V4z"}))}));var xi,Si;function Ri(){return Ri=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",Ri({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 425 456.27"},e),xi||(xi=c.createElement("path",{d:"M73 405.26a66.79 66.79 0 0 1-6.54-1.7 64.75 64.75 0 0 1-6.28-2.31c-1-.42-2-.89-3-1.37-1.49-.72-3-1.56-4.77-2.56-1.5-.88-2.71-1.64-3.83-2.39-.9-.61-1.8-1.26-2.68-1.92a70.154 70.154 0 0 1-5.08-4.19 69.21 69.21 0 0 1-8.4-9.17c-.92-1.2-1.68-2.25-2.35-3.24a70.747 70.747 0 0 1-3.44-5.64 68.29 68.29 0 0 1-8.29-32.55V142.13a68.26 68.26 0 0 1 8.29-32.55c1-1.92 2.21-3.82 3.44-5.64s2.55-3.58 4-5.27a69.26 69.26 0 0 1 14.49-13.25C50.37 84.19 52.27 83 54.2 82A67.59 67.59 0 0 1 73 75.09a68.75 68.75 0 0 1 13.75-1.39h169.66L263 55.39H86.75A86.84 86.84 0 0 0 0 142.13v196.09A86.84 86.84 0 0 0 86.75 425h11.32v-18.35H86.75A68.75 68.75 0 0 1 73 405.26zM368.55 60.85l-1.41-.53-6.41 17.18 1.41.53a68.06 68.06 0 0 1 8.66 4c1.93 1 3.82 2.2 5.65 3.43A69.19 69.19 0 0 1 391 98.67c1.4 1.68 2.72 3.46 3.95 5.27s2.39 3.72 3.44 5.64a68.29 68.29 0 0 1 8.29 32.55v264.52H233.55l-.44.76c-3.07 5.37-6.26 10.48-9.49 15.19L222 425h203V142.13a87.2 87.2 0 0 0-56.45-81.28z"})),Si||(Si=c.createElement("path",{stroke:"#000",strokeMiterlimit:10,strokeWidth:3.81,d:"M119.8 408.28v46c28.49-1.12 50.73-10.6 69.61-29.58 19.45-19.55 36.17-50 52.61-96L363.94 1.9H305l-98.25 272.89-48.86-153h-54l71.7 184.18a75.67 75.67 0 0 1 0 55.12c-7.3 18.68-20.25 40.66-55.79 47.19z"}))),Ci=window.moment;var Ii=s.n(Ci);const Li=(0,Ht.makeOutboundLink)(),Pi=e=>{const t=(0,m.sprintf)(/* translators: %d expands to the amount of allowed keyphrases on a free account, %s expands to a link to Wincher plans. */ (0,m.__)("You've reached the maximum amount of %d keyphrases you can add to your Wincher account. If you wish to add more keyphrases, please %s.","wordpress-seo"),e.limit,"{{updateWincherPlanLink/}}");return(0,c.createElement)(Kt.Alert,{type:"error"},(0,Uo.Z)({mixedString:t,components:{updateWincherPlanLink:(0,c.createElement)(Li,{href:wpseoAdminGlobalL10n["links.wincher.pricing"]},(0,m.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,m.__)("upgrade your %s plan","wordpress-seo"),"Wincher"))}}))};Pi.propTypes={limit:y().number},Pi.defaultProps={limit:10};const Ai=Pi,Oi=()=>(0,c.createElement)(Kt.Alert,{type:"error"},(0,m.__)("Something went wrong while tracking the ranking position(s) of your page. Please try again later.","wordpress-seo"));async function Fi(e,t,s,a=200){try{const n=await e();return!!n&&(n.status===a?t(n):s(n))}catch(e){console.error(e.message)}}async function Mi(e){try{return await pi()(e)}catch(e){return e.error&&e.status?e:e instanceof Response&&await e.json()}}async function Di(e){return(0,k.isArray)(e)||(e=[e]),await Mi({path:"yoast/v1/wincher/keyphrases/track",method:"POST",data:{keyphrases:e}})}const Ni=ct().p` color: ${vr.colors.$color_pink_dark}; font-size: 14px; font-weight: 700; margin: 13px 0 10px; `,qi=ct()(Kt.SvgIcon)` margin-right: 5px; vertical-align: middle; `,Ui=ct().button` position: absolute; top: 9px; right: 9px; border: none; background: none; cursor: pointer; `,Bi=ct().p` font-size: 13px; font-weight: 500; margin: 10px 0 13px; `,$i=ct().div` position: relative; background: ${e=>e.isTitleShortened?"#F5F7F7":"transparent"}; border: 1px solid #C7C7C7; border-left: 4px solid${vr.colors.$color_pink_dark}; padding: 0 16px; margin-bottom: 1.5em; `,Wi=e=>{const[t,s]=(0,p.useState)(null);return(0,p.useEffect)((()=>{e&&!t&&async function(){return await Mi({path:"yoast/v1/wincher/account/limit",method:"GET"})}().then((e=>s(e)))}),[t]),t};Wi.propTypes={limit:y().bool.isRequired};const Ki=({limit:e,usage:t,isTitleShortened:s,isFreeAccount:a})=>{const n=(0,m.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,m.__)("Your are tracking %1$s out of %2$s keyphrases included in your free account.","wordpress-seo"),t,e),r=(0,m.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,m.__)("Your are tracking %1$s out of %2$s keyphrases included in your account.","wordpress-seo"),t,e),o=a?n:r,i=(0,m.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,m.__)("Keyphrases tracked: %1$s/%2$s","wordpress-seo"),t,e),l=s?i:o;return(0,c.createElement)(Ni,null,s&&(0,c.createElement)(qi,{icon:"exclamation-triangle",color:vr.colors.$color_pink_dark,size:"14px"}),l)};Ki.propTypes={limit:y().number.isRequired,usage:y().number.isRequired,isTitleShortened:y().bool,isFreeAccount:y().bool};const Yi=(0,Ht.makeOutboundLink)(),zi=({discount:e,months:t})=>{const s=(0,c.createElement)(Yi,{href:wpseoAdminGlobalL10n["links.wincher.upgrade"],style:{fontWeight:600}},(0,m.sprintf)(/* Translators: %s : Expands to "Wincher". */ (0,m.__)("Click here to upgrade your %s plan","wordpress-seo"),"Wincher"));if(!e||!t)return(0,c.createElement)(Bi,null,s);const a=100*e,n=(0,m.sprintf)( /* Translators: %1$s expands to upgrade account link. * %2$s expands to the upgrade discount value. * %3$s expands to the upgrade discount duration e.g. 2 months. */ (0,m.__)("%1$s and get an exclusive %2$s discount for %3$s month(s).","wordpress-seo"),"{{wincherAccountUpgradeLink/}}",a+"%",t);return(0,c.createElement)(Bi,null,(0,Uo.Z)({mixedString:n,components:{wincherAccountUpgradeLink:s}}))};zi.propTypes={discount:y().number,months:y().number};const Hi=({onClose:e,isTitleShortened:t,trackingInfo:s})=>{const a=(()=>{const[e,t]=(0,p.useState)(null);return(0,p.useEffect)((()=>{e||async function(){return await Mi({path:"yoast/v1/wincher/account/upgrade-campaign",method:"GET"})}().then((e=>t(e)))}),[e]),e})();if(null===s)return null;const{limit:n,usage:r}=s;if(!(n&&r/n>=.8))return null;const o=Boolean(null==a?void 0:a.discount);return(0,c.createElement)($i,{isTitleShortened:t},e&&(0,c.createElement)(Ui,{type:"button","aria-label":(0,m.__)("Close the upgrade callout","wordpress-seo"),onClick:e},(0,c.createElement)(Kt.SvgIcon,{icon:"times-circle",color:vr.colors.$color_pink_dark,size:"14px"})),(0,c.createElement)(Ki,{...s,isTitleShortened:t,isFreeAccount:o}),(0,c.createElement)(zi,{discount:null==a?void 0:a.discount,months:null==a?void 0:a.months}))};Hi.propTypes={onClose:y().func,isTitleShortened:y().bool,trackingInfo:y().object};const ji=Hi,Vi=()=>(0,c.createElement)(Kt.Alert,{type:"success"},(0,m.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,m.__)("You have successfully connected to %s! You can now track the SEO performance for the keyphrase(s) of this page.","wordpress-seo"),"Wincher")),Gi=()=>(0,c.createElement)(Kt.Alert,{type:"info"},(0,m.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,m.__)("%s is currently tracking the ranking position(s) of your page. This may take a few minutes. Please wait or check back later.","wordpress-seo"),"Wincher")),Zi=({data:e,mapChartDataToTableData:t,dataTableCaption:s,dataTableHeaderLabels:a,isDataTableVisuallyHidden:n})=>e.length!==a.length?(0,c.createElement)("p",null,(0,m.__)("The number of headers and header labels don't match.","wordpress-seo")):(0,c.createElement)("div",{className:n?"screen-reader-text":null},(0,c.createElement)("table",null,(0,c.createElement)("caption",null,s),(0,c.createElement)("thead",null,(0,c.createElement)("tr",null,a.map(((e,t)=>(0,c.createElement)("th",{key:t},e))))),(0,c.createElement)("tbody",null,(0,c.createElement)("tr",null,e.map(((e,s)=>(0,c.createElement)("td",{key:s},t(e.y))))))));Zi.propTypes={data:y().arrayOf(y().shape({x:y().number,y:y().number})).isRequired,mapChartDataToTableData:y().func,dataTableCaption:y().string.isRequired,dataTableHeaderLabels:y().array.isRequired,isDataTableVisuallyHidden:y().bool},Zi.defaultProps={mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const Xi=Zi,Qi=({data:e,width:t,height:s,fillColor:a,strokeColor:n,strokeWidth:r,className:o,mapChartDataToTableData:i,dataTableCaption:l,dataTableHeaderLabels:d,isDataTableVisuallyHidden:u})=>{const m=Math.max(1,Math.max(...e.map((e=>e.x)))),h=Math.max(1,Math.max(...e.map((e=>e.y)))),g=s-r,y=e.map((e=>`${e.x/m*t},${g-e.y/h*g+r}`)).join(" "),f=`0,${g+r} `+y+` ${t},${g+r}`;return(0,c.createElement)(p.Fragment,null,(0,c.createElement)("svg",{width:t,height:s,viewBox:`0 0 ${t} ${s}`,className:o,role:"img","aria-hidden":"true",focusable:"false"},(0,c.createElement)("polygon",{fill:a,points:f}),(0,c.createElement)("polyline",{fill:"none",stroke:n,strokeWidth:r,strokeLinejoin:"round",strokeLinecap:"round",points:y})),i&&(0,c.createElement)(Xi,{data:e,mapChartDataToTableData:i,dataTableCaption:l,dataTableHeaderLabels:d,isDataTableVisuallyHidden:u}))};Qi.propTypes={data:y().arrayOf(y().shape({x:y().number,y:y().number})).isRequired,width:y().number.isRequired,height:y().number.isRequired,fillColor:y().string,strokeColor:y().string,strokeWidth:y().number,className:y().string,mapChartDataToTableData:y().func,dataTableCaption:y().string.isRequired,dataTableHeaderLabels:y().array.isRequired,isDataTableVisuallyHidden:y().bool},Qi.defaultProps={fillColor:null,strokeColor:"#000000",strokeWidth:1,className:"",mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const Ji=Qi,el=()=>(0,c.createElement)("p",{className:"yoast-wincher-seo-performance-modal__loading-message"},(0,m.__)("Tracking the ranking position...","wordpress-seo")," ",(0,c.createElement)(Kt.SvgIcon,{icon:"loading-spinner"})),tl=ct()(Kt.SvgIcon)` margin-left: 2px; flex-shrink: 0; rotate: ${e=>e.isImproving?"-90deg":"90deg"}; `,sl=ct().span` color: ${e=>e.isImproving?"#69AB56":"#DC3332"}; font-size: 13px; font-weight: 600; line-height: 20px; margin-right: 2px; margin-left: 12px; `,al=ct().td` padding-right: 0 !important; & > div { margin: 0px; } `,nl=ct().td` padding-left: 2px !important; `,rl=ct().td.attrs({className:"yoast-table--nopadding"})` & > div { justify-content: center; } `,ol=ct().div` display: flex; align-items: center; & > a { box-sizing: border-box; } `,il=ct().button` background: none; color: inherit; border: none; padding: 0; font: inherit; cursor: pointer; outline: inherit; display: flex; align-items: center; `,ll=ct().tr` background-color: ${e=>e.isEnabled?"#FFFFFF":"#F9F9F9"} !important; `;function cl(e){return Math.round(100*e)}function dl({chartData:e}){if((0,k.isEmpty)(e)||(0,k.isEmpty)(e.position))return"?";const t=function(e){return Array.from({length:e.position.history.length},((e,t)=>t+1)).map((e=>(0,m.sprintf)((0,m._n)("%d day","%d days",e,"wordpress-seo"),e)))}(e),s=e.position.history.map(((e,t)=>({x:t,y:101-e.value})));return(0,c.createElement)(Ji,{width:66,height:24,data:s,strokeWidth:1.8,strokeColor:"#498afc",fillColor:"#ade3fc",mapChartDataToTableData:cl,dataTableCaption:(0,m.__)("Keyphrase position in the last 90 days on a scale from 0 to 100.","wordpress-seo"),dataTableHeaderLabels:t})}dl.propTypes={chartData:y().object},dl.defaultProps={chartData:{}};const ul=({rowData:e})=>{var t;if(null==e||null===(t=e.position)||void 0===t||!t.change)return(0,c.createElement)(dl,{chartData:e});const s=e.position.change<0;return(0,c.createElement)(p.Fragment,null,(0,c.createElement)(dl,{chartData:e}),(0,c.createElement)(sl,{isImproving:s},Math.abs(e.position.change)),(0,c.createElement)(tl,{icon:"caret-right",color:s?"#69AB56":"#DC3332",size:"14px",isImproving:s}))};function pl(e){var t;const{keyphrase:s,rowData:a,onTrackKeyphrase:n,onUntrackKeyphrase:r,isFocusKeyphrase:o,isDisabled:i,isLoading:l,isSelected:d,onSelectKeyphrases:u}=e,h=!(0,k.isEmpty)(a),g=!(0,k.isEmpty)(null==a||null===(t=a.position)||void 0===t?void 0:t.history),y=(0,p.useCallback)((()=>{i||(h?r(s,a.id):n(s))}),[s,n,r,h,a,i]),f=(0,p.useCallback)((()=>{u((e=>d?e.filter((e=>e!==s)):e.concat(s)))}),[u,d,s]);return(0,c.createElement)(ll,{isEnabled:h},(0,c.createElement)(al,null,g&&(0,c.createElement)(Kt.Checkbox,{id:"select-"+s,onChange:f,checked:d,label:""})),(0,c.createElement)(nl,null,s,o&&(0,c.createElement)("span",null,"*")),function(e){const{rowData:t,websiteId:s,keyphrase:a,onSelectKeyphrases:n}=e,r=(0,p.useCallback)((()=>{n([a])}),[n,a]),o=!(0,k.isEmpty)(t),i=t&&t.updated_at&&Ii()(t.updated_at)>=Ii()().subtract(7,"days"),l=t?(0,m.sprintf)("https://app.wincher.com/websites/%s/keywords?serp=%s&utm_medium=plugin&utm_source=yoast&referer=yoast&partner=yoast",s,t.id):null;return o?i?(0,c.createElement)(p.Fragment,null,(0,c.createElement)("td",null,(0,c.createElement)(ol,null,function(e){return!e||!e.position||e.position.value>100?"> 100":e.position.value}(t),(0,c.createElement)(Kt.ButtonStyledLink,{variant:"secondary",href:l,style:{height:28,marginLeft:12},rel:"noopener",target:"_blank"},(0,m.__)("View","wordpress-seo")))),(0,c.createElement)("td",{className:"yoast-table--nopadding"},(0,c.createElement)(il,{type:"button",onClick:r},(0,c.createElement)(ul,{rowData:t}))),(0,c.createElement)("td",null,(d=t.updated_at,Ii()(d).fromNow()))):(0,c.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,c.createElement)(el,null)):(0,c.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,c.createElement)("i",null,(0,m.__)("Activate tracking to show the ranking position","wordpress-seo")));var d}(e),(0,c.createElement)(rl,null,function({keyphrase:e,isEnabled:t,toggleAction:s,isLoading:a}){return a?(0,c.createElement)(Kt.SvgIcon,{icon:"loading-spinner"}):(0,c.createElement)(Kt.Toggle,{id:`toggle-keyphrase-tracking-${e}`,className:"wincher-toggle",isEnabled:t,onSetToggleState:s,showToggleStateLabel:!1})}({keyphrase:s,isEnabled:h,toggleAction:y,isLoading:l})))}ul.propTypes={rowData:y().object},pl.propTypes={rowData:y().object,keyphrase:y().string.isRequired,onTrackKeyphrase:y().func,onUntrackKeyphrase:y().func,isFocusKeyphrase:y().bool,isDisabled:y().bool,isLoading:y().bool,websiteId:y().string,isSelected:y().bool.isRequired,onSelectKeyphrases:y().func.isRequired},pl.defaultProps={rowData:{},onTrackKeyphrase:()=>{},onUntrackKeyphrase:()=>{},isFocusKeyphrase:!1,isDisabled:!1,isLoading:!1,websiteId:""};const ml=(0,Ht.makeOutboundLink)(),hl=ct().span` display: block; font-style: italic; @media (min-width: 782px) { display: inline; position: absolute; ${(0,Ht.getDirectionalStyle)("right","left")}: 8px; } `,gl=ct().div` width: 100%; overflow-y: auto; `,yl=ct().th` pointer-events: ${e=>e.isDisabled?"none":"initial"}; padding-right: 0 !important; & > div { margin: 0px; } `,fl=ct().th` padding-left: 2px !important; `,wl=e=>{const t=(0,p.useRef)();return(0,p.useEffect)((()=>{t.current=e})),t.current},bl=(0,k.debounce)((async function(e=null,t=null,s=null,a){return await Mi({path:"yoast/v1/wincher/keyphrases",method:"POST",data:{keyphrases:e,permalink:s,startAt:t},signal:a})}),500,{leading:!0}),El=e=>{const{addTrackedKeyphrase:t,isLoggedIn:s,keyphrases:a,permalink:n,removeTrackedKeyphrase:r,setKeyphraseLimitReached:o,setRequestFailed:i,setRequestSucceeded:l,setTrackedKeyphrases:d,setHasTrackedAll:u,trackAll:h,trackedKeyphrases:g,isNewlyAuthenticated:y,websiteId:f,focusKeyphrase:w,newRequest:b,startAt:E,selectedKeyphrases:v,onSelectKeyphrases:_}=e,x=(0,p.useRef)(),S=(0,p.useRef)(),R=(0,p.useRef)(!1),[T,C]=(0,p.useState)([]),I=(0,p.useCallback)((e=>{const t=e.toLowerCase();return g&&!(0,k.isEmpty)(g)&&g.hasOwnProperty(t)?g[t]:null}),[g]),L=(0,p.useMemo)((()=>async()=>{await Fi((()=>(S.current&&S.current.abort(),S.current="undefined"==typeof AbortController?null:new AbortController,bl(a,E,n,S.current.signal))),(e=>{l(e),d(e.results)}),(e=>{i(e)}))}),[l,i,d,a,n,E]),P=(0,p.useCallback)((async e=>{const s=(Array.isArray(e)?e:[e]).map((e=>e.toLowerCase()));C((e=>[...e,...s])),await Fi((()=>Di(s)),(e=>{l(e),t(e.results),L()}),(e=>{400===e.status&&e.limit&&o(e.limit),i(e)}),201),C((e=>(0,k.without)(e,...s)))}),[l,i,o,t,L]),A=(0,p.useCallback)((async(e,t)=>{e=e.toLowerCase(),C((t=>[...t,e])),await Fi((()=>async function(e){return await Mi({path:"yoast/v1/wincher/keyphrases/untrack",method:"DELETE",data:{keyphraseID:e}})}(t)),(t=>{l(t),r(e)}),(e=>{i(e)})),C((t=>(0,k.without)(t,e)))}),[l,r,i]),O=(0,p.useCallback)((async e=>{b(),await P(e)}),[b,P]),F=wl(n),M=wl(a),D=wl(E),N=n&&E;(0,p.useEffect)((()=>{s&&N&&(n!==F||(0,k.difference)(a,M).length||E!==D)&&L()}),[s,n,F,a,M,L,N,E,D]),(0,p.useEffect)((()=>{if(s&&h&&null!==g){const e=a.filter((e=>!I(e)));e.length&&P(e),u()}}),[s,h,g,P,u,I,a]),(0,p.useEffect)((()=>{y&&!R.current&&(L(),R.current=!0)}),[y,L]),(0,p.useEffect)((()=>{if(s&&!(0,k.isEmpty)(g))return(0,k.filter)(g,(e=>(0,k.isEmpty)(e.updated_at))).length>0&&(x.current=setInterval((()=>{L()}),1e4)),()=>{clearInterval(x.current)}}),[s,g,L]);const q=s&&null===g,U=(0,p.useMemo)((()=>(0,k.isEmpty)(g)?[]:Object.values(g).filter((e=>{var t;return!(0,k.isEmpty)(null==e||null===(t=e.position)||void 0===t?void 0:t.history)})).map((e=>e.keyword))),[g]),B=(0,p.useMemo)((()=>v.length>0&&U.length>0&&U.every((e=>v.includes(e)))),[v,U]),$=(0,p.useCallback)((()=>{_(B?[]:U)}),[_,B,U]),W=(0,p.useMemo)((()=>(0,k.orderBy)(a,[e=>Object.values(g||{}).map((e=>e.keyword)).includes(e)],["desc"])),[a,g]);return a&&!(0,k.isEmpty)(a)&&(0,c.createElement)(p.Fragment,null,(0,c.createElement)(gl,null,(0,c.createElement)("table",{className:"yoast yoast-table"},(0,c.createElement)("thead",null,(0,c.createElement)("tr",null,(0,c.createElement)(yl,{isDisabled:0===U.length},(0,c.createElement)(Kt.Checkbox,{id:"select-all",onChange:$,checked:B,label:""})),(0,c.createElement)(fl,{scope:"col",abbr:(0,m.__)("Keyphrase","wordpress-seo")},(0,m.__)("Keyphrase","wordpress-seo")),(0,c.createElement)("th",{scope:"col",abbr:(0,m.__)("Position","wordpress-seo")},(0,m.__)("Position","wordpress-seo")),(0,c.createElement)("th",{scope:"col",abbr:(0,m.__)("Position over time","wordpress-seo")},(0,m.__)("Position over time","wordpress-seo")),(0,c.createElement)("th",{scope:"col",abbr:(0,m.__)("Last updated","wordpress-seo")},(0,m.__)("Last updated","wordpress-seo")),(0,c.createElement)("th",{scope:"col",abbr:(0,m.__)("Tracking","wordpress-seo")},(0,m.__)("Tracking","wordpress-seo")))),(0,c.createElement)("tbody",null,W.map(((e,t)=>(0,c.createElement)(pl,{key:`trackable-keyphrase-${t}`,keyphrase:e,onTrackKeyphrase:O,onUntrackKeyphrase:A,rowData:I(e),isFocusKeyphrase:e===w.trim().toLowerCase(),websiteId:f,isDisabled:!s,isLoading:q||T.indexOf(e.toLowerCase())>=0,isSelected:v.includes(e),onSelectKeyphrases:_})))))),(0,c.createElement)("p",{style:{marginBottom:0,position:"relative"}},(0,c.createElement)(ml,{href:wpseoAdminGlobalL10n["links.wincher.login"]},(0,m.sprintf)(/* translators: %s expands to Wincher */ (0,m.__)("Get more insights over at %s","wordpress-seo"),"Wincher")),(0,c.createElement)(hl,null,(0,m.__)("* focus keyphrase","wordpress-seo"))))};El.propTypes={addTrackedKeyphrase:y().func.isRequired,isLoggedIn:y().bool,isNewlyAuthenticated:y().bool,keyphrases:y().array,newRequest:y().func.isRequired,removeTrackedKeyphrase:y().func.isRequired,setRequestFailed:y().func.isRequired,setKeyphraseLimitReached:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setTrackedKeyphrases:y().func.isRequired,setHasTrackedAll:y().func.isRequired,trackAll:y().bool,trackedKeyphrases:y().object,websiteId:y().string,permalink:y().string.isRequired,focusKeyphrase:y().string,startAt:y().string,selectedKeyphrases:y().arrayOf(y().string).isRequired,onSelectKeyphrases:y().func.isRequired},El.defaultProps={isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],trackAll:!1,websiteId:"",focusKeyphrase:""};const vl=El,_l=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getWincherWebsiteId:t,getWincherTrackableKeyphrases:s,getWincherLoginStatus:a,getWincherPermalink:n,getFocusKeyphrase:r,isWincherNewlyAuthenticated:o,shouldWincherTrackAll:i}=e("yoast-seo/editor");return{focusKeyphrase:r(),keyphrases:s(),isLoggedIn:a(),trackAll:i(),websiteId:t(),isNewlyAuthenticated:o(),permalink:n()}})),(0,i.withDispatch)((e=>{const{setWincherNewRequest:t,setWincherRequestSucceeded:s,setWincherRequestFailed:a,setWincherSetKeyphraseLimitReached:n,setWincherTrackedKeyphrases:r,setWincherTrackingForKeyphrase:o,setWincherTrackAllKeyphrases:i,unsetWincherTrackingForKeyphrase:l}=e("yoast-seo/editor");return{newRequest:()=>{t()},setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{a(e)},setKeyphraseLimitReached:e=>{n(e)},addTrackedKeyphrase:e=>{o(e)},removeTrackedKeyphrase:e=>{l(e)},setTrackedKeyphrases:e=>{r(e)},setHasTrackedAll:()=>{i(!1)}}}))])(vl),kl=(0,Ht.makeOutboundLink)(),xl=(0,Ht.makeOutboundLink)(),Sl=()=>{const e=(0,m.sprintf)((0,m.__)(/* translators: %1$s expands to a link to Wincher, %2$s expands to a link to the keyphrase tracking article on Yoast.com */ "With %1$s you can track the ranking position of your page in the search results based on your keyphrase(s). %2$s","wordpress-seo"),"{{wincherLink/}}","{{wincherReadMoreLink/}}");return(0,c.createElement)("p",null,(0,Uo.Z)({mixedString:e,components:{wincherLink:(0,c.createElement)(kl,{href:wpseoAdminGlobalL10n["links.wincher.website"]},"Wincher"),wincherReadMoreLink:(0,c.createElement)(xl,{href:wpseoAdminL10n["shortlinks.wincher.seo_performance"]},(0,m.__)("Read more about keyphrase tracking with Wincher","wordpress-seo"))}}))},Rl=()=>(0,c.createElement)(Kt.Alert,{type:"error"},(0,m.__)("No keyphrase has been set. Please set a keyphrase first.","wordpress-seo")),Tl=()=>(0,c.createElement)(Kt.Alert,{type:"info"},(0,m.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,m.__)("Automatic tracking of keyphrases is enabled. Your keyphrase(s) will automatically be tracked by %s when you publish your post.","wordpress-seo"),"Wincher"));class Cl{constructor(e,t={},s={}){this.url=e,this.origin=new URL(e).origin,this.eventHandlers=Object.assign({success:{type:"",callback:()=>{}},error:{type:"",callback:()=>{}}},t),this.options=Object.assign({height:570,width:340,title:""},s),this.popup=null,this.createPopup=this.createPopup.bind(this),this.messageHandler=this.messageHandler.bind(this),this.getPopup=this.getPopup.bind(this)}createPopup(){const{height:e,width:t,title:s}=this.options,a=["top="+(window.top.outerHeight/2+window.top.screenY-e/2),"left="+(window.top.outerWidth/2+window.top.screenX-t/2),"width="+t,"height="+e,"resizable=1","scrollbars=1","status=0"];this.popup&&!this.popup.closed||(this.popup=window.open(this.url,s,a.join(","))),this.popup&&this.popup.focus(),window.addEventListener("message",this.messageHandler,!1)}async messageHandler(e){const{data:t,source:s,origin:a}=e;a===this.origin&&this.popup===s&&(t.type===this.eventHandlers.success.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.success.callback(t)),t.type===this.eventHandlers.error.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.error.callback(t)))}getPopup(){return this.popup}isClosed(){return!this.popup||this.popup.closed}focus(){this.isClosed()||this.popup.focus()}}const Il=e=>{const t=(0,m.sprintf)(/* translators: %s expands to a link to open the Wincher login popup. */ (0,m.__)("It seems like something went wrong when retrieving your website's data. Please %s and try again.","wordpress-seo"),"{{reconnectToWincher/}}","Wincher");return(0,c.createElement)(Kt.Alert,{type:"error",className:e.className},(0,Uo.Z)({mixedString:t,components:{reconnectToWincher:(0,c.createElement)("a",{href:"#",onClick:t=>{t.preventDefault(),e.onReconnect()}},(0,m.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,m.__)("reconnect to %s","wordpress-seo"),"Wincher"))}}))};Il.propTypes={onReconnect:y().func.isRequired,className:y().string},Il.defaultProps={className:""};const Ll=Il,Pl=()=>(0,c.createElement)(Kt.Alert,{type:"error"},(0,m.__)("Before you can track your SEO performance make sure to set either the post’s title and save it as a draft or manually set the post’s slug.","wordpress-seo")),Al=window.yoast["chart.js"],Ol="label";function Fl(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function Ml(e,t){e.labels=t}function Dl(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ol;const a=[];e.datasets=t.map((t=>{const n=e.datasets.find((e=>e[s]===t[s]));return n&&t.data&&!a.includes(n)?(a.push(n),Object.assign(n,t),n):{...t}}))}function Nl(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ol;const s={labels:[],datasets:[]};return Ml(s,e.labels),Dl(s,e.datasets,t),s}function ql(e,t){const{height:s=150,width:a=300,redraw:n=!1,datasetIdKey:r,type:o,data:i,options:l,plugins:d=[],fallbackContent:u,updateMode:p,...m}=e,h=(0,c.useRef)(null),g=(0,c.useRef)(),y=()=>{h.current&&(g.current=new Al.Chart(h.current,{type:o,data:Nl(i,r),options:l&&{...l},plugins:d}),Fl(t,g.current))},f=()=>{Fl(t,null),g.current&&(g.current.destroy(),g.current=null)};return(0,c.useEffect)((()=>{!n&&g.current&&l&&function(e,t){const s=e.options;s&&t&&Object.assign(s,t)}(g.current,l)}),[n,l]),(0,c.useEffect)((()=>{!n&&g.current&&Ml(g.current.config.data,i.labels)}),[n,i.labels]),(0,c.useEffect)((()=>{!n&&g.current&&i.datasets&&Dl(g.current.config.data,i.datasets,r)}),[n,i.datasets]),(0,c.useEffect)((()=>{g.current&&(n?(f(),setTimeout(y)):g.current.update(p))}),[n,l,i.labels,i.datasets,p]),(0,c.useEffect)((()=>{g.current&&(f(),setTimeout(y))}),[o]),(0,c.useEffect)((()=>(y(),()=>f())),[]),c.createElement("canvas",Object.assign({ref:h,role:"img",height:s,width:a},m),u)}const Ul=(0,c.forwardRef)(ql);function Bl(e,t){return Al.Chart.register(t),(0,c.forwardRef)(((t,s)=>c.createElement(Ul,Object.assign({},t,{ref:s,type:e}))))}const $l=Bl("line",Al.LineController),Wl={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Al._adapters._date.override("function"==typeof Ii()?{_id:"moment",formats:function(){return Wl},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=Ii()(e,t):e instanceof Ii()||(e=Ii()(e)),e.isValid()?e.valueOf():null},format:function(e,t){return Ii()(e).format(t)},add:function(e,t,s){return Ii()(e).add(t,s).valueOf()},diff:function(e,t,s){return Ii()(e).diff(Ii()(t),s)},startOf:function(e,t,s){return e=Ii()(e),"isoWeek"===t?(s=Math.trunc(Math.min(Math.max(0,s),6)),e.isoWeekday(s).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return Ii()(e).endOf(t).valueOf()}}:{}),Math.PI,Number.POSITIVE_INFINITY,Math.log10,Math.sign,"undefined"==typeof window||window.requestAnimationFrame,new Map,Object.create(null),Object.create(null),Number.EPSILON;const Kl=["top","right","bottom","left"];function Yl(e,t,s){const a={};s=s?"-"+s:"";for(let n=0;n<4;n++){const r=Kl[n];a[r]=parseFloat(e[t+"-"+r+s])||0}return a.width=a.left+a.right,a.height=a.top+a.bottom,a}!function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}}(),Al.Chart.register(Al.CategoryScale,Al.LineController,Al.LineElement,Al.PointElement,Al.LinearScale,Al.TimeScale,Al.Legend,Al.Tooltip);const zl=["#ff983b","#ffa3f7","#3798ff","#ff3b3b","#acce81","#b51751","#3949ab","#26c6da","#ccb800","#de66ff","#4db6ac","#ffab91","#45f5f1","#77f210","#90a4ae","#ffd54f","#006b5e","#8ec7d2","#b1887c","#cc9300"];function Hl({datasets:e,isChartShown:t,keyphrases:s}){if(!t)return null;const a=(0,p.useMemo)((()=>Object.fromEntries([...s].sort().map(((e,t)=>[e,zl[t%zl.length]])))),[s]),n=e.map((e=>{const t=a[e.label];return{...e,data:e.data.map((({datetime:e,value:t})=>({x:e,y:t}))),lineTension:0,pointRadius:1,pointHoverRadius:4,borderWidth:2,pointHitRadius:6,backgroundColor:t,borderColor:t}})).filter((e=>!1!==e.selected));return(0,c.createElement)($l,{height:100,data:{datasets:n},options:{plugins:{legend:{display:!0,position:"bottom",labels:{color:"black",usePointStyle:!0,boxHeight:7,boxWidth:7},onClick:k.noop},tooltip:{enabled:!0,callbacks:{title:e=>Ii()(e[0].raw.x).utc().format("YYYY-MM-DD")},titleAlign:"center",mode:"xPoint",position:"nearest",usePointStyle:!0,boxHeight:7,boxWidth:7,boxPadding:2}},scales:{x:{bounds:"ticks",type:"time",time:{unit:"day",minUnit:"day"},grid:{display:!1},ticks:{autoSkipPadding:50,maxRotation:0,color:"black"}},y:{bounds:"ticks",offset:!0,reverse:!0,ticks:{precision:0,color:"black"},max:101}}}})}Al.Interaction.modes.xPoint=(e,t,s,a)=>{const n=function(e,t){if("native"in e)return e;const{canvas:s,currentDevicePixelRatio:a}=t,n=(m=s).ownerDocument.defaultView.getComputedStyle(m,null),r="border-box"===n.boxSizing,o=Yl(n,"padding"),i=Yl(n,"border","width"),{x:l,y:c,box:d}=function(e,t){const s=e.touches,a=s&&s.length?s[0]:e,{offsetX:n,offsetY:r}=a;let o,i,l=!1;if(((e,t,s)=>(e>0||t>0)&&(!s||!s.shadowRoot))(n,r,e.target))o=n,i=r;else{const e=t.getBoundingClientRect();o=a.clientX-e.left,i=a.clientY-e.top,l=!0}return{x:o,y:i,box:l}}(e,s),u=o.left+(d&&i.left),p=o.top+(d&&i.top);var m;let{width:h,height:g}=t;return r&&(h-=o.width+i.width,g-=o.height+i.height),{x:Math.round((l-u)/h*s.width/a),y:Math.round((c-p)/g*s.height/a)}}(t,e);let r=[];if(Al.Interaction.evaluateInteractionItems(e,"x",n,((e,t,s)=>{e.inXRange(n.x,a)&&r.push({element:e,datasetIndex:t,index:s})})),0===r.length)return r;const o=r.reduce(((e,t)=>Math.abs(n.x-e.element.x)e.element.x===o)),r.some((e=>Math.abs(e.element.y-n.y)<10))?r:[]},Hl.propTypes={datasets:y().arrayOf(y().shape({label:y().string.isRequired,data:y().arrayOf(y().shape({datetime:y().string.isRequired,value:y().number.isRequired})).isRequired,selected:y().bool})).isRequired,isChartShown:y().bool.isRequired,keyphrases:y().array.isRequired};const jl=({response:e,onLogin:t})=>[401,403,404].includes(e.status)?(0,c.createElement)(Ll,{onReconnect:t}):(0,c.createElement)(Oi,null);jl.propTypes={response:y().object.isRequired,onLogin:y().func.isRequired};const Vl=({isSuccess:e,response:t,allKeyphrasesMissRanking:s,onLogin:a,keyphraseLimitReached:n,limit:r})=>n?(0,c.createElement)(Ai,{limit:r}):(0,k.isEmpty)(t)||e?s?(0,c.createElement)(Gi,null):null:(0,c.createElement)(jl,{response:t,onLogin:a});Vl.propTypes={isSuccess:y().bool.isRequired,allKeyphrasesMissRanking:y().bool.isRequired,response:y().object,onLogin:y().func.isRequired,keyphraseLimitReached:y().bool.isRequired,limit:y().number.isRequired},Vl.defaultProps={response:{}};let Gl=null;const Zl=async e=>{if(Gl&&!Gl.isClosed())return void Gl.focus();const{url:t}=await async function(){return await Mi({path:"yoast/v1/wincher/authorization-url",method:"GET"})}();Gl=new Cl(t,{success:{type:"wincher:oauth:success",callback:t=>(async(e,t)=>{const{onAuthentication:s,setRequestSucceeded:a,setRequestFailed:n,keyphrases:r,addTrackedKeyphrase:o,setKeyphraseLimitReached:i}=e;await Fi((()=>async function(e){const{code:t,websiteId:s}=e;return await Mi({path:"yoast/v1/wincher/authenticate",method:"POST",data:{code:t,websiteId:s}})}(t)),(async e=>{s(!0,!0,t.websiteId.toString()),a(e);const l=(Array.isArray(r)?r:[r]).map((e=>e.toLowerCase()));await Fi((()=>Di(l)),(e=>{a(e),o(e.results)}),(e=>{400===e.status&&e.limit&&i(e.limit),n(e)}),201);const c=Gl.getPopup();c&&c.close()}),(async e=>n(e)))})(e,t)},error:{type:"wincher:oauth:error",callback:()=>e.onAuthentication(!1,!1)}},{title:"Wincher_login",width:500,height:700}),Gl.createPopup()},Xl=e=>e.isLoggedIn?null:(0,c.createElement)("p",null,(0,c.createElement)(Kt.NewButton,{onClick:e.onLogin,variant:"primary"},(0,m.sprintf)(/* translators: %s expands to Wincher */ (0,m.__)("Connect with %s","wordpress-seo"),"Wincher")));Xl.propTypes={isLoggedIn:y().bool.isRequired,onLogin:y().func.isRequired};const Ql=ct().div` p { margin: 1em 0; } `,Jl=ct().div` ${e=>e.isDisabled&&"\n\t\topacity: .5;\n\t\tpointer-events: none;\n\t"}; `,ec=ct().div` font-weight: var(--yoast-font-weight-bold); color: var(--yoast-color-label); font-size: var(--yoast-font-size-default); `,tc=ct().div.attrs({className:"yoast-field-group"})` display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; `,sc=ct().div` margin: 8px 0; `,ac=Ii().utc().startOf("day"),nc=[{name:(0,m.__)("Last day","wordpress-seo"),value:Ii()(ac).subtract(1,"days").format(),defaultIndex:1},{name:(0,m.__)("Last week","wordpress-seo"),value:Ii()(ac).subtract(1,"week").format(),defaultIndex:2},{name:(0,m.__)("Last month","wordpress-seo"),value:Ii()(ac).subtract(1,"month").format(),defaultIndex:3},{name:(0,m.__)("Last year","wordpress-seo"),value:Ii()(ac).subtract(1,"year").format(),defaultIndex:0}],rc=e=>{const{onSelect:t,selected:s,options:a,isLoggedIn:n}=e;return n?a.length<1?null:(0,c.createElement)("select",{className:"components-select-control__input",id:"wincher-period-picker",value:(null==s?void 0:s.value)||a[0].value,onChange:t},a.map((e=>(0,c.createElement)("option",{key:e.name,value:e.value},e.name)))):null};rc.propTypes={onSelect:y().func.isRequired,selected:y().object,options:y().array.isRequired,isLoggedIn:y().bool.isRequired};const oc=e=>{const{trackedKeyphrases:t,isLoggedIn:s,keyphrases:a,shouldTrackAll:n,permalink:r,historyDaysLimit:o}=e;if(!r&&s)return(0,c.createElement)(Pl,null);if(0===a.length)return(0,c.createElement)(Rl,null);const i=Ii()(ac).subtract(o,"days"),l=nc.filter((e=>Ii()(e.value).isSameOrAfter(i))),d=(0,k.orderBy)(l,(e=>e.defaultIndex),"desc")[0],[u,h]=(0,p.useState)(d),[g,y]=(0,p.useState)([]),f=g.length>0,w=(0,Mt.usePrevious)(t);(0,p.useEffect)((()=>{if(!(0,k.isEmpty)(t)&&(0,k.difference)(Object.keys(t),Object.keys(w||[])).length){const e=Object.values(t).map((e=>e.keyword));y(e)}}),[t,w]),(0,p.useEffect)((()=>{h(d)}),[null==d?void 0:d.name]);const b=(0,p.useCallback)((e=>{const t=nc.find((t=>t.value===e.target.value));t&&h(t)}),[h]),E=(0,p.useMemo)((()=>(0,k.isEmpty)(g)||(0,k.isEmpty)(t)?[]:Object.values(t).filter((e=>{var t;return!(null==e||null===(t=e.position)||void 0===t||!t.history)})).map((e=>{var t;return{label:e.keyword,data:e.position.history,selected:g.includes(e.keyword)&&!(0,k.isEmpty)(null===(t=e.position)||void 0===t?void 0:t.history)}}))),[g,t]);return(0,c.createElement)(Jl,{isDisabled:!s},(0,c.createElement)("p",null,(0,m.__)("You can enable / disable tracking the SEO performance for each keyphrase below.","wordpress-seo")),s&&n&&(0,c.createElement)(Tl,null),(0,c.createElement)(tc,null,(0,c.createElement)(rc,{selected:u,onSelect:b,options:l,isLoggedIn:s})),(0,c.createElement)(sc,null,(0,c.createElement)(Hl,{isChartShown:f,datasets:E,keyphrases:a})),(0,c.createElement)(_l,{startAt:null==u?void 0:u.value,selectedKeyphrases:g,onSelectKeyphrases:y,trackedKeyphrases:t}))};function ic(e){const{isNewlyAuthenticated:t,isLoggedIn:s}=e,a=(0,p.useCallback)((()=>{Zl(e)}),[Zl,e]),n=Wi(s);return(0,c.createElement)(Ql,null,t&&(0,c.createElement)(Vi,null),s&&(0,c.createElement)(ji,{trackingInfo:n}),(0,c.createElement)(ec,null,(0,m.__)("SEO performance","wordpress-seo"),(0,c.createElement)(Kt.HelpIcon,{linkTo:wpseoAdminL10n["shortlinks.wincher.seo_performance"] /* translators: Hidden accessibility text. */,linkText:(0,m.__)("Learn more about the SEO performance feature.","wordpress-seo")})),(0,c.createElement)(Sl,null),(0,c.createElement)(Xl,{isLoggedIn:s,onLogin:a}),(0,c.createElement)(Vl,{...e,onLogin:a}),(0,c.createElement)(oc,{...e,historyDaysLimit:(null==n?void 0:n.historyDays)||31}))}oc.propTypes={trackedKeyphrases:y().object,keyphrases:y().array.isRequired,isLoggedIn:y().bool.isRequired,shouldTrackAll:y().bool.isRequired,permalink:y().string.isRequired,historyDaysLimit:y().number},ic.propTypes={trackedKeyphrases:y().object,addTrackedKeyphrase:y().func.isRequired,isLoggedIn:y().bool,isNewlyAuthenticated:y().bool,keyphrases:y().array,response:y().object,shouldTrackAll:y().bool,permalink:y().string,historyDaysLimit:y().number},ic.defaultProps={trackedKeyphrases:null,isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],response:{},shouldTrackAll:!1,permalink:"",historyDaysLimit:0};const lc=(0,Mt.compose)([(0,i.withSelect)((e=>{const{isWincherNewlyAuthenticated:t,getWincherKeyphraseLimitReached:s,getWincherLimit:a,getWincherHistoryDaysLimit:n,getWincherLoginStatus:r,getWincherRequestIsSuccess:o,getWincherRequestResponse:i,getWincherTrackableKeyphrases:l,getWincherTrackedKeyphrases:c,getWincherAllKeyphrasesMissRanking:d,getWincherPermalink:u,shouldWincherAutomaticallyTrackAll:p}=e("yoast-seo/editor");return{keyphrases:l(),trackedKeyphrases:c(),allKeyphrasesMissRanking:d(),isLoggedIn:r(),isNewlyAuthenticated:t(),isSuccess:o(),keyphraseLimitReached:s(),limit:a(),response:i(),shouldTrackAll:p(),permalink:u(),historyDaysLimit:n()}})),(0,i.withDispatch)((e=>{const{setWincherWebsiteId:t,setWincherRequestSucceeded:s,setWincherRequestFailed:a,setWincherTrackingForKeyphrase:n,setWincherSetKeyphraseLimitReached:r,setWincherLoginStatus:o}=e("yoast-seo/editor");return{setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{a(e)},addTrackedKeyphrase:e=>{n(e)},setKeyphraseLimitReached:e=>{r(e)},onAuthentication:(e,s,a)=>{t(a),o(e,s)}}}))])(ic),cc=ct()(ki)` width: 18px; height: 18px; margin: 3px; `;function dc(e){const{keyphrases:t,onNoKeyphraseSet:s,onOpen:a,location:n}=e;if(!t.length){let e=document.querySelector("#focus-keyword-input-metabox");return e||(e=document.querySelector("#focus-keyword-input-sidebar")),e.focus(),void s()}a(n)}function uc(e){const{location:t,whichModalOpen:s,shouldCloseOnClickOutside:a}=e,n=(0,p.useCallback)((()=>{dc(e)}),[dc,e]),r=(0,m.__)("Track SEO performance","wordpress-seo"),o=_a();return(0,c.createElement)(p.Fragment,null,s===t&&(0,c.createElement)(ls,{title:r,onRequestClose:e.onClose,icon:(0,c.createElement)(Ti,null),additionalClassName:"yoast-wincher-seo-performance-modal yoast-gutenberg-modal__no-padding",shouldCloseOnClickOutside:a},(0,c.createElement)(ns,{className:"yoast-gutenberg-modal__content yoast-wincher-seo-performance-modal__content"},(0,c.createElement)(lc,null))),"sidebar"===t&&(0,c.createElement)(zt,{id:`wincher-open-button-${t}`,title:r,SuffixHeroIcon:(0,c.createElement)(cc,{className:"yst-text-slate-500",...o}),onClick:n}),"metabox"===t&&(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(Wt,{id:`wincher-open-button-${t}`,onClick:n},(0,c.createElement)(Wt.Text,null,r),(0,c.createElement)(ki,{className:"yst-h-5 yst-w-5 yst-text-slate-500",...o}))))}uc.propTypes={location:y().string,whichModalOpen:y().oneOf(["none","metabox","sidebar","postpublish"]),shouldCloseOnClickOutside:y().bool,keyphrases:y().array.isRequired,onNoKeyphraseSet:y().func.isRequired,onOpen:y().func.isRequired,onClose:y().func.isRequired},uc.defaultProps={location:"",whichModalOpen:"none",shouldCloseOnClickOutside:!0};const pc=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getWincherModalOpen:t,getWincherTrackableKeyphrases:s}=e("yoast-seo/editor");return{keyphrases:s(),whichModalOpen:t()}})),(0,i.withDispatch)((e=>{const{setWincherOpenModal:t,setWincherDismissModal:s,setWincherNoKeyphrase:a}=e("yoast-seo/editor");return{onOpen:e=>{t(e)},onClose:()=>{s()},onNoKeyphraseSet:()=>{a()}}}))])(uc),mc=e=>(0,c.createElement)(as,{title:(0,m.__)("Reach a wider audience","wordpress-seo"),description:(0,m.__)("Get help optimizing for up to 5 related keyphrases. This helps you reach a wider audience and get more traffic.","wordpress-seo"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qt(),upsellButtonText:(0,m.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,m.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:e.buyLink,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,m.__)("1 year free support and updates included!","wordpress-seo")});mc.propTypes={buyLink:y().string.isRequired};const hc=mc,gc=()=>{const[e,,,t,s]=(0,h.useToggleState)(!1),a=(0,p.useContext)(dt.LocationContext),{locationContext:n}=(0,dt.useRootContext)(),r=(0,h.useSvgAria)(),o=wpseoAdminL10n["sidebar"===a.toLowerCase()?"shortlinks.upsell.sidebar.additional_button":"shortlinks.upsell.metabox.additional_button"];return(0,c.createElement)(c.Fragment,null,e&&(0,c.createElement)(ls,{title:(0,m.__)("Add related keyphrases","wordpress-seo"),onRequestClose:s,additionalClassName:"",id:"yoast-additional-keyphrases-modal",className:`${os} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,c.createElement)(rs,null,(0,c.createElement)(hc,{buyLink:(0,Nt.addQueryArgs)(o,{context:n})}))),"sidebar"===a&&(0,c.createElement)(zt,{id:"yoast-additional-keyphrase-modal-open-button",title:(0,m.__)("Add related keyphrase","wordpress-seo"),prefixIcon:{icon:"plus",color:vr.colors.$color_grey_medium_dark},onClick:t},(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...r})))),"metabox"===a&&(0,c.createElement)("div",{className:"yst-root"},(0,c.createElement)(Wt,{id:"yoast-additional-keyphrase-metabox-modal-open-button",onClick:t},(0,c.createElement)(Kt.SvgIcon,{icon:"plus",color:vr.colors.$color_grey_medium_dark}),(0,c.createElement)(Wt.Text,null,(0,m.__)("Add related keyphrase","wordpress-seo")),(0,c.createElement)(h.Badge,{size:"small",variant:"upsell"},(0,c.createElement)(Dt,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...r}),(0,c.createElement)("span",null,"Premium")))))};function yc({isLoading:e,onLoad:t,settings:s}){const a=(({webinarIntroUrl:e})=>{const{shouldShow:t}=Es(),s=(e=>{for(const t of e)if(null!=t&&t.getIsEligible())return t;return null})([{getIsEligible:()=>t,component:_s},{getIsEligible:Ea,component:()=>(0,c.createElement)(ba,{hasIcon:!1,image:null,url:e})},{getIsEligible:()=>!0,component:()=>(0,c.createElement)(fs,{hasIcon:!1})}]);return(null==s?void 0:s.component)||null})({webinarIntroUrl:(0,i.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/webinar-intro-elementor")),[])});return(0,p.useEffect)((()=>{setTimeout((()=>{e&&t()}))})),e?null:(0,c.createElement)(p.Fragment,null,(0,c.createElement)(u.Fill,{name:"YoastElementor"},(0,c.createElement)(an,{renderPriority:1},(0,c.createElement)(tn,null),a&&(0,c.createElement)("div",{className:"yst-inline-block yst-px-1.5"},(0,c.createElement)(a,null))),s.isKeywordAnalysisActive&&(0,c.createElement)(an,{renderPriority:8},(0,c.createElement)(ds.KeywordInput,{isSEMrushIntegrationActive:s.isSEMrushIntegrationActive}),!window.wpseoScriptData.metabox.isPremium&&(0,c.createElement)(u.Fill,{name:"YoastRelatedKeyphrases"},(0,c.createElement)(_i,null))),s.isKeywordAnalysisActive&&(0,c.createElement)(an,{renderPriority:10},(0,c.createElement)(p.Fragment,null,(0,c.createElement)(ds.SeoAnalysis,{shouldUpsell:s.shouldUpsell,shouldUpsellWordFormRecognition:s.isWordFormRecognitionActive,shouldUpsellHighlighting:s.shouldUpsell}),s.shouldUpsell&&(0,c.createElement)(Do,null))),s.isContentAnalysisActive&&(0,c.createElement)(an,{renderPriority:15},(0,c.createElement)(ds.ReadabilityAnalysis,{shouldUpsell:s.shouldUpsell,shouldUpsellHighlighting:s.shouldUpsell})),s.isInclusiveLanguageAnalysisActive&&(0,c.createElement)(an,{renderPriority:19},(0,c.createElement)(ds.InclusiveLanguageAnalysis,{shouldUpsellHighlighting:s.shouldUpsell})),s.isKeywordAnalysisActive&&(0,c.createElement)(an,{key:"additional-keywords-upsell",renderPriority:22},s.shouldUpsell&&(0,c.createElement)(gc,null)),s.isKeywordAnalysisActive&&s.isWincherIntegrationActive&&(0,c.createElement)(an,{key:"wincher-seo-performance",renderPriority:23},(0,c.createElement)(pc,{location:"sidebar",shouldCloseOnClickOutside:!1})),s.shouldUpsell&&(0,c.createElement)(an,{key:"internal-linking-suggestions-upsell",renderPriority:24},(0,c.createElement)(cs,null)),(0,c.createElement)(an,{renderPriority:25},(0,c.createElement)(gr,null)),(s.useOpenGraphData||s.useTwitterData)&&(0,c.createElement)(an,{key:"social-appearance",renderPriority:26},(0,c.createElement)(Po,{useOpenGraphData:s.useOpenGraphData,useTwitterData:s.useTwitterData})),s.displaySchemaSettings&&(0,c.createElement)(an,{renderPriority:28},(0,c.createElement)(qo,{title:(0,m.__)("Schema","wordpress-seo")},(0,c.createElement)(Qo,null))),s.displayAdvancedTab&&(0,c.createElement)(an,{renderPriority:29},(0,c.createElement)(qo,{title:(0,m.__)("Advanced","wordpress-seo"),buttonId:"yoast-seo-elementor-advanced-button"},(0,c.createElement)(oi,{location:"sidebar"}))),s.isCornerstoneActive&&(0,c.createElement)(an,{renderPriority:30},(0,c.createElement)(ps,null)),s.isInsightsEnabled&&(0,c.createElement)(an,{renderPriority:32},(0,c.createElement)(Ja,{location:"elementor"}))))}yc.propTypes={isLoading:y().bool.isRequired,onLoad:y().func.isRequired,settings:y().object.isRequired};const fc=(0,Mt.compose)([(0,i.withSelect)((e=>{const{getPreferences:t,getSnippetEditorIsLoading:s}=e("yoast-seo/editor");return{settings:t(),isLoading:s()}})),(0,i.withDispatch)((e=>{const{loadSnippetEditorData:t}=e("yoast-seo/editor");return{onLoad:t}}))])(yc),wc="yoast-elementor-react-tab",bc="yoast-seo-tab",Ec="Yoast SEO",vc="panel/page-settings",_c=()=>{const{settings:e}=elementor.documents.getCurrent().config;e.tabs[bc]||(e.tabs=(0,k.reduce)(e.tabs,((e,t,s)=>(e[s]=t,"settings"===s&&(e[bc]=Ec),e)),{})),$e.components.get(vc).hasTab(bc)||$e.components.get(vc).addTab(bc,{title:Ec})};let kc=!1,xc=!1;const Sc=(0,k.debounce)(Tt,500,{trailing:!0}),Rc=()=>{const e=document.getElementById("yoast-form");if(!e)return void console.error("Yoast form not found!");window.YoastSEO=window.YoastSEO||{},window.YoastSEO._registerReactComponent=yt,(()=>{const e=document.createElement("div");e.id="yoast-elementor-react-root",document.body.appendChild(e),function(e,t){const s=fe();ht=(0,p.createRef)();const a={isRtl:s.isRtl};(0,p.render)((0,c.createElement)(pt,{theme:a,location:"sidebar"},(0,c.createElement)(u.SlotFillProvider,null,(0,c.createElement)(p.Fragment,null,t,(0,c.createElement)(gt,{ref:ht})))),document.getElementById(e)),mt.forEach((e=>{ht.current.registerComponent(e.key,e.Component)}))}(e.id,(0,c.createElement)(dt.Root,{context:{locationContext:"elementor-sidebar"}},(0,c.createElement)(It,{id:wc},(0,c.createElement)(Ft,null),(0,c.createElement)(fc,null))))})(),_t("editor/documents/load","yoast-seo/register-tab",_c,(({config:e})=>kt(e.id))),$e.routes.on("run:after",((e,t)=>{t===`${vc}/${bc}`&&(()=>{if(document.getElementById(wc))return;const e=document.getElementById("elementor-panel-page-settings-controls");if(!e)return;const t=e.querySelector(".elementor-control-yoast-seo-section");t&&(t.style.display="none");const s=document.createElement("div");s.id=wc,s.className="yoast yoast-elementor-panel__fills",e.appendChild(s)})()})),_c(),elementor.getPanelView().getPages("menu").view.addItem({name:"yoast",icon:"yoast yoast-element-menu-icon",title:Ec,type:"page",callback:()=>{try{$e.route(`${vc}/${bc}`)}catch(e){$e.route(`${vc}/settings`),$e.route(`${vc}/${bc}`)}}},"more"),((e,t=500)=>{const s=(0,k.debounce)(e,t,{trailing:!0});Et("document/elements/settings","yoast-seo/document/post-status",(({settings:e})=>s(e.post_status)),(({container:e,settings:t})=>{var s;return!!kt((null==e||null===(s=e.document)||void 0===s?void 0:s.id)||elementor.documents.getCurrent().id)&&Boolean(null==t?void 0:t.post_status)}))})((()=>Sc(kc)));const t=((e,t=500)=>{const s={},a=Array.from(e.querySelectorAll("input[name^='yoast']")),n=a.reduce(((e,{name:t,value:s})=>(e[t]=s,e)),{}),r={...n},o=new MutationObserver((0,k.debounce)((e=>{const t=[];e.forEach((e=>{"value"===e.attributeName&&e.target.name.startsWith("yoast")&&e.target.value!==n[e.target.name]&&(t.push({input:e.target,name:e.target.name,value:e.target.value,previousValue:n[e.target.name],snapshotValue:r[e.target.name]}),n[e.target.name]=e.target.value)})),t.length>0&&(0,k.forEach)(s,(e=>e(t)))}),t));return{start:()=>o.observe(e,{attributes:!0,subtree:!0}),stop:()=>o.disconnect(),subscribe:e=>{const t=(0,k.uniqueId)("yoast-form-listener");return s[t]=e,()=>delete s[t]},takeSnapshot:()=>{a.forEach((({name:e,value:t})=>{r[e]=t}))},restoreSnapshot:()=>{a.forEach((e=>{e.value=r[e.name],n[e.name]=r[e.name]}))}}})(e);t.subscribe((e=>{e.some((e=>{return t=e.name,s=e.value,a=e.previousValue,!(St.includes(t)||Rt.includes(t)&&((e,t)=>{if(t===e)return!0;if(""===t||""===e)return!1;let s,a;try{s=JSON.parse(t),a=JSON.parse(e)}catch(e){return!0}return s.length===a.length&&s.every(((e,t)=>e.keyword===a[t].keyword))})(a,s)||s===a);var t,s,a}))&&(kc=!0,Sc(kc),$e.internal("document/save/set-is-modified",{status:!0}))})),t.start(),vt("editor/documents/open","yoast-seo/document/open",(()=>{YoastSEO.store._freeze(!1),t.start(),(0,l.doAction)("yoast.elementor.toggleFreeze",{isFreeze:!1,isDiscard:!1})}),(({id:e})=>kt(e))),Et("editor/documents/close","yoast-seo/document/close",(0,k.throttle)((({mode:e})=>{t.stop(),"discard"===e&&(YoastSEO.store._restoreSnapshot(),t.restoreSnapshot(),kc=!1,Tt(kc));const s=()=>{YoastSEO.store._freeze(!0),(0,l.doAction)("yoast.elementor.toggleFreeze",{isFreeze:!0,isDiscard:"discard"===e}),(0,l.removeAction)("yoast.elementor.save.success","yoast/yoast-seo/finishClosingDocument"),(0,l.removeAction)("yoast.elementor.save.failure","yoast/yoast-seo/finishClosingDocument")};if(xc)return(0,l.addAction)("yoast.elementor.save.success","yoast/yoast-seo/finishClosingDocument",s),void(0,l.addAction)("yoast.elementor.save.failure","yoast/yoast-seo/finishClosingDocument",s);s()}),500,{leading:!0,trailing:!1}),(({id:e})=>kt(e))),_t("document/save/save","yoast-seo/document/save",(async({document:s})=>{if(xc=!0,!kt(s.id))return;if(s.id!==elementor.config.document.revisions.current_id)return;kc=!1;const{success:a,formData:n,data:r,xhr:o}=await(e=>new Promise((t=>{const s=jQuery(e).serializeArray().reduce(((e,{name:t,value:s})=>(e[t]=s,e)),{});jQuery.post(e.getAttribute("action"),s).done((({success:e,data:a},n,r)=>t({success:e,formData:s,data:a,xhr:r}))).fail((e=>t({success:!1,formData:s,xhr:e})))})))(e);if(!a)return kc=!0,xc=!1,void(0,l.doAction)("yoast.elementor.save.failure");r.slug&&r.slug!==n.slug&&(0,i.dispatch)("yoast-seo/editor").updateData({slug:r.slug}),(0,i.dispatch)("yoast-seo/editor").setEditorDataSlug(r.slug),Tt(kc),(0,l.doAction)("yoast.elementor.save.success",o),YoastSEO.store._takeSnapshot(),t.takeSnapshot(),xc=!1}),(({document:e})=>kt((null==e?void 0:e.id)||elementor.documents.getCurrent().id))),setTimeout((()=>{YoastSEO.store._takeSnapshot(),t.takeSnapshot()}),2e3)},Tc=window.yoast.reduxJsToolkit,Cc="adminUrl",Ic=(0,Tc.createSlice)({name:Cc,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),Lc=(Ic.getInitialState,{selectAdminUrl:e=>(0,k.get)(e,Cc,"")});Lc.selectAdminLink=(0,Tc.createSelector)([Lc.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),Ic.actions,Ic.reducer;const Pc="linkParams",Ac=(0,Tc.createSlice)({name:Pc,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),Oc=(Ac.getInitialState,{selectLinkParam:(e,t,s={})=>(0,k.get)(e,`${Pc}.${t}`,s),selectLinkParams:e=>(0,k.get)(e,Pc,{})});Oc.selectLink=(0,Tc.createSelector)([Oc.selectLinkParams,(e,t)=>t,(e,t,s={})=>s],((e,t,s)=>(0,Nt.addQueryArgs)(t,{...e,...s}))),Ac.actions,Ac.reducer;const Fc=(0,Tc.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:s="default",title:a,description:n})=>({payload:{id:e||(0,Tc.nanoid)(),variant:t,size:s,title:a||"",description:n}})},removeNotification:(e,{payload:t})=>(0,k.omit)(e,t)}}),Mc=(Fc.getInitialState,Fc.actions,Fc.reducer,"pluginUrl"),Dc=(0,Tc.createSlice)({name:Mc,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),Nc=(Dc.getInitialState,{selectPluginUrl:e=>(0,k.get)(e,Mc,"")});Nc.selectImageLink=(0,Tc.createSelector)([Nc.selectPluginUrl,(e,t,s="images")=>s,(e,t)=>t],((e,t,s)=>[(0,k.trimEnd)(e,"/"),(0,k.trim)(t,"/"),(0,k.trimStart)(s,"/")].join("/"))),Dc.actions,Dc.reducer;const qc="wistiaEmbedPermission",Uc=(0,Tc.createSlice)({name:qc,initialState:{value:!1,status:se,error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${qc}/request`,(e=>{e.status=ae})),e.addCase(`${qc}/success`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${qc}/error`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,k.get)(t,"error.code",500),message:(0,k.get)(t,"error.message","Unknown")}}))}}),Bc=(Uc.getInitialState,{selectWistiaEmbedPermission:e=>(0,k.get)(e,qc,{value:!1,status:se}),selectWistiaEmbedPermissionValue:e=>(0,k.get)(e,[qc,"value"],!1),selectWistiaEmbedPermissionStatus:e=>(0,k.get)(e,[qc,"status"],se),selectWistiaEmbedPermissionError:e=>(0,k.get)(e,[qc,"error"],{})}),$c=(Uc.actions,{[qc]:async({payload:e})=>pi()({path:"/yoast/v1/wistia_embed_permission",method:"POST",data:{value:Boolean(e)}})});function Wc({alertKey:e}){return new Promise((t=>wpseoApi.post("alerts/dismiss",{key:e},(()=>t()))))}function Kc({query:e,postId:t}){return new Promise((s=>{wpseoApi.get("meta/search",{query:e,post_id:t},(e=>{s(e.meta)}))}))}Uc.reducer;const Yc=$c[qc];class zc{static get titleElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_title":"hidden_wpseo_title")}static get descriptionElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_metadesc":"hidden_wpseo_desc")}static get slugElement(){return document.getElementById("yoast_wpseo_slug")}static get title(){return zc.titleElement.value}static set title(e){zc.titleElement.value=e}static get description(){return zc.descriptionElement.value}static set description(e){zc.descriptionElement.value=e}static get slug(){return zc.slugElement.value}static set slug(e){zc.slugElement.value=e}}const{UPDATE_DATA:Hc,LOAD_SNIPPET_EDITOR_DATA:jc}=ge.actions;function Vc(e){if(e.hasOwnProperty("title")){let t=e.title;e.title===(0,k.get)(window,"wpseoScriptData.metabox.title_template","")&&(t=""),zc.title=t}if(e.hasOwnProperty("description")){let t=e.description;e.description===(0,k.get)(window,"wpseoScriptData.metabox.metadesc_template","")&&(t=""),zc.description=t}return e.hasOwnProperty("slug")&&(zc.slug=e.slug),{type:Hc,data:e}}const Gc=()=>{const e=(0,k.get)(window,"wpseoScriptData.metabox.title_template",""),t=(0,k.get)(window,"wpseoScriptData.metabox.metadesc_template","");return{type:jc,data:{title:zc.title||e,description:zc.description||t,slug:zc.slug},templates:{title:e,description:t}}},Zc="yoast-measurement-element";function Xc(e){let t=document.getElementById(Zc);return t||(t=function(){const e=document.createElement("div");return e.id=Zc,e.style.position="absolute",e.style.left="-9999em",e.style.top=0,e.style.height=0,e.style.overflow="hidden",e.style.fontFamily="arial, sans-serif",e.style.fontSize="20px",e.style.fontWeight="400",document.body.appendChild(e),e}()),t.innerText=e,t.offsetWidth}const{getEditorDataSlug:Qc,getEditorDataTitle:Jc,getSnippetEditorDescription:ed,getSnippetEditorSlug:td,getSnippetEditorTitle:sd}=ge.selectors,ad=(0,Tc.createSelector)([Qc,td,Jc,()=>(0,k.get)(window,"elementor.documents.currentDocument.id",0)],((e,t,s,a)=>t||e||(0,Nt.cleanForSlug)(s)||String(a))),nd=(0,Tc.createSelector)([sd,ed,ad],((e,t,s)=>({title:e,description:t,slug:s}))),{getBaseUrlFromSettings:rd,getContentLocale:od,getEditorDataContent:id,getFocusKeyphrase:ld,getSnippetEditorDescriptionWithTemplate:cd,getSnippetEditorTitleWithTemplate:dd,getDateFromSettings:ud}=ge.selectors,pd=e=>{let t=dd(e),s=cd(e),a=ad(e);const n=rd(e);return t=Ht.strings.stripHTMLTags(Le("data_page_title",t)),s=Ht.strings.stripHTMLTags(Le("data_meta_desc",s)),a=a.trim().replace(/\s+/g,"-"),{text:id(e),title:t,keyword:ld(e),description:s,locale:od(e),titleWidth:Xc(t),slug:a,permalink:n+a,date:ud(e)}},md=e=>{let t=(0,k.get)(e,"editorData.excerpt","");if(""===t){const s="ja"===we()?80:156;t=function(e,t=156){return(e=(e=(0,dn.stripTags)(e)).trim()).length<=t||(e=e.substring(0,t),/\s/.test(e)&&(e=e.substring(0,e.lastIndexOf(" ")))),e}((0,k.get)(e,"editorData.content",""),s)}return t},hd=e=>(0,k.get)(e,"analysisData.snippet.title",""),gd=e=>(0,k.get)(e,"analysisData.snippet.description",""),yd=()=>(0,k.get)(window,"wpseoScriptData.metabox.title_template",""),fd=()=>(0,k.get)(window,"wpseoScriptData.metabox.title_template_no_fallback",""),wd=()=>(0,k.get)(window,"wpseoScriptData.metabox.social_title_template",""),bd=()=>(0,k.get)(window,"wpseoScriptData.metabox.metadesc_template",""),Ed=()=>(0,k.get)(window,"wpseoScriptData.metabox.social_description_template",""),vd=e=>{let t="";return(0,k.get)(e,"snippetEditor.replacementVariables",[]).forEach((e=>{"excerpt"===e.name&&(t=e.value)})),t},_d=e=>(0,k.get)(e,"facebookEditor.title",""),kd=e=>(0,k.get)(e,"facebookEditor.description",""),xd=(0,Tc.createSelector)([wd,hd,fd,yd],((...e)=>e.find(Boolean)||"")),Sd=((0,Tc.createSelector)([_d,xd],((e,t)=>e||t)),(0,Tc.createSelector)([Ed,gd,bd,vd,md],((...e)=>{var t;return null!==(t=e.find(Boolean))&&void 0!==t?t:""})));(0,Tc.createSelector)([kd,Sd],((e,t)=>e||t));const Rd=(0,Tc.createSelector)([wd,_d,hd,fd,yd],((...e)=>e.find(Boolean)||"")),Td=((0,Tc.createSelector)([e=>(0,k.get)(e,"twitterEditor.title",""),Rd],((e,t)=>e||t)),(0,Tc.createSelector)([Ed,kd,gd,bd,vd,md],((...e)=>{var t;return null!==(t=e.find(Boolean))&&void 0!==t?t:""})));(0,Tc.createSelector)([e=>(0,k.get)(e,"twitterEditor.description",""),Td],((e,t)=>e||t));const{selectAdminUrl:Cd,selectAdminLink:Id}=Lc,{selectLinkParams:Ld,selectLinkParam:Pd,selectLink:Ad}=Oc,{selectPluginUrl:Od,selectImageLink:Fd}=Nc,{selectWistiaEmbedPermission:Md,selectWistiaEmbedPermissionValue:Dd,selectWistiaEmbedPermissionStatus:Nd,selectWistiaEmbedPermissionError:qd}=Bc,Ud=(0,Tc.createSelector)([e=>(0,k.get)(e,"settings.snippetEditor.baseUrl",""),ad],((e,t)=>e+t)),Bd={content:"",title:"",excerpt:"",slug:"",imageUrl:""},$d="yoastmark";function Wd(e){const t=elementor.settings.page.model.get("post_featured_image"),s=(0,k.get)(t,"url","");return""===s?function(e){const t=me.languageProcessing.imageInText(e);if(0===t.length)return"";const s=jQuery.parseHTML(t.join(""));for(const e of s)if(e.src)return e.src;return""}(e):s}function Kd(){const e=elementor.documents.getCurrent();if(!xt())return;if(!["wp-post","wp-page"].includes(e.config.type))return;if((0,i.select)("yoast-seo/editor").getActiveMarker())return;const t=function(e){const t=function(e){var t;const s=[];return null===(t=e.$element)||void 0===t||t.find(".elementor-widget-container").each(((e,t)=>{const a=t.innerHTML.replace(/[\n\t]/g,"").trim();s.push(a)})),s.join("")}(e);return{content:t,title:elementor.settings.page.model.get("post_title"),excerpt:elementor.settings.page.model.get("post_excerpt")||"",imageUrl:Wd(t),status:elementor.settings.page.model.get("post_status")}}(e);t.content!==Bd.content&&(Bd.content=t.content,(0,i.dispatch)("yoast-seo/editor").setEditorDataContent(Bd.content)),t.title!==Bd.title&&(Bd.title=t.title,(0,i.dispatch)("yoast-seo/editor").setEditorDataTitle(Bd.title)),t.excerpt!==Bd.excerpt&&(Bd.excerpt=t.excerpt,(0,i.dispatch)("yoast-seo/editor").setEditorDataExcerpt(Bd.excerpt)),t.imageUrl!==Bd.imageUrl&&(Bd.imageUrl=t.imageUrl,(0,i.dispatch)("yoast-seo/editor").setEditorDataImageUrl(Bd.imageUrl))}function Yd(){elementor.documents.getCurrent().$element.find(".elementor-widget-container").each(((e,t)=>{-1!==t.innerHTML.indexOf("<"+$d)&&(t.innerHTML=me.markers.removeMarks(t.innerHTML))})),(0,i.dispatch)("yoast-seo/editor").setActiveMarker(null),(0,i.dispatch)("yoast-seo/editor").setMarkerPauseStatus(!1),YoastSEO.analysis.applyMarks(new me.Paper("",{}),[])}const zd=(0,k.debounce)(Kd,500);function Hd(e,t){const{updateWordsToHighlight:s}=(0,i.dispatch)("yoast-seo/editor");e("morphology",new me.Paper("",{keyword:t})).then((({result:{keyphraseForms:e}})=>{s((0,k.uniq)((0,k.flatten)(e)))})).catch((()=>{s([])}))}const jd=(0,k.debounce)(Hd,500);var Vd=jQuery;function Gd(e,t,s,a,n){this._scriptUrl=a,this._options={usedKeywords:t.keyword_usage,usedKeywordsPostTypes:t.keyword_usage_post_types,searchUrl:t.search_url,postUrl:t.post_edit_url},this._keywordUsage=t.keyword_usage,this._usedKeywordsPostTypes=t.keyword_usage_post_types,this._postID=Vd("#post_ID, [name=tag_ID]").val(),this._taxonomy=Vd("[name=taxonomy]").val()||"",this._nonce=n,this._ajaxAction=e,this._refreshAnalysis=s,this._initialized=!1}function Zd(){window.YoastSEO=window.YoastSEO||{},window.YoastSEO.store=function(){const{snapshotReducer:e,takeSnapshot:s,restoreSnapshot:l}=((e,t)=>{let s,a=!1,n=!1;return{snapshotReducer:(n=t,r)=>a?(a=!1,s):e(n,r),takeSnapshot:(e,t)=>{t({type:"CREATE_SNAPSHOT"}),s=(0,k.cloneDeep)(e()),n=!0},restoreSnapshot:e=>{n&&(a=!0,e({type:"RESTORE_SNAPSHOT"}))}}})((0,i.combineReducers)(ge.reducers)),{freezeReducer:c,toggleFreeze:d}=((e,t)=>{let s=!1,a=null;return{freezeReducer:(n=t,r)=>s?a:e(n,r),toggleFreeze:(e,t=!s)=>{a=t?(0,k.cloneDeep)(e()):null,s=Boolean(t)}}})(e),u=(0,i.registerStore)("yoast-seo/editor",{reducer:c,selectors:{...ge.selectors,...r,...n,...o},actions:(0,k.pickBy)({...ge.actions,...a},(e=>"function"==typeof e)),controls:t});return(e=>{e.dispatch(ge.actions.loadCornerstoneContent()),e.dispatch(ge.actions.loadFocusKeyword()),e.dispatch(ge.actions.setMarkerStatus(window.wpseoScriptData.metabox.elementorMarkerStatus)),e.dispatch(ge.actions.setSettings({socialPreviews:{sitewideImage:window.wpseoScriptData.sitewideSocialImage,siteName:window.wpseoScriptData.metabox.site_name,contentImage:window.wpseoScriptData.metabox.first_content_image,twitterCardType:window.wpseoScriptData.metabox.twitterCardType},snippetEditor:{baseUrl:window.wpseoScriptData.metabox.base_url,date:window.wpseoScriptData.metabox.metaDescriptionDate,recommendedReplacementVariables:window.wpseoScriptData.analysis.plugins.replaceVars.recommended_replace_vars,siteIconUrl:window.wpseoScriptData.metabox.siteIconUrl}}));const{facebook:t,twitter:s}=window.wpseoScriptData.metabox.showSocial;t&&e.dispatch(ge.actions.loadFacebookPreviewData()),s&&e.dispatch(ge.actions.loadTwitterPreviewData()),e.dispatch(ge.actions.setSEMrushChangeCountry(window.wpseoScriptData.metabox.countryCode)),e.dispatch(ge.actions.setSEMrushLoginStatus(window.wpseoScriptData.metabox.SEMrushLoginStatus)),e.dispatch(ge.actions.setWincherLoginStatus(window.wpseoScriptData.metabox.wincherLoginStatus,!1)),e.dispatch(ge.actions.setWincherWebsiteId(window.wpseoScriptData.metabox.wincherWebsiteId)),e.dispatch(ge.actions.setWincherAutomaticKeyphaseTracking(window.wpseoScriptData.metabox.wincherAutoAddKeyphrases)),e.dispatch(ge.actions.setDismissedAlerts((0,k.get)(window,"wpseoScriptData.dismissedAlerts",{}))),e.dispatch(ge.actions.setCurrentPromotions((0,k.get)(window,"wpseoScriptData.currentPromotions",{}))),e.dispatch(ge.actions.setIsPremium(Boolean((0,k.get)(window,"wpseoScriptData.metabox.isPremium",!1)))),e.dispatch(ge.actions.setAdminUrl((0,k.get)(window,"wpseoScriptData.adminUrl",""))),e.dispatch(ge.actions.setLinkParams((0,k.get)(window,"wpseoScriptData.linkParams",{}))),e.dispatch(ge.actions.setPluginUrl((0,k.get)(window,"wpseoScriptData.pluginUrl",""))),e.dispatch(ge.actions.setWistiaEmbedPermissionValue("1"===(0,k.get)(window,"wpseoScriptData.wistiaEmbedPermission",!1)));const a=document.getElementById("yoast_wpseo_slug");a&&e.dispatch(ge.actions.setEditorDataSlug(a.value))})(u),u._freeze=d.bind(null,u.getState),u._takeSnapshot=s.bind(null,u.getState,u.dispatch),u._restoreSnapshot=l.bind(null,u.dispatch),u}(),function(){vt("panel/editor/open","yoast-seo/marks/reset-on-edit",(0,k.debounce)(Yd,500),xt),vt("document/save/save","yoast-seo/marks/reset-on-save",Yd,(({document:e})=>kt((null==e?void 0:e.id)||elementor.documents.getCurrent().id)));const e=(e=>{const t=new MutationObserver(e);return(e=document)=>(t.observe(e,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),()=>t.disconnect())})(zd);let t=k.noop;Et("editor/documents/close","yoast-seo/content-scraper/stop",(()=>{t(),t=k.noop,zd.cancel()}),(({id:e})=>kt(e))),Et("editor/documents/attach-preview","yoast-seo/content-scraper/start",(()=>{t=e()}),xt),Et("document/save/set-is-modified","yoast-seo/content-scraper/on-modified",zd,(({document:e})=>kt((null==e?void 0:e.id)||elementor.documents.getCurrent().id))),Kd()}(),window.YoastSEO.pluginReady=Re,window.YoastSEO.pluginReloaded=Te,window.YoastSEO.registerModification=Ce,window.YoastSEO.registerPlugin=Ie,window.YoastSEO.applyModifications=Le,window.YoastSEO.analysis=window.YoastSEO.analysis||{},window.YoastSEO.analysis.run=(0,i.dispatch)("yoast-seo/editor").runAnalysis,window.YoastSEO.analysis.worker=function(){const{getAnalysisTimestamp:e,isCornerstoneContent:t}=(0,i.select)("yoast-seo/editor"),s=function(){const e=(0,k.get)(window,["wpseoScriptData","analysis","worker","url"],"analysis-worker.js"),t=(0,me.createWorker)(e),s=(0,k.get)(window,["wpseoScriptData","analysis","worker","dependencies"],[]),a=[];for(const e in s){if(!Object.prototype.hasOwnProperty.call(s,e))continue;const t=window.document.getElementById(`${e}-js-translations`);if(!t)continue;const n=t.innerHTML.slice(214),r=n.indexOf(","),o=n.slice(0,r-1);try{const e=JSON.parse(n.slice(r+1,-4));a.push([o,e])}catch(t){console.warn(`Failed to parse translation data for ${e} to send to the Yoast SEO worker`);continue}}return t.postMessage({dependencies:s,translations:a}),new me.AnalysisWorkerWrapper(t)}();s.initialize(function(e={}){const t={locale:we(),contentAnalysisActive:be(),keywordAnalysisActive:Ee(),inclusiveLanguageAnalysisActive:ve(),defaultQueryParams:(0,k.get)(window,["wpseoAdminL10n","default_query_params"],{}),logLevel:(0,k.get)(window,["wpseoScriptData","analysis","worker","log_level"],"ERROR"),enabledFeatures:(0,_e.enabledFeatures)()};return(0,k.merge)(t,e)}({useCornerstone:t(),marker:nt()})).catch(he),window.YoastSEO.analysis.applyMarks=(e,t)=>nt()(e,t);let a=ot(),n=t(),r=e();return(0,i.subscribe)((()=>{const o=t(),i=ot(),l=e();if(o!==n)return n=o,a=i,void s.initialize({useCornerstone:o}).then((()=>rt(s,i))).catch(he);l===r&&!1!==(0,k.isEqual)(i,a)||(a=i,r=l,rt(s,i))})),s}(),window.YoastSEO.analysis.collectData=ot,Ie(ar,{status:"ready"}),ir().forEach((t=>{const s=null==e?void 0:e[t];if(s){const e=(({getReplacement:e,regexp:t})=>s=>s.replace(t,e()))(s);or(e)}})),window.YoastSEO.wp=window.YoastSEO.wp||{},window.YoastSEO.wp.replaceVarsPlugin={addReplacement:lr,ReplaceVar:sr},function(){const e=fe(),t=(0,k.get)(window,["wpseoScriptData","analysis","worker","keywords_assessment_url"],"used-keywords-assessment.js"),s=(0,k.get)(window,["wpseoScriptData","usedKeywordsNonce"],""),a=new Gd("get_focus_keyword_usage_and_post_types",e,(0,i.dispatch)("yoast-seo/editor").runAnalysis,t,s);a.init();let n="";(0,i.subscribe)((()=>{const e=(0,i.select)("yoast-seo/editor").getFocusKeyphrase();e!==n&&(n=e,a.setKeyword(e))}))}(),(()=>{if((0,i.select)("yoast-seo/editor").getPreference("isInsightsEnabled",!1))(0,i.dispatch)("yoast-seo/editor").loadEstimatedReadingTime(),(0,i.subscribe)((0,k.debounce)(it(),1500,{maxWait:3e3}))})(),function(e){const{getFocusKeyphrase:t}=(0,i.select)("yoast-seo/editor");let s=t();Hd(e,s),(0,i.subscribe)((()=>{const a=t();s!==a&&(s=a,jd(e,a))}))}(window.YoastSEO.analysis.worker.runResearch),window.elementorFrontend.config.experimentalFeatures.editor_v2?function(){if(!0===window.elementor.config.user.introduction["yoast-introduction-editor-v2"])return;const e=new window.elementorModules.editor.utils.Introduction({introductionKey:"yoast-introduction-editor-v2",dialogOptions:{id:"yoast-introduction-editor-v2",className:"elementor-right-click-introduction yoast-elementor-introduction",headerMessage:(0,m.__)("Yoast SEO for Elementor","wordpress-seo"),message:(0,m.__)("Get started with Yoast SEO's content analysis for Elementor!","wordpress-seo"),position:{my:"center top",at:"center bottom+20",of:document.querySelector("button[value='document-settings']"),using:function(e,t){this.style.setProperty("--yoast-elementor-introduction-arrow",t.target.left-t.element.left+8+"px");const s=t.target.element.closest("#elementor-editor-wrapper-v2 header");s&&s.offsetHeight>e.top-12?this.style.top=s.offsetHeight+20+"px":(0,k.isObject)(s)&&s[0].offsetHeight>e.top-12?this.style.top=s[0].offsetHeight+12+"px":this.style.top=e.top+"px",this.style.left=e.left+"px"},autoRefresh:!0},hide:{onOutsideClick:!1}},onDialogInitCallback:t=>{window.$e.routes.on("run:after",(function(e,s){"panel/page-settings/settings"===s&&t.getElements("ok").trigger("click")})),t.addButton({name:"ok",text:(0,m.__)("Got it","wordpress-seo"),callback:()=>e.setViewed()}),t.getElements("ok").addClass("elementor-button elementor-button-success")}});setTimeout((function t(){try{e.show()}catch(e){setTimeout(t,100)}}),100)}():function(){if(!0===window.elementor.config.user.introduction["yoast-introduction"])return;const e=new window.elementorModules.editor.utils.Introduction({introductionKey:"yoast-introduction",dialogOptions:{id:"yoast-introduction",className:"elementor-right-click-introduction yoast-elementor-introduction",headerMessage:(0,m.__)("New: Yoast SEO for Elementor","wordpress-seo"),message:(0,m.__)("Get started with Yoast SEO's content analysis for Elementor!","wordpress-seo"),position:{my:"left top",at:"right top",autoRefresh:!0},hide:{onOutsideClick:!1}},onDialogInitCallback:t=>{window.$e.routes.on("run:after",(function(e,s){"panel/menu"===s&&t.getElements("ok").trigger("click")})),t.addButton({name:"ok",text:(0,m.__)("Got it","wordpress-seo"),callback:()=>e.setViewed()}),t.getElements("ok").addClass("elementor-button elementor-button-success")}});setTimeout((function t(){try{e.show(window.elementor.getPanelView().header.currentView.ui.menuButton[0])}catch(e){setTimeout(t,100)}}),100)}(),Rc(),window.wpseoScriptData.postType&&!["attachment","product"].includes(window.wpseoScriptData.postType)&&(()=>{const e=(0,i.select)(pe).getIsPremium(),t=(0,i.select)(pe).getIsWooSeoUpsell(),s=(0,i.select)(pe).getIsWooSeoUpsellTerm(),a=!e||t||s;(0,l.addFilter)("yoast.replacementVariableEditor.additionalButtons","yoast/yoast-seo-premium/AiGenerator",((e,{fieldId:t})=>(a&&e.push((0,c.createElement)(u.Fill,{name:`yoast.replacementVariableEditor.additionalButtons.${t}`},(0,c.createElement)(ue,{fieldId:t}))),e)))})(),(0,l.doAction)("yoast.elementor.loaded")}Gd.prototype.init=function(){const{worker:e}=window.YoastSEO.analysis;this.requestKeywordUsage=(0,k.debounce)(this.requestKeywordUsage.bind(this),500),e.loadScript(this._scriptUrl).then((()=>{e.sendMessage("initialize",this._options,"used-keywords-assessment")})).then((()=>{this._initialized=!0,(0,k.isEqual)(this._options.usedKeywords,this._keywordUsage)?this._refreshAnalysis():e.sendMessage("updateKeywordUsage",this._keywordUsage,"used-keywords-assessment").then((()=>this._refreshAnalysis()))})).catch((e=>console.error(e)))},Gd.prototype.setKeyword=function(e){(0,k.has)(this._keywordUsage,e)||this.requestKeywordUsage(e)},Gd.prototype.requestKeywordUsage=function(e){Vd.post(ajaxurl,{action:this._ajaxAction,post_id:this._postID,keyword:e,taxonomy:this._taxonomy,nonce:this._nonce},this.updateKeywordUsage.bind(this,e),"json")},Gd.prototype.updateKeywordUsage=function(e,t){const{worker:s}=window.YoastSEO.analysis,a=t.keyword_usage,n=t.post_types;a&&(0,k.isArray)(a)&&(this._keywordUsage[e]=a,this._usedKeywordsPostTypes[e]=n,this._initialized&&s.sendMessage("updateKeywordUsage",{usedKeywords:this._keywordUsage,usedKeywordsPostTypes:this._usedKeywordsPostTypes},"used-keywords-assessment").then((()=>this._refreshAnalysis())))},jQuery(window).on("elementor:init",(()=>{window.elementor.on("panel:init",(()=>{setTimeout(Zd)}))}))})()})();js/dist/new-settings.js000064400001477554147206602470011147 0ustar00(()=>{var e={1206:function(e){e.exports=function(e){var t={};function s(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,s),a.l=!0,a.exports}return s.m=e,s.c=t,s.d=function(e,t,r){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},s.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(s.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)s.d(r,a,function(t){return e[t]}.bind(null,a));return r},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s(s.s=90)}({17:function(e,t,s){"use strict";t.__esModule=!0,t.default=void 0;var r=s(18),a=function(){function e(){}return e.getFirstMatch=function(e,t){var s=t.match(e);return s&&s.length>0&&s[1]||""},e.getSecondMatch=function(e,t){var s=t.match(e);return s&&s.length>1&&s[2]||""},e.matchAndReturnConst=function(e,t,s){if(e.test(t))return s},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,s,r){void 0===r&&(r=!1);var a=e.getVersionPrecision(t),o=e.getVersionPrecision(s),n=Math.max(a,o),i=0,l=e.map([t,s],(function(t){var s=n-e.getVersionPrecision(t),r=t+new Array(s+1).join(".0");return e.map(r.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(r&&(i=n-Math.min(a,o)),n-=1;n>=i;){if(l[0][n]>l[1][n])return 1;if(l[0][n]===l[1][n]){if(n===i)return 0;n-=1}else if(l[0][n]1?a-1:0),n=1;n0){var n=Object.keys(s),l=i.default.find(n,(function(e){return t.isOS(e)}));if(l){var c=this.satisfies(s[l]);if(void 0!==c)return c}var d=i.default.find(n,(function(e){return t.isPlatform(e)}));if(d){var u=this.satisfies(s[d]);if(void 0!==u)return u}}if(o>0){var p=Object.keys(a),m=i.default.find(p,(function(e){return t.isBrowser(e,!0)}));if(void 0!==m)return this.compareVersion(a[m])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var s=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),a=i.default.getBrowserTypeByAlias(r);return t&&a&&(r=a.toLowerCase()),r===s},t.compareVersion=function(e){var t=[0],s=e,r=!1,a=this.getBrowserVersion();if("string"==typeof a)return">"===e[0]||"<"===e[0]?(s=e.substr(1),"="===e[1]?(r=!0,s=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?s=e.substr(1):"~"===e[0]&&(r=!0,s=e.substr(1)),t.indexOf(i.default.compareVersions(a,s,r))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=c,e.exports=t.default},92:function(e,t,s){"use strict";t.__esModule=!0,t.default=void 0;var r,a=(r=s(17))&&r.__esModule?r:{default:r},o=/version\/(\d+(\.?_?\d+)+)/i,n=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},s=a.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},s=a.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},s=a.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},s=a.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},s=a.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},s=a.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},s=a.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},s=a.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},s=a.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},s=a.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},s=a.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},s=a.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},s=a.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},s=a.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},s=a.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return s&&(t.version=s),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},s=a.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},s=a.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},s=a.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},s=a.default.getFirstMatch(o,e)||a.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},s=a.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},s=a.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},s=a.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},s=a.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},s=a.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},s=a.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},s=a.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},s=a.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},s=a.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:function(e){var t=!e.test(/like android/i),s=e.test(/android/i);return t&&s},describe:function(e){var t={name:"Android Browser"},s=a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},s=a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},s=a.default.getFirstMatch(o,e);return s&&(t.version=s),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:a.default.getFirstMatch(t,e),version:a.default.getSecondMatch(t,e)}}}];t.default=n,e.exports=t.default},93:function(e,t,s){"use strict";t.__esModule=!0,t.default=void 0;var r,a=(r=s(17))&&r.__esModule?r:{default:r},o=s(18),n=[{test:[/Roku\/DVP/],describe:function(e){var t=a.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=a.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=a.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),s=a.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:s}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},s=a.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return s&&(t.version=s),t}},{test:[/macintosh/i],describe:function(e){var t=a.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),s=a.default.getMacOSVersionName(t),r={name:o.OS_MAP.MacOS,version:t};return s&&(r.versionName=s),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=a.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),s=e.test(/android/i);return t&&s},describe:function(e){var t=a.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),s=a.default.getAndroidVersionName(t),r={name:o.OS_MAP.Android,version:t};return s&&(r.versionName=s),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=a.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),s={name:o.OS_MAP.WebOS};return t&&t.length&&(s.version=t),s}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=a.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||a.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||a.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=a.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=a.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=a.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=n,e.exports=t.default},94:function(e,t,s){"use strict";t.__esModule=!0,t.default=void 0;var r,a=(r=s(17))&&r.__esModule?r:{default:r},o=s(18),n=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=a.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",s={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(s.model=t),s}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),s=e.test(/like (ipod|iphone)/i);return t&&!s},describe:function(e){var t=a.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=n,e.exports=t.default},95:function(e,t,s){"use strict";t.__esModule=!0,t.default=void 0;var r,a=(r=s(17))&&r.__esModule?r:{default:r},o=s(18),n=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=a.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},s=a.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},s=a.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:function(e){var t=e.test(/gecko/i),s=e.test(/like gecko/i);return t&&!s},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},s=a.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},s=a.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return s&&(t.version=s),t}}];t.default=n,e.exports=t.default}})},4184:(e,t)=>{var s;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";var r=s(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},n={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function l(e){return r.isMemo(e)?n:i[e.$$typeof]||a}i[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var c=Object.defineProperty,d=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,s,r){if("string"!=typeof s){if(f){var a=m(s);a&&a!==f&&e(t,a,r)}var n=d(s);u&&(n=n.concat(u(s)));for(var i=l(t),h=l(s),y=0;y{"use strict";var t=Array.isArray,s=Object.keys,r=Object.prototype.hasOwnProperty,a="undefined"!=typeof Element;function o(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var i,l,c,d=t(e),u=t(n);if(d&&u){if((l=e.length)!=n.length)return!1;for(i=l;0!=i--;)if(!o(e[i],n[i]))return!1;return!0}if(d!=u)return!1;var p=e instanceof Date,m=n instanceof Date;if(p!=m)return!1;if(p&&m)return e.getTime()==n.getTime();var f=e instanceof RegExp,h=n instanceof RegExp;if(f!=h)return!1;if(f&&h)return e.toString()==n.toString();var y=s(e);if((l=y.length)!==s(n).length)return!1;for(i=l;0!=i--;)if(!r.call(n,y[i]))return!1;if(a&&e instanceof Element&&n instanceof Element)return e===n;for(i=l;0!=i--;)if(!("_owner"===(c=y[i])&&e.$$typeof||o(e[c],n[c])))return!1;return!0}return e!=e&&n!=n}e.exports=function(e,t){try{return o(e,t)}catch(e){if(e.message&&e.message.match(/stack|recursion/i)||-2146828260===e.number)return console.warn("Warning: react-fast-compare does not handle circular references.",e.name,e.message),!1;throw e}}},5760:e=>{"use strict";function t(e){this._maxSize=e,this.clear()}t.prototype.clear=function(){this._size=0,this._values=Object.create(null)},t.prototype.get=function(e){return this._values[e]},t.prototype.set=function(e,t){return this._size>=this._maxSize&&this.clear(),e in this._values||this._size++,this._values[e]=t};var s=/[^.^\]^[]+|(?=\[\]|\.\.)/g,r=/^\d+$/,a=/^\d/,o=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,n=/^\s*(['"]?)(.*?)(\1)\s*$/,i=new t(512),l=new t(512),c=new t(512);function d(e){return i.get(e)||i.set(e,u(e).map((function(e){return e.replace(n,"$2")})))}function u(e){return e.match(s)||[""]}function p(e){return"string"==typeof e&&e&&-1!==["'",'"'].indexOf(e.charAt(0))}function m(e){return!p(e)&&(function(e){return e.match(a)&&!e.match(r)}(e)||function(e){return o.test(e)}(e))}e.exports={Cache:t,split:u,normalizePath:d,setter:function(e){var t=d(e);return l.get(e)||l.set(e,(function(e,s){for(var r=0,a=t.length,o=e;r{"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=Object.assign||function(e){for(var t=1;t1?t-1:0),r=1;re.height),d(m,this.animationStateClasses.animatingToHeightZero,0===v.height),d(m,this.animationStateClasses.animatingToHeightAuto,"auto"===v.height),d(m,this.animationStateClasses.animatingToHeightSpecific,v.height>0),m)),k=this.getStaticStateClasses(v.height);this.setState({animationStateClasses:x,height:b,overflow:"hidden",shouldUseTransitions:!E}),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),E?(v.shouldUseTransitions=!0,f(this.animationFrameIDs),this.animationFrameIDs=(s=function(){a.setState(v),_(p,{newHeight:v.height})},(r=[])[0]=requestAnimationFrame((function(){r[1]=requestAnimationFrame((function(){s()}))})),r),this.animationClassesTimeoutID=setTimeout((function(){a.setState({animationStateClasses:k,shouldUseTransitions:!1}),a.hideContent(v.height),_(u,{newHeight:v.height})}),g)):(_(p,{newHeight:b}),this.timeoutID=setTimeout((function(){v.animationStateClasses=k,v.shouldUseTransitions=!1,a.setState(v),"auto"!==c&&a.hideContent(b),_(u,{newHeight:b})}),g))}}},{key:"componentWillUnmount",value:function(){f(this.animationFrameIDs),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),this.timeoutID=null,this.animationClassesTimeoutID=null,this.animationStateClasses=null}},{key:"showContent",value:function(e){0===e&&(this.contentElement.style.display="")}},{key:"hideContent",value:function(e){0===e&&(this.contentElement.style.display="none")}},{key:"getStaticStateClasses",value:function(e){var t;return(0,l.default)((d(t={},this.animationStateClasses.static,!0),d(t,this.animationStateClasses.staticHeightZero,0===e),d(t,this.animationStateClasses.staticHeightSpecific,e>0),d(t,this.animationStateClasses.staticHeightAuto,"auto"===e),t))}},{key:"render",value:function(){var e,t=this,s=this.props,r=s.animateOpacity,o=s.applyInlineTransitions,i=s.children,c=s.className,u=s.contentClassName,f=s.delay,h=s.duration,y=s.easing,_=s.id,w=s.style,g=this.state,b=g.height,v=g.overflow,E=g.animationStateClasses,x=g.shouldUseTransitions,k=a({},w,{height:b,overflow:v||w.overflow});x&&o&&(k.transition="height "+h+"ms "+y+" "+f+"ms",w.transition&&(k.transition=w.transition+", "+k.transition),k.WebkitTransition=k.transition);var S={};r&&(S.transition="opacity "+h+"ms "+y+" "+f+"ms",S.WebkitTransition=S.transition,0===b&&(S.opacity=0));var L=(0,l.default)((d(e={},E,!0),d(e,c,c),e)),T=void 0!==this.props["aria-hidden"]?this.props["aria-hidden"]:0===b;return n.default.createElement("div",a({},m.apply(void 0,[this.props].concat(p)),{"aria-hidden":T,className:L,id:_,style:k}),n.default.createElement("div",{className:u,style:S,ref:function(e){return t.contentElement=e}},i))}}]),t}(n.default.Component);w.propTypes={"aria-hidden":i.default.bool,animateOpacity:i.default.bool,animationStateClasses:i.default.object,applyInlineTransitions:i.default.bool,children:i.default.any.isRequired,className:i.default.string,contentClassName:i.default.string,delay:i.default.number,duration:i.default.number,easing:i.default.string,height:function(e,t,s){var a=e[t];return"number"==typeof a&&a>=0||y(a)||"auto"===a?null:new TypeError('value "'+a+'" of type "'+(void 0===a?"undefined":r(a))+'" is invalid type for '+t+" in "+s+'. It needs to be a positive number, string "auto" or percentage string (e.g. "15%").')},id:i.default.string,onAnimationEnd:i.default.func,onAnimationStart:i.default.func,style:i.default.object},w.defaultProps={animateOpacity:!1,animationStateClasses:u,applyInlineTransitions:!0,duration:250,delay:0,easing:"ease",style:{}},t.Z=w},591:e=>{for(var t=[],s=0;s<256;++s)t[s]=(s+256).toString(16).substr(1);e.exports=function(e,s){var r=s||0,a=t;return[a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],"-",a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]],a[e[r++]]].join("")}},9176:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var s=new Uint8Array(16);e.exports=function(){return t(s),s}}else{var r=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),r[t]=e>>>((3&t)<<3)&255;return r}}},3409:(e,t,s)=>{var r=s(9176),a=s(591);e.exports=function(e,t,s){var o=t&&s||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var n=(e=e||{}).random||(e.rng||r)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t)for(var i=0;i<16;++i)t[o+i]=n[i];return t||a(n)}},9921:(e,t)=>{"use strict";var s="function"==typeof Symbol&&Symbol.for,r=s?Symbol.for("react.element"):60103,a=s?Symbol.for("react.portal"):60106,o=s?Symbol.for("react.fragment"):60107,n=s?Symbol.for("react.strict_mode"):60108,i=s?Symbol.for("react.profiler"):60114,l=s?Symbol.for("react.provider"):60109,c=s?Symbol.for("react.context"):60110,d=s?Symbol.for("react.async_mode"):60111,u=s?Symbol.for("react.concurrent_mode"):60111,p=s?Symbol.for("react.forward_ref"):60112,m=s?Symbol.for("react.suspense"):60113,f=s?Symbol.for("react.suspense_list"):60120,h=s?Symbol.for("react.memo"):60115,y=s?Symbol.for("react.lazy"):60116,_=s?Symbol.for("react.block"):60121,w=s?Symbol.for("react.fundamental"):60117,g=s?Symbol.for("react.responder"):60118,b=s?Symbol.for("react.scope"):60119;function v(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case d:case u:case o:case i:case n:case m:return e;default:switch(e=e&&e.$$typeof){case c:case p:case y:case h:case l:return e;default:return t}}case a:return t}}}function E(e){return v(e)===u}t.AsyncMode=d,t.ConcurrentMode=u,t.ContextConsumer=c,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=y,t.Memo=h,t.Portal=a,t.Profiler=i,t.StrictMode=n,t.Suspense=m,t.isAsyncMode=function(e){return E(e)||v(e)===d},t.isConcurrentMode=E,t.isContextConsumer=function(e){return v(e)===c},t.isContextProvider=function(e){return v(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return v(e)===p},t.isFragment=function(e){return v(e)===o},t.isLazy=function(e){return v(e)===y},t.isMemo=function(e){return v(e)===h},t.isPortal=function(e){return v(e)===a},t.isProfiler=function(e){return v(e)===i},t.isStrictMode=function(e){return v(e)===n},t.isSuspense=function(e){return v(e)===m},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===u||e===i||e===n||e===m||e===f||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===w||e.$$typeof===g||e.$$typeof===b||e.$$typeof===_)},t.typeOf=v},9864:(e,t,s)=>{"use strict";e.exports=s(9921)},5251:(e,t,s)=>{"use strict";var r=s(9196);Symbol.for("react.element"),Symbol.for("react.fragment"),Object.prototype.hasOwnProperty,r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner},5893:(e,t,s)=>{"use strict";s(5251)},4633:e=>{function t(e,t){var s=e.length,r=new Array(s),a={},o=s,n=function(e){for(var t=new Map,s=0,r=e.length;s{var s;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";e.exports=window.React},5890:e=>{"use strict";e.exports=window.yoast.propTypes}},t={};function s(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,s),o.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=s(9196),t=s.n(e);const r=window.wp.components,a=window.wp.data,o=window.wp.domReady;var n=s.n(o);const i=window.wp.element,l=window.yoast.uiLibrary;var c=s(667),d=s.n(c),u=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===p}(e)}(e)},p="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function m(e,t){return!1!==t.clone&&t.isMergeableObject(e)?h((s=e,Array.isArray(s)?[]:{}),e,t):e;var s}function f(e,t,s){return e.concat(t).map((function(e){return m(e,s)}))}function h(e,t,s){(s=s||{}).arrayMerge=s.arrayMerge||f,s.isMergeableObject=s.isMergeableObject||u;var r=Array.isArray(t);return r===Array.isArray(e)?r?s.arrayMerge(e,t,s):function(e,t,s){var r={};return s.isMergeableObject(e)&&Object.keys(e).forEach((function(t){r[t]=m(e[t],s)})),Object.keys(t).forEach((function(a){s.isMergeableObject(t[a])&&e[a]?r[a]=h(e[a],t[a],s):r[a]=m(t[a],s)})),r}(e,t,s):m(t,s)}h.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,s){return h(e,s,t)}),{})};const y=h,_=window.lodash.isPlainObject;var w=s.n(_);const g=window.lodash.clone;var b=s.n(g);const v=window.lodash.toPath;var E=s.n(v);const x=function(e,t){};var k=s(6214),S=s.n(k);const L=window.lodash.cloneDeep;var T=s.n(L);function F(){return F=Object.assign||function(e){for(var t=1;t=0||(a[s]=e[s]);return a}function P(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var R=function(e){return Array.isArray(e)&&0===e.length},N=function(e){return"function"==typeof e},I=function(e){return null!==e&&"object"==typeof e},O=function(e){return String(Math.floor(Number(e)))===e},C=function(e){return"[object String]"===Object.prototype.toString.call(e)},A=function(t){return 0===e.Children.count(t)},M=function(e){return I(e)&&N(e.then)};function D(e,t,s,r){void 0===r&&(r=0);for(var a=E()(t);e&&r=0?[]:{}}}return(0===o?e:a)[n[o]]===s?e:(void 0===s?delete a[n[o]]:a[n[o]]=s,0===o&&void 0===s&&delete r[n[o]],r)}function U(e,t,s,r){void 0===s&&(s=new WeakMap),void 0===r&&(r={});for(var a=0,o=Object.keys(e);a=s.length)break;o=s[a++]}else{if((a=s.next()).done)break;o=a.value}var n=o;D(t,n.path)||(t=B(t,n.path,n.message))}}return t}(s)):t(s)}))}))}),[f.validationSchema]),T=(0,e.useCallback)((function(e,t){return new Promise((function(s){return s(v.current[e].validate(t))}))}),[]),P=(0,e.useCallback)((function(e){var t=Object.keys(v.current).filter((function(e){return N(v.current[e].validate)})),s=t.length>0?t.map((function(t){return T(t,D(e,t))})):[Promise.resolve("DO_NOT_DELETE_YOU_WILL_BE_FIRED")];return Promise.all(s).then((function(e){return e.reduce((function(e,s,r){return"DO_NOT_DELETE_YOU_WILL_BE_FIRED"===s||s&&(e=B(e,t[r],s)),e}),{})}))}),[T]),R=(0,e.useCallback)((function(e){return Promise.all([P(e),f.validationSchema?L(e):{},f.validate?S(e):{}]).then((function(e){var t=e[0],s=e[1],r=e[2];return y.all([t,s,r],{arrayMerge:J})}))}),[f.validate,f.validationSchema,P,S,L]),O=X((function(e){return void 0===e&&(e=x.values),k({type:"SET_ISVALIDATING",payload:!0}),R(e).then((function(e){return b.current&&(k({type:"SET_ISVALIDATING",payload:!1}),k({type:"SET_ERRORS",payload:e})),e}))}));(0,e.useEffect)((function(){i&&!0===b.current&&d()(h.current,f.initialValues)&&O(h.current)}),[i,O]);var A=(0,e.useCallback)((function(e){var t=e&&e.values?e.values:h.current,s=e&&e.errors?e.errors:_.current?_.current:f.initialErrors||{},r=e&&e.touched?e.touched:w.current?w.current:f.initialTouched||{},a=e&&e.status?e.status:g.current?g.current:f.initialStatus;h.current=t,_.current=s,w.current=r,g.current=a;var o=function(){k({type:"RESET_FORM",payload:{isSubmitting:!!e&&!!e.isSubmitting,errors:s,touched:r,status:a,values:t,isValidating:!!e&&!!e.isValidating,submitCount:e&&e.submitCount&&"number"==typeof e.submitCount?e.submitCount:0}})};if(f.onReset){var n=f.onReset(x.values,de);M(n)?n.then(o):o()}else o()}),[f.initialErrors,f.initialStatus,f.initialTouched]);(0,e.useEffect)((function(){!0!==b.current||d()(h.current,f.initialValues)||(u&&(h.current=f.initialValues,A()),i&&O(h.current))}),[u,f.initialValues,A,i,O]),(0,e.useEffect)((function(){u&&!0===b.current&&!d()(_.current,f.initialErrors)&&(_.current=f.initialErrors||H,k({type:"SET_ERRORS",payload:f.initialErrors||H}))}),[u,f.initialErrors]),(0,e.useEffect)((function(){u&&!0===b.current&&!d()(w.current,f.initialTouched)&&(w.current=f.initialTouched||Y,k({type:"SET_TOUCHED",payload:f.initialTouched||Y}))}),[u,f.initialTouched]),(0,e.useEffect)((function(){u&&!0===b.current&&!d()(g.current,f.initialStatus)&&(g.current=f.initialStatus,k({type:"SET_STATUS",payload:f.initialStatus}))}),[u,f.initialStatus,f.initialTouched]);var U=X((function(e){if(v.current[e]&&N(v.current[e].validate)){var t=D(x.values,e),s=v.current[e].validate(t);return M(s)?(k({type:"SET_ISVALIDATING",payload:!0}),s.then((function(e){return e})).then((function(t){k({type:"SET_FIELD_ERROR",payload:{field:e,value:t}}),k({type:"SET_ISVALIDATING",payload:!1})}))):(k({type:"SET_FIELD_ERROR",payload:{field:e,value:s}}),Promise.resolve(s))}return f.validationSchema?(k({type:"SET_ISVALIDATING",payload:!0}),L(x.values,e).then((function(e){return e})).then((function(t){k({type:"SET_FIELD_ERROR",payload:{field:e,value:t[e]}}),k({type:"SET_ISVALIDATING",payload:!1})}))):Promise.resolve()})),V=(0,e.useCallback)((function(e,t){var s=t.validate;v.current[e]={validate:s}}),[]),j=(0,e.useCallback)((function(e){delete v.current[e]}),[]),z=X((function(e,t){return k({type:"SET_TOUCHED",payload:e}),(void 0===t?o:t)?O(x.values):Promise.resolve()})),q=(0,e.useCallback)((function(e){k({type:"SET_ERRORS",payload:e})}),[]),G=X((function(e,t){var s=N(e)?e(x.values):e;return k({type:"SET_VALUES",payload:s}),(void 0===t?r:t)?O(s):Promise.resolve()})),K=(0,e.useCallback)((function(e,t){k({type:"SET_FIELD_ERROR",payload:{field:e,value:t}})}),[]),Q=X((function(e,t,s){return k({type:"SET_FIELD_VALUE",payload:{field:e,value:t}}),(void 0===s?r:s)?O(B(x.values,e,t)):Promise.resolve()})),ee=(0,e.useCallback)((function(e,t){var s,r=t,a=e;if(!C(e)){e.persist&&e.persist();var o=e.target?e.target:e.currentTarget,n=o.type,i=o.name,l=o.id,c=o.value,d=o.checked,u=(o.outerHTML,o.options),p=o.multiple;r=t||i||l,a=/number|range/.test(n)?(s=parseFloat(c),isNaN(s)?"":s):/checkbox/.test(n)?function(e,t,s){if("boolean"==typeof e)return Boolean(t);var r=[],a=!1,o=-1;if(Array.isArray(e))r=e,a=(o=e.indexOf(s))>=0;else if(!s||"true"==s||"false"==s)return Boolean(t);return t&&s&&!a?r.concat(s):a?r.slice(0,o).concat(r.slice(o+1)):r}(D(x.values,r),d,c):u&&p?function(e){return Array.from(e).filter((function(e){return e.selected})).map((function(e){return e.value}))}(u):c}r&&Q(r,a)}),[Q,x.values]),te=X((function(e){if(C(e))return function(t){return ee(t,e)};ee(e)})),se=X((function(e,t,s){return void 0===t&&(t=!0),k({type:"SET_FIELD_TOUCHED",payload:{field:e,value:t}}),(void 0===s?o:s)?O(x.values):Promise.resolve()})),re=(0,e.useCallback)((function(e,t){e.persist&&e.persist();var s=e.target,r=s.name,a=s.id,o=(s.outerHTML,t||r||a);se(o,!0)}),[se]),ae=X((function(e){if(C(e))return function(t){return re(t,e)};re(e)})),oe=(0,e.useCallback)((function(e){N(e)?k({type:"SET_FORMIK_STATE",payload:e}):k({type:"SET_FORMIK_STATE",payload:function(){return e}})}),[]),ne=(0,e.useCallback)((function(e){k({type:"SET_STATUS",payload:e})}),[]),ie=(0,e.useCallback)((function(e){k({type:"SET_ISSUBMITTING",payload:e})}),[]),le=X((function(){return k({type:"SUBMIT_ATTEMPT"}),O().then((function(e){var t=e instanceof Error;if(!t&&0===Object.keys(e).length){var s;try{if(void 0===(s=ue()))return}catch(e){throw e}return Promise.resolve(s).then((function(e){return b.current&&k({type:"SUBMIT_SUCCESS"}),e})).catch((function(e){if(b.current)throw k({type:"SUBMIT_FAILURE"}),e}))}if(b.current&&(k({type:"SUBMIT_FAILURE"}),t))throw e}))})),ce=X((function(e){e&&e.preventDefault&&N(e.preventDefault)&&e.preventDefault(),e&&e.stopPropagation&&N(e.stopPropagation)&&e.stopPropagation(),le().catch((function(e){console.warn("Warning: An unhandled error was caught from submitForm()",e)}))})),de={resetForm:A,validateForm:O,validateField:U,setErrors:q,setFieldError:K,setFieldTouched:se,setFieldValue:Q,setStatus:ne,setSubmitting:ie,setTouched:z,setValues:G,setFormikState:oe,submitForm:le},ue=X((function(){return p(x.values,de)})),pe=X((function(e){e&&e.preventDefault&&N(e.preventDefault)&&e.preventDefault(),e&&e.stopPropagation&&N(e.stopPropagation)&&e.stopPropagation(),A()})),me=(0,e.useCallback)((function(e){return{value:D(x.values,e),error:D(x.errors,e),touched:!!D(x.touched,e),initialValue:D(h.current,e),initialTouched:!!D(w.current,e),initialError:D(_.current,e)}}),[x.errors,x.touched,x.values]),fe=(0,e.useCallback)((function(e){return{setValue:function(t,s){return Q(e,t,s)},setTouched:function(t,s){return se(e,t,s)},setError:function(t){return K(e,t)}}}),[Q,se,K]),he=(0,e.useCallback)((function(e){var t=I(e),s=t?e.name:e,r=D(x.values,s),a={name:s,value:r,onChange:te,onBlur:ae};if(t){var o=e.type,n=e.value,i=e.as,l=e.multiple;"checkbox"===o?void 0===n?a.checked=!!r:(a.checked=!(!Array.isArray(r)||!~r.indexOf(n)),a.value=n):"radio"===o?(a.checked=r===n,a.value=n):"select"===i&&l&&(a.value=a.value||[],a.multiple=!0)}return a}),[ae,te,x.values]),ye=(0,e.useMemo)((function(){return!d()(h.current,x.values)}),[h.current,x.values]),_e=(0,e.useMemo)((function(){return void 0!==l?ye?x.errors&&0===Object.keys(x.errors).length:!1!==l&&N(l)?l(f):l:x.errors&&0===Object.keys(x.errors).length}),[l,ye,x.errors,f]);return F({},x,{initialValues:h.current,initialErrors:_.current,initialTouched:w.current,initialStatus:g.current,handleBlur:ae,handleChange:te,handleReset:pe,handleSubmit:ce,resetForm:A,setErrors:q,setFormikState:oe,setFieldTouched:se,setFieldValue:Q,setFieldError:K,setStatus:ne,setSubmitting:ie,setTouched:z,setValues:G,submitForm:le,validateForm:O,validateField:U,isValid:_e,dirty:ye,unregisterField:j,registerField:V,getFieldProps:he,getFieldMeta:me,getFieldHelpers:fe,validateOnBlur:o,validateOnChange:r,validateOnMount:i})}function K(t){var s=G(t),r=t.component,a=t.children,o=t.render,n=t.innerRef;return(0,e.useImperativeHandle)(n,(function(){return s})),(0,e.createElement)(j,{value:s},r?(0,e.createElement)(r,s):o?o(s):a?N(a)?a(s):A(a)?null:e.Children.only(a):null)}function Z(e){var t=Array.isArray(e)?[]:{};for(var s in e)if(Object.prototype.hasOwnProperty.call(e,s)){var r=String(s);!0===Array.isArray(e[r])?t[r]=e[r].map((function(e){return!0===Array.isArray(e)||w()(e)?Z(e):""!==e?e:void 0})):w()(e[r])?t[r]=Z(e[r]):t[r]=""!==e[r]?e[r]:void 0}return t}function J(e,t,s){var r=e.slice();return t.forEach((function(t,a){if(void 0===r[a]){var o=!1!==s.clone&&s.isMergeableObject(t);r[a]=o?y(Array.isArray(t)?[]:{},t,s):t}else s.isMergeableObject(t)?r[a]=y(e[a],t,s):-1===e.indexOf(t)&&r.push(t)})),r}var Q="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?e.useLayoutEffect:e.useEffect;function X(t){var s=(0,e.useRef)(t);return Q((function(){s.current=t})),(0,e.useCallback)((function(){for(var e=arguments.length,t=new Array(e),r=0;re?t:e}),0);return Array.from(F({},e,{length:t+1}))}return[]},ne=function(t){function s(e){var s;return(s=t.call(this,e)||this).updateArrayField=function(e,t,r){var a=s.props,o=a.name;(0,a.formik.setFormikState)((function(s){var a="function"==typeof r?r:e,n="function"==typeof t?t:e,i=B(s.values,o,e(D(s.values,o))),l=r?a(D(s.errors,o)):void 0,c=t?n(D(s.touched,o)):void 0;return R(l)&&(l=void 0),R(c)&&(c=void 0),F({},s,{values:i,errors:r?B(s.errors,o,l):s.errors,touched:t?B(s.touched,o,c):s.touched})}))},s.push=function(e){return s.updateArrayField((function(t){return[].concat(oe(t),[T()(e)])}),!1,!1)},s.handlePush=function(e){return function(){return s.push(e)}},s.swap=function(e,t){return s.updateArrayField((function(s){return function(e,t,s){var r=oe(e),a=r[t];return r[t]=r[s],r[s]=a,r}(s,e,t)}),!0,!0)},s.handleSwap=function(e,t){return function(){return s.swap(e,t)}},s.move=function(e,t){return s.updateArrayField((function(s){return function(e,t,s){var r=oe(e),a=r[t];return r.splice(t,1),r.splice(s,0,a),r}(s,e,t)}),!0,!0)},s.handleMove=function(e,t){return function(){return s.move(e,t)}},s.insert=function(e,t){return s.updateArrayField((function(s){return ae(s,e,t)}),(function(t){return ae(t,e,null)}),(function(t){return ae(t,e,null)}))},s.handleInsert=function(e,t){return function(){return s.insert(e,t)}},s.replace=function(e,t){return s.updateArrayField((function(s){return function(e,t,s){var r=oe(e);return r[t]=s,r}(s,e,t)}),!1,!1)},s.handleReplace=function(e,t){return function(){return s.replace(e,t)}},s.unshift=function(e){var t=-1;return s.updateArrayField((function(s){var r=s?[e].concat(s):[e];return t<0&&(t=r.length),r}),(function(e){var s=e?[null].concat(e):[null];return t<0&&(t=s.length),s}),(function(e){var s=e?[null].concat(e):[null];return t<0&&(t=s.length),s})),t},s.handleUnshift=function(e){return function(){return s.unshift(e)}},s.handleRemove=function(e){return function(){return s.remove(e)}},s.handlePop=function(){return function(){return s.pop()}},s.remove=s.remove.bind(P(s)),s.pop=s.pop.bind(P(s)),s}var r,a;a=t,(r=s).prototype=Object.create(a.prototype),r.prototype.constructor=r,r.__proto__=a;var o=s.prototype;return o.componentDidUpdate=function(e){this.props.validateOnChange&&this.props.formik.validateOnChange&&!d()(D(e.formik.values,e.name),D(this.props.formik.values,this.props.name))&&this.props.formik.validateForm(this.props.formik.values)},o.remove=function(e){var t;return this.updateArrayField((function(s){var r=s?oe(s):[];return t||(t=r[e]),N(r.splice)&&r.splice(e,1),r}),!0,!0),t},o.pop=function(){var e;return this.updateArrayField((function(t){var s=t;return e||(e=s&&s.pop&&s.pop()),s}),!0,!0),e},o.render=function(){var t={push:this.push,pop:this.pop,swap:this.swap,move:this.move,insert:this.insert,replace:this.replace,unshift:this.unshift,remove:this.remove,handlePush:this.handlePush,handlePop:this.handlePop,handleSwap:this.handleSwap,handleMove:this.handleMove,handleInsert:this.handleInsert,handleReplace:this.handleReplace,handleUnshift:this.handleUnshift,handleRemove:this.handleRemove},s=this.props,r=s.component,a=s.render,o=s.children,n=s.name,i=F({},t,{form:$(s.formik,["validate","validationSchema"]),name:n});return r?(0,e.createElement)(r,i):a?a(i):o?"function"==typeof o?o(i):A(o)?null:e.Children.only(o):null},s}(e.Component);ne.defaultProps={validateOnChange:!0};var ie=re(ne);const le=window.lodash,ce=window.ReactDOM;function de(){return de=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0&&(t.hash=e.substr(s),e=e.substr(0,s));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}var ge;function be(e,t,s){return void 0===s&&(s="/"),function(e,t,s,r){let a=Oe(("string"==typeof t?we(t):t).pathname||"/",s);if(null==a)return null;let o=ve(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let s=e.length===t.length&&e.slice(0,-1).every(((e,s)=>e===t[s]));return s?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(o);let n=null;for(let e=0;null==n&&e{let n={relativePath:void 0===o?e.path||"":o,caseSensitive:!0===e.caseSensitive,childrenIndex:a,route:e};n.relativePath.startsWith("/")&&(me(n.relativePath.startsWith(r),'Absolute route path "'+n.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),n.relativePath=n.relativePath.slice(r.length));let i=De([r,n.relativePath]),l=s.concat(n);e.children&&e.children.length>0&&(me(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+i+'".'),ve(e.children,t,l,i)),(null!=e.path||e.index)&&t.push({path:i,score:Pe(i,e.index),routesMeta:l})};return e.forEach(((e,t)=>{var s;if(""!==e.path&&null!=(s=e.path)&&s.includes("?"))for(let s of Ee(e.path))a(e,t,s);else a(e,t)})),t}function Ee(e){let t=e.split("/");if(0===t.length)return[];let[s,...r]=t,a=s.endsWith("?"),o=s.replace(/\?$/,"");if(0===r.length)return a?[o,""]:[o];let n=Ee(r.join("/")),i=[];return i.push(...n.map((e=>""===e?o:[o,e].join("/")))),a&&i.push(...n),i.map((t=>e.startsWith("/")&&""===t?"/":t))}!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(ge||(ge={})),new Set(["lazy","caseSensitive","path","id","index","children"]);const xe=/^:[\w-]+$/,ke=3,Se=2,Le=1,Te=10,Fe=-2,$e=e=>"*"===e;function Pe(e,t){let s=e.split("/"),r=s.length;return s.some($e)&&(r+=Fe),t&&(r+=Se),s.filter((e=>!$e(e))).reduce(((e,t)=>e+(xe.test(t)?ke:""===t?Le:Te)),r)}function Re(e,t,s){void 0===s&&(s=!1);let{routesMeta:r}=e,a={},o="/",n=[];for(let e=0;e(r.push({paramName:t,isOptional:null!=s}),s?"/?([^\\/]+)?":"/([^\\/]+)")));return e.endsWith("*")?(r.push({paramName:"*"}),a+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?a+="\\/*$":""!==e&&"/"!==e&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),r]}(e.path,e.caseSensitive,e.end),a=t.match(s);if(!a)return null;let o=a[0],n=o.replace(/(.)\/+$/,"$1"),i=a.slice(1);return{params:r.reduce(((e,t,s)=>{let{paramName:r,isOptional:a}=t;if("*"===r){let e=i[s]||"";n=o.slice(0,o.length-e.length).replace(/(.)\/+$/,"$1")}const l=i[s];return e[r]=a&&!l?void 0:(l||"").replace(/%2F/g,"/"),e}),{}),pathname:o,pathnameBase:n,pattern:e}}function Ie(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return fe(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function Oe(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let s=t.endsWith("/")?t.length-1:t.length,r=e.charAt(s);return r&&"/"!==r?null:e.slice(s)||"/"}function Ce(e,t,s,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+s+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function Ae(e,t){let s=function(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}(e);return t?s.map(((e,t)=>t===s.length-1?e.pathname:e.pathnameBase)):s.map((e=>e.pathnameBase))}function Me(e,t,s,r){let a;void 0===r&&(r=!1),"string"==typeof e?a=we(e):(a=de({},e),me(!a.pathname||!a.pathname.includes("?"),Ce("?","pathname","search",a)),me(!a.pathname||!a.pathname.includes("#"),Ce("#","pathname","hash",a)),me(!a.search||!a.search.includes("#"),Ce("#","search","hash",a)));let o,n=""===e||""===a.pathname,i=n?"/":a.pathname;if(null==i)o=s;else{let e=t.length-1;if(!r&&i.startsWith("..")){let t=i.split("/");for(;".."===t[0];)t.shift(),e-=1;a.pathname=t.join("/")}o=e>=0?t[e]:"/"}let l=function(e,t){void 0===t&&(t="/");let{pathname:s,search:r="",hash:a=""}="string"==typeof e?we(e):e,o=s?s.startsWith("/")?s:function(e,t){let s=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?s.length>1&&s.pop():"."!==e&&s.push(e)})),s.length>1?s.join("/"):"/"}(s,t):t;return{pathname:o,search:Ue(r),hash:Ve(a)}}(a,o),c=i&&"/"!==i&&i.endsWith("/"),d=(n||"."===i)&&s.endsWith("/");return l.pathname.endsWith("/")||!c&&!d||(l.pathname+="/"),l}const De=e=>e.join("/").replace(/\/\/+/g,"/"),Be=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Ue=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",Ve=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";Error;const je=["post","put","patch","delete"],ze=(new Set(je),["get",...je]);function qe(){return qe=Object.assign?Object.assign.bind():function(e){for(var t=1;t{r.current=!0})),e.useCallback((function(e,a){void 0===a&&(a={}),r.current&&("number"==typeof e?t.navigate(e):t.navigate(e,qe({fromRouteId:s},a)))}),[t,s])}():function(){Je()||me(!1);let t=e.useContext(We),{basename:s,future:r,navigator:a}=e.useContext(Ye),{matches:o}=e.useContext(Ke),{pathname:n}=Qe(),i=JSON.stringify(Ae(o,r.v7_relativeSplatPath)),l=e.useRef(!1);return Xe((()=>{l.current=!0})),e.useCallback((function(e,r){if(void 0===r&&(r={}),!l.current)return;if("number"==typeof e)return void a.go(e);let o=Me(e,JSON.parse(i),n,"path"===r.relative);null==t&&"/"!==s&&(o.pathname="/"===o.pathname?s:De([s,o.pathname])),(r.replace?a.replace:a.push)(o,r.state,r)}),[s,a,i,n,t])}()}function tt(t,s){let{relative:r}=void 0===s?{}:s,{future:a}=e.useContext(Ye),{matches:o}=e.useContext(Ke),{pathname:n}=Qe(),i=JSON.stringify(Ae(o,a.v7_relativeSplatPath));return e.useMemo((()=>Me(t,JSON.parse(i),n,"path"===r)),[t,i,n,r])}function st(t,s,r,a){Je()||me(!1);let{navigator:o}=e.useContext(Ye),{matches:n}=e.useContext(Ke),i=n[n.length-1],l=i?i.params:{},c=(i&&i.pathname,i?i.pathnameBase:"/");i&&i.route;let d,u=Qe();if(s){var p;let e="string"==typeof s?we(s):s;"/"===c||(null==(p=e.pathname)?void 0:p.startsWith(c))||me(!1),d=e}else d=u;let m=d.pathname||"/",f=m;if("/"!==c){let e=c.replace(/^\//,"").split("/");f="/"+m.replace(/^\//,"").split("/").slice(e.length).join("/")}let h=be(t,{pathname:f}),y=function(t,s,r,a){var o;if(void 0===s&&(s=[]),void 0===r&&(r=null),void 0===a&&(a=null),null==t){var n;if(!r)return null;if(r.errors)t=r.matches;else{if(!(null!=(n=a)&&n.v7_partialHydration&&0===s.length&&!r.initialized&&r.matches.length>0))return null;t=r.matches}}let i=t,l=null==(o=r)?void 0:o.errors;if(null!=l){let e=i.findIndex((e=>e.route.id&&void 0!==(null==l?void 0:l[e.route.id])));e>=0||me(!1),i=i.slice(0,Math.min(i.length,e+1))}let c=!1,d=-1;if(r&&a&&a.v7_partialHydration)for(let e=0;e=0?i.slice(0,d+1):[i[0]];break}}}return i.reduceRight(((t,a,o)=>{let n,u=!1,p=null,m=null;var f;r&&(n=l&&a.route.id?l[a.route.id]:void 0,p=a.route.errorElement||at,c&&(d<0&&0===o?(dt[f="route-fallback"]||(dt[f]=!0),u=!0,m=null):d===o&&(u=!0,m=a.route.hydrateFallbackElement||null)));let h=s.concat(i.slice(0,o+1)),y=()=>{let s;return s=n?p:u?m:a.route.Component?e.createElement(a.route.Component,null):a.route.element?a.route.element:t,e.createElement(nt,{match:a,routeContext:{outlet:t,matches:h,isDataRoute:null!=r},children:s})};return r&&(a.route.ErrorBoundary||a.route.errorElement||0===o)?e.createElement(ot,{location:r.location,revalidation:r.revalidation,component:p,error:n,children:y(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):y()}),null)}(h&&h.map((e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:De([c,o.encodeLocation?o.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?c:De([c,o.encodeLocation?o.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),n,r,a);return s&&y?e.createElement(Ge.Provider,{value:{location:qe({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:ue.Pop}},y):y}function rt(){let t=function(){var t;let s=e.useContext(Ze),r=function(t){let s=e.useContext(He);return s||me(!1),s}(lt.UseRouteError),a=ct(lt.UseRouteError);return void 0!==s?s:null==(t=r.errors)?void 0:t[a]}(),s=function(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}(t)?t.status+" "+t.statusText:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return e.createElement(e.Fragment,null,e.createElement("h2",null,"Unexpected Application Error!"),e.createElement("h3",{style:{fontStyle:"italic"}},s),r?e.createElement("pre",{style:a},r):null,null)}const at=e.createElement(rt,null);class ot extends e.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?e.createElement(Ke.Provider,{value:this.props.routeContext},e.createElement(Ze.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function nt(t){let{routeContext:s,match:r,children:a}=t,o=e.useContext(We);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),e.createElement(Ke.Provider,{value:s},a)}var it=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(it||{}),lt=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(lt||{});function ct(t){let s=function(t){let s=e.useContext(Ke);return s||me(!1),s}(),r=s.matches[s.matches.length-1];return r.route.id||me(!1),r.route.id}const dt={};function ut(t){let{to:s,replace:r,state:a,relative:o}=t;Je()||me(!1);let{future:n,static:i}=e.useContext(Ye),{matches:l}=e.useContext(Ke),{pathname:c}=Qe(),d=et(),u=Me(s,Ae(l,n.v7_relativeSplatPath),c,"path"===o),p=JSON.stringify(u);return e.useEffect((()=>d(JSON.parse(p),{replace:r,state:a,relative:o})),[d,p,o,r,a]),null}function pt(e){me(!1)}function mt(t){let{basename:s="/",children:r=null,location:a,navigationType:o=ue.Pop,navigator:n,static:i=!1,future:l}=t;Je()&&me(!1);let c=s.replace(/^\/*/,"/"),d=e.useMemo((()=>({basename:c,navigator:n,static:i,future:qe({v7_relativeSplatPath:!1},l)})),[c,l,n,i]);"string"==typeof a&&(a=we(a));let{pathname:u="/",search:p="",hash:m="",state:f=null,key:h="default"}=a,y=e.useMemo((()=>{let e=Oe(u,c);return null==e?null:{location:{pathname:e,search:p,hash:m,state:f,key:h},navigationType:o}}),[c,u,p,m,f,h,o]);return null==y?null:e.createElement(Ye.Provider,{value:d},e.createElement(Ge.Provider,{children:r,value:y}))}function ft(e){let{children:t,location:s}=e;return st(ht(t),s)}function ht(t,s){void 0===s&&(s=[]);let r=[];return e.Children.forEach(t,((t,a)=>{if(!e.isValidElement(t))return;let o=[...s,a];if(t.type===e.Fragment)return void r.push.apply(r,ht(t.props.children,o));t.type!==pt&&me(!1),t.props.index&&t.props.children&&me(!1);let n={id:t.props.id||o.join("-"),caseSensitive:t.props.caseSensitive,element:t.props.element,Component:t.props.Component,index:t.props.index,path:t.props.path,loader:t.props.loader,action:t.props.action,errorElement:t.props.errorElement,ErrorBoundary:t.props.ErrorBoundary,hasErrorBoundary:null!=t.props.ErrorBoundary||null!=t.props.errorElement,shouldRevalidate:t.props.shouldRevalidate,handle:t.props.handle,lazy:t.props.lazy};t.props.children&&(n.children=ht(t.props.children,o)),r.push(n)})),r}function yt(){return yt=Object.assign?Object.assign.bind():function(e){for(var t=1;t{})),e.Component,new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const _t=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"];try{window.__reactRouterVersion="6"}catch(cs){}new Map;const wt=e.startTransition;function gt(t){let{basename:s,children:r,future:a,window:o}=t,n=e.useRef();var i;null==n.current&&(n.current=(void 0===(i={window:o,v5Compat:!0})&&(i={}),function(e,t,s,r){void 0===r&&(r={});let{window:a=document.defaultView,v5Compat:o=!1}=r,n=a.history,i=ue.Pop,l=null,c=d();function d(){return(n.state||{idx:null}).idx}function u(){i=ue.Pop;let e=d(),t=null==e?null:e-c;c=e,l&&l({action:i,location:m.location,delta:t})}function p(e){let t="null"!==a.location.origin?a.location.origin:a.location.href,s="string"==typeof e?e:_e(e);return s=s.replace(/ $/,"%20"),me(t,"No window.location.(origin|href) available to create URL for href: "+s),new URL(s,t)}null==c&&(c=0,n.replaceState(de({},n.state,{idx:c}),""));let m={get action(){return i},get location(){return e(a,n)},listen(e){if(l)throw new Error("A history only accepts one active listener");return a.addEventListener(pe,u),l=e,()=>{a.removeEventListener(pe,u),l=null}},createHref:e=>t(a,e),createURL:p,encodeLocation(e){let t=p(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){i=ue.Push;let r=ye(m.location,e,t);s&&s(r,e),c=d()+1;let u=he(r,c),p=m.createHref(r);try{n.pushState(u,"",p)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;a.location.assign(p)}o&&l&&l({action:i,location:m.location,delta:1})},replace:function(e,t){i=ue.Replace;let r=ye(m.location,e,t);s&&s(r,e),c=d();let a=he(r,c),u=m.createHref(r);n.replaceState(a,"",u),o&&l&&l({action:i,location:m.location,delta:0})},go:e=>n.go(e)};return m}((function(e,t){let{pathname:s="/",search:r="",hash:a=""}=we(e.location.hash.substr(1));return s.startsWith("/")||s.startsWith(".")||(s="/"+s),ye("",{pathname:s,search:r,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let s=e.document.querySelector("base"),r="";if(s&&s.getAttribute("href")){let t=e.location.href,s=t.indexOf("#");r=-1===s?t:t.slice(0,s)}return r+"#"+("string"==typeof t?t:_e(t))}),(function(e,t){fe("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),i)));let l=n.current,[c,d]=e.useState({action:l.action,location:l.location}),{v7_startTransition:u}=a||{},p=e.useCallback((e=>{u&&wt?wt((()=>d(e))):d(e)}),[d,u]);return e.useLayoutEffect((()=>l.listen(p)),[l,p]),e.createElement(mt,{basename:s,children:r,location:c.location,navigationType:c.action,navigator:l,future:a})}ce.flushSync,e.useId;const bt="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,vt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Et=e.forwardRef((function(t,s){let r,{onClick:a,relative:o,reloadDocument:n,replace:i,state:l,target:c,to:d,preventScrollReset:u,unstable_viewTransition:p}=t,m=function(e,t){if(null==e)return{};var s,r,a={},o=Object.keys(e);for(r=0;r=0||(a[s]=e[s]);return a}(t,_t),{basename:f}=e.useContext(Ye),h=!1;if("string"==typeof d&&vt.test(d)&&(r=d,bt))try{let e=new URL(window.location.href),t=d.startsWith("//")?new URL(e.protocol+d):new URL(d),s=Oe(t.pathname,f);t.origin===e.origin&&null!=s?d=s+t.search+t.hash:h=!0}catch(e){}let y=function(t,s){let{relative:r}=void 0===s?{}:s;Je()||me(!1);let{basename:a,navigator:o}=e.useContext(Ye),{hash:n,pathname:i,search:l}=tt(t,{relative:r}),c=i;return"/"!==a&&(c="/"===i?a:De([a,i])),o.createHref({pathname:c,search:l,hash:n})}(d,{relative:o}),_=function(t,s){let{target:r,replace:a,state:o,preventScrollReset:n,relative:i,unstable_viewTransition:l}=void 0===s?{}:s,c=et(),d=Qe(),u=tt(t,{relative:i});return e.useCallback((e=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(e,r)){e.preventDefault();let s=void 0!==a?a:_e(d)===_e(u);c(t,{replace:s,state:o,preventScrollReset:n,relative:i,unstable_viewTransition:l})}}),[d,c,u,a,o,r,t,n,i,l])}(d,{replace:i,state:l,target:c,preventScrollReset:u,relative:o,unstable_viewTransition:p});return e.createElement("a",yt({},m,{href:r||y,onClick:h||n?a:function(e){a&&a(e),e.defaultPrevented||_(e)},ref:s,target:c}))}));var xt,kt;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(xt||(xt={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(kt||(kt={}));const St=window.yoast.styledComponents,Lt=window.wp.i18n,Tt=window.yoast.reduxJsToolkit,Ft="adminUrl",$t=(0,Tt.createSlice)({name:Ft,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),Pt=($t.getInitialState,{selectAdminUrl:e=>(0,le.get)(e,Ft,"")});Pt.selectAdminLink=(0,Tt.createSelector)([Pt.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),$t.actions,$t.reducer;const Rt=window.wp.url,Nt="linkParams",It=(0,Tt.createSlice)({name:Nt,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),Ot=It.getInitialState,Ct={selectLinkParam:(e,t,s={})=>(0,le.get)(e,`${Nt}.${t}`,s),selectLinkParams:e=>(0,le.get)(e,Nt,{})};Ct.selectLink=(0,Tt.createSelector)([Ct.selectLinkParams,(e,t)=>t,(e,t,s={})=>s],((e,t,s)=>(0,Rt.addQueryArgs)(t,{...e,...s})));const At=It.actions,Mt=It.reducer,Dt="notifications",Bt=(0,Tt.createSlice)({name:Dt,initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:s="default",title:r,description:a})=>({payload:{id:e||(0,Tt.nanoid)(),variant:t,size:s,title:r||"",description:a}})},removeNotification:(e,{payload:t})=>(0,le.omit)(e,t)}}),Ut=Bt.getInitialState,Vt={selectNotifications:e=>(0,le.get)(e,Dt,{}),selectNotification:(e,t)=>(0,le.get)(e,[Dt,t],null)},jt=Bt.actions,zt=Bt.reducer,qt="pluginUrl",Wt=(0,Tt.createSlice)({name:qt,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),Ht=(Wt.getInitialState,{selectPluginUrl:e=>(0,le.get)(e,qt,"")});Ht.selectImageLink=(0,Tt.createSelector)([Ht.selectPluginUrl,(e,t,s="images")=>s,(e,t)=>t],((e,t,s)=>[(0,le.trimEnd)(e,"/"),(0,le.trim)(t,"/"),(0,le.trimStart)(s,"/")].join("/"))),Wt.actions,Wt.reducer;const Yt=window.wp.apiFetch;var Gt=s.n(Yt);const Kt="request",Zt="success",Jt="error",Qt="idle",Xt="loading",es="success",ts="error",ss="showPlay",rs="askPermission",as="isPlaying",os="wistiaEmbedPermission",ns=(0,Tt.createSlice)({name:os,initialState:{value:!1,status:Qt,error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${os}/${Kt}`,(e=>{e.status=Xt})),e.addCase(`${os}/${Zt}`,((e,{payload:t})=>{e.status=es,e.value=Boolean(t&&t.value)})),e.addCase(`${os}/${Jt}`,((e,{payload:t})=>{e.status=ts,e.value=Boolean(t&&t.value),e.error={code:(0,le.get)(t,"error.code",500),message:(0,le.get)(t,"error.message","Unknown")}}))}});function is(...e){return e.filter(Boolean).join(" ")}function ls(e,t,...s){if(e in t){let r=t[e];return"function"==typeof r?r(...s):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,ls),r}ns.getInitialState,ns.actions,ns.reducer;var cs,ds,us=((ds=us||{})[ds.None=0]="None",ds[ds.RenderStrategy=1]="RenderStrategy",ds[ds.Static=2]="Static",ds),ps=((cs=ps||{})[cs.Unmount=0]="Unmount",cs[cs.Hidden=1]="Hidden",cs);function ms({ourProps:e,theirProps:t,slot:s,defaultTag:r,features:a,visible:o=!0,name:n}){let i=hs(t,e);if(o)return fs(i,s,r,n);let l=null!=a?a:0;if(2&l){let{static:e=!1,...t}=i;if(e)return fs(t,s,r,n)}if(1&l){let{unmount:e=!0,...t}=i;return ls(e?0:1,{0:()=>null,1:()=>fs({...t,hidden:!0,style:{display:"none"}},s,r,n)})}return fs(i,s,r,n)}function fs(t,s={},r,a){var o;let{as:n=r,children:i,refName:l="ref",...c}=ws(t,["unmount","static"]),d=void 0!==t.ref?{[l]:t.ref}:{},u="function"==typeof i?i(s):i;c.className&&"function"==typeof c.className&&(c.className=c.className(s));let p={};if(s){let e=!1,t=[];for(let[r,a]of Object.entries(s))"boolean"==typeof a&&(e=!0),!0===a&&t.push(r);e&&(p["data-headlessui-state"]=t.join(" "))}if(n===e.Fragment&&Object.keys(_s(c)).length>0){if(!(0,e.isValidElement)(u)||Array.isArray(u)&&u.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${a} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(c).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let t=is(null==(o=u.props)?void 0:o.className,c.className),s=t?{className:t}:{};return(0,e.cloneElement)(u,Object.assign({},hs(u.props,_s(ws(c,["ref"]))),p,d,function(...e){return{ref:e.every((e=>null==e))?void 0:t=>{for(let s of e)null!=s&&("function"==typeof s?s(t):s.current=t)}}}(u.ref,d.ref),s))}return(0,e.createElement)(n,Object.assign({},ws(c,["ref"]),n!==e.Fragment&&d,n!==e.Fragment&&p),u)}function hs(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},s={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=s[e]||(s[e]=[]),s[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(s).map((e=>[e,void 0]))));for(let e in s)Object.assign(t,{[e](t,...r){let a=s[e];for(let e of a){if((t instanceof Event||(null==t?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;e(t,...r)}}});return t}function ys(t){var s;return Object.assign((0,e.forwardRef)(t),{displayName:null!=(s=t.displayName)?s:t.name})}function _s(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}function ws(e,t=[]){let s=Object.assign({},e);for(let e of t)e in s&&delete s[e];return s}let gs=(0,e.createContext)(null);gs.displayName="OpenClosedContext";var bs=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(bs||{});function vs(){return(0,e.useContext)(gs)}function Es({value:t,children:s}){return e.createElement(gs.Provider,{value:t},s)}var xs=Object.defineProperty,ks=(e,t,s)=>(((e,t,s)=>{t in e?xs(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s})(e,"symbol"!=typeof t?t+"":t,s),s);let Ss=new class{constructor(){ks(this,"current",this.detect()),ks(this,"handoffState","pending"),ks(this,"currentId",0)}set(e){this.current!==e&&(this.handoffState="pending",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}handoff(){"pending"===this.handoffState&&(this.handoffState="complete")}get isHandoffComplete(){return"complete"===this.handoffState}},Ls=(t,s)=>{Ss.isServer?(0,e.useEffect)(t,s):(0,e.useLayoutEffect)(t,s)};function Ts(){let t=(0,e.useRef)(!1);return Ls((()=>(t.current=!0,()=>{t.current=!1})),[]),t}function Fs(t){let s=(0,e.useRef)(t);return Ls((()=>{s.current=t}),[t]),s}function $s(){let[t,s]=(0,e.useState)(Ss.isHandoffComplete);return t&&!1===Ss.isHandoffComplete&&s(!1),(0,e.useEffect)((()=>{!0!==t&&s(!0)}),[t]),(0,e.useEffect)((()=>Ss.handoff()),[]),t}let Ps=function(t){let s=Fs(t);return e.useCallback(((...e)=>s.current(...e)),[s])},Rs=Symbol();function Ns(...t){let s=(0,e.useRef)(t);(0,e.useEffect)((()=>{s.current=t}),[t]);let r=Ps((e=>{for(let t of s.current)null!=t&&("function"==typeof t?t(e):t.current=e)}));return t.every((e=>null==e||(null==e?void 0:e[Rs])))?void 0:r}function Is(){let e=[],t=[],s={enqueue(e){t.push(e)},addEventListener:(e,t,r,a)=>(e.addEventListener(t,r,a),s.add((()=>e.removeEventListener(t,r,a)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return s.add((()=>cancelAnimationFrame(t)))},nextFrame:(...e)=>s.requestAnimationFrame((()=>s.requestAnimationFrame(...e))),setTimeout(...e){let t=setTimeout(...e);return s.add((()=>clearTimeout(t)))},microTask(...e){let t={current:!0};return function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{t.current&&e[0]()})),s.add((()=>{t.current=!1}))},add:t=>(e.push(t),()=>{let s=e.indexOf(t);if(s>=0){let[t]=e.splice(s,1);t()}}),dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return s}function Os(e,...t){e&&t.length>0&&e.classList.add(...t)}function Cs(e,...t){e&&t.length>0&&e.classList.remove(...t)}function As(){let[t]=(0,e.useState)(Is);return(0,e.useEffect)((()=>()=>t.dispose()),[t]),t}function Ms({container:e,direction:t,classes:s,onStart:r,onStop:a}){let o=Ts(),n=As(),i=Fs(t);Ls((()=>{let t=Is();n.add(t.dispose);let l=e.current;if(l&&"idle"!==i.current&&o.current)return t.dispose(),r.current(i.current),t.add(function(e,t,s,r){let a=s?"enter":"leave",o=Is(),n=void 0!==r?function(e){let t={called:!1};return(...s)=>{if(!t.called)return t.called=!0,e(...s)}}(r):()=>{};"enter"===a&&(e.removeAttribute("hidden"),e.style.display="");let i=ls(a,{enter:()=>t.enter,leave:()=>t.leave}),l=ls(a,{enter:()=>t.enterTo,leave:()=>t.leaveTo}),c=ls(a,{enter:()=>t.enterFrom,leave:()=>t.leaveFrom});return Cs(e,...t.enter,...t.enterTo,...t.enterFrom,...t.leave,...t.leaveFrom,...t.leaveTo,...t.entered),Os(e,...i,...c),o.nextFrame((()=>{Cs(e,...c),Os(e,...l),function(e,t){let s=Is();if(!e)return s.dispose;let{transitionDuration:r,transitionDelay:a}=getComputedStyle(e),[o,n]=[r,a].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));if(o+n!==0){let r=s.addEventListener(e,"transitionend",(e=>{e.target===e.currentTarget&&(t(),r())}))}else t();s.add((()=>t())),s.dispose}(e,(()=>(Cs(e,...i),Os(e,...t.entered),n())))})),o.dispose}(l,s.current,"enter"===i.current,(()=>{t.dispose(),a.current(i.current)}))),t.dispose}),[t])}function Ds(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let Bs=(0,e.createContext)(null);Bs.displayName="TransitionContext";var Us=(e=>(e.Visible="visible",e.Hidden="hidden",e))(Us||{});let Vs=(0,e.createContext)(null);function js(e){return"children"in e?js(e.children):e.current.filter((({el:e})=>null!==e.current)).filter((({state:e})=>"visible"===e)).length>0}function zs(t,s){let r=Fs(t),a=(0,e.useRef)([]),o=Ts(),n=As(),i=Ps(((e,t=ps.Hidden)=>{let s=a.current.findIndex((({el:t})=>t===e));-1!==s&&(ls(t,{[ps.Unmount](){a.current.splice(s,1)},[ps.Hidden](){a.current[s].state="hidden"}}),n.microTask((()=>{var e;!js(a)&&o.current&&(null==(e=r.current)||e.call(r))})))})),l=Ps((e=>{let t=a.current.find((({el:t})=>t===e));return t?"visible"!==t.state&&(t.state="visible"):a.current.push({el:e,state:"visible"}),()=>i(e,ps.Unmount)})),c=(0,e.useRef)([]),d=(0,e.useRef)(Promise.resolve()),u=(0,e.useRef)({enter:[],leave:[],idle:[]}),p=Ps(((e,t,r)=>{c.current.splice(0),s&&(s.chains.current[t]=s.chains.current[t].filter((([t])=>t!==e))),null==s||s.chains.current[t].push([e,new Promise((e=>{c.current.push(e)}))]),null==s||s.chains.current[t].push([e,new Promise((e=>{Promise.all(u.current[t].map((([e,t])=>t))).then((()=>e()))}))]),"enter"===t?d.current=d.current.then((()=>null==s?void 0:s.wait.current)).then((()=>r(t))):r(t)})),m=Ps(((e,t,s)=>{Promise.all(u.current[t].splice(0).map((([e,t])=>t))).then((()=>{var e;null==(e=c.current.shift())||e()})).then((()=>s(t)))}));return(0,e.useMemo)((()=>({children:a,register:l,unregister:i,onStart:p,onStop:m,wait:d,chains:u})),[l,i,a,p,m,u,d])}function qs(){}Vs.displayName="NestingContext";let Ws=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function Hs(e){var t;let s={};for(let r of Ws)s[r]=null!=(t=e[r])?t:qs;return s}let Ys=us.RenderStrategy,Gs=ys((function(t,s){let{beforeEnter:r,afterEnter:a,beforeLeave:o,afterLeave:n,enter:i,enterFrom:l,enterTo:c,entered:d,leave:u,leaveFrom:p,leaveTo:m,...f}=t,h=(0,e.useRef)(null),y=Ns(h,s),_=f.unmount?ps.Unmount:ps.Hidden,{show:w,appear:g,initial:b}=function(){let t=(0,e.useContext)(Bs);if(null===t)throw new Error("A is used but it is missing a parent or .");return t}(),[v,E]=(0,e.useState)(w?"visible":"hidden"),x=function(){let t=(0,e.useContext)(Vs);if(null===t)throw new Error("A is used but it is missing a parent or .");return t}(),{register:k,unregister:S}=x,L=(0,e.useRef)(null);(0,e.useEffect)((()=>k(h)),[k,h]),(0,e.useEffect)((()=>{if(_===ps.Hidden&&h.current)return w&&"visible"!==v?void E("visible"):ls(v,{hidden:()=>S(h),visible:()=>k(h)})}),[v,h,k,S,w,_]);let T=Fs({enter:Ds(i),enterFrom:Ds(l),enterTo:Ds(c),entered:Ds(d),leave:Ds(u),leaveFrom:Ds(p),leaveTo:Ds(m)}),F=function(t){let s=(0,e.useRef)(Hs(t));return(0,e.useEffect)((()=>{s.current=Hs(t)}),[t]),s}({beforeEnter:r,afterEnter:a,beforeLeave:o,afterLeave:n}),$=$s();(0,e.useEffect)((()=>{if($&&"visible"===v&&null===h.current)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}),[h,v,$]);let P=b&&!g,R=!$||P||L.current===w?"idle":w?"enter":"leave",N=Ps((e=>ls(e,{enter:()=>F.current.beforeEnter(),leave:()=>F.current.beforeLeave(),idle:()=>{}}))),I=Ps((e=>ls(e,{enter:()=>F.current.afterEnter(),leave:()=>F.current.afterLeave(),idle:()=>{}}))),O=zs((()=>{E("hidden"),S(h)}),x);Ms({container:h,classes:T,direction:R,onStart:Fs((e=>{O.onStart(h,e,N)})),onStop:Fs((e=>{O.onStop(h,e,I),"leave"===e&&!js(O)&&(E("hidden"),S(h))}))}),(0,e.useEffect)((()=>{!P||(_===ps.Hidden?L.current=null:L.current=w)}),[w,P,v]);let C=f,A={ref:y};return g&&w&&Ss.isServer&&(C={...C,className:is(f.className,...T.current.enter,...T.current.enterFrom)}),e.createElement(Vs.Provider,{value:O},e.createElement(Es,{value:ls(v,{visible:bs.Open,hidden:bs.Closed})},ms({ourProps:A,theirProps:C,defaultTag:"div",features:Ys,visible:"visible"===v,name:"Transition.Child"})))})),Ks=ys((function(t,s){let{show:r,appear:a=!1,unmount:o,...n}=t,i=(0,e.useRef)(null),l=Ns(i,s);$s();let c=vs();if(void 0===r&&null!==c&&(r=ls(c,{[bs.Open]:!0,[bs.Closed]:!1})),![!0,!1].includes(r))throw new Error("A is used but it is missing a `show={true | false}` prop.");let[d,u]=(0,e.useState)(r?"visible":"hidden"),p=zs((()=>{u("hidden")})),[m,f]=(0,e.useState)(!0),h=(0,e.useRef)([r]);Ls((()=>{!1!==m&&h.current[h.current.length-1]!==r&&(h.current.push(r),f(!1))}),[h,r]);let y=(0,e.useMemo)((()=>({show:r,appear:a,initial:m})),[r,a,m]);(0,e.useEffect)((()=>{if(r)u("visible");else if(js(p)){let e=i.current;if(!e)return;let t=e.getBoundingClientRect();0===t.x&&0===t.y&&0===t.width&&0===t.height&&u("hidden")}else u("hidden")}),[r,p]);let _={unmount:o};return e.createElement(Vs.Provider,{value:p},e.createElement(Bs.Provider,{value:y},ms({ourProps:{..._,as:e.Fragment,children:e.createElement(Gs,{ref:l,..._,...n})},theirProps:{},defaultTag:e.Fragment,features:Ys,visible:"visible"===d,name:"Transition"})))})),Zs=ys((function(t,s){let r=null!==(0,e.useContext)(Bs),a=null!==vs();return e.createElement(e.Fragment,null,!r&&a?e.createElement(Ks,{ref:s,...t}):e.createElement(Gs,{ref:s,...t}))})),Js=Object.assign(Ks,{Child:Zs,Root:Ks});const Qs=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"}))})),Xs=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"}))})),er=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zm0 0h12a2 2 0 002-2v-4a2 2 0 00-2-2h-2.343M11 7.343l1.657-1.657a2 2 0 012.828 0l2.829 2.829a2 2 0 010 2.828l-8.486 8.485M7 17h.01"}))})),tr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"}))})),sr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{fillRule:"evenodd",d:"M14.707 12.707a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z",clipRule:"evenodd"}))})),rr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"}))}));var ar=s(4530),or=s.n(ar),nr=s(5890),ir=s.n(nr);const lr=({link:t})=>{const s=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to "Yoast SEO" academy, which is a clickable link. */ (0,Lt.__)("Want to learn SEO from Team Yoast? Check out our %1$s!","wordpress-seo"),""),{link:(0,e.createElement)("a",{href:t,target:"_blank",rel:"noopener"},"Yoast SEO academy")})),[]);return(0,e.createElement)(l.Paper,{as:"div",className:"yst-p-6 yst-space-y-3"},(0,e.createElement)(l.Title,{as:"h2",size:"4",className:"yst-text-base yst-text-primary-500"},(0,Lt.__)("Learn SEO","wordpress-seo")),(0,e.createElement)("p",null,s,(0,e.createElement)("br",null),(0,Lt.__)("We have both free and premium online courses to learn everything you need to know about SEO.","wordpress-seo")),(0,e.createElement)(l.Link,{href:t,className:"yst-block",target:"_blank",rel:"noopener"},(0,Lt.sprintf)(/* translators: %1$s expands to "Yoast SEO academy". */ (0,Lt.__)("Check out %1$s","wordpress-seo"),"Yoast SEO academy")))};lr.propTypes={link:ir().string.isRequired};const cr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),dr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{fillRule:"evenodd",d:"M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),ur=({learnMoreLink:t,thumbnail:s,wistiaEmbedPermission:r,upsellLink:a,isProductCopy:o,title:n,upsellLabel:c,newToText:d,bundleNote:u})=>{const{onClose:p,initialFocus:m}=(0,l.useModalContext)(),f={a:(0,e.createElement)(wr,{href:t,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,e.createElement)(dr,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"})};return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,e.createElement)("div",{className:"yst-relative yst-w-full"},(0,e.createElement)(Ur,{videoId:"vmrahpfjxp",thumbnail:s,wistiaEmbedPermission:r}),(0,e.createElement)(l.Badge,{className:"yst-absolute yst-top-0 yst-right-2 yst-mt-2 yst-ml-2",variant:"info"},"Beta")),(0,e.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,e.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,e.createElement)("span",{className:"yst-logo-icon"}),d))),(0,e.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,e.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,e.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},n),(0,e.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},o?(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,Lt.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for product titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),f):(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,Lt.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),f))),(0,e.createElement)("div",{className:"yst-w-full yst-flex yst-mt-10"},(0,e.createElement)(l.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:m},(0,e.createElement)(cr,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),c,(0,e.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Lt.__)("(Opens in a new browser tab)","wordpress-seo")))),u,(0,e.createElement)(l.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:p},(0,Lt.__)("Close","wordpress-seo"))))};ur.propTypes={learnMoreLink:ir().string.isRequired,upsellLink:ir().string.isRequired,thumbnail:ir().shape({src:ir().string.isRequired,width:ir().string,height:ir().string}).isRequired,wistiaEmbedPermission:ir().shape({value:ir().bool.isRequired,status:ir().string.isRequired,set:ir().func.isRequired}).isRequired,title:ir().string,upsellLabel:ir().string,newToText:ir().string,isProductCopy:ir().bool,bundleNote:ir().oneOfType([ir().string,ir().element])},ur.defaultProps={title:(0,Lt.__)("Use AI to write your titles & meta descriptions!","wordpress-seo"),upsellLabel:(0,Lt.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),newToText:"Yoast SEO Premium",isProductCopy:!1,bundleNote:""};const pr={variant:{lg:{grid:"yst-grid lg:yst-grid-cols-3 lg:yst-gap-12",col1:"yst-col-span-1",col2:"lg:yst-mt-0 lg:yst-col-span-2"},xl:{grid:"yst-grid xl:yst-grid-cols-3 xl:yst-gap-12",col1:"yst-col-span-1",col2:"xl:yst-mt-0 xl:yst-col-span-2"},"2xl":{grid:"yst-grid 2xl:yst-grid-cols-3 2xl:yst-gap-12",col1:"yst-col-span-1",col2:"2xl:yst-mt-0 2xl:yst-col-span-2"}}},mr=({id:t,children:s,title:r,description:a=null,variant:o="2xl"})=>(0,e.createElement)("section",{id:t,className:pr.variant[o].grid},(0,e.createElement)("div",{className:pr.variant[o].col1},(0,e.createElement)("div",{className:"yst-max-w-screen-sm"},(0,e.createElement)(l.Title,{as:"h2",size:"4"},r),a&&(0,e.createElement)("p",{className:"yst-mt-2"},a))),(0,e.createElement)("fieldset",{className:`yst-min-w-0 yst-mt-8 ${pr.variant[o].col2}`},(0,e.createElement)("legend",{className:"yst-sr-only"},r),(0,e.createElement)("div",{className:"yst-space-y-8"},s)));var fr;function hr(){return hr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",hr({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1000 1000"},t),fr||(fr=e.createElement("path",{fill:"#fff",d:"M500 0C223.9 0 0 223.9 0 500s223.9 500 500 500 500-223.9 500-500S776.1 0 500 0Zm87.2 412.4c0-21.9 4.3-40.2 13.1-54.4s24-27.1 45.9-38.2l10.1-4.9c17.8-9 22.4-16.7 22.4-26 0-11.1-9.5-19.1-25-19.1-18.3 0-32.2 9.5-41.8 28.9l-24.7-24.8c5.4-11.6 14.1-20.9 25.8-28.1a70.8 70.8 0 0 1 38.9-11.1c17.8 0 33.3 4.6 45.9 14.2s19.4 22.7 19.4 39.4c0 26.6-15 42.9-43.1 57.3l-15.7 8c-16.8 8.5-25.1 16-27.4 29.4h85.4v35.4H587.2Zm-82.1 373.3c-157.8 0-285.7-127.9-285.7-285.7s127.9-285.7 285.7-285.7a286.4 286.4 0 0 1 55.9 5.5l-55.9 116.9c-90 0-163.3 73.3-163.3 163.3s73.3 163.3 163.3 163.3a162.8 162.8 0 0 0 106.4-39.6l61.8 107.2a283.9 283.9 0 0 1-168.2 54.8ZM705 704.1l-70.7-122.5H492.9l70.7-122.4H705l70.7 122.4Z"}))),_r=({to:t,idSuffix:s="",...r})=>{const a=(0,i.useMemo)((()=>(0,le.replace)((0,le.replace)(`link-${t}`,"/","-"),"--","-")),[t]);return(0,e.createElement)(l.SidebarNavigation.SubmenuItem,{as:Et,pathProp:"to",id:`${a}${s}`,to:t,...r})};_r.propTypes={to:ir().string.isRequired,idSuffix:ir().string};const wr=({href:t,children:s,...r})=>(0,e.createElement)(l.Link,{target:"_blank",rel:"noopener noreferrer",...r,href:t},s,(0,e.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Lt.__)("(Opens in a new browser tab)","wordpress-seo")));wr.propTypes={href:ir().string.isRequired,children:ir().node},wr.defaultProps={children:null};const gr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var br,vr,Er;function xr(){return xr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",xr({xmlns:"http://www.w3.org/2000/svg",id:"star-rating-half_svg__Layer_1","data-name":"Layer 1",viewBox:"0 0 500 475.53"},t),br||(br=e.createElement("defs",null,e.createElement("style",null,".star-rating-half_svg__cls-1{fill:#fbbf24}"))),vr||(vr=e.createElement("path",{d:"M250 392.04 98.15 471.87l29-169.09L4.3 183.03l169.77-24.67L250 4.52l75.93 153.84 169.77 24.67-122.85 119.75 29 169.09L250 392.04z",className:"star-rating-half_svg__cls-1"})),Er||(Er=e.createElement("path",{d:"m250 9.04 73.67 149.27.93 1.88 2.08.3 164.72 23.94-119.19 116.19-1.51 1.47.36 2.07 28.14 164.06-147.34-77.46-1.86-1-1.86 1-147.34 77.46 28.14-164.06.36-2.07-1.51-1.47L8.6 184.43l164.72-23.9 2.08-.3.93-1.88L250 9.04m0-9-77.25 156.49L0 181.64l125 121.89-29.51 172L250 394.3l154.51 81.23-29.51-172 125-121.89-172.75-25.11L250 0Z",className:"star-rating-half_svg__cls-1"})),e.createElement("path",{d:"m500 181.64-172.75-25.11L250 0v394.3l154.51 81.23L375 303.48l125-121.84z",style:{fill:"#f3f4f6"}}));function Sr(){return Sr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",Sr({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 500 475.53"},t),e.createElement("path",{d:"m250 0 77.25 156.53L500 181.64 375 303.48l29.51 172.05L250 394.3 95.49 475.53 125 303.48 0 181.64l172.75-25.11L250 0z",style:{fill:"#fbbf24"}}));var Tr,Fr,$r,Pr,Rr,Nr,Ir,Or,Cr;function Ar(){return Ar=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",Ar({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 500 500"},t),Tr||(Tr=e.createElement("path",{fill:"#a4286a",d:"M80 0h340a80 80 0 0 1 80 80v420H80a80 80 0 0 1-80-80V80A80 80 0 0 1 80 0z"})),Fr||(Fr=e.createElement("path",{fill:"#6c2548",d:"M437.61 2 155.89 500H500V80a80 80 0 0 0-62.39-78z"})),$r||($r=e.createElement("path",{fill:"#fff",d:"M74.4 337.3v34.9c21.6-.9 38.5-8 52.8-22.5s27.4-38 39.9-72.9l92.6-248h-44.8L140.3 236l-37-116.2h-41l54.4 139.8a57.54 57.54 0 0 1 0 41.8c-5.5 14.2-15.4 30.9-42.3 35.9z"})),Pr||(Pr=e.createElement("circle",{cx:368.33,cy:124.68,r:97.34,fill:"#9fda4f",transform:"rotate(-45 368.335 124.68)"})),Rr||(Rr=e.createElement("path",{fill:"#77b227",d:"m416.2 39.93-95.74 169.51A97.34 97.34 0 1 0 416.2 39.93z"})),Nr||(Nr=e.createElement("path",{fill:"#fec228",d:"m294.78 254.75-.15-.08-.13-.07a63.6 63.6 0 0 0-62.56 110.76h.13a63.6 63.6 0 0 0 62.71-110.67z"})),Ir||(Ir=e.createElement("path",{fill:"#f49a00",d:"m294.5 254.59-62.56 110.76a63.6 63.6 0 1 0 62.56-110.76z"})),Or||(Or=e.createElement("path",{fill:"#ff4e47",d:"M222.31 450.07A38.16 38.16 0 0 0 203 416.83a38.18 38.18 0 1 0 19.41 33.27z"})),Cr||(Cr=e.createElement("path",{fill:"#ed261f",d:"m202.9 416.8-37.54 66.48a38.17 38.17 0 0 0 37.54-66.48z"}))),Dr=({link:t,linkProps:s,isPromotionActive:r})=>{let a=(0,i.useMemo)((()=>(0,Lt.__)("Use AI to generate titles and meta descriptions, automatically redirect deleted pages, get 24/7 support, and much, much more!","wordpress-seo")),[]),o=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,Lt.__)("%1$sGet%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,e.createElement)("span",{className:"yst-whitespace-nowrap"})});const n=r("black-friday-2024-promotion");return n&&(a=(0,i.useMemo)((()=>(0,Lt.__)("If you were thinking about upgrading, now's the time! 30% OFF ends 3rd Dec 11am (CET)","wordpress-seo")),[]),o=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,Lt.__)("%1$sBuy%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,e.createElement)("span",{className:"yst-whitespace-nowrap"})})),(0,e.createElement)("div",{className:"yst-p-6 yst-rounded-lg yst-text-white yst-bg-primary-500 yst-shadow"},(0,e.createElement)("figure",{className:"yst-logo-square yst-w-16 yst-h-16 yst-mx-auto yst-overflow-hidden yst-border yst-border-white yst-rounded-xl yst-rounded-br-none yst-relative yst-z-10 yst-mt-[-2.6rem]"},(0,e.createElement)(Mr,null)),n&&(0,e.createElement)("div",{className:"sidebar__sale_banner_container"},(0,e.createElement)("div",{className:"sidebar__sale_banner"},(0,e.createElement)("span",{className:"banner_text"},(0,Lt.__)("30% OFF - BLACK FRIDAY","wordpress-seo")))),(0,e.createElement)(l.Title,{as:"h2",className:"yst-mt-6 yst-text-base yst-font-extrabold yst-text-white"},o),(0,e.createElement)("p",{className:"yst-mt-2"},a),(0,e.createElement)(l.Button,{as:"a",variant:"upsell",href:t,target:"_blank",rel:"noopener",className:"yst-flex yst-justify-center yst-gap-2 yst-mt-4 focus:yst-ring-offset-primary-500",...s},(0,e.createElement)("span",null,n?(0,Lt.__)("Buy now","wordpress-seo"):o),(0,e.createElement)(gr,{className:"yst-w-4 yst-h-4 yst-icon-rtl"})),(0,e.createElement)("p",{className:"yst-text-center yst-text-xs yst-mx-2 yst-font-light yst-leading-5 yst-mt-2"},!n&&(0,e.createElement)(e.Fragment,null,(0,Lt.__)("Only $/€/£99 per year (ex VAT)","wordpress-seo"),(0,e.createElement)("br",null)),(0,Lt.__)("30-day money back guarantee.","wordpress-seo")),(0,e.createElement)("hr",{className:"yst-border-t yst-border-primary-300 yst-my-4"}),(0,e.createElement)("a",{className:"yst-block yst-mt-4 yst-no-underline",href:"https://www.g2.com/products/yoast-yoast/reviews",target:"_blank",rel:"noopener noreferrer"},(0,e.createElement)("span",{className:"yst-font-medium yst-text-white hover:yst-underline"},(0,Lt.__)("Read reviews from real users","wordpress-seo")),(0,e.createElement)("span",{className:"yst-flex yst-gap-2 yst-mt-2 yst-items-center"},(0,e.createElement)(yr,{className:"yst-w-5 yst-h-5"}),(0,e.createElement)("span",{className:"yst-flex yst-gap-1"},(0,e.createElement)(Lr,{className:"yst-w-5 yst-h-5"}),(0,e.createElement)(Lr,{className:"yst-w-5 yst-h-5"}),(0,e.createElement)(Lr,{className:"yst-w-5 yst-h-5"}),(0,e.createElement)(Lr,{className:"yst-w-5 yst-h-5"}),(0,e.createElement)(kr,{className:"yst-w-5 yst-h-5"})),(0,e.createElement)("span",{className:"yst-text-sm yst-font-semibold yst-text-white"},"4.6 / 5"))))};Dr.propTypes={link:ir().string.isRequired,linkProps:ir().object,isPromotionActive:ir().func},Dr.defaultProps={linkProps:{},isPromotionActive:le.noop};const Br=window.yoast.reactHelmet,Ur=({videoId:t,thumbnail:s,wistiaEmbedPermission:r})=>{const[a,o]=(0,i.useState)(r.value?as:ss),n=(0,i.useCallback)((()=>o(as)),[o]),c=(0,i.useCallback)((()=>{r.value?n():o(rs)}),[r.value,n,o]),d=(0,i.useCallback)((()=>o(ss)),[o]),u=(0,i.useCallback)((()=>{r.set(!0),n()}),[r.set,n]);return(0,e.createElement)(e.Fragment,null,r.value&&(0,e.createElement)(Br.Helmet,null,(0,e.createElement)("script",{src:"https://fast.wistia.com/assets/external/E-v1.js",async:!0})),(0,e.createElement)("div",{className:"yst-relative yst-w-full yst-h-0 yst-pt-[56.25%] yst-overflow-hidden yst-rounded-md yst-drop-shadow-md yst-bg-white"},a===ss&&(0,e.createElement)("button",{type:"button",className:"yst-absolute yst-inset-0 yst-button yst-p-0 yst-border-none yst-bg-white yst-transition-opacity yst-duration-1000 yst-opacity-100",onClick:c},(0,e.createElement)("img",{className:"yst-w-full yst-h-auto",alt:"",loading:"lazy",decoding:"async",...s})),a===rs&&(0,e.createElement)("div",{className:"yst-absolute yst-inset-0 yst-flex yst-flex-col yst-items-center yst-justify-center yst-bg-white"},(0,e.createElement)("p",{className:"yst-max-w-xs yst-mx-auto yst-text-center"},r.status===Xt&&(0,e.createElement)(l.Spinner,null),r.status!==Xt&&(0,Lt.sprintf)(/* translators: %1$s expands to Yoast SEO. %2$s expands to Wistia. */ (0,Lt.__)("To see this video, you need to allow %1$s to load embedded videos from %2$s.","wordpress-seo"),"Yoast SEO","Wistia")),(0,e.createElement)("div",{className:"yst-flex yst-mt-6 yst-gap-x-4"},(0,e.createElement)(l.Button,{type:"button",variant:"secondary",onClick:d,disabled:r.status===Xt},(0,Lt.__)("Deny","wordpress-seo")),(0,e.createElement)(l.Button,{type:"button",variant:"primary",onClick:u,disabled:r.status===Xt},(0,Lt.__)("Allow","wordpress-seo")))),r.value&&a===as&&(0,e.createElement)("div",{className:"yst-absolute yst-w-full yst-h-full yst-top-0 yst-left-0"},null===t&&(0,e.createElement)(l.Spinner,{className:"yst-h-full yst-mx-auto"}),null!==t&&(0,e.createElement)("div",{className:`wistia_embed wistia_async_${t} videoFoam=true`}))))};Ur.propTypes={videoId:ir().string.isRequired,thumbnail:ir().shape({src:ir().string.isRequired,width:ir().string,height:ir().string}).isRequired,wistiaEmbedPermission:ir().shape({value:ir().bool.isRequired,status:ir().string.isRequired,set:ir().func.isRequired}).isRequired};const Vr=({learnMoreLink:t,thumbnail:s,wistiaEmbedPermission:r,upsellLink:a,upsellLabel:o})=>{const{onClose:n,initialFocus:c}=(0,l.useModalContext)(),d={a:(0,e.createElement)(wr,{href:t,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,e.createElement)(dr,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"}),br:(0,e.createElement)("br",null)};return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,e.createElement)("div",{className:"yst-relative yst-w-full"},(0,e.createElement)(Ur,{videoId:"vun9z1dpfh",thumbnail:s,wistiaEmbedPermission:r}),(0,e.createElement)(l.Badge,{className:"yst-absolute yst-right-0 yst-mr-4 yst-text-center yst-justify-center",variant:"info",style:{top:"-8px"}},(0,Lt.__)("Beta","wordpress-seo-premium"))),(0,e.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,e.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,e.createElement)("span",{className:"yst-logo-icon"}),"Yoast SEO Premium"))),(0,e.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,e.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,e.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},(0,Lt.sprintf)(/* translators: %s: Expands to "Yoast AI" */ (0,Lt.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,e.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */ (0,Lt.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"
    ","","",""),d))),(0,e.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,e.createElement)(l.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:c},(0,e.createElement)(cr,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),o,(0,e.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Lt.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,e.createElement)(l.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:n},(0,Lt.__)("Close","wordpress-seo"))))};var jr,zr;function qr(){return qr=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",qr({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:"yoast-logo_svg__w-40",viewBox:"0 0 842 224"},t),jr||(jr=e.createElement("path",{fill:"#a61e69",d:"M166.55 54.09c-38.69 0-54.17 25.97-54.17 54.88s15.25 56.02 54.17 56.02 54.07-27.19 54-54.26c-.09-32.97-16.77-56.65-54-56.65Zm-23.44 56.52c.94-38.69 30.66-38.65 40.59-24.79 9.05 12.63 10.9 55.81-17.14 55.5-12.92-.14-23.06-8.87-23.44-30.71Zm337.25 27.55V82.11h20.04V57.78h-20.04V28.39h-30.95v29.39h-15.7v24.33h15.7v52.87c0 30.05 20.95 47.91 43.06 51.61l9.24-24.88c-12.89-1.63-21.23-11.27-21.35-23.54Zm-156.15-8.87V87.16c0-1.54-.1-2.98-.25-4.39-2.68-34.04-51.02-33.97-88.46-20.9l10.82 21.78c24.38-11.58 38.97-8.59 44.07-2.89.13.15.26.29.38.45.01.02.03.04.04.06 2.6 3.51 1.98 9.05 1.98 13.41-31.86 0-65.77 4.23-65.77 39.17 0 26.56 33.28 43.65 68.06 18.33l5.16 12.45h29.81c-2.66-14.62-5.85-27.14-5.85-35.34Zm-31.18-.23c-24.51 27.43-46.96 1.61-23.97-9.65 6.77-2.31 15.95-2.41 23.97-2.41v12.06Zm78.75-44.17c0-10.38 16.61-15.23 42.82-3.27l9.06-22.01c-35.27-10.66-83.44-11.62-83.75 25.28-.15 17.68 11.19 27.19 27.52 33.26 11.31 4.2 27.64 6.38 27.59 15.39-.06 11.77-25.38 13.57-48.42-2.26l-9.31 23.87c31.43 15.64 89.87 16.08 89.56-23.12-.31-38.76-55.08-32.11-55.08-47.14ZM99.3 1 54.44 125.61 32.95 58.32H1l35.78 91.89a33.49 33.49 0 0 1 0 24.33c-4 10.25-10.65 19.03-26.87 21.21v27.24c31.58 0 48.65-19.41 63.88-61.96L133.48 1H99.3ZM598.64 139.05c0 8.17-2.96 14.58-8.87 19.23-5.91 4.65-14.07 6.98-24.47 6.98s-18.92-1.61-25.54-4.84v-14.2c4.19 1.97 8.65 3.52 13.37 4.65 4.72 1.13 9.11 1.7 13.18 1.7 5.95 0 10.35-1.13 13.18-3.39 2.83-2.26 4.25-5.3 4.25-9.11 0-3.43-1.3-6.35-3.9-8.74-2.6-2.39-7.97-5.22-16.1-8.48-8.39-3.39-14.3-7.27-17.74-11.63-3.44-4.36-5.16-9.59-5.16-15.71 0-7.67 2.72-13.7 8.18-18.1 5.45-4.4 12.77-6.6 21.95-6.6s17.57 1.93 26.29 5.78l-4.78 12.26c-8.18-3.43-15.47-5.15-21.89-5.15-4.87 0-8.55 1.06-11.07 3.17-2.52 2.12-3.77 4.91-3.77 8.39 0 2.39.5 4.43 1.51 6.13s2.66 3.3 4.97 4.81c2.3 1.51 6.46 3.5 12.45 5.97 6.75 2.81 11.7 5.43 14.85 7.86 3.15 2.43 5.45 5.18 6.92 8.23 1.46 3.06 2.2 6.66 2.2 10.81Zm68.53 24.96h-52.02V72.12h52.02v12.7h-36.99v25.01h34.66v12.57h-34.66v28.85h36.99v12.76Zm100.24-46.07c0 14.96-3.74 26.59-11.23 34.88-7.49 8.3-18.08 12.44-31.8 12.44s-24.54-4.12-31.99-12.35c-7.44-8.23-11.17-19.93-11.17-35.1s3.74-26.82 11.23-34.95c7.49-8.13 18.17-12.19 32.05-12.19s24.24 4.13 31.7 12.38c7.47 8.26 11.2 19.88 11.2 34.88Zm-70.2 0c0 11.31 2.29 19.89 6.86 25.74 4.57 5.85 11.35 8.77 20.32 8.77s15.67-2.89 20.22-8.67c4.55-5.78 6.82-14.39 6.82-25.83s-2.25-19.82-6.76-25.64-11.23-8.74-20.16-8.74-15.82 2.91-20.41 8.74c-4.59 5.82-6.89 14.37-6.89 25.64Z"})),zr||(zr=e.createElement("path",{fill:"#77b227",d:"m790.45 165.35 36.05-94.96H840l-36.02 94.96h-13.53z"}))),Hr=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),Yr=({isOpen:t,onClose:s=le.noop,onDiscard:r=le.noop,title:a,description:o,dismissLabel:n,discardLabel:i})=>{const c=(0,l.useSvgAria)();return(0,e.createElement)(l.Modal,{isOpen:t,onClose:s},(0,e.createElement)(l.Modal.Panel,{closeButtonScreenReaderText:(0,Lt.__)("Close","wordpress-seo")},(0,e.createElement)("div",{className:"sm:yst-flex sm:yst-items-start"},(0,e.createElement)("div",{className:"yst-mx-auto yst-flex-shrink-0 yst-flex yst-items-center yst-justify-center yst-h-12 yst-w-12 yst-rounded-full yst-bg-red-100 sm:yst-mx-0 sm:yst-h-10 sm:yst-w-10"},(0,e.createElement)(Hr,{className:"yst-h-6 yst-w-6 yst-text-red-600",...c})),(0,e.createElement)("div",{className:"yst-mt-3 yst-text-center sm:yst-mt-0 sm:yst-ml-4 sm:yst-text-left"},(0,e.createElement)(l.Modal.Title,{className:"yst-text-lg yst-leading-6 yst-font-medium yst-text-slate-900 yst-mb-3"},a),(0,e.createElement)(l.Modal.Description,{className:"yst-text-sm yst-text-slate-500"},o))),(0,e.createElement)("div",{className:"yst-flex yst-flex-col sm:yst-flex-row-reverse yst-gap-3 yst-mt-6"},(0,e.createElement)(l.Button,{type:"button",variant:"error",onClick:r,className:"yst-block"},i),(0,e.createElement)(l.Button,{type:"button",variant:"secondary",onClick:s,className:"yst-block"},n))))};Yr.propTypes={isOpen:ir().bool.isRequired,onClose:ir().func,onDiscard:ir().func,title:ir().string.isRequired,description:ir().string.isRequired,dismissLabel:ir().string.isRequired,discardLabel:ir().string.isRequired};const Gr=({premiumLink:t,premiumUpsellConfig:s,isPromotionActive:r})=>{const a=r("black-friday-2024-promotion");return(0,e.createElement)(l.Paper,{as:"div",className:"xl:yst-max-w-3xl"},a&&(0,e.createElement)("div",{className:"yst-rounded-t-lg yst-h-9 yst-flex yst-justify-between yst-items-center yst-bg-black yst-text-amber-300 yst-px-4 yst-text-lg yst-border-b yst-border-amber-300 yst-border-solid yst-font-semibold"},(0,e.createElement)("div",null,(0,Lt.__)("30% OFF","wordpress-seo")),(0,e.createElement)("div",null,(0,Lt.__)("BLACK FRIDAY","wordpress-seo"))),(0,e.createElement)("div",{className:"yst-p-6 yst-flex yst-flex-col"},(0,e.createElement)(l.Title,{as:"h2",size:"4",className:"yst-text-xl yst-text-primary-500"},(0,Lt.sprintf)(/* translators: %s expands to "Yoast SEO" Premium */ (0,Lt.__)("Upgrade to %s","wordpress-seo"),"Yoast SEO Premium")),(0,e.createElement)("ul",{className:"yst-grid yst-grid-cols-1 sm:yst-grid-cols-2 yst-gap-x-6 yst-list-disc yst-pl-[1em] yst-list-outside yst-text-slate-800 yst-mt-6"},[(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$sAI%2$s: Better SEO titles and meta descriptions, faster.","wordpress-seo"),"",""),(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$sMultiple keywords%2$s: Rank higher for more searches.","wordpress-seo"),"",""),(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$sSuper fast%2$s internal linking suggestions.","wordpress-seo"),"",""),(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$sNo more broken links%2$s: Automatic redirect manager.","wordpress-seo"),"",""),(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$sAppealing social previews%2$s people actually want to click on.","wordpress-seo"),"",""),(0,Lt.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,Lt.__)("%1$s24/7 support%2$s: Also on evenings and weekends.","wordpress-seo"),"","")].map(((t,s)=>(0,e.createElement)("li",{key:`upsell-benefit-${s}`},(0,i.createInterpolateElement)(t,{strong:(0,e.createElement)("span",{className:"yst-font-semibold"})}))))),(0,e.createElement)(l.Button,{as:"a",variant:"upsell",size:"extra-large",href:t,className:"yst-gap-2 yst-mt-4",target:"_blank",rel:"noopener",...s},a?(0,Lt.__)("Claim your 30% off now!","wordpress-seo"):(0,Lt.sprintf)(/* translators: %s expands to "Yoast SEO" Premium */ (0,Lt.__)("Explore %s now!","wordpress-seo"),"Yoast SEO Premium"),(0,e.createElement)(gr,{className:"yst-w-4 yst-h-4 yst-icon-rtl"}))))};Gr.propTypes={premiumLink:ir().string.isRequired,premiumUpsellConfig:ir().object,isPromotionActive:ir().func},Gr.defaultProps={premiumUpsellConfig:{},isPromotionActive:le.noop};const Kr=({premiumLink:t,premiumUpsellConfig:s,academyLink:r,isPromotionActive:a})=>(0,e.createElement)("div",{className:"yst-grid yst-grid-cols-1 sm:yst-grid-cols-2 min-[783px]:yst-grid-cols-1 lg:yst-grid-cols-2 xl:yst-grid-cols-1 yst-gap-4"},(0,e.createElement)(Dr,{link:t,linkProps:s,isPromotionActive:a}),(0,e.createElement)(lr,{link:r}));Kr.propTypes={premiumLink:ir().string.isRequired,premiumUpsellConfig:ir().object.isRequired,academyLink:ir().string.isRequired,isPromotionActive:ir().func.isRequired};const Zr=Kr,Jr=({name:e})=>{const t=sa("selectPreference",[],"isNetworkAdmin"),s=sa("selectPreference",[],"isMainSite"),r=(0,i.useMemo)((()=>"wpseo.tracking"===e&&!t&&!s),[e,t,s]),a=(0,i.useMemo)((()=>(0,le.get)(window,`wpseoScriptData.disabledSettings.${e}`,"")),[]),o=(0,i.useMemo)((()=>{if(r)return(0,Lt.__)("Unavailable for sub-sites","wordpress-seo");switch(a){case"multisite":return(0,Lt.__)("Unavailable for multisites","wordpress-seo");case"network":return(0,Lt.__)("Network disabled","wordpress-seo");case"language":return(0,Lt.__)("Only available for English sites","wordpress-seo");default:return""}}),[a,r]);return{isDisabled:(0,i.useMemo)((()=>!(0,le.isEmpty)(o)),[o]),message:o,disabledSetting:a}},Qr="@yoast/settings",Xr=()=>(0,a.useDispatch)(Qr);var ea=s(1206),ta=s.n(ea);const sa=(e,t=[],...s)=>(0,a.useSelect)((t=>{var r,a;return null===(r=(a=t(Qr))[e])||void 0===r?void 0:r.call(a,...s)}),t),ra=({id:t,children:s,title:r,description:a=null})=>{const o=sa("selectPreference",[],"isPremium");return(0,e.createElement)(mr,{id:t,title:r,description:a,variant:o?"xl":"2xl"},s)};ra.propTypes={id:ir().string,children:ir().node.isRequired,title:ir().node.isRequired,description:ir().node};const aa=ra;var oa=s(8133);const na=({children:t})=>{const{isSubmitting:s,status:r,dirty:a,resetForm:o,initialValues:n}=q(),c=sa("selectIsMediaLoading"),d=(0,i.useMemo)((()=>(0,le.includes)((0,le.values)(r),!0)),[r]),[u,,,p,m]=(0,l.useToggleState)(!1),f=(0,i.useCallback)((()=>{m(),o({values:n})}),[o,n,m]);return(0,e.createElement)(se,{className:"yst-flex yst-flex-col yst-h-full"},(0,e.createElement)("div",{className:"yst-flex-grow yst-p-8"},t),(0,e.createElement)("footer",{className:"yst-sticky yst-bottom-0 yst-z-10"},(0,e.createElement)(oa.Z,{easing:"ease-in-out",duration:300,height:a?"auto":0,animateOpacity:!0},(0,e.createElement)("div",{className:"yst-bg-slate-50 yst-border-slate-200 yst-border-t yst-rounded-b-lg"},(0,e.createElement)("div",{className:"yst-flex yst-align-middle yst-space-x-3 yst-p-8"},(0,e.createElement)(l.Button,{id:"button-submit-settings",type:"submit",isLoading:s,disabled:s||c||d},(0,Lt.__)("Save changes","wordpress-seo")),(0,e.createElement)(l.Button,{id:"button-undo-settings",type:"button",variant:"secondary",disabled:!a,onClick:p},(0,Lt.__)("Discard changes","wordpress-seo")),(0,e.createElement)(Yr,{isOpen:u,onClose:m,title:(0,Lt.__)("Discard all changes","wordpress-seo"),description:(0,Lt.__)("You are about to discard all unsaved changes. All of your settings will be reset to the point where you last saved. Are you sure you want to do this?","wordpress-seo"),onDiscard:f,dismissLabel:(0,Lt.__)("No, continue editing","wordpress-seo"),discardLabel:(0,Lt.__)("Yes, discard changes","wordpress-seo")}))))))};na.propTypes={children:ir().node.isRequired};const ia=na,la=t=>{const[s,,{setTouched:r,setValue:a}]=ee({...t,type:"checkbox"}),o=(0,i.useCallback)((e=>{r(!0,!1),a(!e)}),[t.name]);return(0,e.createElement)(l.ToggleField,{...s,checked:(0,le.isUndefined)(t.checked)?!s.checked:!t.checked,onChange:o,...t})};la.propTypes={name:ir().string.isRequired,checked:ir().bool};const ca=la,da=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}))})),ua={variant:{square:"yst-h-48 yst-w-48",landscape:"yst-h-48 yst-w-96",portrait:"yst-h-96 yst-w-48"}},pa=({label:t="",description:s="",icon:r=da,disabled:a=!1,isDummy:o=!1,libraryType:n="image",variant:c="landscape",id:d,mediaUrlName:u,mediaIdName:p,fallbackMediaId:m="0",previewLabel:f="",selectLabel:h=(0,Lt.__)("Select image","wordpress-seo"),replaceLabel:y=(0,Lt.__)("Replace image","wordpress-seo"),removeLabel:_=(0,Lt.__)("Remove image","wordpress-seo"),className:w=""})=>{const{values:g,setFieldValue:b,setFieldTouched:v,errors:E}=q(),[x,k]=(0,i.useState)(null),S=(0,i.useMemo)((()=>(0,le.get)(window,"wp.media",null)),[]),L=(0,i.useMemo)((()=>(0,le.get)(g,p,"")),[g,p]),T=sa("selectMediaById",[L],L),F=sa("selectIsMediaError"),$=sa("selectMediaById",[m],m),{fetchMedia:P,addOneMedia:R}=Xr(),N=(0,i.useMemo)((()=>(0,le.get)(E,p,"")),[E,p]),I=(0,i.useMemo)((()=>a||o),[o,a]),{ids:O,describedBy:C}=(0,l.useDescribedBy)(`field-${d}-id`,{description:s,error:N}),A=(0,i.useMemo)((()=>L>0?T:m>0?$:null),[L,T,m,$]),M=(0,i.useMemo)((()=>(0,le.join)((0,le.map)((null==T?void 0:T.sizes)||(null==$?void 0:$.sizes),(e=>`${null==e?void 0:e.url} ${null==e?void 0:e.width}w`)),", ")),[T,$]),D=(0,i.useCallback)((()=>{o||null==x||x.open()}),[o,x]),B=(0,i.useCallback)((()=>{o||(v(u,!0,!1),b(u,"",!1),v(p,!0,!1),b(p,""))}),[o,v,b,u,p]),U=(0,i.useCallback)((()=>{var e,t,s;if(o)return;const r=(null===(e=x.state())||void 0===e||null===(t=e.get("selection"))||void 0===t||null===(s=t.first())||void 0===s?void 0:s.toJSON())||{};v(u,!0,!1),b(u,r.url,!1),v(p,!0,!1),b(p,r.id),R(r)}),[o,x,v,b,u,p]);return(0,i.useEffect)((()=>{S&&k(S({title:t,multiple:!1,library:{type:n}}))}),[S,t,n,k]),(0,i.useEffect)((()=>(null==x||x.on("select",U),()=>null==x?void 0:x.off("select",U))),[x,U]),(0,i.useEffect)((()=>{L&&!T&&P([L]),m&&!$&&P([m])}),[]),(0,e.createElement)("fieldset",{id:d,className:"yst-min-w-0 yst-w-96 yst-max-w-full"},(0,e.createElement)(te,{type:"hidden",name:p,id:`input-${d}-id`,"aria-describedby":C,disabled:I}),(0,e.createElement)(te,{type:"hidden",name:u,id:`input-${d}-url`,"aria-describedby":C,disabled:I}),t&&(0,e.createElement)(l.Label,{as:"legend",className:or()("yst-mb-2",I&&"yst-opacity-50 yst-cursor-not-allowed")},t),(0,e.createElement)("button",{type:"button",id:`button-${d}-preview`,onClick:D,className:or()("yst-overflow-hidden yst-flex yst-justify-center yst-items-center yst-max-w-full yst-rounded-md yst-mb-4 yst-border-slate-300 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-offset-2 focus:yst-ring-primary-500",!o&&A?"yst-bg-slate-50 yst-border":"yst-border-2 yst-border-dashed",I&&"yst-opacity-50 yst-cursor-not-allowed",ua.variant[c],w),disabled:I},!o&&A?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{className:"yst-sr-only"},y),(0,e.createElement)("img",{src:null==A?void 0:A.url,alt:(null==A?void 0:A.alt)||"",srcSet:M,sizes:"landscape"===c?"24rem":"12rem",width:"landscape"===c?"24rem":"12rem",loading:"lazy",decoding:"async",className:"yst-object-cover yst-object-center yst-min-h-full yst-min-w-full"})):(0,e.createElement)("div",{className:"yst-w-48 yst-max-w-full"},(0,e.createElement)("span",{className:"yst-sr-only"},h),(0,e.createElement)(r,{className:"yst-mx-auto yst-h-12 yst-w-12 yst-text-slate-400 yst-stroke-1"}),f&&(0,e.createElement)("p",{className:"yst-text-xs yst-text-slate-600 yst-text-center yst-mt-1 yst-px-8"},f))),(0,e.createElement)("div",{className:"yst-flex yst-gap-1"},!o&&L>0?(0,e.createElement)(l.Button,{id:`button-${d}-replace`,variant:"secondary",onClick:D,disabled:I},y):(0,e.createElement)(l.Button,{id:`button-${d}-select`,variant:"secondary",onClick:D,disabled:I},h),!o&&L>0&&(0,e.createElement)(l.Link,{id:`button-${d}-remove`,as:"button",type:"button",variant:"error",onClick:B,className:or()("yst-px-3 yst-py-2 yst-rounded-md",I&&"yst-opacity-50 yst-cursor-not-allowed"),disabled:I},_)),N&&(0,e.createElement)("p",{id:O.error,className:"yst-mt-2 yst-text-sm yst-text-red-600"},N),F&&(0,e.createElement)("p",{className:"yst-mt-2 yst-text-sm yst-text-red-600"},(0,Lt.__)("Failed to retrieve media.","wordpress-seo")),s&&(0,e.createElement)("p",{id:O.description,className:or()("yst-mt-2",I&&"yst-opacity-50 yst-cursor-not-allowed")},s))};pa.propTypes={label:ir().string,description:ir().node,icon:ir().elementType,disabled:ir().bool,isDummy:ir().bool,libraryType:ir().string,variant:ir().oneOf((0,le.keys)(ua.variant)),id:ir().string.isRequired,mediaUrlName:ir().string.isRequired,mediaIdName:ir().string.isRequired,fallbackMediaId:ir().string,previewLabel:ir().node,selectLabel:ir().string,replaceLabel:ir().string,removeLabel:ir().string,className:ir().string};const ma=pa,fa=window.yoast.replacementVariableEditor,ha=({className:t="",disabled:s=!1,...r})=>{const[a,o]=(0,i.useState)(null),[n,,{setTouched:l,setValue:c}]=ee(r),d=(0,i.useCallback)((e=>{l(!0,!1),c(e)}),[r.name]),u=(0,i.useCallback)((()=>null==a?void 0:a.focus()),[a]),p=(0,i.useMemo)((()=>{var e;return(null!==(e=n.value)&&void 0!==e&&e.match(/%%\w+%%$/)?`${n.value} `:n.value)||""}),[n.value]);return(0,e.createElement)("div",{className:t},(0,e.createElement)(fa.ReplacementVariableEditor,{...n,content:p,onChange:d,editorRef:o,onFocus:u,isDisabled:s,...r}))};ha.propTypes={name:ir().string.isRequired,disabled:ir().bool,className:ir().string};const ya=ha,_a=t=>{const[{value:s,...r},,{setTouched:a,setValue:o}]=ee(t),n=(0,i.useMemo)((()=>(0,le.reduce)((0,le.isString)(s)&&(null==s?void 0:s.split(","))||[],((e,t)=>{const s=(0,le.trim)(t);return s?[...e,s]:e}),[])),[s]),c=(0,i.useCallback)((e=>{a(!0,!1),o([...n,e].join(","))}),[a,o,n]),d=(0,i.useCallback)((e=>{a(!0,!1),o([...n.slice(0,e),...n.slice(e+1)].join(","))}),[a,o,n]),u=(0,i.useCallback)((e=>{a(!0,!1),o(e.join(","))}),[a,o]);return(0,e.createElement)(l.TagField,{...r,tags:n,onAddTag:c,onRemoveTag:d,onSetTags:u,...t})};_a.propTypes={name:ir().string.isRequired};const wa=_a,ga=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"}))}));let ba;const va=({children:t,className:s=""})=>(0,e.createElement)("div",{className:or()("yst-flex yst-items-center yst-justify-center yst-gap-2 yst-py-2 yst-px-3",s)},t);va.propTypes={children:ir().node.isRequired,className:ir().string};const Ea=({name:t,id:s,className:r="",...a})=>{const o=sa("selectPreference",[],"siteRepresentsPerson",{}),n=sa("selectUsersWith",[o],o),{addManyUsers:c}=Xr(),[{value:d,...u},,{setTouched:p,setValue:m}]=ee({type:"select",name:t,id:s,...a}),[f,h]=(0,i.useState)(Qt),[y,_]=(0,i.useState)([]),w=sa("selectPreference",[],"canCreateUsers",!1),g=sa("selectPreference",[],"createUserUrl",""),b=(0,i.useMemo)((()=>{const e=(0,le.values)(n);return(0,le.find)(e,["id",d])}),[d,n]),v=(0,i.useCallback)((0,le.debounce)((async e=>{try{var t,s;h(Xt),ba&&(null===(s=ba)||void 0===s||s.abort()),ba=new AbortController;const r=await Gt()({path:`/wp/v2/users?${(0,Rt.buildQueryString)({search:e,per_page:20})}`,signal:null===(t=ba)||void 0===t?void 0:t.signal});_((0,le.map)(r,"id")),c(r),h(es)}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return;_([]),h(ts),console.error(e.message)}}),200),[_,c,h]),E=(0,i.useCallback)((e=>{p(!0,!1),m(e)}),[m]),x=(0,i.useCallback)((e=>v(e.target.value)),[v]);return(0,i.useEffect)((()=>{v("")}),[]),(0,e.createElement)(l.AutocompleteField,{...u,name:t,id:s,value:b?d:0,onChange:E,placeholder:(0,Lt.__)("Select a user...","wordpress-seo"),selectedLabel:null==b?void 0:b.name,onQueryChange:x,className:r,...a},(0,e.createElement)(e.Fragment,null,(f===Qt||f===es)&&(0,e.createElement)(e.Fragment,null,(0,le.isEmpty)(y)?(0,e.createElement)(va,null,(0,Lt.__)("No users found.","wordpress-seo")):(0,le.map)(y,(t=>{const s=null==n?void 0:n[t];return s?(0,e.createElement)(l.AutocompleteField.Option,{key:null==s?void 0:s.id,value:null==s?void 0:s.id},null==s?void 0:s.name):null})),w&&(0,e.createElement)("li",{className:"yst-sticky yst-inset-x-0 yst-bottom-0 yst-group"},(0,e.createElement)("a",{id:`link-create_user-${s}`,href:g,target:"_blank",rel:"noreferrer",className:"yst-relative yst-w-full yst-flex yst-items-center yst-py-4 yst-px-3 yst-gap-2 yst-no-underline yst-text-sm yst-text-left yst-bg-white yst-text-slate-700 group-hover:yst-text-white group-hover:yst-bg-primary-500 yst-border-t yst-border-slate-200"},(0,e.createElement)(ga,{className:"yst-w-5 yst-h-5 yst-text-slate-400 group-hover:yst-text-white"}),(0,e.createElement)("span",null,(0,Lt.__)("Add new user...","wordpress-seo"))))),f===Xt&&(0,e.createElement)(va,null,(0,e.createElement)(l.Spinner,{variant:"primary"}),(0,Lt.__)("Searching users...","wordpress-seo")),f===ts&&(0,e.createElement)(va,{className:"yst-text-red-600"},(0,Lt.__)("Failed to retrieve users.","wordpress-seo"))))};Ea.propTypes={name:ir().string.isRequired,id:ir().string.isRequired,className:ir().string};const xa=Ea,ka=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 13h6m-3-3v6m5 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"}))})),Sa=({children:t,className:s=""})=>(0,e.createElement)("div",{className:or()("yst-flex yst-items-center yst-justify-center yst-gap-2 yst-py-2 yst-px-3",s)},t);Sa.propTypes={children:ir().node.isRequired,className:ir().string};const La=({name:t,id:s,...r})=>{const a=sa("selectPreference",[],"siteBasicsPolicies",{}),o=sa("selectPagesWith",[a],(0,le.values)(a)),{fetchPages:n}=Xr(),[{value:c,...d},,{setTouched:u,setValue:p}]=ee({type:"select",name:t,id:s,...r}),[m,f]=(0,i.useState)(Qt),[h,y]=(0,i.useState)([]),_=sa("selectPreference",[],"canCreatePages",!1),w=sa("selectPreference",[],"createPageUrl",""),g=(0,i.useMemo)((()=>{const e=(0,le.values)(o);return(0,le.find)(e,["id",c])}),[c,o]),b=(0,i.useCallback)((0,le.debounce)((async e=>{try{f(Xt);const t=await n({search:e});y((0,le.map)(t.payload,"id")),f(es)}catch(e){if(e instanceof DOMException&&"AbortError"===e.name)return;y([]),f(ts)}}),200),[y,f,n]),v=(0,i.useCallback)((e=>{u(!0,!1),p(e)}),[p,u]),E=(0,i.useCallback)((e=>b(e.target.value)),[b]),x=(0,i.useMemo)((()=>(0,le.isEmpty)(h)?(0,le.map)(o,"id"):h),[h,o]),k=(0,i.useMemo)((()=>m===es&&(0,le.isEmpty)(h)),[h,m]);return(0,e.createElement)(l.AutocompleteField,{...d,name:t,id:s,value:g?c:0,onChange:v,placeholder:(0,Lt.__)("None","wordpress-seo"),selectedLabel:null==g?void 0:g.name,onQueryChange:E,nullable:!0 /* translators: Hidden accessibility text. */,clearButtonScreenReaderText:(0,Lt.__)("Clear selection","wordpress-seo"),...r},(0,e.createElement)(e.Fragment,null,(m===Qt||m===es)&&(0,e.createElement)(e.Fragment,null,k?(0,e.createElement)(Sa,null,(0,Lt.__)("No pages found.","wordpress-seo")):(0,le.map)(x,(t=>{const s=null==o?void 0:o[t];return s?(0,e.createElement)(l.AutocompleteField.Option,{key:null==s?void 0:s.id,value:null==s?void 0:s.id},null==s?void 0:s.name):null})),_&&(0,e.createElement)("li",{className:"yst-sticky yst-inset-x-0 yst-bottom-0 yst-group"},(0,e.createElement)("a",{id:`link-create_page-${s}`,href:w,target:"_blank",rel:"noreferrer",className:"yst-relative yst-w-full yst-flex yst-items-center yst-py-4 yst-px-3 yst-gap-2 yst-no-underline yst-text-sm yst-text-left yst-bg-white yst-text-slate-700 group-hover:yst-text-white group-hover:yst-bg-primary-500 yst-border-t yst-border-slate-200"},(0,e.createElement)(ka,{className:"yst-w-5 yst-h-5 yst-text-slate-400 group-hover:yst-text-white"}),(0,e.createElement)("span",null,(0,Lt.__)("Add new page...","wordpress-seo"))))),m===Xt&&(0,e.createElement)(Sa,null,(0,e.createElement)(l.Spinner,{variant:"primary"}),(0,Lt.__)("Searching pages...","wordpress-seo")),m===ts&&(0,e.createElement)(Sa,{className:"yst-text-red-600"},(0,Lt.__)("Failed to retrieve pages.","wordpress-seo"))))};La.propTypes={name:ir().string.isRequired,id:ir().string.isRequired};const Ta=La,Fa=({as:t,transformValue:s=le.identity,...r})=>{const[a,,{setTouched:o,setValue:n}]=ee(r),l=(0,i.useCallback)((e=>{o(!0,!1),n(s(e))}),[r.name]);return(0,e.createElement)(t,{...a,onChange:l,...r})};Fa.propTypes={as:ir().elementType.isRequired,name:ir().string.isRequired,transformValue:ir().func};const $a=Fa,Pa=({name:t,id:s,options:r,...a})=>{const[o,,{setTouched:n,setValue:c}]=ee({type:"select",name:t,id:s,...a}),[d,u]=(0,i.useState)(""),p=e=>{var t;e&&null!==(t=r.find((t=>t.value===e)))&&void 0!==t&&t.label?u(r.find((t=>t.value===e)).label):u(e)},m=(0,i.useCallback)((e=>{c(e),p(e)}),[c,n]),f=(0,i.useCallback)((e=>{c(e.target.value),p(e.target.value)}),[c]);return(0,i.useEffect)((()=>{p(o.value)}),[]),(0,e.createElement)(l.AutocompleteField,{...o,name:t,id:s,selectedLabel:d,onChange:m,onQueryChange:f,...a},r&&r.map((t=>(0,e.createElement)(l.AutocompleteField.Option,{key:t.value,value:t.value},t.label))))};Pa.propTypes={name:ir().string.isRequired,id:ir().string.isRequired,options:ir().array},Pa.defaultProps={options:[]};const Ra=Pa,Na=t=>{const s=({name:s,...r})=>{const{isDisabled:a,message:o}=Jr({name:s});return a?(0,e.createElement)("div",null,(0,e.createElement)(l.Badge,{variant:"plain",size:"small",className:"yst-mb-2"},o),(0,e.createElement)(t,{name:s,...r,disabled:!0})):(0,e.createElement)(t,{name:s,...r})};return s.propTypes={name:ir().string.isRequired},s},Ia=t=>{const s=({name:s,isDummy:r=!1,...a})=>{const o=sa("selectDefaultSettingValue",[s],s);return r?(0,e.createElement)(t,{name:s,...a,disabled:!0,value:o,onChange:le.noop,checked:o,content:o}):(0,e.createElement)(t,{name:s,...a})};return s.propTypes={name:ir().string.isRequired,isDummy:ir().bool},s},Oa=t=>{const s=({name:s,isDummy:r=!1,...a})=>{const o=sa("selectDefaultSettingValue",[s],s);return r?(0,e.createElement)(t,{name:s,...a,disabled:!0,value:o,onChange:le.noop}):(0,e.createElement)(t,{name:s,...a})};return s.propTypes={name:ir().string.isRequired,isDummy:ir().bool},s},Ca=t=>{const s=({name:s,...r})=>{const{isTouched:a,error:o}=(({name:e})=>{const{touched:t,errors:s}=q();return{isTouched:(0,i.useMemo)((()=>(0,le.get)(t,e,!1)),[t]),error:(0,i.useMemo)((()=>(0,le.get)(s,e,"")),[s])}})({name:s});return(0,e.createElement)(t,{name:s,validation:{variant:"error",message:a&&o},...r})};return s.propTypes={name:ir().string.isRequired},s},Aa=Ca(te),Ma=(e,t="")=>(0,le.reduce)(e,((e,s,r)=>{const a=(0,le.join)((0,le.filter)([t,r],(0,le.flowRight)(Boolean,le.toString)),".");return(0,le.isObject)(s)||(0,le.isArray)(s)?{...e,...Ma(s,a)}:{...e,[a]:s}}),{}),Da=({id:t,onDismiss:s,...r})=>{const{errors:a}=q(),o=sa("selectSearchIndex"),n=(0,i.useMemo)((()=>Ma(a)),[a]);return(0,e.createElement)(l.Notifications.Notification,{key:t,id:t,onDismiss:s,...r},(0,e.createElement)("ul",{className:"yst-list-disc yst-mt-1 yst-ml-4 yst-space-y-2"},(0,le.map)(n,((t,s)=>t&&(0,e.createElement)("li",{key:s},(0,e.createElement)(Et,{to:`${(0,le.get)(o,`${s}.route`,"404")}#${(0,le.get)(o,`${s}.fieldId`,"")}`},`${(0,le.get)(o,`${s}.routeLabel`,"")} - ${(0,le.get)(o,`${s}.fieldLabel`,"")}`),": ",t)))))};Da.propTypes={id:ir().string.isRequired,onDismiss:ir().func};const Ba=()=>{(()=>{const{isValid:e,errors:t,isSubmitting:s}=q(),{addNotification:r,removeNotification:a}=Xr(),o=sa("selectNotification",[],"validation-errors");(0,i.useEffect)((()=>{e&&o&&a("validation-errors")}),[e,o]),(0,i.useEffect)((()=>{s&&!e&&r({id:"validation-errors",variant:"error",size:"large",title:(0,Lt.__)("Oh no! It seems your form contains invalid data. Please review the following fields:","wordpress-seo")})}),[s,t,e])})(),(()=>{const{removeNotification:e}=Xr(),t=sa("selectNotifications"),s=sa("selectPostTypes"),r=sa("selectTaxonomies");(0,i.useEffect)((()=>{const a=(0,le.some)(s,["isNew",!0]),o=(0,le.some)(r,["isNew",!0]);!t["new-content-type"]||a||o||e("new-content-type")}),[s,r])})();const{removeNotification:t}=Xr(),s=sa("selectNotifications"),r=(0,i.useMemo)((()=>(0,le.map)(s,(e=>({...e,onDismiss:t,autoDismiss:"success"===e.variant?5e3:null, /* translators: Hidden accessibility text. */ dismissScreenReaderLabel:(0,Lt.__)("Dismiss","wordpress-seo")})))),[s]);return(0,e.createElement)(l.Notifications,{notifications:r,position:"bottom-left"},r.map((t=>"validation-errors"===t.id?(0,e.createElement)(Da,{key:t.id,...t}):(0,e.createElement)(l.Notifications.Notification,{key:t.id,...t}))))},Ua=({name:t,disabled:s=!1})=>{const r=sa("selectPreference",[],"isNewsSeoActive"),a=sa("selectLink",[],"https://yoa.st/get-news-settings"),{values:o}=q(),n=(0,i.useMemo)((()=>"NewsArticle"===(0,le.get)(o,`wpseo_titles.schema-article-type-${t}`,"")),[t,o]);return r?null:(0,e.createElement)(oa.Z,{easing:"ease-in-out",duration:300,height:n&&!s?"auto":0,animateOpacity:!0},(0,e.createElement)(l.Alert,{className:"yst-mt-8",variant:"info",role:"status"},(0,Lt.sprintf)(/* translators: %s Expands to "Yoast News SEO" */ (0,Lt.__)("Are you publishing news articles? %s helps you optimize your site for Google News.","wordpress-seo"),"Yoast News SEO")," ",(0,e.createElement)("a",{id:"link-get-news-seo",href:a,target:"_blank",rel:"noopener noreferrer"},(0,Lt.sprintf)(/* translators: %s: Expands to "Yoast News SEO". */ (0,Lt.__)("Get the %s plugin now!","wordpress-seo"),"Yoast News SEO"))))};Ua.propTypes={name:ir().string.isRequired,disabled:ir().bool};const Va=Ua,ja=({isEnabled:t, /* translators: %1$s expands to an opening emphasis tag. %2$s expands to a closing emphasis tag. */ text:s=(0,Lt.__)("The %1$ssocial image%2$s, %1$ssocial title%2$s and %1$ssocial description%2$s require Open Graph data, which is currently disabled in the ‘Social sharing’ section in %3$sSite features%4$s.","wordpress-seo")})=>{const r=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(s,"","","",""),{em:(0,e.createElement)("em",null),link:(0,e.createElement)(Et,{to:"/site-features#section-social-sharing"})})),[]);return t?null:(0,e.createElement)(l.Alert,{variant:"info",className:"yst-mb-6"},r)};ja.propTypes={isEnabled:ir().bool.isRequired,text:ir().string};const za=ja;var qa={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",whiteSpace:"nowrap",padding:0,width:"1px",position:"absolute"},Wa=function(e){var s=e.message,r=e["aria-live"];return t().createElement("div",{style:qa,role:"log","aria-live":r},s||"")};Wa.propTypes={};const Ha=Wa;function Ya(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var Ga=function(e){function s(){var t,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s);for(var a=arguments.length,o=Array(a),n=0;n{const a=(({prefix:e="",postfix:t=""}={})=>e+sa("selectPreference",[],"documentTitle")+t)({prefix:`${s} ‹ `}),o=(0,Lt.sprintf)(/* translators: 1: Settings' section title, 2: Yoast SEO */ (0,Lt.__)("%1$s Settings - %2$s","wordpress-seo"),s,"Yoast SEO");return(0,e.createElement)(Qa,null,(0,e.createElement)(no,{message:o,"aria-live":"polite"}),(0,e.createElement)(Br.Helmet,null,(0,e.createElement)("title",null,a)),(0,e.createElement)("header",{className:"yst-p-8 yst-border-b yst-border-slate-200"},(0,e.createElement)("div",{className:"yst-max-w-screen-sm"},(0,e.createElement)(l.Title,null,s),r&&(0,e.createElement)("p",{className:"yst-text-tiny yst-mt-3"},r))),t)};io.propTypes={children:ir().node.isRequired,title:ir().string.isRequired,description:ir().node};const lo=io;function co(t,s){let[r,a]=(0,e.useState)(t),o=Fs(t);return Ls((()=>a(o.current)),[o,a,...s]),r}var uo;let po=null!=(uo=e.useId)?uo:function(){let t=$s(),[s,r]=e.useState(t?()=>Ss.nextId():null);return Ls((()=>{null===s&&r(Ss.nextId())}),[s]),null!=s?""+s:void 0};function mo(e){return Ss.isServer?null:e instanceof Node?e.ownerDocument:null!=e&&e.hasOwnProperty("current")&&e.current instanceof Node?e.current.ownerDocument:document}let fo=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var ho,yo=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(yo||{}),_o=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(_o||{}),wo=((ho=wo||{})[ho.Previous=-1]="Previous",ho[ho.Next=1]="Next",ho),go=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(go||{});function bo(t,s,r){let a=Fs(s);(0,e.useEffect)((()=>{function e(e){a.current(e)}return document.addEventListener(t,e,r),()=>document.removeEventListener(t,e,r)}),[t,r])}function vo(e){var t;if(e.type)return e.type;let s=null!=(t=e.as)?t:"button";return"string"==typeof s&&"button"===s.toLowerCase()?"button":void 0}function Eo(t,s){let[r,a]=(0,e.useState)((()=>vo(t)));return Ls((()=>{a(vo(t))}),[t.type,t.as]),Ls((()=>{r||!s.current||s.current instanceof HTMLButtonElement&&!s.current.hasAttribute("type")&&a("button")}),[r,s]),r}["textarea","input"].join(",");var xo=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(xo||{});function ko(e={},t=null,s=[]){for(let[r,a]of Object.entries(e))Lo(s,So(t,r),a);return s}function So(e,t){return e?e+"["+t+"]":t}function Lo(e,t,s){if(Array.isArray(s))for(let[r,a]of s.entries())Lo(e,So(t,r.toString()),a);else s instanceof Date?e.push([t,s.toISOString()]):"boolean"==typeof s?e.push([t,s?"1":"0"]):"string"==typeof s?e.push([t,s]):"number"==typeof s?e.push([t,`${s}`]):null==s?e.push([t,""]):ko(s,t,e)}var To=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(To||{});let Fo=ys((function(e,t){let{features:s=1,...r}=e;return ms({ourProps:{ref:t,"aria-hidden":2==(2&s)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&s)&&2!=(2&s)&&{display:"none"}}},theirProps:r,slot:{},defaultTag:"div",name:"Hidden"})}));var $o=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))($o||{});function Po(t,s){let r=(0,e.useRef)([]),a=Ps(t);(0,e.useEffect)((()=>{let e=[...r.current];for(let[t,o]of s.entries())if(r.current[t]!==o){let t=a(s,e);return r.current=s,t}}),[a,...s])}function Ro(e){return[e.screenX,e.screenY]}var No=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(No||{}),Io=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(Io||{}),Oo=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Oo||{}),Co=(e=>(e[e.OpenCombobox=0]="OpenCombobox",e[e.CloseCombobox=1]="CloseCombobox",e[e.GoToOption=2]="GoToOption",e[e.RegisterOption=3]="RegisterOption",e[e.UnregisterOption=4]="UnregisterOption",e[e.RegisterLabel=5]="RegisterLabel",e))(Co||{});function Ao(e,t=(e=>e)){let s=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,r=function(e,t=(e=>e)){return e.slice().sort(((e,s)=>{let r=t(e),a=t(s);if(null===r||null===a)return 0;let o=r.compareDocumentPosition(a);return o&Node.DOCUMENT_POSITION_FOLLOWING?-1:o&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}(t(e.options.slice()),(e=>e.dataRef.current.domRef.current)),a=s?r.indexOf(s):null;return-1===a&&(a=null),{options:r,activeOptionIndex:a}}let Mo={1:e=>e.dataRef.current.disabled||1===e.comboboxState?e:{...e,activeOptionIndex:null,comboboxState:1},0(e){if(e.dataRef.current.disabled||0===e.comboboxState)return e;let t=e.activeOptionIndex,{isSelected:s}=e.dataRef.current,r=e.options.findIndex((e=>s(e.dataRef.current.value)));return-1!==r&&(t=r),{...e,comboboxState:0,activeOptionIndex:t}},2(e,t){var s;if(e.dataRef.current.disabled||e.dataRef.current.optionsRef.current&&!e.dataRef.current.optionsPropsRef.current.static&&1===e.comboboxState)return e;let r=Ao(e);if(null===r.activeOptionIndex){let e=r.options.findIndex((e=>!e.dataRef.current.disabled));-1!==e&&(r.activeOptionIndex=e)}let a=function(e,t){let s=t.resolveItems();if(s.length<=0)return null;let r=t.resolveActiveIndex(),a=null!=r?r:-1,o=(()=>{switch(e.focus){case 0:return s.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=s.slice().reverse().findIndex(((e,s,r)=>!(-1!==a&&r.length-s-1>=a||t.resolveDisabled(e))));return-1===e?e:s.length-1-e}case 2:return s.findIndex(((e,s)=>!(s<=a||t.resolveDisabled(e))));case 3:{let e=s.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:s.length-1-e}case 4:return s.findIndex((s=>t.resolveId(s)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===o?r:o}(t,{resolveItems:()=>r.options,resolveActiveIndex:()=>r.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled});return{...e,...r,activeOptionIndex:a,activationTrigger:null!=(s=t.trigger)?s:1}},3:(e,t)=>{let s={id:t.id,dataRef:t.dataRef},r=Ao(e,(e=>[...e,s]));null===e.activeOptionIndex&&e.dataRef.current.isSelected(t.dataRef.current.value)&&(r.activeOptionIndex=r.options.indexOf(s));let a={...e,...r,activationTrigger:1};return e.dataRef.current.__demoMode&&void 0===e.dataRef.current.value&&(a.activeOptionIndex=0),a},4:(e,t)=>{let s=Ao(e,(e=>{let s=e.findIndex((e=>e.id===t.id));return-1!==s&&e.splice(s,1),e}));return{...e,...s,activationTrigger:1}},5:(e,t)=>({...e,labelId:t.id})},Do=(0,e.createContext)(null);function Bo(t){let s=(0,e.useContext)(Do);if(null===s){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Bo),e}return s}Do.displayName="ComboboxActionsContext";let Uo=(0,e.createContext)(null);function Vo(t){let s=(0,e.useContext)(Uo);if(null===s){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Vo),e}return s}function jo(e,t){return ls(t.type,Mo,e,t)}Uo.displayName="ComboboxDataContext";let zo=e.Fragment,qo=ys((function(t,s){let{value:r,defaultValue:a,onChange:o,name:n,by:i=((e,t)=>e===t),disabled:l=!1,__demoMode:c=!1,nullable:d=!1,multiple:u=!1,...p}=t,[m=(u?[]:void 0),f]=function(t,s,r){let[a,o]=(0,e.useState)(r),n=void 0!==t,i=(0,e.useRef)(n),l=(0,e.useRef)(!1),c=(0,e.useRef)(!1);return!n||i.current||l.current?!n&&i.current&&!c.current&&(c.current=!0,i.current=n,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")):(l.current=!0,i.current=n,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")),[n?t:a,Ps((e=>(n||o(e),null==s?void 0:s(e))))]}(r,o,a),[h,y]=(0,e.useReducer)(jo,{dataRef:(0,e.createRef)(),comboboxState:c?0:1,options:[],activeOptionIndex:null,activationTrigger:1,labelId:null}),_=(0,e.useRef)(!1),w=(0,e.useRef)({static:!1,hold:!1}),g=(0,e.useRef)(null),b=(0,e.useRef)(null),v=(0,e.useRef)(null),E=(0,e.useRef)(null),x=Ps("string"==typeof i?(e,t)=>{let s=i;return(null==e?void 0:e[s])===(null==t?void 0:t[s])}:i),k=(0,e.useCallback)((e=>ls(S.mode,{1:()=>m.some((t=>x(t,e))),0:()=>x(m,e)})),[m]),S=(0,e.useMemo)((()=>({...h,optionsPropsRef:w,labelRef:g,inputRef:b,buttonRef:v,optionsRef:E,value:m,defaultValue:a,disabled:l,mode:u?1:0,get activeOptionIndex(){if(_.current&&null===h.activeOptionIndex&&h.options.length>0){let e=h.options.findIndex((e=>!e.dataRef.current.disabled));if(-1!==e)return e}return h.activeOptionIndex},compare:x,isSelected:k,nullable:d,__demoMode:c})),[m,a,l,u,d,c,h]);Ls((()=>{h.dataRef.current=S}),[S]),function(t,s,r=!0){let a=(0,e.useRef)(!1);function o(e,r){if(!a.current||e.defaultPrevented)return;let o=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(t),n=r(e);if(null!==n&&n.getRootNode().contains(n)){for(let t of o){if(null===t)continue;let s=t instanceof HTMLElement?t:t.current;if(null!=s&&s.contains(n)||e.composed&&e.composedPath().includes(s))return}return!function(e,t=0){var s;return e!==(null==(s=mo(e))?void 0:s.body)&&ls(t,{0:()=>e.matches(fo),1(){let t=e;for(;null!==t;){if(t.matches(fo))return!0;t=t.parentElement}return!1}})}(n,go.Loose)&&-1!==n.tabIndex&&e.preventDefault(),s(e,n)}}(0,e.useEffect)((()=>{requestAnimationFrame((()=>{a.current=r}))}),[r]);let n=(0,e.useRef)(null);bo("mousedown",(e=>{var t,s;a.current&&(n.current=(null==(s=null==(t=e.composedPath)?void 0:t.call(e))?void 0:s[0])||e.target)}),!0),bo("click",(e=>{!n.current||(o(e,(()=>n.current)),n.current=null)}),!0),bo("blur",(e=>o(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}([S.buttonRef,S.inputRef,S.optionsRef],(()=>C.closeCombobox()),0===S.comboboxState);let L=(0,e.useMemo)((()=>({open:0===S.comboboxState,disabled:l,activeIndex:S.activeOptionIndex,activeOption:null===S.activeOptionIndex?null:S.options[S.activeOptionIndex].dataRef.current.value,value:m})),[S,l,m]),T=Ps((e=>{let t=S.options.find((t=>t.id===e));!t||O(t.dataRef.current.value)})),F=Ps((()=>{if(null!==S.activeOptionIndex){let{dataRef:e,id:t}=S.options[S.activeOptionIndex];O(e.current.value),C.goToOption(xo.Specific,t)}})),$=Ps((()=>{y({type:0}),_.current=!0})),P=Ps((()=>{y({type:1}),_.current=!1})),R=Ps(((e,t,s)=>(_.current=!1,e===xo.Specific?y({type:2,focus:xo.Specific,id:t,trigger:s}):y({type:2,focus:e,trigger:s})))),N=Ps(((e,t)=>(y({type:3,id:e,dataRef:t}),()=>y({type:4,id:e})))),I=Ps((e=>(y({type:5,id:e}),()=>y({type:5,id:null})))),O=Ps((e=>ls(S.mode,{0:()=>null==f?void 0:f(e),1(){let t=S.value.slice(),s=t.findIndex((t=>x(t,e)));return-1===s?t.push(e):t.splice(s,1),null==f?void 0:f(t)}}))),C=(0,e.useMemo)((()=>({onChange:O,registerOption:N,registerLabel:I,goToOption:R,closeCombobox:P,openCombobox:$,selectActiveOption:F,selectOption:T})),[]),A=null===s?{}:{ref:s},M=(0,e.useRef)(null),D=As();return(0,e.useEffect)((()=>{!M.current||void 0!==a&&D.addEventListener(M.current,"reset",(()=>{O(a)}))}),[M,O]),e.createElement(Do.Provider,{value:C},e.createElement(Uo.Provider,{value:S},e.createElement(Es,{value:ls(S.comboboxState,{0:bs.Open,1:bs.Closed})},null!=n&&null!=m&&ko({[n]:m}).map((([t,s],r)=>e.createElement(Fo,{features:To.Hidden,ref:0===r?e=>{var t;M.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,..._s({key:t,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:t,value:s})}))),ms({ourProps:A,theirProps:p,slot:L,defaultTag:zo,name:"Combobox"}))))})),Wo=ys((function(t,s){var r,a,o,n;let i=po(),{id:l=`headlessui-combobox-input-${i}`,onChange:c,displayValue:d,type:u="text",...p}=t,m=Vo("Combobox.Input"),f=Bo("Combobox.Input"),h=Ns(m.inputRef,s),y=(0,e.useRef)(!1),_=As();var w;Po((([e,t],[s,r])=>{y.current||!m.inputRef.current||(0===r&&1===t||e!==s)&&(m.inputRef.current.value=e)}),["function"==typeof d&&void 0!==m.value?null!=(w=d(m.value))?w:"":"string"==typeof m.value?m.value:"",m.comboboxState]),Po((([e],[t])=>{if(0===e&&1===t){let e=m.inputRef.current;if(!e)return;let t=e.value,{selectionStart:s,selectionEnd:r,selectionDirection:a}=e;e.value="",e.value=t,null!==a?e.setSelectionRange(s,r,a):e.setSelectionRange(s,r)}}),[m.comboboxState]);let g=(0,e.useRef)(!1),b=Ps((()=>{g.current=!0})),v=Ps((()=>{setTimeout((()=>{g.current=!1}))})),E=Ps((e=>{switch(y.current=!0,e.key){case $o.Backspace:case $o.Delete:if(0!==m.mode||!m.nullable)return;let t=e.currentTarget;_.requestAnimationFrame((()=>{""===t.value&&(f.onChange(null),m.optionsRef.current&&(m.optionsRef.current.scrollTop=0),f.goToOption(xo.Nothing))}));break;case $o.Enter:if(y.current=!1,0!==m.comboboxState||g.current)return;if(e.preventDefault(),e.stopPropagation(),null===m.activeOptionIndex)return void f.closeCombobox();f.selectActiveOption(),0===m.mode&&f.closeCombobox();break;case $o.ArrowDown:return y.current=!1,e.preventDefault(),e.stopPropagation(),ls(m.comboboxState,{0:()=>{f.goToOption(xo.Next)},1:()=>{f.openCombobox()}});case $o.ArrowUp:return y.current=!1,e.preventDefault(),e.stopPropagation(),ls(m.comboboxState,{0:()=>{f.goToOption(xo.Previous)},1:()=>{f.openCombobox(),_.nextFrame((()=>{m.value||f.goToOption(xo.Last)}))}});case $o.Home:if(e.shiftKey)break;return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(xo.First);case $o.PageUp:return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(xo.First);case $o.End:if(e.shiftKey)break;return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(xo.Last);case $o.PageDown:return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(xo.Last);case $o.Escape:return y.current=!1,0!==m.comboboxState?void 0:(e.preventDefault(),m.optionsRef.current&&!m.optionsPropsRef.current.static&&e.stopPropagation(),f.closeCombobox());case $o.Tab:if(y.current=!1,0!==m.comboboxState)return;0===m.mode&&f.selectActiveOption(),f.closeCombobox()}})),x=Ps((e=>{f.openCombobox(),null==c||c(e)})),k=Ps((()=>{y.current=!1})),S=co((()=>{if(m.labelId)return[m.labelId].join(" ")}),[m.labelId]),L=(0,e.useMemo)((()=>({open:0===m.comboboxState,disabled:m.disabled})),[m]);return ms({ourProps:{ref:h,id:l,role:"combobox",type:u,"aria-controls":null==(r=m.optionsRef.current)?void 0:r.id,"aria-expanded":m.disabled?void 0:0===m.comboboxState,"aria-activedescendant":null===m.activeOptionIndex||null==(a=m.options[m.activeOptionIndex])?void 0:a.id,"aria-multiselectable":1===m.mode||void 0,"aria-labelledby":S,"aria-autocomplete":"list",defaultValue:null!=(n=null!=(o=t.defaultValue)?o:void 0!==m.defaultValue?null==d?void 0:d(m.defaultValue):null)?n:m.defaultValue,disabled:m.disabled,onCompositionStart:b,onCompositionEnd:v,onKeyDown:E,onChange:x,onBlur:k},theirProps:p,slot:L,defaultTag:"input",name:"Combobox.Input"})})),Ho=ys((function(t,s){var r;let a=Vo("Combobox.Button"),o=Bo("Combobox.Button"),n=Ns(a.buttonRef,s),i=po(),{id:l=`headlessui-combobox-button-${i}`,...c}=t,d=As(),u=Ps((e=>{switch(e.key){case $o.ArrowDown:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&o.openCombobox(),d.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case $o.ArrowUp:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&(o.openCombobox(),d.nextFrame((()=>{a.value||o.goToOption(xo.Last)}))),d.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case $o.Escape:return 0!==a.comboboxState?void 0:(e.preventDefault(),a.optionsRef.current&&!a.optionsPropsRef.current.static&&e.stopPropagation(),o.closeCombobox(),d.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})})));default:return}})),p=Ps((e=>{if(function(e){let t=e.parentElement,s=null;for(;t&&!(t instanceof HTMLFieldSetElement);)t instanceof HTMLLegendElement&&(s=t),t=t.parentElement;let r=""===(null==t?void 0:t.getAttribute("disabled"));return(!r||!function(e){if(!e)return!1;let t=e.previousElementSibling;for(;null!==t;){if(t instanceof HTMLLegendElement)return!1;t=t.previousElementSibling}return!0}(s))&&r}(e.currentTarget))return e.preventDefault();0===a.comboboxState?o.closeCombobox():(e.preventDefault(),o.openCombobox()),d.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}))})),m=co((()=>{if(a.labelId)return[a.labelId,l].join(" ")}),[a.labelId,l]),f=(0,e.useMemo)((()=>({open:0===a.comboboxState,disabled:a.disabled,value:a.value})),[a]);return ms({ourProps:{ref:n,id:l,type:Eo(t,a.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":null==(r=a.optionsRef.current)?void 0:r.id,"aria-expanded":a.disabled?void 0:0===a.comboboxState,"aria-labelledby":m,disabled:a.disabled,onClick:p,onKeyDown:u},theirProps:c,slot:f,defaultTag:"button",name:"Combobox.Button"})})),Yo=ys((function(t,s){let r=po(),{id:a=`headlessui-combobox-label-${r}`,...o}=t,n=Vo("Combobox.Label"),i=Bo("Combobox.Label"),l=Ns(n.labelRef,s);Ls((()=>i.registerLabel(a)),[a]);let c=Ps((()=>{var e;return null==(e=n.inputRef.current)?void 0:e.focus({preventScroll:!0})})),d=(0,e.useMemo)((()=>({open:0===n.comboboxState,disabled:n.disabled})),[n]);return ms({ourProps:{ref:l,id:a,onClick:c},theirProps:o,slot:d,defaultTag:"label",name:"Combobox.Label"})})),Go=us.RenderStrategy|us.Static,Ko=ys((function(t,s){let r=po(),{id:a=`headlessui-combobox-options-${r}`,hold:o=!1,...n}=t,i=Vo("Combobox.Options"),l=Ns(i.optionsRef,s),c=vs(),d=null!==c?c===bs.Open:0===i.comboboxState;Ls((()=>{var e;i.optionsPropsRef.current.static=null!=(e=t.static)&&e}),[i.optionsPropsRef,t.static]),Ls((()=>{i.optionsPropsRef.current.hold=o}),[i.optionsPropsRef,o]),function({container:t,accept:s,walk:r,enabled:a=!0}){let o=(0,e.useRef)(s),n=(0,e.useRef)(r);(0,e.useEffect)((()=>{o.current=s,n.current=r}),[s,r]),Ls((()=>{if(!t||!a)return;let e=mo(t);if(!e)return;let s=o.current,r=n.current,i=Object.assign((e=>s(e)),{acceptNode:s}),l=e.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,i,!1);for(;l.nextNode();)r(l.currentNode)}),[t,a,o,n])}({container:i.optionsRef.current,enabled:0===i.comboboxState,accept:e=>"option"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let u=co((()=>{var e,t;return null!=(t=i.labelId)?t:null==(e=i.buttonRef.current)?void 0:e.id}),[i.labelId,i.buttonRef.current]);return ms({ourProps:{"aria-labelledby":u,role:"listbox",id:a,ref:l},theirProps:n,slot:(0,e.useMemo)((()=>({open:0===i.comboboxState})),[i]),defaultTag:"ul",features:Go,visible:d,name:"Combobox.Options"})})),Zo=ys((function(t,s){var r,a;let o=po(),{id:n=`headlessui-combobox-option-${o}`,disabled:i=!1,value:l,...c}=t,d=Vo("Combobox.Option"),u=Bo("Combobox.Option"),p=null!==d.activeOptionIndex&&d.options[d.activeOptionIndex].id===n,m=d.isSelected(l),f=(0,e.useRef)(null),h=Fs({disabled:i,value:l,domRef:f,textValue:null==(a=null==(r=f.current)?void 0:r.textContent)?void 0:a.toLowerCase()}),y=Ns(s,f),_=Ps((()=>u.selectOption(n)));Ls((()=>u.registerOption(n,h)),[h,n]);let w=(0,e.useRef)(!d.__demoMode);Ls((()=>{if(!d.__demoMode)return;let e=Is();return e.requestAnimationFrame((()=>{w.current=!0})),e.dispose}),[]),Ls((()=>{if(0!==d.comboboxState||!p||!w.current||0===d.activationTrigger)return;let e=Is();return e.requestAnimationFrame((()=>{var e,t;null==(t=null==(e=f.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})})),e.dispose}),[f,p,d.comboboxState,d.activationTrigger,d.activeOptionIndex]);let g=Ps((e=>{if(i)return e.preventDefault();_(),0===d.mode&&u.closeCombobox()})),b=Ps((()=>{if(i)return u.goToOption(xo.Nothing);u.goToOption(xo.Specific,n)})),v=function(){let t=(0,e.useRef)([-1,-1]);return{wasMoved(e){let s=Ro(e);return(t.current[0]!==s[0]||t.current[1]!==s[1])&&(t.current=s,!0)},update(e){t.current=Ro(e)}}}(),E=Ps((e=>v.update(e))),x=Ps((e=>{!v.wasMoved(e)||i||p||u.goToOption(xo.Specific,n,0)})),k=Ps((e=>{!v.wasMoved(e)||i||!p||d.optionsPropsRef.current.hold||u.goToOption(xo.Nothing)})),S=(0,e.useMemo)((()=>({active:p,selected:m,disabled:i})),[p,m,i]);return ms({ourProps:{id:n,ref:y,role:"option",tabIndex:!0===i?void 0:-1,"aria-disabled":!0===i||void 0,"aria-selected":m,disabled:void 0,onClick:g,onFocus:b,onPointerEnter:E,onMouseEnter:E,onPointerMove:x,onMouseMove:x,onPointerLeave:k,onMouseLeave:k},theirProps:c,slot:S,defaultTag:"li",name:"Combobox.Option"})})),Jo=Object.assign(qo,{Input:Wo,Button:Ho,Label:Yo,Options:Ko,Option:Zo});const Qo=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"}))})),Xo=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))}));function en(){return en=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var s=0,r=new Array(t);s'),1):!s||e.some((function(e){return s.includes(e)}))||e.includes("*"))){var e,s,r=function(e){var s;nn(e,["input","textarea","select"])&&!nn(e,null==c?void 0:c.enableOnFormTags)||(null===o.current||document.activeElement===o.current||o.current.contains(document.activeElement)?(null==(s=e.target)||!s.isContentEditable||null!=c&&c.enableOnContentEditable)&&an(t,null==c?void 0:c.splitKey).forEach((function(t){var s,r=on(t,null==c?void 0:c.combinationKey);if(function(e,t,s){var r=t.alt,a=t.meta,o=t.mod,n=t.shift,i=t.keys,l=e.altKey,c=e.ctrlKey,d=e.metaKey,u=e.shiftKey,p=e.key,m=e.code.toLowerCase().replace("key",""),f=p.toLowerCase();if(l!==r&&"alt"!==f)return!1;if(u!==n&&"shift"!==f)return!1;if(o){if(!d&&!c)return!1}else if(d!==a&&c!==a&&"meta"!==m&&"ctrl"!==m)return!1;return!(!i||1!==i.length||!i.includes(f)&&!i.includes(m))||(i?i.every((function(e){return s.has(e)})):!i)}(e,r,mn)||null!=(s=r.keys)&&s.includes("*")){if(function(e,t,s){("function"==typeof s&&s(e,t)||!0===s)&&e.preventDefault()}(e,r,null==c?void 0:c.preventDefault),!function(e,t,s){return"function"==typeof s?s(e,t):!0===s||void 0===s}(e,r,null==c?void 0:c.enabled))return void un(e);l(e,r)}})):un(e))},a=function(e){void 0!==e.key&&(mn.add(e.key.toLowerCase()),(void 0===(null==c?void 0:c.keydown)&&!0!==(null==c?void 0:c.keyup)||null!=c&&c.keydown)&&r(e))},n=function(e){void 0!==e.key&&("meta"!==e.key.toLowerCase()?mn.delete(e.key.toLowerCase()):mn.clear(),null!=c&&c.keyup&&r(e))};return(o.current||document).addEventListener("keyup",n),(o.current||document).addEventListener("keydown",a),u&&an(t,null==c?void 0:c.splitKey).forEach((function(e){return u.addHotkey(on(e,null==c?void 0:c.combinationKey))})),function(){(o.current||document).removeEventListener("keyup",n),(o.current||document).removeEventListener("keydown",a),u&&an(t,null==c?void 0:c.splitKey).forEach((function(e){return u.removeHotkey(on(e,null==c?void 0:c.combinationKey))}))}}}),[t,l,c,d]),o}var hn=new Set;"undefined"!=typeof window&&window.addEventListener("DOMContentLoaded",(function(){document.addEventListener("keydown",(function(e){var t;void 0!==e.key&&(t=e.key,(Array.isArray(t)?t:[t]).forEach((function(e){return hn.add(on(e))})))})),document.addEventListener("keyup",(function(e){var t;void 0!==e.key&&(t=e.key,(Array.isArray(t)?t:[t]).forEach((function(e){for(var t,s=on(e),r=function(e,t){var s="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(s)return(s=s.call(e)).next.bind(s);if(Array.isArray(e)||(s=function(e,t){if(e){if("string"==typeof e)return tn(e,t);var s=Object.prototype.toString.call(e).slice(8,-1);return"Object"===s&&e.constructor&&(s=e.constructor.name),"Map"===s||"Set"===s?Array.from(e):"Arguments"===s||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(s)?tn(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){s&&(e=s);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(hn);!(t=r()).done;){var a,o=t.value;null!=(a=o.keys)&&a.every((function(e){var t;return null==(t=s.keys)?void 0:t.includes(e)}))&&hn.delete(o)}})))}))}));const yn=(e,t)=>{try{return e.toLocaleLowerCase(t)}catch(t){return console.error(t.message),e}},wn=({name:e,label:t,route:s,hasArchive:r},{userLocale:a})=>({[`title-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-title-${e}`,fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},[`metadesc-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-metadesc-${e}`,fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},[`noindex-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-noindex-${e}`,fieldLabel:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. Posts. (0,Lt.__)("Show %1$s in search results","wordpress-seo"),yn(t,a)),keywords:[]},[`display-metabox-pt-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-display-metabox-pt-${e}`,fieldLabel:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),keywords:[]},[`schema-page-type-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-schema-page-type-${e}`,fieldLabel:(0,Lt.__)("Page type","wordpress-seo"),keywords:[(0,Lt.__)("Schema","wordpress-seo"),(0,Lt.__)("Structured data","wordpress-seo")]},[`schema-article-type-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-schema-article-type-${e}`,fieldLabel:(0,Lt.__)("Article type","wordpress-seo"),keywords:[(0,Lt.__)("Schema","wordpress-seo"),(0,Lt.__)("Structured data","wordpress-seo")]},[`page-analyse-extra-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-page-analyse-extra-${e}`,fieldLabel:(0,Lt.__)("Add custom fields to page analysis","wordpress-seo"),keywords:[]},..."attachment"!==e&&{[`social-title-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-title-${e}`,fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},[`social-description-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-description-${e}`,fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},[`social-image-id-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`button-wpseo_titles-social-image-${e}-preview`,fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]}},...r&&{[`title-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-title-ptarchive-${e}`,fieldLabel:(0,Lt.__)("Archive SEO title","wordpress-seo"),keywords:[]},[`metadesc-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-metadesc-ptarchive-${e}`,fieldLabel:(0,Lt.__)("Archive meta description","wordpress-seo"),keywords:[]},[`bctitle-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-bctitle-ptarchive-${e}`,fieldLabel:(0,Lt.__)("Archive breadcrumbs title","wordpress-seo"),keywords:[]},[`noindex-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-noindex-ptarchive-${e}`,fieldLabel:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. Posts. (0,Lt.__)("Show the archive for %1$s in search results","wordpress-seo"),yn(t,a)),keywords:[]},[`social-title-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-title-ptarchive-${e}`,fieldLabel:(0,Lt.__)("Archive social title","wordpress-seo"),keywords:[]},[`social-description-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-description-ptarchive-${e}`,fieldLabel:(0,Lt.__)("Archive social description","wordpress-seo"),keywords:[]},[`social-image-id-ptarchive-${e}`]:{route:`/post-type/${s}`,routeLabel:t,fieldId:`button-wpseo_titles-social-image-ptarchive-${e}-preview`,fieldLabel:(0,Lt.__)("Archive social image","wordpress-seo"),keywords:[]}}}),gn=({name:e,label:t,route:s},{userLocale:r})=>({[`title-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-title-tax-${e}`,fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},[`metadesc-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-metadesc-tax-${e}`,fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},[`display-metabox-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-display-metabox-tax-${e}`,fieldLabel:(0,Lt.sprintf)(/* translators: %1$s expands to "Yoast SEO". %2$s expands to the taxonomy plural, e.g. Categories. */ (0,Lt.__)("Enable %1$s for %2$s","wordpress-seo"),"Yoast SEO",yn(t,r)),keywords:[]},[`display-metabox-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-display-metabox-tax-${e}`,fieldLabel:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),keywords:[]},[`noindex-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-noindex-tax-${e}`,fieldLabel:(0,Lt.sprintf)( // translators: %1$s expands to the taxonomy plural, e.g. Categories. (0,Lt.__)("Show %1$s in search results","wordpress-seo"),yn(t,r)),keywords:[]},[`social-title-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-title-tax-${e}`,fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},[`social-description-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`input-wpseo_titles-social-description-tax-${e}`,fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},[`social-image-id-tax-${e}`]:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:`button-wpseo_titles-social-image-tax-${e}-preview`,fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]},..."category"===e&&{stripcategorybase:{route:`/taxonomy/${s}`,routeLabel:t,fieldId:"input-wpseo_titles-stripcategorybase",fieldLabel:(0,Lt.__)("Show the categories prefix in the slug","wordpress-seo"),keywords:[]}}}),bn=(e,t,{userLocale:s}={})=>({blogdescription:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-blogdescription",fieldLabel:(0,Lt.__)("Tagline","wordpress-seo"),keywords:[]},wpseo:{keyword_analysis_active:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-keyword_analysis_active",fieldLabel:(0,Lt.__)("SEO analysis","wordpress-seo"),keywords:[]},content_analysis_active:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-content_analysis_active",fieldLabel:(0,Lt.__)("Readability analysis","wordpress-seo"),keywords:[]},inclusive_language_analysis_active:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-inclusive_language_analysis_active",fieldLabel:(0,Lt.__)("Inclusive language analysis","wordpress-seo"),keywords:[]},enable_metabox_insights:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_metabox_insights",fieldLabel:(0,Lt.__)("Insights","wordpress-seo"),keywords:[]},enable_cornerstone_content:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_cornerstone_content",fieldLabel:(0,Lt.__)("Cornerstone content","wordpress-seo"),keywords:[]},enable_text_link_counter:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_text_link_counter",fieldLabel:(0,Lt.__)("Text link counter","wordpress-seo"),keywords:[]},enable_link_suggestions:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_link_suggestions",fieldLabel:(0,Lt.__)("Link suggestions","wordpress-seo"),keywords:[]},enable_enhanced_slack_sharing:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_enhanced_slack_sharing",fieldLabel:(0,Lt.__)("Slack sharing","wordpress-seo"),keywords:[(0,Lt.__)("Share","wordpress-seo")]},enable_admin_bar_menu:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_admin_bar_menu",fieldLabel:(0,Lt.__)("Admin bar menu","wordpress-seo"),keywords:[]},enable_headless_rest_endpoints:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_headless_rest_endpoints",fieldLabel:(0,Lt.__)("REST API endpoint","wordpress-seo"),keywords:[]},enable_xml_sitemap:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_xml_sitemap",fieldLabel:(0,Lt.__)("XML sitemaps","wordpress-seo"),keywords:[]},enable_index_now:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_index_now",fieldLabel:(0,Lt.__)("IndexNow","wordpress-seo"),keywords:[(0,Lt.__)("Index Now","wordpress-seo")]},enable_ai_generator:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo-enable_ai_generator",fieldLabel:(0,Lt.__)("AI title & description generator","wordpress-seo"),keywords:[(0,Lt.__)("AI generator","wordpress-seo"),(0,Lt.__)("Artificial intelligence","wordpress-seo"),(0,Lt.__)("SEO title","wordpress-seo"),(0,Lt.__)("meta title","wordpress-seo"),(0,Lt.__)("meta description","wordpress-seo"),(0,Lt.__)("suggestions","wordpress-seo")]},disableadvanced_meta:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo-disableadvanced_meta",fieldLabel:(0,Lt.__)("Restrict advanced settings for authors","wordpress-seo"),keywords:[]},tracking:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo-tracking",fieldLabel:(0,Lt.__)("Usage tracking","wordpress-seo"),keywords:[]},publishing_principles_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-publishing_principles_id",fieldLabel:(0,Lt.__)("Publishing principles","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},ownership_funding_info_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-ownership_funding_info_id",fieldLabel:(0,Lt.__)("Ownership / Funding info","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},actionable_feedback_policy_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-actionable_feedback_policy_id",fieldLabel:(0,Lt.__)("Actionable feedback policy","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},corrections_policy_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-corrections_policy_id",fieldLabel:(0,Lt.__)("Corrections policy","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},ethics_policy_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-ethics_policy_id",fieldLabel:(0,Lt.__)("Ethics policy","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},diversity_policy_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-diversity_policy_id",fieldLabel:(0,Lt.__)("Diversity policy","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},diversity_staffing_report_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-diversity_staffing_report_id",fieldLabel:(0,Lt.__)("Diversity staffing report","wordpress-seo"),keywords:[(0,Lt.__)("Publishing policies","wordpress-seo")]},baiduverify:{route:"/site-connections",routeLabel:(0,Lt.__)("Site connections","wordpress-seo"),fieldId:"input-wpseo-baiduverify",fieldLabel:(0,Lt.__)("Baidu","wordpress-seo"),keywords:[(0,Lt.__)("Webmaster","wordpress-seo")]},googleverify:{route:"/site-connections",routeLabel:(0,Lt.__)("Site connections","wordpress-seo"),fieldId:"input-wpseo-googleverify",fieldLabel:(0,Lt.__)("Google","wordpress-seo"),keywords:[(0,Lt.__)("Webmaster","wordpress-seo"),(0,Lt.__)("Google search console","wordpress-seo"),"gsc"]},msverify:{route:"/site-connections",routeLabel:(0,Lt.__)("Site connections","wordpress-seo"),fieldId:"input-wpseo-msverify",fieldLabel:(0,Lt.__)("Bing","wordpress-seo"),keywords:[(0,Lt.__)("Webmaster","wordpress-seo")]},yandexverify:{route:"/site-connections",routeLabel:(0,Lt.__)("Site connections","wordpress-seo"),fieldId:"input-wpseo-yandexverify",fieldLabel:(0,Lt.__)("Yandex","wordpress-seo"),keywords:[(0,Lt.__)("Webmaster","wordpress-seo")]},remove_shortlinks:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_shortlinks",fieldLabel:(0,Lt.__)("Remove shortlinks","wordpress-seo"),keywords:[]},remove_rest_api_links:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_rest_api_links",fieldLabel:(0,Lt.__)("Remove REST API links","wordpress-seo"),keywords:[]},remove_rsd_wlw_links:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_rsd_wlw_links",fieldLabel:(0,Lt.__)("Remove RSD / WLW links","wordpress-seo"),keywords:[]},remove_oembed_links:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_oembed_links",fieldLabel:(0,Lt.__)("Remove oEmbed links","wordpress-seo"),keywords:[]},remove_generator:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_generator",fieldLabel:(0,Lt.__)("Remove generator tag","wordpress-seo"),keywords:[]},remove_pingback_header:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_pingback_header",fieldLabel:(0,Lt.__)("Pingback HTTP header","wordpress-seo"),keywords:[]},remove_powered_by_header:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_powered_by_header",fieldLabel:(0,Lt.__)("Remove powered by HTTP header","wordpress-seo"),keywords:[]},remove_feed_global:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_global",fieldLabel:(0,Lt.__)("Remove global feed","wordpress-seo"),keywords:[]},remove_feed_global_comments:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_global_comments",fieldLabel:(0,Lt.__)("Remove global comment feeds","wordpress-seo"),keywords:[]},remove_feed_post_comments:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_post_comments",fieldLabel:(0,Lt.__)("Remove post comments feeds","wordpress-seo"),keywords:[]},remove_feed_authors:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_authors",fieldLabel:(0,Lt.__)("Remove post authors feeds","wordpress-seo"),keywords:[]},remove_feed_post_types:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_post_types",fieldLabel:(0,Lt.__)("Remove post type feeds","wordpress-seo"),keywords:[]},remove_feed_categories:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_categories",fieldLabel:(0,Lt.__)("Remove category feeds","wordpress-seo"),keywords:[]},remove_feed_tags:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_tags",fieldLabel:(0,Lt.__)("Remove tag feeds","wordpress-seo"),keywords:[]},remove_feed_custom_taxonomies:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_custom_taxonomies",fieldLabel:(0,Lt.__)("Remove custom taxonomy feeds","wordpress-seo"),keywords:[]},remove_feed_search:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_feed_search",fieldLabel:(0,Lt.__)("Remove search results feeds","wordpress-seo"),keywords:[]},remove_atom_rdf_feeds:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_atom_rdf_feeds",fieldLabel:(0,Lt.__)("Remove Atom/RDF feeds","wordpress-seo"),keywords:[]},remove_emoji_scripts:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-remove_emoji_scripts",fieldLabel:(0,Lt.__)("Remove emoji scripts","wordpress-seo"),keywords:[]},deny_wp_json_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_wp_json_crawling",fieldLabel:(0,Lt.__)("Remove WP-JSON API","wordpress-seo"),keywords:["robots"]},deny_adsbot_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_adsbot_crawling",fieldLabel:(0,Lt.__)("Prevent Google AdsBot from crawling","wordpress-seo"),keywords:["robots"]},deny_ccbot_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_ccbot_crawling",fieldLabel:(0,Lt.__)("Prevent Common Crawl CCBot from crawling","wordpress-seo"),keywords:["robots"]},deny_google_extended_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_google_extended_crawling",fieldLabel:(0,Lt.__)("Prevent Google Bard and Vertex AI bots from crawling","wordpress-seo"),keywords:["robots"]},deny_gptbot_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_gptbot_crawling",fieldLabel:(0,Lt.__)("Prevent OpenAI GPTBot from crawling","wordpress-seo"),keywords:["robots","chatgpt"]},search_cleanup:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-search_cleanup",fieldLabel:(0,Lt.__)("Filter search terms","wordpress-seo"),keywords:[]},search_character_limit:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-search_character_limit",fieldLabel:(0,Lt.__)("Max number of characters to allow in searches","wordpress-seo"),keywords:[]},search_cleanup_emoji:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-search_cleanup_emoji",fieldLabel:(0,Lt.__)("Filter searches with emojis and other special characters","wordpress-seo"),keywords:[]},search_cleanup_patterns:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-search_cleanup_patterns",fieldLabel:(0,Lt.__)("Filter searches with common spam patterns","wordpress-seo"),keywords:[]},redirect_search_pretty_urls:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-redirect_search_pretty_urls",fieldLabel:(0,Lt.__)("Redirect pretty URLs to ‘raw’ formats","wordpress-seo"),keywords:[]},deny_search_crawling:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-deny_search_crawling",fieldLabel:(0,Lt.__)("Prevent crawling of internal site search URLs","wordpress-seo"),keywords:["robots"]},clean_campaign_tracking_urls:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-clean_campaign_tracking_urls",fieldLabel:(0,Lt.__)("Optimize Google Analytics utm tracking parameters","wordpress-seo"),keywords:[]},clean_permalinks:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-clean_permalinks",fieldLabel:(0,Lt.__)("Remove unregistered URL parameters","wordpress-seo"),keywords:[]},clean_permalinks_extra_variables:{route:"/crawl-optimization",routeLabel:(0,Lt.__)("Crawl optimization","wordpress-seo"),fieldId:"input-wpseo-clean_permalinks_extra_variables",fieldLabel:(0,Lt.__)("Additional URL parameters to allow","wordpress-seo"),keywords:[]}},wpseo_titles:{website_name:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-website_name",fieldLabel:(0,Lt.__)("Website name","wordpress-seo"),keywords:[]},alternate_website_name:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-alternate_website_name",fieldLabel:(0,Lt.__)("Alternate website name","wordpress-seo"),keywords:[]},forcerewritetitles:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-forcerewritetitle",fieldLabel:(0,Lt.__)("Force rewrite titles","wordpress-seo"),keywords:[]},separator:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"input-wpseo_titles-separator-sc-dash",fieldLabel:(0,Lt.__)("Title separator","wordpress-seo"),keywords:[(0,Lt.__)("Divider","wordpress-seo")]},company_or_person:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-company_or_person-company",fieldLabel:(0,Lt.__)("Organization/person","wordpress-seo"),keywords:[(0,Lt.__)("Schema","wordpress-seo"),(0,Lt.__)("Structured data","wordpress-seo")]},company_name:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-company_name",fieldLabel:(0,Lt.__)("Organization name","wordpress-seo"),keywords:[]},company_alternate_name:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-company_alternate_name",fieldLabel:(0,Lt.__)("Alternate organization name","wordpress-seo"),keywords:[]},company_logo_id:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"button-wpseo_titles-company_logo-preview",fieldLabel:(0,Lt.__)("Organization logo","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo")]},company_or_person_user_id:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-company_or_person_user_id",fieldLabel:(0,Lt.__)("User","wordpress-seo"),keywords:[]},person_logo_id:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"button-wpseo_titles-person_logo-preview",fieldLabel:(0,Lt.__)("Personal logo or avatar","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo")]},organization_description:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-description",fieldLabel:(0,Lt.__)("Organization description","wordpress-seo"),keywords:[]},organization_email:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-email",fieldLabel:(0,Lt.__)("Organization email address","wordpress-seo"),keywords:[]},organization_phone:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-phone",fieldLabel:(0,Lt.__)("Organization phone number","wordpress-seo"),keywords:[]},organization_legal_name:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-legal-name",fieldLabel:(0,Lt.__)("Organization's legal name","wordpress-seo"),keywords:[]},organization_funding_date:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-founding-date",fieldLabel:(0,Lt.__)("Organization's founding date","wordpress-seo"),keywords:[]},organization_number_employees:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-number-employees",fieldLabel:(0,Lt.__)("Number of employees","wordpress-seo"),keywords:[]},organization_vat_id:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-vat-id",fieldLabel:(0,Lt.__)("VAT ID","wordpress-seo"),keywords:[]},organization_tax_id:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-tax-id",fieldLabel:(0,Lt.__)("Tax ID","wordpress-seo"),keywords:[]},organization_iso:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-iso",fieldLabel:(0,Lt.__)("ISO 6523","wordpress-seo"),keywords:[]},organization_duns:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-duns",fieldLabel:(0,Lt.__)("DUNS","wordpress-seo"),keywords:[]},organization_leicode:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-leicode",fieldLabel:(0,Lt.__)("LEI code","wordpress-seo"),keywords:[(0,Lt.__)("leicode","wordpress-seo")]},organization_naics:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_titles-org-naics",fieldLabel:(0,Lt.__)("NAICS","wordpress-seo"),keywords:[]},"title-home-wpseo":{route:"/homepage",routeLabel:(0,Lt.__)("Homepage","wordpress-seo"),fieldId:"input-wpseo_titles-title-home-wpseo",fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},"metadesc-home-wpseo":{route:"/homepage",routeLabel:(0,Lt.__)("Homepage","wordpress-seo"),fieldId:"input-wpseo_titles-metadesc-home-wpseo",fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},open_graph_frontpage_image_id:{route:"/homepage",routeLabel:(0,Lt.__)("Homepage","wordpress-seo"),fieldId:"button-wpseo_titles-open_graph_frontpage_image-preview",fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]},open_graph_frontpage_title:{route:"/homepage",routeLabel:(0,Lt.__)("Homepage","wordpress-seo"),fieldId:"input-wpseo_titles-open_graph_frontpage_title",fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},open_graph_frontpage_desc:{route:"/homepage",routeLabel:(0,Lt.__)("Homepage","wordpress-seo"),fieldId:"input-wpseo_titles-open_graph_frontpage_desc",fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},"breadcrumbs-sep":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-sep",fieldLabel:(0,Lt.__)("Separator between breadcrumbs","wordpress-seo"),keywords:[(0,Lt.__)("Divider","wordpress-seo"),(0,Lt.__)("Separator","wordpress-seo")]},"breadcrumbs-home":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-home",fieldLabel:(0,Lt.__)("Anchor text for the homepage","wordpress-seo"),keywords:[]},"breadcrumbs-prefix":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-prefix",fieldLabel:(0,Lt.__)("Prefix for the breadcrumb path","wordpress-seo"),keywords:[]},"breadcrumbs-archiveprefix":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-archiveprefix",fieldLabel:(0,Lt.__)("Prefix for archive breadcrumbs","wordpress-seo"),keywords:[]},"breadcrumbs-searchprefix":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-searchprefix",fieldLabel:(0,Lt.__)("Prefix for search page breadcrumbs","wordpress-seo"),keywords:[]},"breadcrumbs-404crumb":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-404crumb",fieldLabel:(0,Lt.__)("Breadcrumb for 404 page","wordpress-seo"),keywords:[]},"breadcrumbs-display-blog-page":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-display-blog-page",fieldLabel:(0,Lt.__)("Show blog page in breadcrumbs","wordpress-seo"),keywords:[]},"breadcrumbs-boldlast":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-boldlast",fieldLabel:(0,Lt.__)("Bold the last page","wordpress-seo"),keywords:[]},"breadcrumbs-enable":{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:"input-wpseo_titles-breadcrumbs-enable",fieldLabel:(0,Lt.__)("Enable breadcrumbs for your theme","wordpress-seo"),keywords:[]},...(0,le.reduce)(e,((e,r)=>{const a=(0,le.filter)(t,(e=>(0,le.includes)(e.postTypes,r.name)));return(0,le.isEmpty)(a)?e:{...e,[`post_types-${r.name}-maintax`]:{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:`input-wpseo_titles-post_types-${r.name}-maintax`, // translators: %1$s expands to the post type plural, e.g. posts. fieldLabel:(0,Lt.sprintf)((0,Lt.__)("Breadcrumbs for %1$s","wordpress-seo"),yn(r.label,s)),keywords:[]}}}),{}),...(0,le.reduce)(t,((e,t)=>({...e,[`taxonomy-${t.name}-ptparent`]:{route:"/breadcrumbs",routeLabel:(0,Lt.__)("Breadcrumbs","wordpress-seo"),fieldId:`input-wpseo_titles-taxonomy-${t.name}-ptparent`, // translators: %1$s expands to the taxonomy plural, e.g. categories. fieldLabel:(0,Lt.sprintf)((0,Lt.__)("Breadcrumbs for %1$s","wordpress-seo"),yn(t.label,s)),keywords:[]}})),{}),"disable-author":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-disable-author",fieldLabel:(0,Lt.__)("Enable author archives","wordpress-seo"),keywords:[]},"noindex-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-noindex-author-wpseo",fieldLabel:(0,Lt.__)("Show author archives in search results","wordpress-seo"),keywords:[]},"noindex-author-noposts-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-noindex-author-noposts-wpseo",fieldLabel:(0,Lt.__)("Show archives for authors without posts in search results","wordpress-seo"),keywords:[]},"title-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-title-author-wpseo",fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},"metadesc-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-metadesc-author-wpseo",fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},"social-image-id-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"button-wpseo_titles-social-image-author-wpseo-preview",fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]},"social-title-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-title-author-wpseo",fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},"social-description-author-wpseo":{route:"/author-archives",routeLabel:(0,Lt.__)("Author archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-description-author-wpseo",fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},"disable-date":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-disable-date",fieldLabel:(0,Lt.__)("Enable date archives","wordpress-seo"),keywords:[]},"noindex-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-noindex-archive-wpseo",fieldLabel:(0,Lt.__)("Show date archives in search results","wordpress-seo"),keywords:[]},"title-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-title-archive-wpseo",fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},"metadesc-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-metadesc-archive-wpseo",fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},"social-image-id-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"button-wpseo_titles-social-image-archive-wpseo-preview",fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]},"social-title-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-title-archive-wpseo",fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},"social-description-archive-wpseo":{route:"/date-archives",routeLabel:(0,Lt.__)("Date archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-description-archive-wpseo",fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},"title-search-wpseo":{route:"/special-pages",routeLabel:(0,Lt.__)("Special pages","wordpress-seo"),fieldId:"input-wpseo_titles-title-search-wpseo",fieldLabel:(0,Lt.__)("Search pages title","wordpress-seo"),keywords:[]},"title-404-wpseo":{route:"/special-pages",routeLabel:(0,Lt.__)("Special pages","wordpress-seo"),fieldId:"input-wpseo_titles-title-404-wpseo",fieldLabel:(0,Lt.__)("404 pages title","wordpress-seo"),keywords:[]},"disable-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-disable-attachment",fieldLabel:(0,Lt.__)("Media pages","wordpress-seo"),keywords:[(0,Lt.__)("Attachment","wordpress-seo"),(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"noindex-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-noindex-attachment",fieldLabel:(0,Lt.__)("Show media pages in search results","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"title-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-title-attachment",fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"metadesc-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-metadesc-attachment",fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"schema-page-type-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-schema-page-type-attachment",fieldLabel:(0,Lt.__)("Page type","wordpress-seo"),keywords:[(0,Lt.__)("Schema","wordpress-seo"),(0,Lt.__)("Structured data","wordpress-seo"),(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"schema-article-type-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-schema-article-type-attachment",fieldLabel:(0,Lt.__)("Article type","wordpress-seo"),keywords:[(0,Lt.__)("Schema","wordpress-seo"),(0,Lt.__)("Structured data","wordpress-seo"),(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"display-metabox-pt-attachment":{route:"/media-pages",routeLabel:(0,Lt.__)("Media pages","wordpress-seo"),fieldId:"input-wpseo_titles-display-metabox-pt-attachment",fieldLabel:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),keywords:[(0,Lt.__)("Image","wordpress-seo"),(0,Lt.__)("Video","wordpress-seo"),(0,Lt.__)("PDF","wordpress-seo"),(0,Lt.__)("File","wordpress-seo")]},"disable-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-disable-post_format",fieldLabel:(0,Lt.__)("Enable format-based archives","wordpress-seo"),keywords:[]},"noindex-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-noindex-tax-post_format",fieldLabel:(0,Lt.__)("Show format archives in search results","wordpress-seo"),keywords:[]},"title-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-title-tax-post_format",fieldLabel:(0,Lt.__)("SEO title","wordpress-seo"),keywords:[]},"metadesc-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-metadesc-tax-post_format",fieldLabel:(0,Lt.__)("Meta description","wordpress-seo"),keywords:[]},"social-image-id-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"button-wpseo_titles-social-image-tax-post_format-preview",fieldLabel:(0,Lt.__)("Social image","wordpress-seo"),keywords:[]},"social-title-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-title-tax-post_format",fieldLabel:(0,Lt.__)("Social title","wordpress-seo"),keywords:[]},"social-description-tax-post_format":{route:"/format-archives",routeLabel:(0,Lt.__)("Format archives","wordpress-seo"),fieldId:"input-wpseo_titles-social-description-tax-post_format",fieldLabel:(0,Lt.__)("Social description","wordpress-seo"),keywords:[]},rssbefore:{route:"/rss",routeLabel:"RSS",fieldId:"input-wpseo_titles-rssbefore",fieldLabel:(0,Lt.__)("Content to put before each post in the feed","wordpress-seo"),keywords:[]},rssafter:{route:"/rss",routeLabel:"RSS",fieldId:"input-wpseo_titles-rssafter",fieldLabel:(0,Lt.__)("Content to put after each post in the feed","wordpress-seo"),keywords:[]},...(0,le.reduce)((0,le.omit)(e,["attachment"]),((e,t)=>({...e,...wn(t,{userLocale:s})})),{}),...(0,le.reduce)((0,le.omit)(t,["post_format"]),((e,t)=>({...e,...gn(t,{userLocale:s})})),{})},wpseo_social:{opengraph:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo_social-opengraph",fieldLabel:(0,Lt.__)("Open Graph data","wordpress-seo"),keywords:[(0,Lt.__)("Social","wordpress-seo"),(0,Lt.__)("OpenGraph","wordpress-seo"),(0,Lt.__)("Facebook","wordpress-seo"),(0,Lt.__)("Share","wordpress-seo")]},twitter:{route:"/site-features",routeLabel:(0,Lt.__)("Site features","wordpress-seo"),fieldId:"card-wpseo_social-twitter",fieldLabel:(0,Lt.__)("X card data","wordpress-seo"),keywords:[(0,Lt.__)("Social","wordpress-seo"),(0,Lt.__)("Share","wordpress-seo"),(0,Lt.__)("Tweet","wordpress-seo"),(0,Lt.__)("Twitter","wordpress-seo")]},og_default_image_id:{route:"/site-basics",routeLabel:(0,Lt.__)("Site basics","wordpress-seo"),fieldId:"button-wpseo_social-og_default_image-preview",fieldLabel:(0,Lt.__)("Site image","wordpress-seo"),keywords:[]},pinterestverify:{route:"/site-connections",routeLabel:(0,Lt.__)("Site connections","wordpress-seo"),fieldId:"input-wpseo_social-pinterestverify",fieldLabel:(0,Lt.__)("Pinterest","wordpress-seo"),keywords:[(0,Lt.__)("Webmaster","wordpress-seo")]},facebook_site:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_social-facebook_site",fieldLabel:(0,Lt.__)("Organization Facebook","wordpress-seo"),keywords:[(0,Lt.__)("Social","wordpress-seo"),(0,Lt.__)("Open Graph","wordpress-seo"),(0,Lt.__)("OpenGraph","wordpress-seo"),(0,Lt.__)("Share","wordpress-seo")]},twitter_site:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_social-twitter_site",fieldLabel:(0,Lt.__)("Organization X","wordpress-seo"),keywords:[(0,Lt.__)("Social","wordpress-seo"),(0,Lt.__)("Share","wordpress-seo"),(0,Lt.__)("Tweet","wordpress-seo"),(0,Lt.__)("Twitter","wordpress-seo")]},mastodon_url:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"input-wpseo_social-mastodon_url",fieldLabel:(0,Lt.__)("Organization Mastodon","wordpress-seo"),keywords:[(0,Lt.__)("Social","wordpress-seo"),(0,Lt.__)("Share","wordpress-seo")]},other_social_urls:{route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:"fieldset-wpseo_social-other_social_urls",fieldLabel:(0,Lt.__)("Other social profiles","wordpress-seo"),keywords:[],...(0,le.times)(25,(e=>({route:"/site-representation",routeLabel:(0,Lt.__)("Site representation","wordpress-seo"),fieldId:`input-wpseo_social-other_social_urls-${e}`, // translators: %1$s expands to array index + 1. fieldLabel:(0,Lt.sprintf)((0,Lt.__)("Other profile %1$s","wordpress-seo"),e+1)})))}}}),vn=async e=>{const{endpoint:t,nonce:s}=(0,le.get)(window,"wpseoScriptData",{}),r=new FormData;r.set("option_page","wpseo_page_settings"),r.set("_wp_http_referer","admin.php?page=wpseo_page_settings_saved"),r.set("action","update"),r.set("_wpnonce",s),(0,le.forEach)(e,((e,t)=>{(0,le.isObject)(e)?(0,le.forEach)(e,((e,s)=>{(0,le.isArray)(e)?(0,le.forEach)(e,((e,a)=>r.set(`${t}[${s}][${a}]`,e))):r.set(`${t}[${s}]`,e)})):r.set(t,e)}));try{const e=await fetch(t,{method:"POST",body:new URLSearchParams(r)}),s=await e.text();if((0,le.includes)(s,"{{ yoast-success: false }}"))throw new Error("Yoast options invalid.");if(!e.url.endsWith("settings-updated=true"))throw new Error("WordPress options save did not get to the end.")}catch(e){throw new Error(e.message)}},En=async(e,{resetForm:t})=>{const{addNotification:s}=(0,a.dispatch)(Qr),{selectPreference:r}=(0,a.select)(Qr),o=r("canManageOptions",!1);try{return await Promise.all([vn(o?e:(0,le.omit)(e,["blogdescription"]))]),s({variant:"success",title:(0,Lt.__)("Great! Your settings were saved successfully.","wordpress-seo")}),t({values:e}),!0}catch(e){return s({id:"submit-error",variant:"error",title:(0,Lt.__)("Oops! Something went wrong while saving.","wordpress-seo")}),console.error("Error while saving:",e.message),!1}};var xn,kn;try{xn=Map}catch(e){}try{kn=Set}catch(e){}function Sn(e,t,s){if(!e||"object"!=typeof e||"function"==typeof e)return e;if(e.nodeType&&"cloneNode"in e)return e.cloneNode(!0);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);if(Array.isArray(e))return e.map(Ln);if(xn&&e instanceof xn)return new Map(Array.from(e.entries()));if(kn&&e instanceof kn)return new Set(Array.from(e.values()));if(e instanceof Object){t.push(e);var r=Object.create(e);for(var a in s.push(r),e){var o=t.findIndex((function(t){return t===e[a]}));r[a]=o>-1?s[o]:Sn(e[a],t,s)}return r}return e}function Ln(e){return Sn(e,[],[])}const Tn=Object.prototype.toString,Fn=Error.prototype.toString,$n=RegExp.prototype.toString,Pn="undefined"!=typeof Symbol?Symbol.prototype.toString:()=>"",Rn=/^Symbol\((.*)\)(.*)$/;function Nn(e,t=!1){if(null==e||!0===e||!1===e)return""+e;const s=typeof e;if("number"===s)return function(e){return e!=+e?"NaN":0===e&&1/e<0?"-0":""+e}(e);if("string"===s)return t?`"${e}"`:e;if("function"===s)return"[Function "+(e.name||"anonymous")+"]";if("symbol"===s)return Pn.call(e).replace(Rn,"Symbol($1)");const r=Tn.call(e).slice(8,-1);return"Date"===r?isNaN(e.getTime())?""+e:e.toISOString(e):"Error"===r||e instanceof Error?"["+Fn.call(e)+"]":"RegExp"===r?$n.call(e):null}function In(e,t){let s=Nn(e,t);return null!==s?s:JSON.stringify(e,(function(e,s){let r=Nn(this[e],t);return null!==r?r:s}),2)}let On={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:e,type:t,value:s,originalValue:r})=>{let a=null!=r&&r!==s,o=`${e} must be a \`${t}\` type, but the final value was: \`${In(s,!0)}\``+(a?` (cast from the value \`${In(r,!0)}\`).`:".");return null===s&&(o+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),o},defined:"${path} must be defined"},Cn={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},An={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},Mn={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},Dn={noUnknown:"${path} field has unspecified keys: ${unknown}"},Bn={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"};Object.assign(Object.create(null),{mixed:On,string:Cn,number:An,date:Mn,object:Dn,array:Bn,boolean:{isValue:"${path} field must be ${value}"}});const Un=window.lodash.has;var Vn=s.n(Un);const jn=e=>e&&e.__isYupSchema__,zn=class{constructor(e,t){if(this.fn=void 0,this.refs=e,this.refs=e,"function"==typeof t)return void(this.fn=t);if(!Vn()(t,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:s,then:r,otherwise:a}=t,o="function"==typeof s?s:(...e)=>e.every((e=>e===s));this.fn=function(...e){let t=e.pop(),s=e.pop(),n=o(...e)?r:a;if(n)return"function"==typeof n?n(s):s.concat(n.resolve(t))}}resolve(e,t){let s=this.refs.map((e=>e.getValue(null==t?void 0:t.value,null==t?void 0:t.parent,null==t?void 0:t.context))),r=this.fn.apply(e,s.concat(e,t));if(void 0===r||r===e)return e;if(!jn(r))throw new TypeError("conditions must return a schema object");return r.resolve(t)}};function qn(e){return null==e?[]:[].concat(e)}function Wn(){return Wn=Object.assign||function(e){for(var t=1;tIn(t[s]))):"function"==typeof e?e(t):e}static isError(e){return e&&"ValidationError"===e.name}constructor(e,t,s,r){super(),this.value=void 0,this.path=void 0,this.type=void 0,this.errors=void 0,this.params=void 0,this.inner=void 0,this.name="ValidationError",this.value=t,this.path=s,this.type=r,this.errors=[],this.inner=[],qn(e).forEach((e=>{Yn.isError(e)?(this.errors.push(...e.errors),this.inner=this.inner.concat(e.inner.length?e.inner:e)):this.errors.push(e)})),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,Yn)}}function Gn(e,t){let{endEarly:s,tests:r,args:a,value:o,errors:n,sort:i,path:l}=e,c=(e=>{let t=!1;return(...s)=>{t||(t=!0,e(...s))}})(t),d=r.length;const u=[];if(n=n||[],!d)return n.length?c(new Yn(n,o,l)):c(null,o);for(let e=0;e=0||(a[s]=e[s]);return a}(t,["value","path","label","options","originalValue","sync"]);const{name:d,test:u,params:p,message:m}=e;let{parent:f,context:h}=n;function y(e){return Qn.isRef(e)?e.getValue(r,f,h):e}function _(e={}){const t=Zn()(Xn({value:r,originalValue:i,label:o,path:e.path||a},p,e.params),y),s=new Yn(Yn.formatError(e.message||m,t),r,t.path,e.type||d);return s.params=t,s}let w,g=Xn({path:a,parent:f,type:d,createError:_,resolve:y,options:n,originalValue:i},c);if(l){try{var b;if(w=u.call(g,r,g),"function"==typeof(null==(b=w)?void 0:b.then))throw new Error(`Validation test of type: "${g.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`)}catch(e){return void s(e)}Yn.isError(w)?s(w):w?s(null,w):s(_())}else try{Promise.resolve(u.call(g,r,g)).then((e=>{Yn.isError(e)?s(e):e?s(null,e):s(_())})).catch(s)}catch(e){s(e)}}return t.OPTIONS=e,t}function ti(e,t,s,r=s){let a,o,n;return t?((0,Jn.forEach)(t,((i,l,c)=>{let d=l?(e=>e.substr(0,e.length-1).substr(1))(i):i;if((e=e.resolve({context:r,parent:a,value:s})).innerType){let r=c?parseInt(d,10):0;if(s&&r>=s.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${i}, in the path: ${t}. because there is no value at that index. `);a=s,s=s&&s[r],e=e.innerType}if(!c){if(!e.fields||!e.fields[d])throw new Error(`The schema does not contain the path: ${t}. (failed at: ${n} which is a type: "${e._type}")`);a=s,s=s&&s[d],e=e.fields[d]}o=d,n=l?"["+i+"]":"."+i})),{schema:e,parent:a,parentPath:o}):{parent:a,parentPath:t,schema:e}}Qn.prototype.__isYupRef=!0;class si{constructor(){this.list=void 0,this.refs=void 0,this.list=new Set,this.refs=new Map}get size(){return this.list.size+this.refs.size}describe(){const e=[];for(const t of this.list)e.push(t);for(const[,t]of this.refs)e.push(t.describe());return e}toArray(){return Array.from(this.list).concat(Array.from(this.refs.values()))}resolveAll(e){return this.toArray().reduce(((t,s)=>t.concat(Qn.isRef(s)?e(s):s)),[])}add(e){Qn.isRef(e)?this.refs.set(e.key,e):this.list.add(e)}delete(e){Qn.isRef(e)?this.refs.delete(e.key):this.list.delete(e)}clone(){const e=new si;return e.list=new Set(this.list),e.refs=new Map(this.refs),e}merge(e,t){const s=this.clone();return e.list.forEach((e=>s.add(e))),e.refs.forEach((e=>s.add(e))),t.list.forEach((e=>s.delete(e))),t.refs.forEach((e=>s.delete(e))),s}}function ri(){return ri=Object.assign||function(e){for(var t=1;t{this.typeError(On.notType)})),this.type=(null==e?void 0:e.type)||"mixed",this.spec=ri({strip:!1,strict:!1,abortEarly:!0,recursive:!0,nullable:!1,presence:"optional"},null==e?void 0:e.spec)}get _type(){return this.type}_typeCheck(e){return!0}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;const t=Object.create(Object.getPrototypeOf(this));return t.type=this.type,t._typeError=this._typeError,t._whitelistError=this._whitelistError,t._blacklistError=this._blacklistError,t._whitelist=this._whitelist.clone(),t._blacklist=this._blacklist.clone(),t.exclusiveTests=ri({},this.exclusiveTests),t.deps=[...this.deps],t.conditions=[...this.conditions],t.tests=[...this.tests],t.transforms=[...this.transforms],t.spec=Ln(ri({},this.spec,e)),t}label(e){let t=this.clone();return t.spec.label=e,t}meta(...e){if(0===e.length)return this.spec.meta;let t=this.clone();return t.spec.meta=Object.assign(t.spec.meta||{},e[0]),t}withMutation(e){let t=this._mutate;this._mutate=!0;let s=e(this);return this._mutate=t,s}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&"mixed"!==this.type)throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let t=this,s=e.clone();const r=ri({},t.spec,s.spec);return s.spec=r,s._typeError||(s._typeError=t._typeError),s._whitelistError||(s._whitelistError=t._whitelistError),s._blacklistError||(s._blacklistError=t._blacklistError),s._whitelist=t._whitelist.merge(e._whitelist,e._blacklist),s._blacklist=t._blacklist.merge(e._blacklist,e._whitelist),s.tests=t.tests,s.exclusiveTests=t.exclusiveTests,s.withMutation((t=>{e.tests.forEach((e=>{t.test(e.OPTIONS)}))})),s.transforms=[...t.transforms,...s.transforms],s}isType(e){return!(!this.spec.nullable||null!==e)||this._typeCheck(e)}resolve(e){let t=this;if(t.conditions.length){let s=t.conditions;t=t.clone(),t.conditions=[],t=s.reduce(((t,s)=>s.resolve(t,e)),t),t=t.resolve(e)}return t}cast(e,t={}){let s=this.resolve(ri({value:e},t)),r=s._cast(e,t);if(void 0!==e&&!1!==t.assert&&!0!==s.isType(r)){let a=In(e),o=In(r);throw new TypeError(`The value of ${t.path||"field"} could not be cast to a value that satisfies the schema type: "${s._type}". \n\nattempted value: ${a} \n`+(o!==a?`result of cast: ${o}`:""))}return r}_cast(e,t){let s=void 0===e?e:this.transforms.reduce(((t,s)=>s.call(this,t,e,this)),e);return void 0===s&&(s=this.getDefault()),s}_validate(e,t={},s){let{sync:r,path:a,from:o=[],originalValue:n=e,strict:i=this.spec.strict,abortEarly:l=this.spec.abortEarly}=t,c=e;i||(c=this._cast(c,ri({assert:!1},t)));let d={value:c,path:a,options:t,originalValue:n,schema:this,label:this.spec.label,sync:r,from:o},u=[];this._typeError&&u.push(this._typeError);let p=[];this._whitelistError&&p.push(this._whitelistError),this._blacklistError&&p.push(this._blacklistError),Gn({args:d,value:c,path:a,sync:r,tests:u,endEarly:l},(e=>{e?s(e,c):Gn({tests:this.tests.concat(p),args:d,path:a,sync:r,value:c,endEarly:l},s)}))}validate(e,t,s){let r=this.resolve(ri({},t,{value:e}));return"function"==typeof s?r._validate(e,t,s):new Promise(((s,a)=>r._validate(e,t,((e,t)=>{e?a(e):s(t)}))))}validateSync(e,t){let s;return this.resolve(ri({},t,{value:e}))._validate(e,ri({},t,{sync:!0}),((e,t)=>{if(e)throw e;s=t})),s}isValid(e,t){return this.validate(e,t).then((()=>!0),(e=>{if(Yn.isError(e))return!1;throw e}))}isValidSync(e,t){try{return this.validateSync(e,t),!0}catch(e){if(Yn.isError(e))return!1;throw e}}_getDefault(){let e=this.spec.default;return null==e?e:"function"==typeof e?e.call(this):Ln(e)}getDefault(e){return this.resolve(e||{})._getDefault()}default(e){return 0===arguments.length?this._getDefault():this.clone({default:e})}strict(e=!0){let t=this.clone();return t.spec.strict=e,t}_isPresent(e){return null!=e}defined(e=On.defined){return this.test({message:e,name:"defined",exclusive:!0,test:e=>void 0!==e})}required(e=On.required){return this.clone({presence:"required"}).withMutation((t=>t.test({message:e,name:"required",exclusive:!0,test(e){return this.schema._isPresent(e)}})))}notRequired(){let e=this.clone({presence:"optional"});return e.tests=e.tests.filter((e=>"required"!==e.OPTIONS.name)),e}nullable(e=!0){return this.clone({nullable:!1!==e})}transform(e){let t=this.clone();return t.transforms.push(e),t}test(...e){let t;if(t=1===e.length?"function"==typeof e[0]?{test:e[0]}:e[0]:2===e.length?{name:e[0],test:e[1]}:{name:e[0],message:e[1],test:e[2]},void 0===t.message&&(t.message=On.default),"function"!=typeof t.test)throw new TypeError("`test` is a required parameters");let s=this.clone(),r=ei(t),a=t.exclusive||t.name&&!0===s.exclusiveTests[t.name];if(t.exclusive&&!t.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t.name&&(s.exclusiveTests[t.name]=!!t.exclusive),s.tests=s.tests.filter((e=>{if(e.OPTIONS.name===t.name){if(a)return!1;if(e.OPTIONS.test===r.OPTIONS.test)return!1}return!0})),s.tests.push(r),s}when(e,t){Array.isArray(e)||"string"==typeof e||(t=e,e=".");let s=this.clone(),r=qn(e).map((e=>new Qn(e)));return r.forEach((e=>{e.isSibling&&s.deps.push(e.key)})),s.conditions.push(new zn(r,t)),s}typeError(e){let t=this.clone();return t._typeError=ei({message:e,name:"typeError",test(e){return!(void 0!==e&&!this.schema.isType(e))||this.createError({params:{type:this.schema._type}})}}),t}oneOf(e,t=On.oneOf){let s=this.clone();return e.forEach((e=>{s._whitelist.add(e),s._blacklist.delete(e)})),s._whitelistError=ei({message:t,name:"oneOf",test(e){if(void 0===e)return!0;let t=this.schema._whitelist,s=t.resolveAll(this.resolve);return!!s.includes(e)||this.createError({params:{values:t.toArray().join(", "),resolved:s}})}}),s}notOneOf(e,t=On.notOneOf){let s=this.clone();return e.forEach((e=>{s._blacklist.add(e),s._whitelist.delete(e)})),s._blacklistError=ei({message:t,name:"notOneOf",test(e){let t=this.schema._blacklist,s=t.resolveAll(this.resolve);return!s.includes(e)||this.createError({params:{values:t.toArray().join(", "),resolved:s}})}}),s}strip(e=!0){let t=this.clone();return t.spec.strip=e,t}describe(){const e=this.clone(),{label:t,meta:s}=e.spec,r={meta:s,label:t,type:e.type,oneOf:e._whitelist.describe(),notOneOf:e._blacklist.describe(),tests:e.tests.map((e=>({name:e.OPTIONS.name,params:e.OPTIONS.params}))).filter(((e,t,s)=>s.findIndex((t=>t.name===e.name))===t))};return r}}ai.prototype.__isYupSchema__=!0;for(const e of["validate","validateSync"])ai.prototype[`${e}At`]=function(t,s,r={}){const{parent:a,parentPath:o,schema:n}=ti(this,t,s,r.context);return n[e](a&&a[o],ri({},r,{parent:a,path:t}))};for(const e of["equals","is"])ai.prototype[e]=ai.prototype.oneOf;for(const e of["not","nope"])ai.prototype[e]=ai.prototype.notOneOf;ai.prototype.optional=ai.prototype.notRequired;ai.prototype;const oi=e=>null==e;let ni=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,ii=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,li=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,ci=e=>oi(e)||e===e.trim(),di={}.toString();function ui(){return new pi}class pi extends ai{constructor(){super({type:"string"}),this.withMutation((()=>{this.transform((function(e){if(this.isType(e))return e;if(Array.isArray(e))return e;const t=null!=e&&e.toString?e.toString():e;return t===di?e:t}))}))}_typeCheck(e){return e instanceof String&&(e=e.valueOf()),"string"==typeof e}_isPresent(e){return super._isPresent(e)&&!!e.length}length(e,t=Cn.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(t){return oi(t)||t.length===this.resolve(e)}})}min(e,t=Cn.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(t){return oi(t)||t.length>=this.resolve(e)}})}max(e,t=Cn.max){return this.test({name:"max",exclusive:!0,message:t,params:{max:e},test(t){return oi(t)||t.length<=this.resolve(e)}})}matches(e,t){let s,r,a=!1;return t&&("object"==typeof t?({excludeEmptyString:a=!1,message:s,name:r}=t):s=t),this.test({name:r||"matches",message:s||Cn.matches,params:{regex:e},test:t=>oi(t)||""===t&&a||-1!==t.search(e)})}email(e=Cn.email){return this.matches(ni,{name:"email",message:e,excludeEmptyString:!0})}url(e=Cn.url){return this.matches(ii,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Cn.uuid){return this.matches(li,{name:"uuid",message:e,excludeEmptyString:!1})}ensure(){return this.default("").transform((e=>null===e?"":e))}trim(e=Cn.trim){return this.transform((e=>null!=e?e.trim():e)).test({message:e,name:"trim",test:ci})}lowercase(e=Cn.lowercase){return this.transform((e=>oi(e)?e:e.toLowerCase())).test({message:e,name:"string_case",exclusive:!0,test:e=>oi(e)||e===e.toLowerCase()})}uppercase(e=Cn.uppercase){return this.transform((e=>oi(e)?e:e.toUpperCase())).test({message:e,name:"string_case",exclusive:!0,test:e=>oi(e)||e===e.toUpperCase()})}}function mi(){return new fi}ui.prototype=pi.prototype;class fi extends ai{constructor(){super({type:"number"}),this.withMutation((()=>{this.transform((function(e){let t=e;if("string"==typeof t){if(t=t.replace(/\s/g,""),""===t)return NaN;t=+t}return this.isType(t)?t:parseFloat(t)}))}))}_typeCheck(e){return e instanceof Number&&(e=e.valueOf()),"number"==typeof e&&!(e=>e!=+e)(e)}min(e,t=An.min){return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(t){return oi(t)||t>=this.resolve(e)}})}max(e,t=An.max){return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(t){return oi(t)||t<=this.resolve(e)}})}lessThan(e,t=An.lessThan){return this.test({message:t,name:"max",exclusive:!0,params:{less:e},test(t){return oi(t)||tthis.resolve(e)}})}positive(e=An.positive){return this.moreThan(0,e)}negative(e=An.negative){return this.lessThan(0,e)}integer(e=An.integer){return this.test({name:"integer",message:e,test:e=>oi(e)||Number.isInteger(e)})}truncate(){return this.transform((e=>oi(e)?e:0|e))}round(e){var t;let s=["ceil","floor","round","trunc"];if("trunc"===(e=(null==(t=e)?void 0:t.toLowerCase())||"round"))return this.truncate();if(-1===s.indexOf(e.toLowerCase()))throw new TypeError("Only valid options for round() are: "+s.join(", "));return this.transform((t=>oi(t)?t:Math[e](t)))}}mi.prototype=fi.prototype;var hi=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;let yi=new Date("");function _i(){return new wi}class wi extends ai{constructor(){super({type:"date"}),this.withMutation((()=>{this.transform((function(e){return this.isType(e)?e:(e=function(e){var t,s,r=[1,4,5,6,7,10,11],a=0;if(s=hi.exec(e)){for(var o,n=0;o=r[n];++n)s[o]=+s[o]||0;s[2]=(+s[2]||1)-1,s[3]=+s[3]||1,s[7]=s[7]?String(s[7]).substr(0,3):0,void 0!==s[8]&&""!==s[8]||void 0!==s[9]&&""!==s[9]?("Z"!==s[8]&&void 0!==s[9]&&(a=60*s[10]+s[11],"+"===s[9]&&(a=0-a)),t=Date.UTC(s[1],s[2],s[3],s[4],s[5]+a,s[6],s[7])):t=+new Date(s[1],s[2],s[3],s[4],s[5],s[6],s[7])}else t=Date.parse?Date.parse(e):NaN;return t}(e),isNaN(e)?yi:new Date(e))}))}))}_typeCheck(e){return t=e,"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(e.getTime());var t}prepareParam(e,t){let s;if(Qn.isRef(e))s=e;else{let r=this.cast(e);if(!this._typeCheck(r))throw new TypeError(`\`${t}\` must be a Date or a value that can be \`cast()\` to a Date`);s=r}return s}min(e,t=Mn.min){let s=this.prepareParam(e,"min");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(e){return oi(e)||e>=this.resolve(s)}})}max(e,t=Mn.max){let s=this.prepareParam(e,"max");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(e){return oi(e)||e<=this.resolve(s)}})}}wi.INVALID_DATE=yi,_i.prototype=wi.prototype,_i.INVALID_DATE=yi;const gi=window.lodash.snakeCase;var bi=s.n(gi);const vi=window.lodash.camelCase;var Ei=s.n(vi);const xi=window.lodash.mapKeys;var ki=s.n(xi),Si=s(4633),Li=s.n(Si);function Ti(e,t){let s=1/0;return e.some(((e,r)=>{var a;if(-1!==(null==(a=t.path)?void 0:a.indexOf(e)))return s=r,!0})),s}function Fi(e){return(t,s)=>Ti(e,t)-Ti(e,s)}function $i(){return $i=Object.assign||function(e){for(var t=1;t"[object Object]"===Object.prototype.toString.call(e);const Ri=Fi([]);class Ni extends ai{constructor(e){super({type:"object"}),this.fields=Object.create(null),this._sortErrors=Ri,this._nodes=[],this._excludedEdges=[],this.withMutation((()=>{this.transform((function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e=null}return this.isType(e)?e:null})),e&&this.shape(e)}))}_typeCheck(e){return Pi(e)||"function"==typeof e}_cast(e,t={}){var s;let r=super._cast(e,t);if(void 0===r)return this.getDefault();if(!this._typeCheck(r))return r;let a=this.fields,o=null!=(s=t.stripUnknown)?s:this.spec.noUnknown,n=this._nodes.concat(Object.keys(r).filter((e=>-1===this._nodes.indexOf(e)))),i={},l=$i({},t,{parent:i,__validating:t.__validating||!1}),c=!1;for(const e of n){let s=a[e],n=Vn()(r,e);if(s){let a,o=r[e];l.path=(t.path?`${t.path}.`:"")+e,s=s.resolve({value:o,context:t.context,parent:i});let n="spec"in s?s.spec:void 0,d=null==n?void 0:n.strict;if(null==n?void 0:n.strip){c=c||e in r;continue}a=t.__validating&&d?r[e]:s.cast(r[e],l),void 0!==a&&(i[e]=a)}else n&&!o&&(i[e]=r[e]);i[e]!==r[e]&&(c=!0)}return c?i:r}_validate(e,t={},s){let r=[],{sync:a,from:o=[],originalValue:n=e,abortEarly:i=this.spec.abortEarly,recursive:l=this.spec.recursive}=t;o=[{schema:this,value:n},...o],t.__validating=!0,t.originalValue=n,t.from=o,super._validate(e,t,((e,c)=>{if(e){if(!Yn.isError(e)||i)return void s(e,c);r.push(e)}if(!l||!Pi(c))return void s(r[0]||null,c);n=n||c;let d=this._nodes.map((e=>(s,r)=>{let a=-1===e.indexOf(".")?(t.path?`${t.path}.`:"")+e:`${t.path||""}["${e}"]`,i=this.fields[e];i&&"validate"in i?i.validate(c[e],$i({},t,{path:a,from:o,strict:!0,parent:c,originalValue:n[e]}),r):r(null)}));Gn({sync:a,tests:d,value:c,errors:r,endEarly:i,sort:this._sortErrors,path:t.path},s)}))}clone(e){const t=super.clone(e);return t.fields=$i({},this.fields),t._nodes=this._nodes,t._excludedEdges=this._excludedEdges,t._sortErrors=this._sortErrors,t}concat(e){let t=super.concat(e),s=t.fields;for(let[e,t]of Object.entries(this.fields)){const r=s[e];void 0===r?s[e]=t:r instanceof ai&&t instanceof ai&&(s[e]=t.concat(r))}return t.withMutation((()=>t.shape(s,this._excludedEdges)))}getDefaultFromShape(){let e={};return this._nodes.forEach((t=>{const s=this.fields[t];e[t]="default"in s?s.getDefault():void 0})),e}_getDefault(){return"default"in this.spec?super._getDefault():this._nodes.length?this.getDefaultFromShape():void 0}shape(e,t=[]){let s=this.clone(),r=Object.assign(s.fields,e);return s.fields=r,s._sortErrors=Fi(Object.keys(r)),t.length&&(Array.isArray(t[0])||(t=[t]),s._excludedEdges=[...s._excludedEdges,...t]),s._nodes=function(e,t=[]){let s=[],r=new Set,a=new Set(t.map((([e,t])=>`${e}-${t}`)));function o(e,t){let o=(0,Jn.split)(e)[0];r.add(o),a.has(`${t}-${o}`)||s.push([t,o])}for(const t in e)if(Vn()(e,t)){let s=e[t];r.add(t),Qn.isRef(s)&&s.isSibling?o(s.path,t):jn(s)&&"deps"in s&&s.deps.forEach((e=>o(e,t)))}return Li().array(Array.from(r),s).reverse()}(r,s._excludedEdges),s}pick(e){const t={};for(const s of e)this.fields[s]&&(t[s]=this.fields[s]);return this.clone().withMutation((e=>(e.fields={},e.shape(t))))}omit(e){const t=this.clone(),s=t.fields;t.fields={};for(const t of e)delete s[t];return t.withMutation((()=>t.shape(s)))}from(e,t,s){let r=(0,Jn.getter)(e,!0);return this.transform((a=>{if(null==a)return a;let o=a;return Vn()(a,e)&&(o=$i({},a),s||delete o[e],o[t]=r(a)),o}))}noUnknown(e=!0,t=Dn.noUnknown){"string"==typeof e&&(t=e,e=!0);let s=this.test({name:"noUnknown",exclusive:!0,message:t,test(t){if(null==t)return!0;const s=function(e,t){let s=Object.keys(e.fields);return Object.keys(t).filter((e=>-1===s.indexOf(e)))}(this.schema,t);return!e||0===s.length||this.createError({params:{unknown:s.join(", ")}})}});return s.spec.noUnknown=e,s}unknown(e=!0,t=Dn.noUnknown){return this.noUnknown(!e,t)}transformKeys(e){return this.transform((t=>t&&ki()(t,((t,s)=>e(s)))))}camelCase(){return this.transformKeys(Ei())}snakeCase(){return this.transformKeys(bi())}constantCase(){return this.transformKeys((e=>bi()(e).toUpperCase()))}describe(){let e=super.describe();return e.fields=Zn()(this.fields,(e=>e.describe())),e}}function Ii(e){return new Ni(e)}function Oi(){return Oi=Object.assign||function(e){for(var t=1;t{this.transform((function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e=null}return this.isType(e)?e:null}))}))}_typeCheck(e){return Array.isArray(e)}get _subType(){return this.innerType}_cast(e,t){const s=super._cast(e,t);if(!this._typeCheck(s)||!this.innerType)return s;let r=!1;const a=s.map(((e,s)=>{const a=this.innerType.cast(e,Oi({},t,{path:`${t.path||""}[${s}]`}));return a!==e&&(r=!0),a}));return r?a:s}_validate(e,t={},s){var r,a;let o=[],n=t.sync,i=t.path,l=this.innerType,c=null!=(r=t.abortEarly)?r:this.spec.abortEarly,d=null!=(a=t.recursive)?a:this.spec.recursive,u=null!=t.originalValue?t.originalValue:e;super._validate(e,t,((e,r)=>{if(e){if(!Yn.isError(e)||c)return void s(e,r);o.push(e)}if(!d||!l||!this._typeCheck(r))return void s(o[0]||null,r);u=u||r;let a=new Array(r.length);for(let e=0;el.validate(s,n,t)}Gn({sync:n,path:i,value:r,errors:o,endEarly:c,tests:a},s)}))}clone(e){const t=super.clone(e);return t.innerType=this.innerType,t}concat(e){let t=super.concat(e);return t.innerType=this.innerType,e.innerType&&(t.innerType=t.innerType?t.innerType.concat(e.innerType):e.innerType),t}of(e){let t=this.clone();if(!jn(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema not: "+In(e));return t.innerType=e,t}length(e,t=Bn.length){return this.test({message:t,name:"length",exclusive:!0,params:{length:e},test(t){return oi(t)||t.length===this.resolve(e)}})}min(e,t){return t=t||Bn.min,this.test({message:t,name:"min",exclusive:!0,params:{min:e},test(t){return oi(t)||t.length>=this.resolve(e)}})}max(e,t){return t=t||Bn.max,this.test({message:t,name:"max",exclusive:!0,params:{max:e},test(t){return oi(t)||t.length<=this.resolve(e)}})}ensure(){return this.default((()=>[])).transform(((e,t)=>this._typeCheck(e)?e:null==t?[]:[].concat(t)))}compact(e){let t=e?(t,s,r)=>!e(t,s,r):e=>!!e;return this.transform((e=>null!=e?e.filter(t):e))}describe(){let e=super.describe();return this.innerType&&(e.innerType=this.innerType.describe()),e}nullable(e=!0){return super.nullable(e)}defined(){return super.defined()}required(e){return super.required(e)}}function Mi(e,t,s){if(!e||!jn(e.prototype))throw new TypeError("You must provide a yup schema constructor function");if("string"!=typeof t)throw new TypeError("A Method name must be provided");if("function"!=typeof s)throw new TypeError("Method function must be provided");e.prototype[t]=s}Ci.prototype=Ai.prototype;const Di=/^[A-Za-z0-9_-]+$/,Bi=/^[A-Fa-f0-9_-]+$/,Ui=/^[A-Za-z0-9_]{1,25}$/,Vi=/^https?:\/\/(?:www\.)?(?:twitter|x)\.com\/(?[A-Za-z0-9_]{1,25})\/?$/,ji=["image/jpeg","image/png","image/webp","image/gif"];Mi(mi,"isMediaTypeImage",(function(){return this.test("isMediaTypeImage",(0,Lt.__)("The selected file is not an image.","wordpress-seo"),(e=>{if(!e)return!0;const t=(0,a.select)(Qr).selectMediaById(e);return!t||"image"===(null==t?void 0:t.type)}))})),Mi(mi,"isMediaMimeTypeAllowed",(function(){return this.test("isMediaMimeTypeAllowed",(0,Lt.__)("The selected media type is not valid. Supported types are: JPG, PNG, WEBP and GIF.","wordpress-seo"),(e=>{const t=(0,a.select)(Qr).selectMediaById(e);return!t||ji.includes(t.mime)}))})),Mi(ui,"isValidTwitterUrlOrHandle",(function(){return this.test("isValidTwitterUrlOrHandle",(0,Lt.__)("The profile is not valid. Please use only 1-25 letters, numbers and underscores or enter a valid X URL.","wordpress-seo"),(e=>!e||Ui.test(e)||Vi.test(e)))}));const zi=(e,t)=>Ii().shape({wpseo:Ii().shape({baiduverify:ui().matches(Di,(0,Lt.__)("The verification code is not valid. Please use only letters, numbers, underscores and dashes.","wordpress-seo")),googleverify:ui().matches(Di,(0,Lt.__)("The verification code is not valid. Please use only letters, numbers, underscores and dashes.","wordpress-seo")),msverify:ui().matches(Bi,(0,Lt.__)("The verification code is not valid. Please use only the letters A to F, numbers, underscores and dashes.","wordpress-seo")),yandexverify:ui().matches(Bi,(0,Lt.__)("The verification code is not valid. Please use only the letters A to F, numbers, underscores and dashes.","wordpress-seo")),search_character_limit:mi().required((0,Lt.__)("Please enter a number between 1 and 50.","wordpress-seo")).min(1,(0,Lt.__)("The number you've entered is not between 1 and 50.","wordpress-seo")).max(50,(0,Lt.__)("The number you've entered is not between 1 and 50.","wordpress-seo"))}),wpseo_social:Ii().shape({og_default_image_id:mi().isMediaTypeImage(),facebook_site:ui().url((0,Lt.__)("The profile is not valid. Please enter a valid URL.","wordpress-seo")),mastodon_url:ui().url((0,Lt.__)("The profile is not valid. Please enter a valid URL.","wordpress-seo")),twitter_site:ui().isValidTwitterUrlOrHandle(),other_social_urls:Ci().of(ui().url((0,Lt.__)("The profile is not valid. Please enter a valid URL.","wordpress-seo"))),pinterestverify:ui().matches(Bi,(0,Lt.__)("The verification code is not valid. Please use only the letters A to F, numbers, underscores and dashes.","wordpress-seo"))}),wpseo_titles:Ii().shape({open_graph_frontpage_image_id:mi().isMediaTypeImage(),company_logo_id:mi().isMediaTypeImage(),person_logo_id:mi().isMediaTypeImage(),...(0,le.reduce)(e,((e,{name:t,hasArchive:s})=>({...e,..."attachment"!==t&&{[`social-image-id-${t}`]:mi().isMediaTypeImage().isMediaMimeTypeAllowed()},...s&&{[`social-image-id-ptarchive-${t}`]:mi().isMediaTypeImage().isMediaMimeTypeAllowed()}})),{}),...(0,le.reduce)(t,((e,{name:t})=>({...e,[`social-image-id-tax-${t}`]:mi().isMediaTypeImage().isMediaMimeTypeAllowed()})),{}),"social-image-id-author-wpseo":mi().isMediaTypeImage().isMediaMimeTypeAllowed(),"social-image-id-archive-wpseo":mi().isMediaTypeImage().isMediaMimeTypeAllowed(),"social-image-id-tax-post_format":mi().isMediaTypeImage().isMediaMimeTypeAllowed()})}),qi=new RegExp(/^input-wpseo_titles-(post_types|taxonomy)-(?\S+)-(maintax|ptparent)$/is),Wi={fieldId:"DUMMY_ITEM"},Hi=({fieldId:t,fieldLabel:s})=>{const{isPostTypeOrTaxonomyBreadcrumbSetting:r,postTypeOrTaxonomyName:a}=(0,i.useMemo)((()=>{var e;const s=qi.exec(t);return{isPostTypeOrTaxonomyBreadcrumbSetting:Boolean(s),postTypeOrTaxonomyName:null==s||null===(e=s.groups)||void 0===e?void 0:e.name}}),[t,qi]);return r?(0,e.createElement)(e.Fragment,null,s,a&&(0,e.createElement)(l.Code,{className:"yst-ml-2 group-hover:yst-bg-primary-200 group-hover:yst-text-primary-800"},a)):s};Hi.propTypes={fieldId:ir().string.isRequired,fieldLabel:ir().string.isRequired};const Yi=({title:t,children:s})=>(0,e.createElement)("div",{className:"yst-border-t yst-border-slate-100 yst-p-6 yst-py-12 yst-space-3 yst-text-center yst-text-sm"},(0,e.createElement)("span",{className:"yst-block yst-font-semibold yst-text-slate-900"},t),s);Yi.propTypes={title:ir().node.isRequired,children:ir().node.isRequired};const Gi=({buttonId:t="button-search",modalId:s="modal-search"})=>{const[r,,,a,o]=(0,l.useToggleState)(!1),[n,c]=(0,i.useState)(""),d=sa("selectPreference",[],"userLocale"),u=sa("selectQueryableSearchIndex"),[p,m]=(0,i.useState)([]),f=(0,l.useSvgAria)(),h=et(),y=(0,i.useRef)(null),{platform:_,os:w}=(0,i.useMemo)((()=>{var e,t;return ta().parse(null===(e=window)||void 0===e||null===(t=e.navigator)||void 0===t?void 0:t.userAgent)}),[]),{isMobileMenuOpen:g,setMobileMenuOpen:b}=(0,l.useNavigationContext)(),[v,E]=(0,i.useState)(""),x=(0,i.useMemo)((()=>{switch(d){case"ko-KR":case"zh-CN":case"zh-HK":case"zh-TW":return 1;default:return 2}}),[d]);fn("meta+k",(e=>{e.preventDefault(),"desktop"!==(null==_?void 0:_.type)||r||g||a()}),{enableOnFormTags:!0,enableOnContentEditable:!0},[r,a,_,g]);const k=(0,i.useCallback)((({route:e,fieldId:t})=>{t!==Wi.fieldId&&(b(!1),o(),c(""),m([]),h(`${e}#${t}`))}),[o,c,b]),S=(0,i.useCallback)((0,le.debounce)((e=>{const t=(0,le.trim)(e);if(E(""),t.length{const r=(0,le.reduce)(s,((e,s)=>(0,le.includes)(null==t?void 0:t.keywords,s)?++e:e),0);return 0===r?e:[...e,{...t,hits:r}]}),[]),a=r.sort(((e,t)=>t.hits-e.hits)),o=(0,le.groupBy)(a,"route"),n=(0,le.values)(o).sort(((e,t)=>{const s=(0,le.reduce)(e,((e,t)=>(0,le.max)([e,t.hits])),0);return(0,le.reduce)(t,((e,t)=>(0,le.max)([e,t.hits])),0)-s}));(0,le.isEmpty)(r)?E((0,Lt.__)("No results found","wordpress-seo")):E((0,Lt.sprintf)(/* translators: %d expands to the number of results found. */ (0,Lt._n)("%d result found, use up and down arrow keys to navigate","%d results found, use up and down arrow keys to navigate",r.length,"wordpress-seo"),r.length)),m(n)}),100),[u,d,E]),L=(0,i.useCallback)((e=>{c(e.target.value),S(e.target.value)}),[c,S]),T=(0,i.useCallback)((({active:e})=>or()("yst-group yst-block yst-no-underline yst-text-sm yst-text-slate-800 yst-select-none yst-py-3 yst-px-4 hover:yst-bg-primary-600 hover:yst-text-white focus:yst-bg-primary-600 focus:yst-text-white",e&&"yst-text-white yst-bg-primary-600")),[]);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("button",{id:t,type:"button",className:"yst-w-full yst-flex yst-items-center yst-bg-white yst-text-sm yst-leading-6 yst-text-slate-500 yst-rounded-md yst-border yst-border-slate-300 yst-shadow-sm yst-py-1.5 yst-pl-2 yst-pr-3 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-offset-2 focus:yst-ring-primary-500",onClick:a},(0,e.createElement)(Qo,{className:"yst-flex-none yst-w-5 yst-h-5 yst-mr-3 yst-text-slate-400",...f}),(0,e.createElement)("span",{className:"yst-overflow-hidden yst-whitespace-nowrap yst-text-ellipsis"},n||(0,Lt.__)("Quick search...","wordpress-seo")),"desktop"===(null==_?void 0:_.type)&&(0,e.createElement)("span",{className:"yst-ml-auto yst-flex-none yst-text-xs yst-font-semibold yst-text-slate-400"},"macOS"===(null==w?void 0:w.name)?(0,Lt.__)("⌘K","wordpress-seo"):(0,Lt.__)("CtrlK","wordpress-seo"))),(0,e.createElement)(l.Modal,{id:s,onClose:o,isOpen:r,initialFocus:y,position:"top-center","aria-label":(0,Lt.__)("Search","wordpress-seo")},(0,e.createElement)(l.Modal.Panel,{hasCloseButton:!1},(0,e.createElement)(Qa,null,v&&(0,e.createElement)(no,{message:v,"aria-live":"polite"})),(0,e.createElement)(Jo,{as:"div",className:"yst--m-6",onChange:k},(0,e.createElement)("div",{className:"yst-relative"},(0,e.createElement)(Qo,{className:"yst-pointer-events-none yst-absolute yst-top-3.5 yst-left-4 yst-h-5 yst-w-5 yst-text-slate-400",...f}),(0,e.createElement)(Jo.Input,{ref:y,id:"input-search",placeholder:(0,Lt.__)("Search...","wordpress-seo"),"aria-label":(0,Lt.__)("Search","wordpress-seo"),value:n,onChange:L,className:"yst-h-12 yst-w-full yst-border-0 yst-rounded-lg sm:yst-text-sm yst-bg-transparent yst-px-11 yst-text-slate-800 yst-placeholder-slate-500 focus:yst-outline-none focus:yst-ring-inset focus:yst-ring-2 focus:yst-ring-primary-500 focus:yst-border-primary-500"}),(0,e.createElement)("div",{className:"yst-modal__close"},(0,e.createElement)("button",{type:"button",onClick:o,className:"yst-modal__close-button"},(0,e.createElement)("span",{className:"yst-sr-only"},(0,Lt.__)("Close","wordpress-seo")),(0,e.createElement)(Xo,{className:"yst-h-6 yst-w-6",...f})))),n.length>=x&&!(0,le.isEmpty)(p)&&(0,e.createElement)(Jo.Options,{static:!0,className:"yst-max-h-[calc(90vh-10rem)] yst-scroll-pt-11 yst-scroll-pb-2 yst-space-y-2 yst-overflow-y-auto yst-pb-2"},(0,le.map)(p,((t,s)=>{var r;return(0,e.createElement)("div",{key:(null==t||null===(r=t[0])||void 0===r?void 0:r.route)||`group-${s}`,role:"presentation"},(0,e.createElement)(l.Title,{id:`group-${s}-title`,as:"h4",size:"5",className:"yst-bg-slate-100 yst-font-semibold yst-py-3 yst-px-4",role:"presentation","aria-hidden":"true"},(0,le.first)(t).routeLabel),(0,e.createElement)("div",{role:"presentation"},(0,le.map)(t,(t=>(0,e.createElement)(Jo.Option,{key:t.fieldId,value:t,className:T},(0,e.createElement)(Hi,{...t}))))))}))),n.length=x&&(0,le.isEmpty)(p)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Yi,{title:(0,Lt.__)("No results found","wordpress-seo")},(0,e.createElement)("p",{className:"yst-text-slate-500"},(0,Lt.__)("We couldn’t find anything with that term.","wordpress-seo"))),(0,e.createElement)(Jo.Options,{className:"yst-visible-"},(0,e.createElement)(Jo.Option,{value:Wi})))))))};Gi.propTypes={buttonId:ir().string,modalId:ir().string};const Ki=Gi,Zi=({handleRefreshClick:t,supportLink:s})=>(0,e.createElement)("div",{className:"yst-flex yst-gap-2"},(0,e.createElement)(l.Button,{onClick:t},(0,Lt.__)("Refresh this page","wordpress-seo")),(0,e.createElement)(l.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,Lt.__)("Contact support","wordpress-seo")));Zi.propTypes={handleRefreshClick:ir().func.isRequired,supportLink:ir().string.isRequired};const Ji=({handleRefreshClick:t,supportLink:s})=>(0,e.createElement)("div",{className:"yst-grid yst-grid-cols-1 yst-gap-y-2"},(0,e.createElement)(l.Button,{className:"yst-order-last",onClick:t},(0,Lt.__)("Refresh this page","wordpress-seo")),(0,e.createElement)(l.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,Lt.__)("Contact support","wordpress-seo")));Ji.propTypes={handleRefreshClick:ir().func.isRequired,supportLink:ir().string.isRequired};const Qi=({error:t,children:s})=>(0,e.createElement)("div",{role:"alert",className:"yst-max-w-screen-sm yst-p-8 yst-space-y-4"},(0,e.createElement)(l.Title,null,(0,Lt.__)("Something went wrong. An unexpected error occurred.","wordpress-seo")),(0,e.createElement)("p",null,(0,Lt.__)("We're very sorry, but it seems like the following error has interrupted our application:","wordpress-seo")),(0,e.createElement)(l.Alert,{variant:"error"},(null==t?void 0:t.message)||(0,Lt.__)("Undefined error message.","wordpress-seo")),(0,e.createElement)("p",null,(0,Lt.__)("Unfortunately, this means that any unsaved changes in this section will be lost. You can try and refresh this page to resolve the problem. If this error still occurs, please get in touch with our support team, and we'll get you all the help you need!","wordpress-seo")),s);Qi.propTypes={error:ir().object.isRequired,children:ir().node},Qi.VerticalButtons=Ji,Qi.HorizontalButtons=Zi;const Xi=({error:t})=>{const s=(0,i.useCallback)((()=>{var e,t;return null===(e=window)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.reload()}),[]),r=sa("selectLink",[],"https://yoa.st/settings-error-support");return(0,e.createElement)(Qi,{error:t},(0,e.createElement)(Qi.HorizontalButtons,{supportLink:r,handleRefreshClick:s}))};Xi.propTypes={error:ir().object.isRequired};const el=Xi;function tl(t,s,r=""){return(0,i.createInterpolateElement)(t,{a:(0,e.createElement)("a",{id:r,href:s,target:"_blank",rel:"noopener noreferrer"})})}const sl=(t=>{const s=({name:s,isDummy:r=!1,...a})=>{const o=sa("selectDefaultSettingValue",[s],s);return r?(0,e.createElement)(t,{name:s,...a,disabled:!0,value:o,onChange:le.noop,tags:[],onAddTag:le.noop,onRemoveTag:le.noop}):(0,e.createElement)(t,{name:s,...a})};return s.propTypes={name:ir().string.isRequired,isDummy:ir().bool},s})(wa),rl=Ia(ya),al=({name:t,label:s,singularLabel:r,hasArchive:a,hasSchemaArticleType:o,isNew:n})=>{const c=sa("selectReplacementVariablesFor",[t],t,"custom_post_type"),d=sa("selectUpsellSettingsAsProps"),u=sa("selectRecommendedReplacementVariablesFor",[t],t,"custom_post_type"),p=sa("selectReplacementVariablesFor",[t],`${t}_archive`,"custom-post-type_archive"),m=sa("selectRecommendedReplacementVariablesFor",[t],`${t}_archive`,"custom-post-type_archive"),f=sa("selectPreference",[],"isPremium"),h=sa("selectLink",[],"https://yoa.st/4cr"),y=sa("selectArticleTypeValuesFor",[t],t),_=sa("selectPageTypeValuesFor",[t],t),w=sa("selectPreference",[],"isWooCommerceActive"),g=sa("selectPreference",[],"hasWooCommerceShopPage"),b=sa("selectPreference",[],"editWooCommerceShopPageUrl"),v=sa("selectPreference",[],"wooCommerceShopPageSettingUrl"),E=sa("selectPreference",[],"userLocale"),x=sa("selectLink",[],"https://yoa.st/show-x"),k=sa("selectLink",[],"https://yoa.st/4e0"),S=sa("selectLink",[],"https://yoa.st/get-custom-fields"),L=sa("selectLink",[],"https://yoa.st/post-type-schema"),{updatePostTypeReviewStatus:T}=Xr(),F=sa("selectPreference",[],"isWooCommerceSEOActive")&&"product"===t,$=(0,Lt.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,Lt.__)("You have %1$s activated on your site, automatically setting the Page type for your products to 'Item Page'. As a result, the Page type selection is disabled.","wordpress-seo"),"Yoast WooCommerce SEO");(0,i.useEffect)((()=>{n&&T(t)}),[t,T]);const P=(0,i.useMemo)((()=>yn(s,E)),[s,E]),R=(0,i.useMemo)((()=>yn(r,E)),[r,E]),N=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),I=(0,i.useMemo)((()=>w&&"product"===t),[t,w]),O=(0,i.useMemo)((()=>g?tl((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("You can edit the SEO metadata for this custom type on the %1$sShop page%2$s.","wordpress-seo"),"",""),b,"link-edit-woocommerce-shop-page"):tl((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("You haven't set a Shop page in your WooCommerce settings. %1$sPlease do this first%2$s.","wordpress-seo"),"",""),v,"link-woocommerce-shop-page-setting")),[g,v,b]),C=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("You can add multiple custom fields and separate them by using %1$senter%2$s or %1$scomma%2$s.","wordpress-seo"),"",""),{em:(0,e.createElement)("em",null)})),[]),A=(0,i.useMemo)((()=>tl((0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. %2$s and %3$s expand to opening and closing anchor tag. %4$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s should be described by default in %2$syour site's Schema.org markup%3$s. You can always change the settings for individual %1$s in the %4$s sidebar or metabox.","wordpress-seo"),P,"","","Yoast SEO"),L,"link-post-type-schema")),[P,L]),{values:M}=q(),{opengraph:D}=M.wpseo_social,{"breadcrumbs-enable":B}=M.wpseo_titles;return(0,e.createElement)(lo,{title:s,description:(0,Lt.sprintf)(/* translators: %1$s expands to the post type plural, e.g. posts. */ (0,Lt.__)("Determine how your %1$s should look in search engines and on social media.","wordpress-seo"),P)},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. %2$s expands to "Yoast SEO". (0,Lt.__)("Determine what your %1$s should look like in the search results by default. You can always customize the settings for individual %1$s in the %2$s sidebar or metabox.","wordpress-seo"),P,"Yoast SEO")},(0,e.createElement)(ca,{name:`wpseo_titles.noindex-${t}`,id:`input-wpseo_titles-noindex-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Show %1$s in search results","wordpress-seo"),P),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Disabling this means that %1$s will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),P)," ",(0,e.createElement)(l.Link,{href:x,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),className:"yst-max-w-sm"}),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(ya,{type:"title",name:`wpseo_titles.title-${t}`,fieldId:`input-wpseo_titles-title-${t}`,label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:u}),(0,e.createElement)(ya,{type:"description",name:`wpseo_titles.metadesc-${t}`,fieldId:`input-wpseo_titles-metadesc-${t}`,label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:u,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),f&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. %2$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s should look on social media by default. You can always customize the settings for individual %1$s in the %2$s sidebar or metabox.","wordpress-seo"),P,"Yoast SEO")},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!f,variant:"card",cardLink:k,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...d},(0,e.createElement)(za,{isEnabled:!f||D}),(0,e.createElement)(ma,{id:`wpseo_titles-social-image-${t}`,label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:N,mediaUrlName:`wpseo_titles.social-image-url-${t}`,mediaIdName:`wpseo_titles.social-image-id-${t}`,disabled:!D,isDummy:!f}),(0,e.createElement)(rl,{type:"title",name:`wpseo_titles.social-title-${t}`,fieldId:`input-wpseo_titles-social-title-${t}`,label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:u,disabled:!D,isDummy:!f}),(0,e.createElement)(rl,{type:"description",name:`wpseo_titles.social-description-${t}`,fieldId:`input-wpseo_titles-social-description-${t}`,label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:u,className:"yst-replacevar--description",disabled:!D,isDummy:!f}))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Schema","wordpress-seo"),description:A},(0,e.createElement)($a,{as:l.SelectField,type:"select",name:`wpseo_titles.schema-page-type-${t}`,id:`input-wpseo_titles-schema-page-type-${t}`,label:(0,Lt.__)("Page type","wordpress-seo"),options:F?_.filter((({value:e})=>"ItemPage"===e)):_,disabled:F,className:"yst-max-w-sm",description:F?$:null}),o&&(0,e.createElement)("div",null,(0,e.createElement)($a,{as:l.SelectField,type:"select",name:`wpseo_titles.schema-article-type-${t}`,id:`input-wpseo_titles-schema-article-type-${t}`,label:(0,Lt.__)("Article type","wordpress-seo"),options:y,className:"yst-max-w-sm"}),(0,e.createElement)(Va,{name:t}))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Additional settings","wordpress-seo")},(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:`wpseo_titles.display-metabox-pt-${t}`,id:`input-wpseo_titles-display-metabox-pt-${t}`,label:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),description:(0,Lt.__)("Show or hide our tools and controls in the content editor.","wordpress-seo"),className:"yst-max-w-sm"}),(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!f,variant:"card",cardLink:S,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...d},(0,e.createElement)(sl,{name:`wpseo_titles.page-analyse-extra-${t}`,id:`input-wpseo_titles-page-analyse-extra-${t}`,label:(0,Lt.__)("Add custom fields to page analysis","wordpress-seo"),labelSuffix:f&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium"),description:(0,e.createElement)(e.Fragment,null,C,(0,e.createElement)("br",null),(0,e.createElement)(l.Link,{id:`link-custom-fields-page-analysis-${t}`,href:h,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about our custom field analysis","wordpress-seo")),"."),isDummy:!f}))),a&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("hr",{className:"yst-my-16"}),(0,e.createElement)("div",{className:"yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",className:"yst-mb-2"},(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. Posts. (0,Lt.__)("%1$s archive","wordpress-seo"),s)),(0,e.createElement)("p",{className:"yst-text-tiny"},I&&O,!I&&(0,Lt.sprintf)( // translators: %1$s expands to the post type singular, e.g. post. (0,Lt.__)("These settings are specifically for optimizing your %1$s archive.","wordpress-seo"),R))),!I&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Determine how your %1$s archive should look in search engines.","wordpress-seo"),P)},(0,e.createElement)(ca,{name:`wpseo_titles.noindex-ptarchive-${t}`,id:`input-wpseo_titles-noindex-ptarchive-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Show the archive for %1$s in search results","wordpress-seo"),P),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Disabling this means that the archive for %1$s will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),P),className:"yst-max-w-sm"}),(0,e.createElement)(ya,{type:"title",name:`wpseo_titles.title-ptarchive-${t}`,fieldId:`input-wpseo_titles-title-ptarchive-${t}`,label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:p,recommendedReplacementVariables:m}),(0,e.createElement)(ya,{type:"description",name:`wpseo_titles.metadesc-ptarchive-${t}`,fieldId:`input-wpseo_titles-metadesc-ptarchive-${t}`,label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:p,recommendedReplacementVariables:m,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),f&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. posts. (0,Lt.__)("Determine how your %1$s archive should look on social media.","wordpress-seo"),P)},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!f,variant:"card",cardLink:k,cardText:(0,Lt.sprintf)( // translators: %1$s expands to Premium. (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...d},(0,e.createElement)(ma,{id:`wpseo_titles-social-image-ptarchive-${t}`,label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:N,mediaUrlName:`wpseo_titles.social-image-url-ptarchive-${t}`,mediaIdName:`wpseo_titles.social-image-id-ptarchive-${t}`,disabled:!D,isDummy:!f}),(0,e.createElement)(rl,{type:"title",name:`wpseo_titles.social-title-ptarchive-${t}`,fieldId:`input-wpseo_titles-social-title-ptarchive-${t}`,label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:p,recommendedReplacementVariables:m,disabled:!D,isDummy:!f}),(0,e.createElement)(rl,{type:"description",name:`wpseo_titles.social-description-ptarchive-${t}`,fieldId:`input-wpseo_titles-social-description-ptarchive-${t}`,label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:p,recommendedReplacementVariables:m,className:"yst-replacevar--description",disabled:!D,isDummy:!f}))),B&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Additional settings","wordpress-seo")},(0,e.createElement)(te,{as:l.TextField,type:"text",name:`wpseo_titles.bctitle-ptarchive-${t}`,id:`input-wpseo_titles-bctitle-ptarchive-${t}`,label:(0,Lt.__)("Breadcrumbs title","wordpress-seo")}))))))))};al.propTypes={name:ir().string.isRequired,label:ir().string.isRequired,singularLabel:ir().string.isRequired,hasArchive:ir().bool.isRequired,hasSchemaArticleType:ir().bool.isRequired,isNew:ir().bool.isRequired};const ol=al,nl=Ia(ya),il=({name:t,label:s,postTypes:r,showUi:a,isNew:o})=>{const n=sa("selectPostTypes",[r],r),c=sa("selectUpsellSettingsAsProps"),d=sa("selectReplacementVariablesFor",[t],t,"term-in-custom-taxonomy"),u=sa("selectRecommendedReplacementVariablesFor",[t],t,"term-in-custom-taxonomy"),p=sa("selectLink",[],"https://yoa.st/show-x"),m=sa("selectPreference",[],"isPremium"),f=sa("selectPreference",[],"userLocale"),h=sa("selectPreference",[],"editTaxonomyUrl"),y=sa("selectLink",[],"https://yoa.st/4e0"),_=(0,i.useMemo)((()=>yn(s,f)),[s,f]),w=(0,i.useMemo)((()=>(0,le.values)(n)),[n]),g=(0,i.useMemo)((()=>(0,le.initial)(w)),[w]),b=(0,i.useMemo)((()=>(0,le.last)(w)),[w]),{updateTaxonomyReviewStatus:v}=Xr();(0,i.useEffect)((()=>{o&&v(t)}),[t,v]);const E=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),x=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %s expands to /category/ */ (0,Lt.__)("Category URLs in WordPress contain a prefix, usually %s. Show or hide that prefix in category URLs.","wordpress-seo"),""),{code:(0,e.createElement)(l.Code,null,"/category/")})),[]),k=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s and %2$s expand to post type plurals in code blocks, e.g. Posts Pages and Custom Post Type. */ (0,Lt.__)("This taxonomy is used for %1$s and %2$s.","wordpress-seo"),"",""),{code1:(0,e.createElement)(e.Fragment,null,(0,le.map)(g,((t,s)=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)(l.Code,{key:null==t?void 0:t.name},null==t?void 0:t.label),s(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to the post type plural in code block, e.g. Posts. */ (0,Lt.__)("This taxonomy is used for %2$s.","wordpress-seo"),s,""),{code:(0,e.createElement)(l.Code,null,null==b?void 0:b.label)})),[s,b]),{values:L}=q(),{opengraph:T}=L.wpseo_social,F=(0,i.useMemo)((()=>g.length>1?k:S),[g,k,S]),$=(0,i.useCallback)((()=>a&&(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:`wpseo_titles.display-metabox-tax-${t}`,id:`input-wpseo_titles-display-metabox-tax-${t}`,label:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),description:(0,Lt.__)("Show or hide our tools and controls in the content editor.","wordpress-seo"),className:"yst-max-w-sm"})),[a,t]),P=(0,i.useCallback)((()=>"category"===t&&(0,e.createElement)(ca,{name:"wpseo_titles.stripcategorybase",id:"input-wpseo_titles-stripcategorybase",label:(0,Lt.__)("Show the categories prefix in the slug","wordpress-seo"),description:x,className:"yst-max-w-sm"})),[t,x]),R=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to the name of the taxonomy. */ (0,Lt.__)("The name of this category is %1$s.","wordpress-seo"),""),{link:(0,e.createElement)(l.Link,{href:`${h}?taxonomy=${t}`},t)})),[t]);return(0,e.createElement)(lo,{title:s,description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)(/* translators: %1$s expands to the taxonomy plural, e.g. categories. */ (0,Lt.__)("Determine how your %1$s should look in search engines and on social media.","wordpress-seo"),_),(0,e.createElement)("br",null),(0,le.isEmpty)(w)?R:F)},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to the post type plural, e.g. Posts. %2$s expands to "Yoast SEO". (0,Lt.__)("Determine what your %1$s should look like in the search results by default. You can always customize the settings for individual %1$s in the %2$s metabox.","wordpress-seo"),_,"Yoast SEO")},(0,e.createElement)(ca,{name:`wpseo_titles.noindex-tax-${t}`,id:`input-wpseo_titles-noindex-tax-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to the taxonomy plural, e.g. Categories. (0,Lt.__)("Show %1$s in search results","wordpress-seo"),_),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to the taxonomy plural, e.g. Categories. (0,Lt.__)("Disabling this means that archive pages for %1$s will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),_)," ",(0,e.createElement)(l.Link,{href:p,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),className:"yst-max-w-sm"}),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(ya,{type:"title",name:`wpseo_titles.title-tax-${t}`,fieldId:`input-wpseo_titles-title-tax-${t}`,label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u}),(0,e.createElement)(ya,{type:"description",name:`wpseo_titles.metadesc-tax-${t}`,fieldId:`input-wpseo_titles-metadesc-tax-${t}`,label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),m&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to the taxonomy plural, e.g. Categories. %2$s expand to Yoast SEO. (0,Lt.__)("Determine how your %1$s should look on social media by default. You can always customize the settings for individual %1$s in the %2$s metabox.","wordpress-seo"),_,"Yoast SEO")},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!m,variant:"card",cardLink:y,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...c},(0,e.createElement)(za,{isEnabled:!m||T}),(0,e.createElement)(ma,{id:`wpseo_titles-social-image-tax-${t}`,label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:E,mediaUrlName:`wpseo_titles.social-image-url-tax-${t}`,mediaIdName:`wpseo_titles.social-image-id-tax-${t}`,disabled:!T,isDummy:!m}),(0,e.createElement)(nl,{type:"title",name:`wpseo_titles.social-title-tax-${t}`,fieldId:`input-wpseo_titles-social-title-tax-${t}`,label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,disabled:!T,isDummy:!m}),(0,e.createElement)(nl,{type:"description",name:`wpseo_titles.social-description-tax-${t}`,fieldId:`input-wpseo_titles-social-description-tax-${t}`,label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,className:"yst-replacevar--description",disabled:!T,isDummy:!m}))),(a||"category"===t)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Additional settings","wordpress-seo")},$(),P())))))};il.propTypes={name:ir().string.isRequired,label:ir().string.isRequired,postTypes:ir().arrayOf(ir().string).isRequired,showUi:ir().bool.isRequired,isNew:ir().bool.isRequired};const ll=il,cl=Ia(ya),dl=()=>{const t=(0,Lt.__)("Author archives","wordpress-seo"),s=(0,Lt.__)("Author archive","wordpress-seo"),r=sa("selectPreference",[],"userLocale"),a=(0,i.useMemo)((()=>yn(t,r)),[t,r]),o=(0,i.useMemo)((()=>yn(s,r)),[s,r]),n=sa("selectUpsellSettingsAsProps"),c=sa("selectReplacementVariablesFor",[],"author_archives","custom-post-type_archive"),d=sa("selectRecommendedReplacementVariablesFor",[],"author_archives","custom-post-type_archive"),u=sa("selectLink",[],"https://yoa.st/duplicate-content"),p=sa("selectLink",[],"https://yoa.st/show-x"),m=sa("selectPreference",[],"isPremium"),f=sa("selectExampleUrl",[],"/author/example/"),h=sa("selectLink",[],"https://yoa.st/4e0"),y=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),_=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to "author archive". * %2$s expands to an example URL, e.g. https://example.com/author/example/. * %3$s and %4$s expand to opening and closing tags. */ (0,Lt.__)("If you're running a one author blog, the %1$s (e.g. %2$s) will be exactly the same as your homepage. This is what's called a %3$sduplicate content problem%4$s. If this is the case on your site, you can choose to either disable it (which makes it redirect to the homepage), or prevent it from showing up in search results.","wordpress-seo"),o,"","",""),{exampleUrl:(0,e.createElement)(l.Code,null,f),a:(0,e.createElement)("a",{href:u,target:"_blank",rel:"noopener"})})),[]),{values:w}=q(),{opengraph:g}=w.wpseo_social,{"disable-author":b,"noindex-author-wpseo":v,"noindex-author-noposts-wpseo":E}=w.wpseo_titles;return(0,e.createElement)(lo,{title:t,description:_},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(ca,{name:"wpseo_titles.disable-author",id:"input-wpseo_titles-disable-author",label:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Enable %1$s","wordpress-seo"),a),description:(0,Lt.sprintf)( // translators: %1$s expands to "author archive". (0,Lt.__)("Disabling this will redirect the %1$s to your site's homepage.","wordpress-seo"),o),className:"yst-max-w-sm"}),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Determine how your %1$s should look in search engines.","wordpress-seo"),a)},(0,e.createElement)(ca,{name:"wpseo_titles.noindex-author-wpseo",id:"input-wpseo_titles-noindex-author-wpseo",label:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Show %1$s in search results","wordpress-seo"),a),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Disabling this means that %1$s will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),a)," ",(0,e.createElement)(l.Link,{href:p,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),disabled:b,checked:!b&&!v,className:"yst-max-w-sm"}),(0,e.createElement)(ca,{name:"wpseo_titles.noindex-author-noposts-wpseo",id:"input-wpseo_titles-noindex-author-noposts-wpseo",label:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Show %1$s without posts in search results","wordpress-seo"),a),description:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Disabling this means that %1$s without any posts will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),a),checked:!b&&!v&&!E,disabled:b||v,className:"yst-max-w-sm"}),(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.title-author-wpseo",fieldId:"input-wpseo_titles-title-author-wpseo",label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:d,disabled:b}),(0,e.createElement)(ya,{type:"description",name:"wpseo_titles.metadesc-author-wpseo",fieldId:"input-wpseo_titles-metadesc-author-wpseo",label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:d,disabled:b,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),m&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to "author archives". (0,Lt.__)("Determine how your %1$s should look on social media.","wordpress-seo"),a)},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!m,variant:"card",cardLink:h,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...n},(0,e.createElement)(za,{isEnabled:!m||g}),(0,e.createElement)(ma,{id:"wpseo_titles-social-image-author-wpseo",label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:y,mediaUrlName:"wpseo_titles.social-image-url-author-wpseo",mediaIdName:"wpseo_titles.social-image-id-author-wpseo",disabled:b||!g,isDummy:!m}),(0,e.createElement)(cl,{type:"title",name:"wpseo_titles.social-title-author-wpseo",fieldId:"input-wpseo_titles-social-title-author-wpseo",label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:d,disabled:b||!g,isDummy:!m}),(0,e.createElement)(cl,{type:"description",name:"wpseo_titles.social-description-author-wpseo",fieldId:"input-wpseo_titles-social-description-author-wpseo",label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:c,recommendedReplacementVariables:d,className:"yst-replacevar--description",disabled:b||!g,isDummy:!m}))))))},ul=()=>{const t=sa("selectLink",[],"https://yoa.st/header-breadcrumbs"),s=sa("selectLink",[],"https://yoa.st/breadcrumbs"),r=sa("selectBreadcrumbsForPostTypes"),a=sa("selectBreadcrumbsForTaxonomies"),o=sa("selectHasPageForPosts");return(0,e.createElement)(lo,{title:(0,Lt.__)("Breadcrumbs","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("Configure the appearance and behavior of %1$syour breadcrumbs%2$s.","wordpress-seo"),"",""),t,"link-header-breadcrumbs")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Breadcrumb appearance","wordpress-seo"),description:(0,Lt.__)("Choose the general appearance of your breadcrumbs.","wordpress-seo")},(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-sep",id:"input-wpseo_titles-breadcrumbs-sep",label:(0,Lt.__)("Separator between breadcrumbs","wordpress-seo"),placeholder:(0,Lt.__)("Add separator","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-home",id:"input-wpseo_titles-breadcrumbs-home",label:(0,Lt.__)("Anchor text for the Homepage","wordpress-seo"),placeholder:(0,Lt.__)("Add anchor text","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-prefix",id:"input-wpseo_titles-breadcrumbs-prefix",label:(0,Lt.__)("Prefix for the breadcrumb path","wordpress-seo"),placeholder:(0,Lt.__)("Add prefix","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-archiveprefix",id:"input-wpseo_titles-breadcrumbs-archiveprefix",label:(0,Lt.__)("Prefix for archive breadcrumbs","wordpress-seo"),placeholder:(0,Lt.__)("Add prefix","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-searchprefix",id:"input-wpseo_titles-breadcrumbs-searchprefix",label:(0,Lt.__)("Prefix for search page breadcrumbs","wordpress-seo"),placeholder:(0,Lt.__)("Add prefix","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"wpseo_titles.breadcrumbs-404crumb",id:"input-wpseo_titles-breadcrumbs-404crumb",label:(0,Lt.__)("Breadcrumb for 404 page","wordpress-seo"),placeholder:(0,Lt.__)("Add separator","wordpress-seo")}),o&&(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:"wpseo_titles.breadcrumbs-display-blog-page",id:"input-wpseo_titles-breadcrumbs-display-blog-page",label:(0,Lt.__)("Show blog page in breadcrumbs","wordpress-seo"),className:"yst-max-w-sm"}),(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:"wpseo_titles.breadcrumbs-boldlast",id:"input-wpseo_titles-breadcrumbs-boldlast",label:(0,Lt.__)("Bold the last page","wordpress-seo"),className:"yst-max-w-sm"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Breadcrumbs for post types","wordpress-seo"),description:(0,Lt.__)("Choose which Taxonomy you wish to show in the breadcrumbs for Post types.","wordpress-seo")},(0,le.map)(r,((t,s)=>(0,e.createElement)($a,{key:s,as:l.SelectField,name:`wpseo_titles.post_types-${s}-maintax`,id:`input-wpseo_titles-post_types-${s}-maintax`,label:t.label,labelSuffix:(0,e.createElement)(l.Code,{className:"yst-ml-2"},s),options:t.options,className:"yst-max-w-sm"})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Breadcrumbs for taxonomies","wordpress-seo"),description:(0,Lt.__)("Choose which Post type you wish to show in the breadcrumbs for Taxonomies.","wordpress-seo")},(0,le.map)(a,(t=>(0,e.createElement)($a,{key:t.name,as:l.SelectField,name:`wpseo_titles.taxonomy-${t.name}-ptparent`,id:`input-wpseo_titles-taxonomy-${t.name}-ptparent`,label:t.label,options:t.options,className:"yst-max-w-sm",labelSuffix:(0,e.createElement)(l.Code,{className:"yst-ml-2"},t.name)})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("How to insert breadcrumbs in your theme","wordpress-seo")},(0,e.createElement)("p",null,tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. %3$s expands to "Yoast SEO". (0,Lt.__)("Not sure how to implement the %3$s breadcrumbs on your site? Read %1$sour help article on breadcrumbs implementation%2$s.","wordpress-seo"),"","","Yoast SEO"),s,"link-breadcrumbs-help-article")),(0,e.createElement)("p",null,(0,Lt.__)("You can always choose to enable/disable them for your theme below. This setting will not apply to breadcrumbs inserted through a widget, a block or a shortcode.","wordpress-seo")),(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:"wpseo_titles.breadcrumbs-enable",id:"input-wpseo_titles-breadcrumbs-enable",label:(0,Lt.__)("Enable breadcrumbs for your theme","wordpress-seo"),className:"yst-max-w-sm"})))))},pl=Ca(te),ml=Na($a),fl=Oa(ml),hl=()=>{const t=sa("selectPreference",[],"isPremium",!1),s=sa("selectPreference",[],"isMultisite",!1),r=sa("selectUpsellSettingsAsProps"),a=sa("selectLink",[],"https://yoa.st/crawl-settings"),o=sa("selectLink",[],"https://yoa.st/permalink-cleanup"),n=sa("selectLink",[],"https://yoa.st/block-unwanted-bots-info"),c=sa("selectLink",[],"https://yoa.st/block-unwanted-bots-upsell"),d=(0,i.useMemo)((()=>(0,Lt.sprintf)(/* translators: %1$s expands to an example within a code tag. */ (0,Lt.__)("E.g., %1$s","wordpress-seo"),"")),[]),u=(0,i.useMemo)((()=>(0,Lt.sprintf)(/* translators: %1$s and %2$s both expand to an example within a code tag. */ (0,Lt.__)("E.g., %1$s and %2$s","wordpress-seo"),"","")),[]),p=(0,i.useMemo)((()=>({page:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s are replaced by opening and closing tags. */ (0,Lt.__)("Make your site more efficient and more environmentally friendly by preventing search engines from crawling things they don’t need to, and by removing unused WordPress features. %1$sLearn more about crawl settings and how they could benefit your site%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{id:"link-crawl-settings-info",href:a,target:"_blank",rel:"noopener noreferrer"})}),removeUnwantedMetadata:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to `` within a tag. */ (0,Lt.__)("WordPress adds a lot of links and content to your site's %1$s and HTTP headers. For most websites you can safely disable all of these, which can help to save bytes, electricity, and trees.","wordpress-seo"),""),{code:(0,e.createElement)(l.Code,null,"")}),removeShortlinks:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeRestApiLinks:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeRsdWlwLinks:(0,i.createInterpolateElement)(u,{code1:(0,e.createElement)(l.Code,{variant:"block"},''),code2:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeOembedLinks:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeGenerator:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removePingbackHeader:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},"X-Pingback: https://www.example.com/xmlrpc.php")}),removePoweredByHeader:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},"X-Powered-By: PHP/7.4.1")}),removeFeedGlobal:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedGlobalComments:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedPostComments:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedAuthors:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedPostTypes:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedCategories:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedTags:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedCustomTaxonomies:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeFeedSearch:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),removeAtomRdfFeeds:(0,i.createInterpolateElement)(d,{code:(0,e.createElement)(l.Code,{variant:"block"},'')}),denyWpJsonCrawling:(0,i.createInterpolateElement)(u,{code1:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/wp-json/"),code2:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/?rest_route=/")}),blockUnwantedBots:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("Lots of web traffic comes from bots crawling the web. Some can benefit your site or business, while other bots don’t. Blocking unwanted bots can save energy, help with site performance, and protect copyrighted content. Learn more about %1$swhen to block unwanted bots%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)(wr,{id:"link-block-unwanted-bots-info",href:n})}),redirectSearchPrettyUrls:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s, %2$s and %3$s expand to example parts of a URL, surrounded by tags. */ (0,Lt.__)("Consolidates WordPress' multiple site search URL formats into the %1$s syntax. E.g., %2$s will redirect to %3$s","wordpress-seo"),"","",""),{code1:(0,e.createElement)(l.Code,null,"?s="),code2:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/search/cats"),code3:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/?s=cats")}),denySearchCrawling:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s, %2$s and %3$s expand to example parts of a URL, surrounded by tags. */ (0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling of URLs like %1$s, %2$s and %3$s.","wordpress-seo"),"","",""),{code1:(0,e.createElement)(l.Code,null,"?s="),code2:(0,e.createElement)(l.Code,null,"/search/"),code3:(0,e.createElement)(l.Code,null,"/page/*/?s=")}),advancedUrlCleanup:(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an example part of a URL, surrounded by a tag. */ (0,Lt.__)("Users and search engines may often request your URLs whilst using query parameters, like %1$s. These can be helpful for tracking, filtering, and powering advanced functionality - but they come with a performance and SEO ‘cost’. Sites which don’t rely on URL parameters might benefit from using these options.","wordpress-seo"),""),{code:(0,e.createElement)(l.Code,null,"?color=red")}),cleanCampaignTrackingUrls:(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: * %1$s expands to `utm`. * %2$s expands to `#`. * %3$s expands to `301`. * %4$s and %5$s both expand to an example within a tag. */ (0,Lt.__)("Replaces %1$s tracking parameters with the (more performant) %2$s equivalent, via a %3$s redirect. E.g., %4$s will be redirected to %5$s","wordpress-seo"),"","","","",""),{code1:(0,e.createElement)(l.Code,null,"utm"),code2:(0,e.createElement)(l.Code,null,"#"),code3:(0,e.createElement)(l.Code,null,"301"),code4:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/?utm_medium=organic"),code5:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/#utm_medium=organic")}),cleanPermalinks:(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: * %1$s expands to `301`. * %2$s and %3$s both expand to an example within a tag. */ (0,Lt.__)("Removes unknown URL parameters via a %1$s redirect. E.g., %2$s will be redirected to %3$s","wordpress-seo"),"","","")+(0,Lt.sprintf)( /** * translators: * %1$s through %7$s each expand to a parameter name within a tag. For example, gclid. */ (0,Lt.__)("Note that the following commonly-used parameters will not be removed: %1$s, %2$s, %3$s, %4$s, %5$s, %6$s, and %7$s.","wordpress-seo"),"","","","","","",""),{code1:(0,e.createElement)(l.Code,null,"301"),code2:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com/?unknown_parameter=yes"),code3:(0,e.createElement)(l.Code,{variant:"block"},"https://www.example.com"),code4:(0,e.createElement)(l.Code,null,"gclid"),code5:(0,e.createElement)(l.Code,null,"gtm_debug"),code6:(0,e.createElement)(l.Code,null,"utm_campaign"),code7:(0,e.createElement)(l.Code,null,"utm_content"),code8:(0,e.createElement)(l.Code,null,"utm_medium"),code9:(0,e.createElement)(l.Code,null,"utm_source"),code10:(0,e.createElement)(l.Code,null,"utm_term")}),cleanPermalinksExtraVariables:(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: * %1$s expands to `unknown_parameter`. * %2$s and %3$s both expand to an example within a tag. */ (0,Lt.__)("Prevents specific URL parameters from being removed by the above feature. E.g., adding %1$s will prevent %2$s from being redirected to %3$s. You can add multiple parameters and separate them by using enter or a comma.","wordpress-seo"),"","",""),{code1:(0,e.createElement)(l.Code,null,"unknown_parameter"),code2:(0,e.createElement)(l.Code,null,"https://www.example.com/?unknown_parameter=yes"),code3:(0,e.createElement)(l.Code,null,"https://www.example.com")})})),[]),{values:m}=q(),{remove_feed_global_comments:f,remove_feed_post_comments:h,search_cleanup:y,search_cleanup_emoji:_,search_cleanup_patterns:w,clean_permalinks:g}=m.wpseo;return(0,e.createElement)(lo,{title:(0,Lt.__)("Crawl optimization","wordpress-seo"),description:p.page},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Remove unwanted metadata","wordpress-seo"),description:p.removeUnwantedMetadata},(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_shortlinks",id:"input-wpseo-remove_shortlinks",label:(0,Lt.__)("Remove shortlinks","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove links to WordPress' internal 'shortlink' URLs for your posts.","wordpress-seo")," ",p.removeShortlinks),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_rest_api_links",id:"input-wpseo-remove_rest_api_links",label:(0,Lt.__)("Remove REST API links","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove links to the location of your site’s REST API endpoints.","wordpress-seo")," ",p.removeRestApiLinks),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_rsd_wlw_links",id:"input-wpseo-remove_rsd_wlw_links",label:(0,Lt.__)("Remove RSD / WLW links","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove links used by external systems for publishing content to your blog.","wordpress-seo")," ",p.removeRsdWlwLinks),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_oembed_links",id:"input-wpseo-remove_oembed_links",label:(0,Lt.__)("Remove oEmbed links","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove links used for embedding your content on other sites.","wordpress-seo")," ",p.removeOembedLinks),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_generator",id:"input-wpseo-remove_generator",label:(0,Lt.__)("Remove generator tag","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove information about the plugins and software used by your site.","wordpress-seo")," ",p.removeGenerator),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_pingback_header",id:"input-wpseo-remove_pingback_header",label:(0,Lt.__)("Pingback HTTP header","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove links which allow others sites to ‘ping’ yours when they link to you.","wordpress-seo")," ",p.removePingbackHeader),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_powered_by_header",id:"input-wpseo-remove_powered_by_header",label:(0,Lt.__)("Remove powered by HTTP header","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove information about the plugins and software used by your site.","wordpress-seo")," ",p.removePoweredByHeader)),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Disable unwanted content formats","wordpress-seo"),description:(0,Lt.__)("WordPress outputs your content in many different formats, across many different URLs (like RSS feeds of your posts and categories). It’s generally good practice to disable the formats you’re not actively using.","wordpress-seo")},(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_global",id:"input-wpseo-remove_feed_global",label:(0,Lt.__)("Remove global feed","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide an overview of your recent posts.","wordpress-seo")," ",p.removeFeedGlobal),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_global_comments",id:"input-wpseo-remove_feed_global_comments",label:(0,Lt.__)("Remove global comment feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide an overview of recent comments on your site.","wordpress-seo")," ",p.removeFeedGlobalComments,(0,Lt.__)("Also disables post comment feeds.","wordpress-seo")),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_post_comments",id:"input-wpseo-remove_feed_post_comments",label:(0,Lt.__)("Remove post comments feeds","wordpress-seo"),disabled:f,checked:f||h,className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about recent comments on each post.","wordpress-seo")," ",p.removeFeedPostComments),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_authors",id:"input-wpseo-remove_feed_authors",label:(0,Lt.__)("Remove post authors feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about recent posts by specific authors.","wordpress-seo")," ",p.removeFeedAuthors),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_post_types",id:"input-wpseo-remove_feed_post_types",label:(0,Lt.__)("Remove post type feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about your recent posts, for each post type.","wordpress-seo")," ",p.removeFeedPostTypes),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_categories",id:"input-wpseo-remove_feed_categories",label:(0,Lt.__)("Remove category feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about your recent posts, for each category.","wordpress-seo")," ",p.removeFeedCategories),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_tags",id:"input-wpseo-remove_feed_tags",label:(0,Lt.__)("Remove tag feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about your recent posts, for each tag.","wordpress-seo")," ",p.removeFeedTags),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_custom_taxonomies",id:"input-wpseo-remove_feed_custom_taxonomies",label:(0,Lt.__)("Remove custom taxonomy feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about your recent posts, for each custom taxonomy.","wordpress-seo")," ",p.removeFeedCustomTaxonomies),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_feed_search",id:"input-wpseo-remove_feed_search",label:(0,Lt.__)("Remove search results feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide information about your search results.","wordpress-seo")," ",p.removeFeedSearch),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_atom_rdf_feeds",id:"input-wpseo-remove_atom_rdf_feeds",label:(0,Lt.__)("Remove Atom / RDF feeds","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Remove URLs which provide alternative (legacy) formats of all of the above.","wordpress-seo")," ",p.removeAtomRdfFeeds)),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Remove unused resources","wordpress-seo"),description:(0,Lt.__)("WordPress loads lots of resources, some of which your site might not need. If you’re not using these, removing them can speed up your pages and save resources.","wordpress-seo")},(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.remove_emoji_scripts",id:"input-wpseo-remove_emoji_scripts",label:(0,Lt.__)("Remove emoji scripts","wordpress-seo"),description:(0,Lt.__)("Remove JavaScript used for converting emoji characters in older browsers.","wordpress-seo"),className:"yst-max-w-2xl"}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_wp_json_crawling",id:"input-wpseo-deny_wp_json_crawling",label:(0,Lt.__)("Remove WP-JSON API","wordpress-seo"),className:"yst-max-w-2xl"},(0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling of WordPress' JSON API endpoints.","wordpress-seo")," ",p.denyWpJsonCrawling)),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Block unwanted bots","wordpress-seo"),description:p.blockUnwantedBots},(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_adsbot_crawling",id:"input-wpseo-deny_adsbot_crawling",label:(0,Lt.__)("Prevent Google AdsBot from crawling","wordpress-seo"),description:(0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling by Google AdsBot. You should only enable this setting if you're not using Google Ads on your site.","wordpress-seo"),className:"yst-max-w-2xl"}),(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!s&&!t,variant:"card",cardLink:c,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...r},(0,e.createElement)(fl,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_google_extended_crawling",id:"input-wpseo-deny_google_extended_crawling",label:(0,Lt.__)("Prevent Google Bard and Vertex AI bots from crawling","wordpress-seo"),description:(0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling by the Google-Extended bot. Enabling this setting won’t prevent Google from indexing your website.","wordpress-seo"),labelSuffix:t&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium"),className:"yst-max-w-2xl",isDummy:!t}),(0,e.createElement)(fl,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_gptbot_crawling",id:"input-wpseo-deny_gptbot_crawling",label:(0,Lt.__)("Prevent OpenAI GPTBot from crawling","wordpress-seo"),description:(0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling by OpenAI GPTBot.","wordpress-seo"),labelSuffix:t&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium"),className:"yst-max-w-2xl",isDummy:!t}),(0,e.createElement)(fl,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_ccbot_crawling",id:"input-wpseo-deny_ccbot_crawling",label:(0,Lt.__)("Prevent Common Crawl CCBot from crawling","wordpress-seo"),description:(0,Lt.__)("Add a ‘disallow’ rule to your robots.txt file to prevent crawling by Common Crawl CCBot.","wordpress-seo"),labelSuffix:t&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium"),className:"yst-max-w-2xl",isDummy:!t}))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Internal site search cleanup","wordpress-seo"),description:(0,Lt.__)("Your internal site search can create lots of confusing URLs for search engines, and can even be used as a way for SEO spammers to attack your site. Most sites will benefit from experimenting with these protections and optimizations, even if you don’t have a search feature in your theme.","wordpress-seo")},(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.search_cleanup",id:"input-wpseo-search_cleanup",label:(0,Lt.__)("Filter search terms","wordpress-seo"),description:(0,Lt.__)("Enables advanced settings for protecting your internal site search URLs.","wordpress-seo"),className:"yst-max-w-2xl"}),(0,e.createElement)(pl,{as:l.TextField,type:"number",name:"wpseo.search_character_limit",id:"input-wpseo-search_character_limit",label:(0,Lt.__)("Max number of characters to allow in searches","wordpress-seo"),description:(0,Lt.__)("Limit the length of internal site search queries to reduce the impact of spam attacks and confusing URLs. Please enter a number between 1 and 50.","wordpress-seo"),disabled:!y}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.search_cleanup_emoji",id:"input-wpseo-search_cleanup_emoji",label:(0,Lt.__)("Filter searches with emojis and other special characters","wordpress-seo"),description:(0,Lt.__)("Block internal site searches which contain complex and non-alphanumeric characters, as they may be part of a spam attack.","wordpress-seo"),disabled:!y,checked:y&&_,className:"yst-max-w-2xl"}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.search_cleanup_patterns",id:"input-wpseo-search_cleanup_patterns",label:(0,Lt.__)("Filter searches with common spam patterns","wordpress-seo"),description:(0,Lt.__)("Block internal site searches which match the patterns of known spam attacks.","wordpress-seo"),disabled:!y,checked:y&&w,className:"yst-max-w-2xl"}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.redirect_search_pretty_urls",id:"input-wpseo-redirect_search_pretty_urls",label:(0,Lt.__)("Redirect pretty URLs to ‘raw’ formats","wordpress-seo"),description:p.redirectSearchPrettyUrls,className:"yst-max-w-2xl"}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.deny_search_crawling",id:"input-wpseo-deny_search_crawling",label:(0,Lt.__)("Prevent crawling of internal site search URLs","wordpress-seo"),description:p.denySearchCrawling,className:"yst-max-w-2xl"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Advanced: URL cleanup","wordpress-seo"),description:p.advancedUrlCleanup},(0,e.createElement)(l.Alert,{id:"alert-permalink-cleanup-settings",variant:"error"},(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("Warning! These are expert features, so make sure you know what you're doing before using this setting. You might break your site. %1$sRead more about how your site can be affected%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{id:"link-permalink-cleanup-info",href:o,target:"_blank",rel:"noopener noreferrer"})})),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.clean_campaign_tracking_urls",id:"input-wpseo-clean_campaign_tracking_urls",label:(0,Lt.__)("Optimize Google Analytics utm tracking parameters","wordpress-seo"),description:p.cleanCampaignTrackingUrls,className:"yst-max-w-2xl"}),(0,e.createElement)(ml,{as:l.ToggleField,type:"checkbox",name:"wpseo.clean_permalinks",id:"input-wpseo-clean_permalinks",label:(0,Lt.__)("Remove unregistered URL parameters","wordpress-seo"),description:p.cleanPermalinks,className:"yst-max-w-2xl"}),(0,e.createElement)(wa,{name:"wpseo.clean_permalinks_extra_variables",id:"input-wpseo-clean_permalinks_extra_variables",label:(0,Lt.__)("Additional URL parameters to allow","wordpress-seo"),description:p.cleanPermalinksExtraVariables,disabled:!g})))))},yl=Ia(ya),_l=()=>{const t=(0,Lt.__)("Date archives","wordpress-seo"),s=sa("selectPreference",[],"userLocale"),r=(0,i.useMemo)((()=>yn(t,s)),[t,s]),a=sa("selectUpsellSettingsAsProps"),o=sa("selectReplacementVariablesFor",[],"date_archive","custom-post-type_archive"),n=sa("selectRecommendedReplacementVariablesFor",[],"date_archive","custom-post-type_archive"),c=sa("selectLink",[],"https://yoa.st/show-x"),d=sa("selectPreference",[],"isPremium"),u=sa("selectLink",[],"https://yoa.st/4e0"),p=sa("selectExampleUrl",[],"/2020/"),m=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),f=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to "Date archives". * %2$s expands to an example URL, e.g. https://example.com/author/example/. * %3$s expands to "date archives". */ (0,Lt.__)("%1$s (e.g. %2$s) are based on publication dates. From an SEO perspective, the posts in these archives have no real relation to the other posts except for their publication dates, which doesn’t say much about the content. They could also lead to duplicate content issues. This is why we recommend you to disable %3$s.","wordpress-seo"),t,"",r),{exampleUrl:(0,e.createElement)(l.Code,null,p)}))),{values:h}=q(),{opengraph:y}=h.wpseo_social,{"disable-date":_,"noindex-archive-wpseo":w}=h.wpseo_titles;return(0,e.createElement)(lo,{title:t,description:f},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)("fieldset",{className:"yst-min-width-0 yst-space-y-8"},(0,e.createElement)(ca,{name:"wpseo_titles.disable-date",id:"input-wpseo_titles-disable-date",label:(0,Lt.sprintf)( // translators: %1$s expands to "date archives". (0,Lt.__)("Enable %1$s","wordpress-seo"),r),description:(0,Lt.sprintf)( // translators: %1$s expands to "Date archives". (0,Lt.__)("%1$s can cause duplicate content issues. For most sites, we recommend that you disable this setting.","wordpress-seo"),t),className:"yst-max-w-sm"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to "date archives". (0,Lt.__)("Determine how your %1$s should look in search engines.","wordpress-seo"),r)},(0,e.createElement)(ca,{name:"wpseo_titles.noindex-archive-wpseo",id:"input-wpseo_titles-noindex-archive-wpseo",label:(0,Lt.sprintf)( // translators: %1$s expands to "date archives". (0,Lt.__)("Show %1$s in search results","wordpress-seo"),r),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to "date archives". (0,Lt.__)("Disabling this means that %1$s will not be indexed by search engines and will be excluded from XML sitemaps. We recommend that you disable this setting.","wordpress-seo"),r)," ",(0,e.createElement)(l.Link,{href:c,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),disabled:_,checked:!_&&!w,className:"yst-max-w-sm"}),(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.title-archive-wpseo",fieldId:"input-wpseo_titles-title-archive-wpseo",label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:o,recommendedReplacementVariables:n,disabled:_}),(0,e.createElement)(ya,{type:"description",name:"wpseo_titles.metadesc-archive-wpseo",fieldId:"input-wpseo_titles-metadesc-archive-wpseo",label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:o,recommendedReplacementVariables:n,disabled:_,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),d&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to "date archives". (0,Lt.__)("Determine how your %1$s should look on social media by default.","wordpress-seo"),r)},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!d,variant:"card",cardLink:u,cardText:(0,Lt.sprintf)( // translators: %1$s expands to Premium. (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...a},(0,e.createElement)(za,{isEnabled:!d||y}),(0,e.createElement)(ma,{id:"wpseo_titles-social-image-archive-wpseo",label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:m,mediaUrlName:"wpseo_titles.social-image-url-archive-wpseo",mediaIdName:"wpseo_titles.social-image-id-archive-wpseo",disabled:_||!y,isDummy:!d}),(0,e.createElement)(yl,{type:"title",name:"wpseo_titles.social-title-archive-wpseo",fieldId:"input-wpseo_titles-social-title-archive-wpseo",label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:o,recommendedReplacementVariables:n,disabled:_||!y,isDummy:!d}),(0,e.createElement)(yl,{type:"description",name:"wpseo_titles.social-description-archive-wpseo",fieldId:"input-wpseo_titles-social-description-archive-wpseo",label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:o,recommendedReplacementVariables:n,className:"yst-replacevar--description",disabled:_||!y,isDummy:!d}))))))},wl=Ia(ya),gl=()=>{const{name:t,label:s,singularLabel:r}=sa("selectTaxonomy",[],"post_format"),a=sa("selectPreference",[],"userLocale"),o=(0,i.useMemo)((()=>yn(s,a)),[s,a]),n=(0,i.useMemo)((()=>yn(r,a)),[r,a]),c=sa("selectUpsellSettingsAsProps"),d=sa("selectReplacementVariablesFor",[t],t,"term-in-custom-taxonomy"),u=sa("selectRecommendedReplacementVariablesFor",[t],t,"term-in-custom-taxonomy"),p=sa("selectLink",[],"https://yoa.st/show-x"),m=sa("selectPreference",[],"isPremium"),f=sa("selectLink",[],"https://yoa.st/4e0"),h=sa("selectExampleUrl",[],"/format/example/"),y=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),_=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("(e.g., %1$s)","wordpress-seo"),""),{exampleUrl:(0,e.createElement)(l.Code,null,h)}))),{values:w}=q(),{opengraph:g}=w.wpseo_social,{"disable-post_format":b,"noindex-tax-post_format":v}=w.wpseo_titles;return(0,e.createElement)(lo,{title:(0,Lt.__)("Format archives","wordpress-seo"),description:_},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(ca,{name:"wpseo_titles.disable-post_format",id:"input-wpseo_titles-disable-post_format",label:(0,Lt.__)("Enable format-based archives","wordpress-seo"),description:(0,Lt.__)("Format-based archives can cause duplicate content issues. For most sites, we recommend that you disable this setting.","wordpress-seo"),className:"yst-max-w-sm"}),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to "formats". %2$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s should look in search engines. You can always customize the settings for individual %1$s in the %2$s metabox.","wordpress-seo"),o,"Yoast SEO")},(0,e.createElement)(ca,{name:`wpseo_titles.noindex-tax-${t}`,id:`input-wpseo_titles-noindex-tax-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to "format". (0,Lt.__)("Show %1$s archives in search results","wordpress-seo"),n),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to "formats". (0,Lt.__)("Disabling this means that %1$s will not be indexed by search engines and will be excluded from XML sitemaps. We recommend that you disable this setting.","wordpress-seo"),o)," ",(0,e.createElement)(l.Link,{href:p,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),disabled:b,checked:!b&&!v,className:"yst-max-w-sm"}),(0,e.createElement)(ya,{type:"title",name:`wpseo_titles.title-tax-${t}`,fieldId:`input-wpseo_titles-title-tax-${t}`,label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,disabled:b}),(0,e.createElement)(ya,{type:"description",name:`wpseo_titles.metadesc-tax-${t}`,fieldId:`input-wpseo_titles-metadesc-tax-${t}`,label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,disabled:b,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-gap-1.5"},(0,e.createElement)("span",null,(0,Lt.__)("Social media appearance","wordpress-seo")),m&&(0,e.createElement)(l.Badge,{variant:"upsell"},"Premium")),description:(0,Lt.sprintf)( // translators: %1$s expands to "formats". %2$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s should look on social media by default. You can always customize the settings for individual %1$s in the %2$s metabox.","wordpress-seo"),o,"Yoast SEO")},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!m,variant:"card",cardLink:f,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...c},(0,e.createElement)(za,{isEnabled:!m||g}),(0,e.createElement)(ma,{id:`wpseo_titles-social-image-tax-${t}`,label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:y,mediaUrlName:`wpseo_titles.social-image-url-tax-${t}`,mediaIdName:`wpseo_titles.social-image-id-tax-${t}`,disabled:b||!g,isDummy:!m}),(0,e.createElement)(wl,{type:"title",name:`wpseo_titles.social-title-tax-${t}`,fieldId:`input-wpseo_titles-social-title-tax-${t}`,label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,disabled:b||!g,isDummy:!m}),(0,e.createElement)(wl,{type:"description",name:`wpseo_titles.social-description-tax-${t}`,fieldId:`input-wpseo_titles-social-description-tax-${t}`,label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:d,recommendedReplacementVariables:u,className:"yst-replacevar--description",disabled:b||!g,isDummy:!m}))))))},bl=()=>{const t=sa("selectReplacementVariablesFor",[],"homepage","page"),s=sa("selectRecommendedReplacementVariablesFor",[],"homepage","page"),r=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),{values:a}=q(),{opengraph:o}=a.wpseo_social;return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.__)("Determine how your homepage should look in the search results.","wordpress-seo")},(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.title-home-wpseo",fieldId:"input-wpseo_titles-title-home-wpseo",label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:t,recommendedReplacementVariables:s}),(0,e.createElement)(ya,{type:"description",name:"wpseo_titles.metadesc-home-wpseo",fieldId:"input-wpseo_titles-metadesc-home-wpseo",label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:t,recommendedReplacementVariables:s,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Social media appearance","wordpress-seo"),description:(0,Lt.__)("Determine how your homepage should look on social media.","wordpress-seo")},(0,e.createElement)(za,{isEnabled:o /* translators: %1$s expands to an opening emphasis tag. %2$s expands to a closing emphasis tag. */,text:(0,Lt.__)("The %1$ssocial image%2$s, %1$ssocial title%2$s and %1$ssocial description%2$s require Open Graph data, which is currently disabled in the ‘Social sharing’ section in %3$sSite features%4$s.","wordpress-seo")}),(0,e.createElement)(ma,{id:"wpseo_titles-open_graph_frontpage_image",label:(0,Lt.__)("Social image","wordpress-seo"),previewLabel:r,mediaUrlName:"wpseo_titles.open_graph_frontpage_image",mediaIdName:"wpseo_titles.open_graph_frontpage_image_id",disabled:!o}),(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.open_graph_frontpage_title",fieldId:"input-wpseo_titles-open_graph_frontpage_title",label:(0,Lt.__)("Social title","wordpress-seo"),replacementVariables:t,recommendedReplacementVariables:s,disabled:!o}),(0,e.createElement)(ya,{type:"description",name:"wpseo_titles.open_graph_frontpage_desc",fieldId:"input-wpseo_titles-open_graph_frontpage_desc",label:(0,Lt.__)("Social description","wordpress-seo"),replacementVariables:t,recommendedReplacementVariables:s,className:"yst-replacevar--description",disabled:!o})))},vl=()=>{const t=sa("selectPreference",[],"homepagePageEditUrl"),s=sa("selectPreference",[],"homepagePostsEditUrl"),r=(0,i.useMemo)((()=>tl((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("You can determine the title and description for the homepage by %1$sediting the homepage itself%2$s.","wordpress-seo"),"",""),t,"link-homepage-page-edit"))),a=(0,i.useMemo)((()=>tl((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("You can determine the title and description for the blog page by %1$sediting the blog page itself%2$s.","wordpress-seo"),"",""),s,"link-homepage-posts-page-edit")));return(0,e.createElement)("div",{className:"yst-max-w-screen-sm"},(0,e.createElement)(l.Alert,null,(0,e.createElement)("p",null,r),s&&(0,e.createElement)("p",{className:"yst-pt-2"},a)))},El=()=>{const t=sa("selectPreference",[],"homepageIsLatestPosts");return(0,e.createElement)(lo,{title:(0,Lt.__)("Homepage","wordpress-seo"),description:(0,Lt.__)("Determine how your homepage should look in the search results and on social media. This is what people probably will see when they search for your brand name.","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},t&&(0,e.createElement)(bl,null),!t&&(0,e.createElement)(vl,null))))},xl=()=>{const{name:t,label:s,hasSchemaArticleType:r}=sa("selectPostType",[],"attachment"),a=sa("selectPreference",[],"userLocale"),o=(0,i.useMemo)((()=>yn(s,a)),[s,a]),n=sa("selectReplacementVariablesFor",[t],t,"custom_post_type"),c=sa("selectRecommendedReplacementVariablesFor",[t],t,"custom_post_type"),d=sa("selectArticleTypeValuesFor",[t],t),u=sa("selectPageTypeValuesFor",[t],t),p=sa("selectLink",[],"https://yoa.st/media-pages-thin-content"),m=sa("selectLink",[],"https://yoa.st/show-x"),{values:f}=q(),{"disable-attachment":h,"noindex-attachment":y}=f.wpseo_titles,_=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s and %2$s are replaced by opening and closing tags. * %3$s expands to "media". * %4$s expand to "Yoast SEO". * %5$s expand to "WordPress". */ (0,Lt.__)("When you upload media (e.g. an image or video), %5$s automatically creates a %3$s page (attachment URL) for it. These pages are quite empty and could cause %1$sthin content problems and lead to excess pages on your site%2$s. Therefore, %4$s disables them by default (and redirects the attachment URL to the media itself).","wordpress-seo"),"","",o,"Yoast SEO","WordPress"),{a:(0,e.createElement)("a",{href:p,target:"_blank",rel:"noopener noreferrer"})})));return(0,e.createElement)(lo,{title:(0,Lt.sprintf)( // translators: %1$s expands to "Media". (0,Lt.__)("%1$s pages","wordpress-seo"),s),description:_},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)("fieldset",{className:"yst-min-width-0 yst-space-y-8"},(0,e.createElement)(ca,{name:`wpseo_titles.disable-${t}`,id:`input-wpseo_titles-disable-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to "media". (0,Lt.__)("Enable %1$s pages","wordpress-seo"),o),description:(0,Lt.sprintf)( // translators: %1$s expands to "media". (0,Lt.__)("We recommend keeping %1$s pages disabled. This will cause all attachment URLs to be redirected to the media itself.","wordpress-seo"),o),className:"yst-max-w-sm"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Search appearance","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to "media". %3$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s pages should look in search engines. You can always customize the settings for individual %1$s pages in the %2$s metabox.","wordpress-seo"),o,"Yoast SEO")},(0,e.createElement)(ca,{name:`wpseo_titles.noindex-${t}`,id:`input-wpseo_titles-noindex-${t}`,label:(0,Lt.sprintf)( // translators: %1$s expands to "media". (0,Lt.__)("Show %1$s pages in search results","wordpress-seo"),o),description:(0,e.createElement)(e.Fragment,null,(0,Lt.sprintf)( // translators: %1$s expands to "media". (0,Lt.__)("Disabling this means that %1$s pages created by WordPress will not be indexed by search engines and will be excluded from XML sitemaps.","wordpress-seo"),o),(0,e.createElement)("br",null),(0,e.createElement)(l.Link,{href:m,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about the search results settings","wordpress-seo")),"."),disabled:h,checked:!h&&!y,className:"yst-max-w-sm"}),(0,e.createElement)(ya,{type:"title",name:`wpseo_titles.title-${t}`,fieldId:`input-wpseo_titles-title-${t}`,label:(0,Lt.__)("SEO title","wordpress-seo"),replacementVariables:n,recommendedReplacementVariables:c,disabled:h}),(0,e.createElement)(ya,{type:"description",name:`wpseo_titles.metadesc-${t}`,fieldId:`input-wpseo_titles-metadesc-${t}`,label:(0,Lt.__)("Meta description","wordpress-seo"),replacementVariables:n,recommendedReplacementVariables:c,disabled:h,className:"yst-replacevar--description"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Schema","wordpress-seo"),description:(0,Lt.sprintf)( // translators: %1$s expands to "media". %3$s expands to "Yoast SEO". (0,Lt.__)("Determine how your %1$s pages should be described by default in your site's Schema.org markup. You can always customize the settings for individual %1$s pages in the %2$s metabox.","wordpress-seo"),o,"Yoast SEO")},(0,e.createElement)($a,{as:l.SelectField,type:"select",name:`wpseo_titles.schema-page-type-${t}`,id:`input-wpseo_titles-schema-page-type-${t}`,label:(0,Lt.__)("Page type","wordpress-seo"),options:u,disabled:h,className:"yst-max-w-sm"}),r&&(0,e.createElement)("div",null,(0,e.createElement)($a,{as:l.SelectField,type:"select",name:`wpseo_titles.schema-article-type-${t}`,id:`input-wpseo_titles-schema-article-type-${t}`,label:(0,Lt.__)("Article type","wordpress-seo"),options:d,disabled:h,className:"yst-max-w-sm"}),(0,e.createElement)(Va,{name:t,disabled:h}))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Additional settings","wordpress-seo")},(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:`wpseo_titles.display-metabox-pt-${t}`,id:`input-wpseo_titles-display-metabox-pt-${t}`,label:(0,Lt.__)("Enable SEO controls and assessments","wordpress-seo"),description:(0,Lt.__)("Show or hide our tools and controls in the attachment editor.","wordpress-seo"),disabled:h,className:"yst-max-w-sm"})))))},kl=({children:t})=>(0,e.createElement)(l.Table.Cell,{className:"yst-font-medium"},(0,e.createElement)("span",{className:"yst-text-slate-900"},t));kl.propTypes={children:ir().node.isRequired};const Sl=()=>(0,e.createElement)(lo,{title:(0,Lt.__)("RSS","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("RSS feed","wordpress-seo"),description:(0,Lt.__)("Automatically add content to your RSS. This enables you to add links back to your blog and your blog posts, helping search engines identify you as the original source of the content.","wordpress-seo")},(0,e.createElement)(te,{as:l.TextareaField,type:"textarea",rows:4,name:"wpseo_titles.rssbefore",id:"input-wpseo_titles-rssbefore",label:(0,Lt.__)("Content to put before each post in the feed","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextareaField,type:"textarea",rows:4,name:"wpseo_titles.rssafter",id:"input-wpseo_titles-rssafter",label:(0,Lt.__)("Content to put after each post in the feed","wordpress-seo")})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{as:"section",title:(0,Lt.__)("Available variables","wordpress-seo"),description:(0,Lt.__)("You can use the following variables within the content, they will be replaced by the value on the right.","wordpress-seo")},(0,e.createElement)(l.Table,null,(0,e.createElement)(l.Table.Head,null,(0,e.createElement)(l.Table.Row,null,(0,e.createElement)(l.Table.Header,{scope:"col"},(0,Lt.__)("Variable","wordpress-seo")),(0,e.createElement)(l.Table.Header,{scope:"col"},(0,Lt.__)("Description","wordpress-seo")))),(0,e.createElement)(l.Table.Body,null,(0,e.createElement)(l.Table.Row,null,(0,e.createElement)(kl,null,"%%AUTHORLINK%%"),(0,e.createElement)(l.Table.Cell,null,(0,Lt.__)("A link to the archive for the post author, with the author's name as anchor text.","wordpress-seo"))),(0,e.createElement)(l.Table.Row,null,(0,e.createElement)(kl,null,"%%POSTLINK%%"),(0,e.createElement)(l.Table.Cell,null,(0,Lt.__)("A link to the post, with the title as anchor text.","wordpress-seo"))),(0,e.createElement)(l.Table.Row,null,(0,e.createElement)(kl,null,"%%BLOGLINK%%"),(0,e.createElement)(l.Table.Cell,null,(0,Lt.__)("A link to your site, with your site's name as anchor text.","wordpress-seo"))),(0,e.createElement)(l.Table.Row,null,(0,e.createElement)(kl,null,"%%BLOGDESCLINK%%"),(0,e.createElement)(l.Table.Cell,null,(0,Lt.__)("A link to your site, with your site's name and description as anchor text.","wordpress-seo"))))))))),Ll=Na(l.ToggleField),Tl=Oa(Ta),Fl=()=>{const t=(0,i.useMemo)((()=>(0,le.get)(window,"wpseoScriptData.separators",{})),[]),s=sa("selectPreference",[],"generalSettingsUrl"),r=sa("selectPreference",[],"canManageOptions",!1),a=sa("selectPreference",[],"showForceRewriteTitlesSetting",!1),o=sa("selectLink",[],"https://yoa.st/site-basics-replacement-variables"),n=sa("selectLink",[],"https://yoa.st/usage-tracking-2"),c=sa("selectLink",[],"https://yoa.st/site-policies-learn-more"),d=sa("selectPreference",[],"siteTitle",""),u=sa("selectLink",[],"https://yoa.st/site-policies-upsell"),p=sa("selectPreference",[],"isPremium"),m=sa("selectUpsellSettingsAsProps"),{fetchPages:f}=Xr(),h=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("Usage tracking allows us to track some data about your site to improve our plugin. %1$sLearn more about which data we track and why%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{id:"link-usage-tracking",href:n,target:"_blank",rel:"noopener"})})),[]),y=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an opening tag. %2$s expands to a closing tag. */ (0,Lt.__)("Select the pages on your website which contain information about your organizational and publishing policies. Some of these might not apply to your site, and you can select the same page for multiple policies. %1$sLearn more about why setting your site policies is important%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{id:"link-site-policies",href:c,target:"_blank",rel:"noopener"})})),[c]),_=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s and %2$s expand to an opening and closing emphasis tag. %3$s and %4$s expand to an opening and closing anchor tag. */ (0,Lt.__)("Set the basic info for your website. You can use %1$stagline%2$s and %1$sseparator%2$s as %3$sreplacement variables%4$s when configuring the search appearance of your content.","wordpress-seo"),"","","",""),{em:(0,e.createElement)("em",null),a:(0,e.createElement)("a",{id:"site-basics-replacement-variables",href:o,target:"_blank",rel:"noopener"})})),[]),w=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands to an opening emphasis tag. %2$s expands to a closing emphasis tag. */ (0,Lt.__)("We're sorry, you're not allowed to edit the %1$swebsite name%2$s and %1$stagline%2$s.","wordpress-seo"),"",""),{em:(0,e.createElement)("em",null)})),[]),g=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening strong tag. * %2$s expands to a closing strong tag. * %3$s expands to the recommended image size. */ (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","1200x675px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})})),[]),b=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening anchor tag. * %2$s expands to a closing anchor tag. */ (0,Lt.__)("This field updates the %1$stagline in your WordPress settings%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{href:`${s}#blogdescription`,target:"_blank",rel:"noopener noreferrer"})})),[]),v=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which describes the editorial principles of your organization. %1$sWhat%2$s do you write about, %1$swho%2$s do you write for, and %1$swhy%2$s?","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),E=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which describes the ownership structure of your organization. It should include information about %1$sfunding%2$s and %1$sgrants%2$s.","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),x=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which describes how your organization collects and responds to %1$sfeedback%2$s, engages with the %1$spublic%2$s, and prioritizes %1$stransparency%2$s.","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),k=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which outlines your procedure for addressing %1$serrors%2$s (e.g., publishing retractions or corrections).","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),S=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which describes the personal, organizational, and corporate %1$sstandards%2$s of %1$sbehavior%2$s expected by your organization.","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),L=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which provides information on your diversity policies for %1$seditorial%2$s content.","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),T=(0,i.useMemo)((()=>(0,i.createInterpolateElement)((0,Lt.sprintf)( /** * translators: %1$s expands to an opening italics tag. * %2$s expands to a closing italics tag. */ (0,Lt.__)("Select a page which provides information about your diversity policies for %1$sstaffing%2$s, %1$shiring%2$s and %1$semployment%2$s.","wordpress-seo"),"",""),{i:(0,e.createElement)("i",null)})),[]),{values:F}=q(),{opengraph:$}=F.wpseo_social;return(0,i.useEffect)((()=>{f()}),[f]),(0,e.createElement)(lo,{title:(0,Lt.__)("Site basics","wordpress-seo"),description:(0,Lt.__)("Configure the basics for your website.","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Site info","wordpress-seo"),description:_},!r&&(0,e.createElement)(l.Alert,{variant:"warning",id:"alert-site-defaults-variables",className:"yst-mb-8"},w),(0,e.createElement)("div",{className:"lg:yst-mt-0 lg:yst-col-span-2 yst-space-y-8"},(0,e.createElement)(Aa,{as:l.TextField,name:"wpseo_titles.website_name",id:"input-wpseo_titles-website_name",label:(0,Lt.__)("Website name","wordpress-seo"),placeholder:d}),(0,e.createElement)(Aa,{as:l.TextField,name:"wpseo_titles.alternate_website_name",id:"input-wpseo_titles-alternate_website_name",label:(0,Lt.__)("Alternate website name","wordpress-seo"),description:(0,Lt.__)("Use the alternate website name for acronyms, or a shorter version of your website's name.","wordpress-seo")}),(0,e.createElement)(te,{as:l.TextField,type:"text",name:"blogdescription",id:"input-blogdescription",label:(0,Lt.__)("Tagline","wordpress-seo"),description:r&&b,readOnly:!r})),(0,e.createElement)(l.RadioGroup,{label:(0,Lt.__)("Title separator","wordpress-seo"),variant:"inline-block"},(0,le.map)(t,(({label:t,aria_label:s},r)=>(0,e.createElement)(te,{key:r,as:l.Radio,type:"radio",variant:"inline-block",name:"wpseo_titles.separator",id:`input-wpseo_titles-separator-${r}`,label:t,isLabelDangerousHtml:!0,"aria-label":s,value:r})))),(0,e.createElement)(za,{isEnabled:$,text:/* translators: %1$s expands to an opening emphasis tag. %2$s expands to a closing emphasis tag. */ (0,Lt.__)("The %1$sSite image%2$s requires Open Graph data, which is currently disabled in the ‘Social sharing’ section in %3$sSite features%4$s.","wordpress-seo")}),(0,e.createElement)(ma,{id:"wpseo_social-og_default_image",label:(0,Lt.__)("Site image","wordpress-seo"),description:(0,Lt.__)("This image is used as a fallback for posts/pages that don't have any images set.","wordpress-seo"),previewLabel:g,mediaUrlName:"wpseo_social.og_default_image",mediaIdName:"wpseo_social.og_default_image_id",disabled:!$})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("Site preferences","wordpress-seo")},a&&(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:"wpseo_titles.forcerewritetitle",id:"input-wpseo_titles-forcerewritetitle",label:(0,Lt.__)("Force rewrite titles","wordpress-seo"),description:(0,Lt.sprintf)(/* translators: %1$s expands to "Yoast SEO" */ (0,Lt.__)("%1$s has auto-detected whether it needs to force rewrite the titles for your pages, if you think it's wrong and you know what you're doing, you can change the setting here.","wordpress-seo"),"Yoast SEO"),className:"yst-max-w-sm"}),(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:"wpseo.disableadvanced_meta",id:"input-wpseo-disableadvanced_meta",label:(0,Lt.__)("Restrict advanced settings for authors","wordpress-seo"),description:(0,Lt.sprintf)(/* translators: %1$s expands to "Yoast SEO" */ (0,Lt.__)("By default only editors and administrators can access the Advanced and Schema section of the %1$s sidebar or metabox. Disabling this allows access to all users.","wordpress-seo"),"Yoast SEO"),className:"yst-max-w-sm"}),(0,e.createElement)($a,{as:Ll,type:"checkbox",name:"wpseo.tracking",id:"input-wpseo-tracking",label:(0,Lt.__)("Usage tracking","wordpress-seo"),description:h,className:"yst-max-w-sm"})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)(e.Fragment,null,(0,Lt.__)("Site policies","wordpress-seo"),p&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium")),description:y},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!p,variant:"card",cardLink:u,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...m},(0,e.createElement)(Tl,{name:"wpseo_titles.publishing_principles_id",id:"input-wpseo_titles-publishing_principles_id",label:(0,Lt.__)("Publishing principles","wordpress-seo"),className:"yst-max-w-sm",description:v,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.ownership_funding_info_id",id:"input-wpseo_titles-ownership_funding_info_id",label:(0,Lt.__)("Ownership / Funding info","wordpress-seo"),className:"yst-max-w-sm",description:E,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.actionable_feedback_policy_id",id:"input-wpseo_titles-actionable_feedback_policy_id",label:(0,Lt.__)("Actionable feedback policy","wordpress-seo"),className:"yst-max-w-sm",description:x,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.corrections_policy_id",id:"input-wpseo_titles-corrections_policy_id",label:(0,Lt.__)("Corrections policy","wordpress-seo"),className:"yst-max-w-sm",description:k,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.ethics_policy_id",id:"input-wpseo_titles-ethics_policy_id",label:(0,Lt.__)("Ethics policy","wordpress-seo"),className:"yst-max-w-sm",description:S,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.diversity_policy_id",id:"input-wpseo_titles-diversity_policy_id",label:(0,Lt.__)("Diversity policy","wordpress-seo"),className:"yst-max-w-sm",description:L,isDummy:!p}),(0,e.createElement)(Tl,{name:"wpseo_titles.diversity_staffing_report_id",id:"input-wpseo_titles-diversity_staffing_report_id",label:(0,Lt.__)("Diversity staffing report","wordpress-seo"),className:"yst-max-w-sm",description:T,isDummy:!p}))))))},$l=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"}))})),Pl=({name:t,cardId:s,inputId:r,children:a,imageSrc:o,imageAlt:n,isPremiumFeature:c=!1,isPremiumLink:d="",isBetaFeature:u=!1,isNewFeature:p=!1,hasPremiumBadge:m=!1,title:f})=>{const h=sa("selectPreference",[],"isPremium"),y=sa("selectPluginUrl",[o],o),{isDisabled:_,message:w,disabledSetting:g}=Jr({name:t}),{values:b}=q(),v=sa("selectLink",[d],d),E=sa("selectUpsellSettingsAsProps"),x=(0,l.useSvgAria)(),k=(0,i.useMemo)((()=>(0,le.get)(b,t,!1)),[b,t]),S=(0,i.useMemo)((()=>!h&&c),[h,c]),L=(0,i.useMemo)((()=>_||!S&&!k),[_,S,k]),T=(0,i.useMemo)((()=>_||h&&c&&m||u||p&&!h),[_,h,c,u,p]);return(0,e.createElement)(l.Card,{id:s},(0,e.createElement)(l.Card.Header,{className:"yst-h-auto yst-p-0"},(0,e.createElement)("img",{className:or()("yst-w-full yst-transition yst-duration-200",L&&"yst-opacity-50 yst-filter yst-grayscale"),src:y,alt:null!=n?n:"",width:500,height:250,loading:"lazy",decoding:"async"}),T&&(0,e.createElement)("div",{className:"yst-absolute yst-top-2 yst-right-2 yst-flex yst-gap-1.5"},_&&(0,e.createElement)(l.Badge,{size:"small",variant:"plain"},w),h&&c&&m&&(0,e.createElement)(l.Badge,{size:"small",variant:"upsell"},"Premium"),u&&(0,e.createElement)(l.Badge,{size:"small",variant:"info"},"Beta"),p&&!h&&(0,e.createElement)(l.Badge,{size:"small",variant:"info"},"New"))),(0,e.createElement)(l.Card.Content,{className:"yst-flex yst-flex-col yst-gap-3"},(0,e.createElement)(l.Title,{as:"h3"},f),a),(0,e.createElement)(l.Card.Footer,null,!S&&(0,e.createElement)($a,{as:l.ToggleField,type:"checkbox",name:t,id:r,"aria-label":`${(0,Lt.__)("Enable feature","wordpress-seo")} ${f}`,label:(0,Lt.__)("Enable feature","wordpress-seo"),disabled:_,checked:"language"!==g&&k}),S&&(0,e.createElement)(l.Button,{as:"a",className:"yst-gap-2 yst-w-full yst-px-2",variant:"upsell",href:v,target:"_blank",rel:"noopener",...E},(0,e.createElement)(cr,{className:"yst-w-5 yst-h-5 yst--ml-1 yst-shrink-0",...x}),(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"))))};Pl.propTypes={name:ir().string.isRequired,cardId:ir().string.isRequired,inputId:ir().string.isRequired,children:ir().node.isRequired,imageSrc:ir().string.isRequired,imageAlt:ir().string,isPremiumFeature:ir().bool,isBetaFeature:ir().bool,isNewFeature:ir().bool,isPremiumLink:ir().string,hasPremiumBadge:ir().bool,title:ir().string.isRequired};const Rl=({id:t,link:s,ariaLabel:r,...a})=>{const o=sa("selectLink",[s],s);return(0,e.createElement)(l.Link,{id:t,href:o,variant:"primary",className:"yst-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",target:"_blank",rel:"noopener","aria-label":(0,Lt.sprintf)(/* translators: Hidden accessibility text; %s expands to a translated string of this feature, e.g. "SEO analysis". */ (0,Lt.__)("Learn more about %s (Opens in a new browser tab)","wordpress-seo"),r),...a},(0,Lt.__)("Learn more","wordpress-seo"),(0,e.createElement)(gr,{className:"yst-w-4 yst-h-4 yst-icon-rtl"}))};Rl.propTypes={id:ir().string.isRequired,link:ir().string.isRequired,ariaLabel:ir().string.isRequired};const Nl=()=>{const t=sa("selectPreference",[],"isPremium"),s=sa("selectPreference",[],"sitemapUrl"),{values:r,initialValues:a}=q(),{enable_xml_sitemap:o}=r.wpseo,{enable_xml_sitemap:n}=a.wpseo,c=(0,i.useMemo)((()=>t?"yst-grid yst-gap-6 yst-grid-cols-1 sm:yst-grid-cols-2 min-[783px]:yst-grid-cols-1 lg:yst-grid-cols-2 xl:yst-grid-cols-3 2xl:yst-grid-cols-4":"yst-grid yst-gap-6 yst-grid-cols-1 sm:yst-grid-cols-2 min-[783px]:yst-grid-cols-1 lg:yst-grid-cols-2 2xl:yst-grid-cols-3 min-[1800px]:yst-grid-cols-4"),[t]);return(0,e.createElement)(lo,{title:(0,Lt.__)("Site features","wordpress-seo"),description:(0,Lt.__)("Tell us which features you want to use.","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-6xl"},(0,e.createElement)("fieldset",{className:"yst-min-w-0"},(0,e.createElement)("legend",{className:"yst-sr-only"},(0,Lt.__)("Writing","wordpress-seo")),(0,e.createElement)("div",{className:"yst-max-w-screen-sm yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",size:"2"},(0,Lt.__)("Writing","wordpress-seo"))),(0,e.createElement)("div",{className:c},(0,e.createElement)(Pl,{name:"wpseo.keyword_analysis_active",cardId:"card-wpseo-keyword_analysis_active",inputId:"input-wpseo-keyword_analysis_active",imageSrc:"/images/seo_analysis.png",title:(0,Lt.__)("SEO analysis","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("The SEO analysis offers suggestions to improve the findability of your text and makes sure that your content meets best practices.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-seo-analysis",link:"https://yoa.st/2ak",ariaLabel:(0,Lt.__)("SEO analysis","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.content_analysis_active",cardId:"card-wpseo-content_analysis_active",inputId:"input-wpseo-content_analysis_active",imageSrc:"/images/readability_analysis.png",title:(0,Lt.__)("Readability analysis","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("The readability analysis offers suggestions to improve the structure and style of your text.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-readability-analysis",link:"https://yoa.st/2ao",ariaLabel:(0,Lt.__)("Readability analysis","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.inclusive_language_analysis_active",cardId:"card-wpseo-inclusive_language_analysis_active",inputId:"input-wpseo-inclusive_language_analysis_active",imageSrc:"/images/inclusive_language_analysis.png",title:(0,Lt.__)("Inclusive language analysis","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("The inclusive language analysis offers suggestions to write more inclusive copy, so more people will be able to relate to your content.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-inclusive-language-analysis",link:"https://yoa.st/inclusive-language-feature-learn-more",ariaLabel:(0,Lt.__)("Inclusive language analysis","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_ai_generator",cardId:"card-wpseo-enable_ai_generator",inputId:"input-wpseo-enable_ai_generator",imageSrc:"/images/ai-generator.png",isPremiumFeature:!0,hasPremiumBadge:!1,isBetaFeature:!0,isPremiumLink:"https://yoa.st/get-ai-generator",title:"Yoast AI"},(0,e.createElement)("p",null,(0,Lt.__)("The AI features help you create better content by providing optimization suggestions that you can apply as you wish.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-ai-generator",link:"https://yoa.st/ai-generator-feature",ariaLabel:(0,Lt.__)("AI title & description generator","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_metabox_insights",cardId:"card-wpseo-enable_metabox_insights",inputId:"input-wpseo-enable_metabox_insights",imageSrc:"/images/insights.png",title:(0,Lt.__)("Insights","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Get more insights into what you are writing. What words do you use most often? How much time does it take to read your text? Is your text easy to read?","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-insights",link:"https://yoa.st/4ew",ariaLabel:(0,Lt.__)("Insights","wordpress-seo")})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)("fieldset",{className:"yst-min-w-0"},(0,e.createElement)("legend",{className:"yst-sr-only"},(0,Lt.__)("Site structure","wordpress-seo")),(0,e.createElement)("div",{className:"yst-max-w-screen-sm yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",size:"2"},(0,Lt.__)("Site structure","wordpress-seo"))),(0,e.createElement)("div",{className:c},(0,e.createElement)(Pl,{name:"wpseo.enable_cornerstone_content",cardId:"card-wpseo-enable_cornerstone_content",inputId:"input-wpseo-enable_cornerstone_content",imageSrc:"/images/cornerstone_content.png",title:(0,Lt.__)("Cornerstone content","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Mark and filter your cornerstone content to make sure your most important articles get the attention they deserve. To help you write excellent copy, we’ll assess your text more strictly.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-cornerstone-content",link:"https://yoa.st/dashboard-help-cornerstone",ariaLabel:(0,Lt.__)("Cornerstone content","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_text_link_counter",cardId:"card-wpseo-enable_text_link_counter",inputId:"input-wpseo-enable_text_link_counter",imageSrc:"/images/text_link_counter.png",title:(0,Lt.__)("Text link counter","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Count the number of internal links from and to your posts to improve your site structure.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-text-link-counter",link:"https://yoa.st/2aj",ariaLabel:(0,Lt.__)("Text link counter","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_link_suggestions",cardId:"card-wpseo-enable_link_suggestions",inputId:"input-wpseo-enable_link_suggestions",imageSrc:"/images/link_suggestions.png",isPremiumFeature:!0,hasPremiumBadge:!0,isPremiumLink:"https://yoa.st/get-link-suggestions",title:(0,Lt.__)("Internal linking suggestions","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("No need to figure out what to link to. You get linking suggestions for relevant posts and pages to make your website easier to navigate.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-suggestions-link",link:t?"https://yoa.st/17g":"https://yoa.st/4ev",ariaLabel:(0,Lt.__)("Link suggestions","wordpress-seo")})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)("fieldset",{id:"section-social-sharing",className:"yst-min-w-0"},(0,e.createElement)("legend",{className:"yst-sr-only"},(0,Lt.__)("Social sharing","wordpress-seo")),(0,e.createElement)("div",{className:"yst-max-w-screen-sm yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",size:"2",className:"yst-mb-2"},(0,Lt.__)("Social sharing","wordpress-seo"))),(0,e.createElement)("div",{className:c},(0,e.createElement)(Pl,{name:"wpseo_social.opengraph",cardId:"card-wpseo_social-opengraph",inputId:"input-wpseo_social-opengraph",imageSrc:"/images/open_graph.png",title:(0,Lt.__)("Open Graph data","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Allows for Facebook and other social media to display a preview with images and a text excerpt when a link to your site is shared. Keep this feature enabled to optimize your site for social media.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-open-graph-data",link:"https://yoa.st/site-features-open-graph-data",ariaLabel:(0,Lt.__)("Open Graph data","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo_social.twitter",cardId:"card-wpseo_social-twitter",inputId:"input-wpseo_social-twitter",imageSrc:"/images/twitter_card.png",title:(0,Lt.__)("X card data","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Allows for X to display a preview with images and a text excerpt when a link to your site is shared.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-twitter-card-data",link:"https://yoa.st/site-features-twitter-card-data",ariaLabel:(0,Lt.__)("X card data","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_enhanced_slack_sharing",cardId:"card-wpseo-enable_enhanced_slack_sharing",inputId:"input-wpseo-enable_enhanced_slack_sharing",imageSrc:"/images/slack_sharing.png",title:(0,Lt.__)("Slack sharing","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("This adds an author byline and reading time estimate to the article’s snippet when shared on Slack.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-slack-sharing",link:"https://yoa.st/help-slack-share",ariaLabel:(0,Lt.__)("Slack sharing","wordpress-seo")})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)("fieldset",{className:"yst-min-w-0"},(0,e.createElement)("legend",{className:"yst-sr-only"},(0,Lt.__)("Tools","wordpress-seo")),(0,e.createElement)("div",{className:"yst-max-w-screen-sm yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",size:"2"},(0,Lt.__)("Tools","wordpress-seo"))),(0,e.createElement)("div",{className:c},(0,e.createElement)(Pl,{name:"wpseo.enable_admin_bar_menu",cardId:"card-wpseo-enable_admin_bar_menu",inputId:"input-wpseo-enable_admin_bar_menu",imageSrc:"/images/admin_bar.png",title:(0,Lt.__)("Admin bar menu","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.sprintf)( // translators: %1$s expands to Yoast. (0,Lt.__)("The %1$s icon in the top admin bar provides quick access to third-party tools for analyzing pages and makes it easy to see if you have new notifications.","wordpress-seo"),"Yoast")),(0,e.createElement)(Rl,{id:"link-admin-bar",link:"https://yoa.st/site-features-admin-bar",ariaLabel:(0,Lt.__)("Admin bar menu","wordpress-seo")})))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)("fieldset",{className:"yst-min-w-0"},(0,e.createElement)("legend",{className:"yst-sr-only"},(0,Lt.__)("APIs","wordpress-seo")),(0,e.createElement)("div",{className:"yst-max-w-screen-sm yst-mb-8"},(0,e.createElement)(l.Title,{as:"h2",size:"2"},(0,Lt.__)("APIs","wordpress-seo"))),(0,e.createElement)("div",{className:c},(0,e.createElement)(Pl,{name:"wpseo.enable_headless_rest_endpoints",cardId:"card-wpseo-enable_headless_rest_endpoints",inputId:"input-wpseo-enable_headless_rest_endpoints",imageSrc:"/images/rest_api.png",title:(0,Lt.__)("REST API endpoint","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("This Yoast SEO REST API endpoint gives you all the metadata you need for a specific URL. This will make it very easy for headless WordPress sites to use Yoast SEO for all their SEO meta output.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-rest-api-endpoint",link:"https://yoa.st/site-features-rest-api-endpoint",ariaLabel:(0,Lt.__)("REST API endpoint","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_xml_sitemap",cardId:"card-wpseo-enable_xml_sitemap",inputId:"input-wpseo-enable_xml_sitemap",imageSrc:"/images/xml_sitemaps.png",title:(0,Lt.__)("XML sitemaps","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.sprintf)( // translators: %1$s expands to "Yoast SEO". (0,Lt.__)("Enable the %1$s XML sitemaps. A sitemap is a file that lists a website's essential pages to make sure search engines can find and crawl them.","wordpress-seo"),"Yoast SEO")),n&&o&&(0,e.createElement)(l.Button,{as:"a",id:"link-xml-sitemaps",href:s,variant:"secondary",target:"_blank",rel:"noopener",className:"yst-self-start"},(0,Lt.__)("View the XML sitemap","wordpress-seo"),(0,e.createElement)($l,{className:"yst--mr-1 yst-ml-1 yst-h-5 yst-w-5 yst-text-slate-400"})),(0,e.createElement)(Rl,{id:"link-xml-sitemaps-learn-more",link:"https://yoa.st/2a-",ariaLabel:(0,Lt.__)("XML sitemaps","wordpress-seo")})),(0,e.createElement)(Pl,{name:"wpseo.enable_index_now",cardId:"card-wpseo-enable_index_now",inputId:"input-wpseo-enable_index_now",imageSrc:"/images/indexnow.png",isPremiumFeature:!0,hasPremiumBadge:!0,isPremiumLink:"https://yoa.st/get-indexnow",title:(0,Lt.__)("IndexNow","wordpress-seo")},(0,e.createElement)("p",null,(0,Lt.__)("Automatically ping search engines like Bing and Yandex whenever you publish, update or delete a post.","wordpress-seo")),(0,e.createElement)(Rl,{id:"link-index-now",link:"https://yoa.st/index-now-feature",ariaLabel:(0,Lt.__)("IndexNow","wordpress-seo")})))))))},Il=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"}))})),Ol=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{fillRule:"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",clipRule:"evenodd"}))})),Cl=Ia(Aa),Al=Oa(Ra),Ml=()=>{const{values:t}=q(),{website_name:s,company_or_person:r,company_or_person_user_id:a,company_name:o,company_logo_id:n}=t.wpseo_titles,{other_social_urls:c}=t.wpseo_social,d=sa("selectUserById",[a],a),u=sa("selectLink",[],"https://yoa.st/1-p"),p=sa("selectLink",[],"https://yoa.st/3r3"),m=sa("selectLink",[],"https://yoa.st/site-representation-org-additional-info-upsell"),f=sa("selectLink",[],"https://yoa.st/site-representation-org-identifiers"),h=sa("selectLink",[],"https://yoa.st/site-representation-organization-person"),y=sa("selectPreference",[],"editUserUrl"),_=sa("selectPreference",[],"isLocalSeoActive"),w=sa("selectPreference",[],"companyOrPersonMessage"),g=sa("selectFallback",[],"siteLogoId"),b=sa("selectCanEditUser",[null==d?void 0:d.id],null==d?void 0:d.id),v=sa("selectPreference",[],"isPremium"),E=sa("selectUpsellSettingsAsProps"),x=sa("selectLink",[],"https://yoa.st/get-mastodon-integration"),k=sa("selectLink",[],"https://yoa.st/site-representation-mastodon"),S=sa("selectPreference",[],"localSeoPageSettingUrl");let L=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands for Yoast Local SEO, %2$s and %3$s expands to a link tags. */ (0,Lt.__)("You have %1$s activated on your site. You can provide your VAT ID and Tax ID in the %2$s‘Business info’ settings%3$s.","wordpress-seo"),"Yoast Local SEO","",""),{a:(0,e.createElement)("a",{href:S,target:"_blank",className:"yst-underline yst-font-medium"})}),T=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands for Yoast Local SEO, %2$s and %3$s expands to a link tags. */ (0,Lt.__)("You have %1$s activated on your site. You can provide your email and phone in the %2$s‘Business info’ settings%3$s.","wordpress-seo"),"Yoast Local SEO","",""),{a:(0,e.createElement)("a",{href:S,target:"_blank",className:"yst-underline yst-font-medium"})});S.includes("wpseo_locations")&&(L=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands for Yoast Local SEO, %2$s and %3$s expands to a link tags. */ (0,Lt.__)("You have %1$s activated on your site, and you've configured your business for multiple locations. This allows you to provide your VAT ID and Tax ID for %2$seach specific location%3$s.","wordpress-seo"),"Yoast Local SEO","",""),{a:(0,e.createElement)("a",{href:S,target:"_blank",className:"yst-underline yst-font-medium"})}),T=(0,i.createInterpolateElement)((0,Lt.sprintf)(/* translators: %1$s expands for Yoast Local SEO, %2$s and %3$s expands to a link tags. */ (0,Lt.__)("You have %1$s activated on your site, and you've configured your business for multiple locations. This allows you to provide your email and phone for %2$seach specific location%3$s.","wordpress-seo"),"Yoast Local SEO","",""),{a:(0,e.createElement)("a",{href:S,target:"_blank",className:"yst-underline yst-font-medium"})}));const F=(0,i.useCallback)((async e=>{var t;await e.push(""),null===(t=document.getElementById(`input-wpseo_social-other_social_urls-${c.length}`))||void 0===t||t.focus()}),[c]);return(0,e.createElement)(lo,{title:(0,Lt.__)("Site representation","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("This info is intended to appear in %1$sGoogle's Knowledge Graph%2$s.","wordpress-seo"),"",""),u,"link-google-knowledge-graph")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Organization/person","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("Choose whether your site represents an organization or a person. %1$sLearn more about the differences and choosing between Organization and Person%2$s.","wordpress-seo"),"",""),h,"link-site-representation-organization-person")},_&&(0,e.createElement)(l.Alert,{id:"alert-local-seo-company-or-person",variant:"info"},w),(0,e.createElement)(l.RadioGroup,{disabled:_},(0,e.createElement)(te,{as:l.Radio,type:"radio",name:"wpseo_titles.company_or_person",id:"input-wpseo_titles-company_or_person-company",label:(0,Lt.__)("Organization","wordpress-seo"),value:"company",disabled:_}),(0,e.createElement)(te,{as:l.Radio,type:"radio",name:"wpseo_titles.company_or_person",id:"input-wpseo_titles-company_or_person-person",label:(0,Lt.__)("Person","wordpress-seo"),value:"person",disabled:_}))),(0,e.createElement)("section",{className:"yst-space-y-8"}),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)("div",{className:"yst-relative"},(0,e.createElement)(oa.Z,{easing:"ease-out",duration:300,delay:300,height:"company"===r?"auto":0,animateOpacity:!0},(0,e.createElement)(aa,{title:(0,Lt.__)("Organization","wordpress-seo"),description:(0,Lt.__)("Please tell us more about your organization. This information will help Google to understand your website, and improve your chance of getting rich results.","wordpress-seo")},(!o||n<1)&&(0,e.createElement)(l.Alert,{id:"alert-organization-name-logo",variant:"info"},tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("An organization name and logo need to be set for structured data to work properly. Since you haven’t set these yet, we are using the site name and logo as default values. %1$sLearn more about the importance of structured data%2$s.","wordpress-seo"),"",""),p,"link-structured-data")),(0,e.createElement)(te,{as:l.TextField,name:"wpseo_titles.company_name",id:"input-wpseo_titles-company_name",label:(0,Lt.__)("Organization name","wordpress-seo"),placeholder:s}),(0,e.createElement)(te,{as:l.TextField,name:"wpseo_titles.company_alternate_name",id:"input-wpseo_titles-company_alternate_name",label:(0,Lt.__)("Alternate organization name","wordpress-seo"),description:(0,Lt.__)("Use the alternate organization name for acronyms, or a shorter version of your organization's name.","wordpress-seo")}),(0,e.createElement)(ma,{id:"wpseo_titles-company_logo",label:(0,Lt.__)("Organization logo","wordpress-seo"),variant:"square",previewLabel:(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s expands to an opening strong tag. (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","696x696px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})}),mediaUrlName:"wpseo_titles.company_logo",mediaIdName:"wpseo_titles.company_logo_id",fallbackMediaId:g})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{id:"fieldset-wpseo_social-other_social_urls",title:(0,Lt.__)("Other profiles","wordpress-seo"),description:(0,Lt.__)("Tell us if you have any other profiles on the web that belong to your organization. This can be any number of profiles, like YouTube, LinkedIn, Pinterest, or even Wikipedia.","wordpress-seo")},(0,e.createElement)(Aa,{as:l.TextField,name:"wpseo_social.facebook_site",id:"input-wpseo_social-facebook_site",label:(0,Lt.__)("Facebook","wordpress-seo"),placeholder:(0,Lt.__)("E.g. https://facebook.com/yoast","wordpress-seo")}),(0,e.createElement)(Aa,{as:l.TextField,name:"wpseo_social.twitter_site",id:"input-wpseo_social-twitter_site",label:(0,Lt.__)("X","wordpress-seo"),placeholder:(0,Lt.__)("E.g. https://x.com/yoast","wordpress-seo")}),(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!v,variant:"card",cardLink:x,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...E},(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_social.mastodon_url",id:"input-wpseo_social-mastodon_url",label:(0,Lt.__)("Mastodon","wordpress-seo"),placeholder:(0,Lt.__)("E.g. https://mastodon.social/@yoast","wordpress-seo"),labelSuffix:v&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium"),isDummy:!v,description:(0,e.createElement)(i.Fragment,null,(0,Lt.__)("Get your site verified in your Mastodon profile.","wordpress-seo")," ",(0,e.createElement)(l.Link,{id:"link-wpseo_social-mastodon_url",href:k,target:"_blank",rel:"noopener"},(0,Lt.__)("Read more about how to get your site verified.","wordpress-seo")))})),(0,e.createElement)(ie,{name:"wpseo_social.other_social_urls"},(t=>(0,e.createElement)(i.Fragment,null,c.map(((s,r)=>(0,e.createElement)(Js,{key:`wpseo_social.other_social_urls.${r}`,as:i.Fragment,appear:!0,show:!0,enter:"yst-transition yst-ease-out yst-duration-300",enterFrom:"yst-transform yst-opacity-0",enterTo:"yst-transform yst-opacity-100",leave:"yst-transition yst-ease-out yst-duration-300",leaveFrom:"yst-transform yst-opacity-100",leaveTo:"yst-transform yst-opacity-0"},(0,e.createElement)("div",{className:"yst-w-full yst-flex yst-items-start yst-gap-2"},(0,e.createElement)(Aa,{as:l.TextField,name:`wpseo_social.other_social_urls.${r}`,id:`input-wpseo_social-other_social_urls-${r}`,label:(0,Lt.sprintf)((0,Lt.__)("Other profile %1$s","wordpress-seo"),r+1),placeholder:(0,Lt.__)("E.g. https://example.com/yoast","wordpress-seo"),className:"yst-grow"}),(0,e.createElement)(l.Button,{variant:"secondary",onClick:t.remove.bind(null,r),className:"yst-mt-7 yst-p-2.5","aria-label":(0,Lt.sprintf)((0,Lt.__)("Remove Other profile %1$s","wordpress-seo"),r+1)},(0,e.createElement)(Il,{className:"yst-h-5 yst-w-5"})))))),(0,e.createElement)(l.Button,{id:"button-add-social-profile",variant:"secondary",onClick:()=>F(t)},(0,e.createElement)(Ol,{className:"yst--ml-1 yst-mr-1 yst-h-5 yst-w-5 yst-text-slate-400"}),(0,Lt.__)("Add another profile","wordpress-seo")))))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)(i.Fragment,null,(0,Lt.__)("Additional organization info","wordpress-seo"),v&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium")),description:(0,Lt.__)("Enrich your organization's profile by providing more in-depth information. The more details you share, the better Google understands your website.","wordpress-seo")},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!v,variant:"card",cardLink:m,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...E},(0,e.createElement)(Cl,{as:l.TextareaField,name:"wpseo_titles.org-description",id:"input-wpseo_titles-org-description",label:(0,Lt.__)("Organization description","wordpress-seo"),isDummy:!v,maxLength:2e3}),_&&v&&(0,e.createElement)(l.Alert,{id:"alert-local-seo-vat-or-tax-id",variant:"info"},T),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-email",id:"input-wpseo_titles-org-email",type:"email",label:(0,Lt.__)("Organization email address","wordpress-seo"),isDummy:!v||_}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-phone",id:"input-wpseo_titles-org-phone",label:(0,Lt.__)("Organization phone number","wordpress-seo"),isDummy:!v||_}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-legal-name",id:"input-wpseo_titles-org-legal-name",label:(0,Lt.__)("Organization's legal name","wordpress-seo"),isDummy:!v}),(0,e.createElement)(Cl,{as:l.TextField,className:"yst-w-3/5",name:"wpseo_titles.org-founding-date",id:"input-wpseo_titles-org-founding-date",label:(0,Lt.__)("Organization's founding date","wordpress-seo"),type:"date",isDummy:!v}),(0,e.createElement)(Al,{name:"wpseo_titles.org-number-employees",className:"yst-w-3/5",id:"input-wpseo_titles-org-number-employees",label:(0,Lt.__)("Number of employees","wordpress-seo"),placeholder:(0,Lt.__)("Select a range / Enter a number","wordpress-seo"),isDummy:!v,options:[{value:"",label:"None"},{value:"1-10",label:(0,Lt.__)("1-10 employees","wordpress-seo")},{value:"11-50",label:(0,Lt.__)("11-50 employees","wordpress-seo")},{value:"51-200",label:(0,Lt.__)("51-200 employees","wordpress-seo")},{value:"201-500",label:(0,Lt.__)("201-500 employees","wordpress-seo")},{value:"501-1000",label:(0,Lt.__)("501-1000 employees","wordpress-seo")},{value:"1001-5000",label:(0,Lt.__)("1001-5000 employees","wordpress-seo")},{value:"5001-10000",label:(0,Lt.__)("5001-10000 employees","wordpress-seo")}]}))),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,e.createElement)(i.Fragment,null,(0,Lt.__)("Organization identifiers","wordpress-seo"),v&&(0,e.createElement)(l.Badge,{className:"yst-ml-1.5",size:"small",variant:"upsell"},"Premium")),description:(0,Lt.__)("Please tell us more about your organization’s identifiers. This information will help Google to display accurate and helpful details about your organization.","wordpress-seo")},(0,e.createElement)(l.FeatureUpsell,{shouldUpsell:!v,variant:"card",cardLink:f,cardText:(0,Lt.sprintf)(/* translators: %1$s expands to Premium. */ (0,Lt.__)("Unlock with %1$s","wordpress-seo"),"Premium"),...E},_&&v&&(0,e.createElement)(l.Alert,{id:"alert-local-seo-vat-or-tax-id",variant:"info"},L),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-vat-id",id:"input-wpseo_titles-org-vat-id",label:(0,Lt.__)("VAT ID","wordpress-seo"),isDummy:!v||_}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-tax-id",id:"input-wpseo_titles-org-tax-id",label:(0,Lt.__)("Tax ID","wordpress-seo"),isDummy:!v||_}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-iso",id:"input-wpseo_titles-org-iso",label:(0,Lt.__)("ISO 6523","wordpress-seo"),isDummy:!v}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-duns",id:"input-wpseo_titles-org-duns",label:(0,Lt.__)("DUNS","wordpress-seo"),isDummy:!v}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-leicode",id:"input-wpseo_titles-org-leicode",label:(0,Lt.__)("LEI code","wordpress-seo"),isDummy:!v}),(0,e.createElement)(Cl,{as:l.TextField,name:"wpseo_titles.org-naics",id:"input-wpseo_titles-org-naics",label:(0,Lt.__)("NAICS","wordpress-seo"),isDummy:!v})))),(0,e.createElement)(oa.Z,{easing:"ease-out",duration:300,delay:300,height:"person"===r?"auto":0,animateOpacity:!0},(0,e.createElement)(aa,{title:(0,Lt.__)("Personal info","wordpress-seo"),description:(0,Lt.__)("Please tell us more about the person this site represents.","wordpress-seo")},(0,e.createElement)(xa,{name:"wpseo_titles.company_or_person_user_id",id:"input-wpseo_titles-company_or_person_user_id",label:(0,Lt.__)("Select a user","wordpress-seo"),className:"yst-max-w-sm"}),!(0,le.isEmpty)(d)&&(0,e.createElement)(l.Alert,{id:"alert-person-user-profile"},b&&(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("You have selected the user %1$s%5$s%2$s as the person this site represents. Their user profile information will now be used in search results. %3$sUpdate their profile to make sure the information is correct%4$s.","wordpress-seo"),"","","","",null==d?void 0:d.name),{strong:(0,e.createElement)("strong",{className:"yst-font-medium"}),a:(0,e.createElement)("a",{id:"link-person-user-profile",href:`${y}?user_id=${null==d?void 0:d.id}`,target:"_blank",rel:"noopener noreferrer"})}),!b&&(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,Lt.__)("You have selected the user %1$s%3$s%2$s as the person this site represents. Their user profile information will now be used in search results. We're sorry, you're not allowed to edit this user's profile. Please contact your admin or %1$s%3$s%2$s to check and/or update the profile.","wordpress-seo"),"","",null==d?void 0:d.name),{strong:(0,e.createElement)("strong",{className:"yst-font-medium"})})),(0,e.createElement)(ma,{id:"wpseo_titles-person_logo",label:(0,Lt.__)("Personal logo or avatar","wordpress-seo"),variant:"square",previewLabel:(0,i.createInterpolateElement)((0,Lt.sprintf)( // translators: %1$s expands to an opening strong tag. (0,Lt.__)("Recommended size for this image is %1$s%3$s%2$s","wordpress-seo"),"","","696x696px"),{strong:(0,e.createElement)("strong",{className:"yst-font-semibold"})}),mediaUrlName:"wpseo_titles.person_logo",mediaIdName:"wpseo_titles.person_logo_id",fallbackMediaId:g,disabled:!a})))))))},Dl=()=>{const t=sa("selectReplacementVariablesFor",[],"search","search"),s=sa("selectRecommendedReplacementVariablesFor",[],"search","search"),r=sa("selectReplacementVariablesFor",[],"404","404"),a=sa("selectRecommendedReplacementVariablesFor",[],"404","404");return(0,e.createElement)(lo,{title:(0,Lt.__)("Special pages","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)(aa,{title:(0,Lt.__)("Internal search pages","wordpress-seo"),description:(0,Lt.__)("Determine how the title of your internal search pages should look in the browser.","wordpress-seo")},(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.title-search-wpseo",fieldId:"input-wpseo_titles-title-search-wpseo",label:(0,Lt.__)("Page title","wordpress-seo"),replacementVariables:t,recommendedReplacementVariables:s})),(0,e.createElement)("hr",{className:"yst-my-8"}),(0,e.createElement)(aa,{title:(0,Lt.__)("404 error pages","wordpress-seo"),description:(0,Lt.__)("Determine how the title of your 404 error pages should look in the browser.","wordpress-seo")},(0,e.createElement)(ya,{type:"title",name:"wpseo_titles.title-404-wpseo",fieldId:"input-wpseo_titles-title-404-wpseo",label:(0,Lt.__)("Page title","wordpress-seo"),replacementVariables:r,recommendedReplacementVariables:a})))))},Bl=/content=(['"])?(?[^'"> ]+)(?:\1|[ />])/,Ul=e=>{var t;const s=e.target.value.match(Bl);return null!=s&&null!==(t=s.groups)&&void 0!==t&&t.content?s.groups.content:e.target.value},Vl=Ca($a),jl=()=>{const t=sa("selectPreference",[],"siteUrl");return(0,e.createElement)(lo,{title:(0,Lt.__)("Site connections","wordpress-seo"),description:(0,Lt.__)("Verify your site with different tools. This will add a verification meta tag to your homepage. You can find instructions on how to verify your site for each platform by following the link in the description.","wordpress-seo")},(0,e.createElement)(ia,null,(0,e.createElement)("div",{className:"yst-max-w-5xl"},(0,e.createElement)("fieldset",{className:"yst-min-width-0 yst-max-w-screen-sm yst-space-y-8"},(0,e.createElement)(Vl,{as:l.TextField,type:"text",name:"wpseo.baiduverify",id:"input-wpseo-baiduverify",label:(0,Lt.__)("Baidu","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags, respectively. (0,Lt.__)("Get your verification code in %1$sBaidu Webmaster tools%2$s.","wordpress-seo"),"",""),"https://ziyuan.baidu.com/site","link-baidu-webmaster-tools"),placeholder:(0,Lt.__)("Add verification code","wordpress-seo"),transformValue:Ul}),(0,e.createElement)(Vl,{as:l.TextField,type:"text",name:"wpseo.msverify",id:"input-wpseo-msverify",label:(0,Lt.__)("Bing","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags, respectively. (0,Lt.__)("Get your verification code in %1$sBing Webmaster tools%2$s.","wordpress-seo"),"",""),`https://www.bing.com/toolbox/webmaster/#/Dashboard/?url=${t}`,"link-bing-webmaster-tools"),placeholder:(0,Lt.__)("Add verification code","wordpress-seo"),transformValue:Ul}),(0,e.createElement)(Vl,{as:l.TextField,type:"text",name:"wpseo.googleverify",id:"input-wpseo-googleverify",label:(0,Lt.__)("Google","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags, respectively. (0,Lt.__)("Get your verification code in %1$sGoogle Search console%2$s.","wordpress-seo"),"",""),(0,Rt.addQueryArgs)("https://search.google.com/search-console/users",{hl:"en",tid:"alternate",siteUrl:t}),"link-google-search-console"),placeholder:(0,Lt.__)("Add verification code","wordpress-seo"),transformValue:Ul}),(0,e.createElement)(Vl,{as:l.TextField,type:"text",name:"wpseo_social.pinterestverify",id:"input-wpseo_social-pinterestverify",label:(0,Lt.__)("Pinterest","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags, respectively. (0,Lt.__)("Claim your site over at %1$sPinterest%2$s.","wordpress-seo"),"",""),"https://www.pinterest.com/settings/claim","link-pinterest"),placeholder:(0,Lt.__)("Add verification code","wordpress-seo"),transformValue:Ul}),(0,e.createElement)(Vl,{as:l.TextField,type:"text",name:"wpseo.yandexverify",id:"input-wpseo-yandexverify",label:(0,Lt.__)("Yandex","wordpress-seo"),description:tl((0,Lt.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags, respectively. (0,Lt.__)("Get your verification code in %1$sYandex Webmaster tools%2$s.","wordpress-seo"),"",""),"https://webmaster.yandex.com/sites/add/","link-yandex-webmaster-tools"),placeholder:(0,Lt.__)("Add verification code","wordpress-seo"),transformValue:Ul})))))},zl=({postTypes:t,taxonomies:s,idSuffix:r=""})=>{const a=(0,l.useSvgAria)(),o=sa("selectPreference",[],"isPremium"),n=(0,i.useCallback)((({show:t,toggle:s,ariaProps:r})=>{const o=(0,i.useMemo)((()=>t?sr:rr),[t]);return(0,e.createElement)("div",{className:"yst-relative"},(0,e.createElement)("hr",{className:"yst-absolute yst-inset-x-0 yst-top-1/2 yst-bg-slate-200"}),(0,e.createElement)("button",{type:"button",className:"yst-relative yst-flex yst-items-center yst-gap-1.5 yst-px-2.5 yst-py-1 yst-mx-auto yst-text-xs yst-font-medium yst-text-slate-700 yst-bg-slate-50 yst-rounded-full yst-border yst-border-slate-300 hover:yst-bg-white hover:yst-text-slate-800 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-primary-500 focus:yst-ring-offset-2",onClick:s,...r},t?(0,Lt.__)("Show less","wordpress-seo"):(0,Lt.__)("Show more","wordpress-seo"),(0,e.createElement)(o,{className:"yst-h-4 yst-w-4 yst-flex-shrink-0 yst-text-slate-400 group-hover:yst-text-slate-500 yst-stroke-3",...a})))}),[]);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("header",{className:"yst-px-3 yst-mb-6 yst-space-y-6"},(0,e.createElement)(Et,{id:`link-yoast-logo${r}`,to:"/",className:"yst-inline-block yst-rounded-md focus:yst-ring-primary-500","aria-label":"Yoast SEO"+(o?" Premium":"")},(0,e.createElement)(Wr,{className:"yst-w-40",...a})),(0,e.createElement)(Ki,{buttonId:`button-search${r}`})),(0,e.createElement)("div",{className:"yst-px-0.5 yst-space-y-6"},(0,e.createElement)(l.SidebarNavigation.MenuItem,{id:`menu-general${r}`,icon:Qs,label:(0,Lt.__)("General","wordpress-seo")},(0,e.createElement)(_r,{to:"/site-features",label:(0,Lt.__)("Site features","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/site-basics",label:(0,Lt.__)("Site basics","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/site-representation",label:(0,Lt.__)("Site representation","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/site-connections",label:(0,Lt.__)("Site connections","wordpress-seo"),idSuffix:r})),(0,e.createElement)(l.SidebarNavigation.MenuItem,{id:`menu-content-types${r}`,icon:Xs,label:(0,Lt.__)("Content types","wordpress-seo")},(0,e.createElement)(l.ChildrenLimiter,{limit:5,renderButton:n},(0,e.createElement)(_r,{to:"/homepage",label:(0,Lt.__)("Homepage","wordpress-seo"),idSuffix:r}),(0,le.map)(t,(({name:t,route:s,label:a,isNew:o})=>(0,e.createElement)(_r,{key:`link-post-type-${t}`,to:`/post-type/${s}`,label:(0,e.createElement)("span",{className:"yst-inline-flex yst-items-center yst-gap-1.5"},a,o&&(0,e.createElement)(l.Badge,{variant:"info"},(0,Lt.__)("New","wordpress-seo"))),idSuffix:r}))))),(0,e.createElement)(l.SidebarNavigation.MenuItem,{id:`menu-categories-and-tags${r}`,icon:er,label:(0,Lt.__)("Categories & tags","wordpress-seo")},(0,e.createElement)(l.ChildrenLimiter,{limit:5,renderButton:n},(0,le.map)(s,(t=>(0,e.createElement)(_r,{key:`link-taxonomy-${t.name}`,to:`/taxonomy/${t.route}`,label:(0,e.createElement)("span",{className:"yst-inline-flex yst-items-center yst-gap-1.5"},t.label,t.isNew&&(0,e.createElement)(l.Badge,{variant:"info"},(0,Lt.__)("New","wordpress-seo"))),idSuffix:r}))))),(0,e.createElement)(l.SidebarNavigation.MenuItem,{id:`menu-advanced${r}`,icon:tr,label:(0,Lt.__)("Advanced","wordpress-seo"),defaultOpen:!1},(0,e.createElement)(_r,{to:"/crawl-optimization",label:(0,Lt.__)("Crawl optimization","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/breadcrumbs",label:(0,Lt.__)("Breadcrumbs","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/author-archives",label:(0,Lt.__)("Author archives","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/date-archives",label:(0,Lt.__)("Date archives","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/format-archives",label:(0,Lt.__)("Format archives","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/special-pages",label:(0,Lt.__)("Special pages","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/media-pages",label:(0,Lt.__)("Media pages","wordpress-seo"),idSuffix:r}),(0,e.createElement)(_r,{to:"/rss",label:(0,Lt.__)("RSS","wordpress-seo"),idSuffix:r}))))};zl.propTypes={postTypes:ir().object.isRequired,taxonomies:ir().object.isRequired,idSuffix:ir().string};const ql=()=>{const{pathname:t}=Qe(),s=sa("selectPostTypes"),r=sa("selectTaxonomies"),o=sa("selectPreference",[],"isPremium"),n=sa("selectLink",[],"https://yoa.st/17h"),c=sa("selectLink",[],"https://yoa.st/jj"),d=sa("selectUpsellSettingsAsProps"),u=sa("selectLink",[],"https://yoa.st/3t6"),{isPromotionActive:p}=(0,a.useSelect)(Qr);(()=>{const{hash:e,pathname:t,key:s}=Qe();(0,i.useEffect)((()=>{const t=e.replace("#",""),s=document.getElementById(t)||document.querySelector(`[data-id="${t}"]`);if(s)s.scrollIntoView({behavior:"smooth"}),setTimeout((()=>s.focus()),800);else{const e=document.getElementById("yoast-seo-settings");null==e||e.scrollIntoView({behavior:"smooth"})}}),[t,e,s])})();const{dirty:m}=q();return(0,l.useBeforeUnload)(m,(0,Lt.__)("There are unsaved changes on this page. Leaving means that those changes will be lost. Are you sure you want to leave this page?","wordpress-seo")),(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ba,null),(0,e.createElement)(l.SidebarNavigation,{activePath:t},(0,e.createElement)(l.SidebarNavigation.Mobile,{openButtonId:"button-open-settings-navigation-mobile",closeButtonId:"button-close-settings-navigation-mobile" /* translators: Hidden accessibility text. */,openButtonScreenReaderText:(0,Lt.__)("Open settings navigation","wordpress-seo") /* translators: Hidden accessibility text. */,closeButtonScreenReaderText:(0,Lt.__)("Close settings navigation","wordpress-seo"),"aria-label":(0,Lt.__)("Settings navigation","wordpress-seo")},(0,e.createElement)(zl,{idSuffix:"-mobile",postTypes:s,taxonomies:r})),(0,e.createElement)("div",{className:"yst-p-4 min-[783px]:yst-p-8 yst-flex yst-gap-4"},(0,e.createElement)("aside",{className:"yst-sidebar yst-sidebar-nav yst-shrink-0 yst-hidden min-[783px]:yst-block yst-pb-6 yst-bottom-0 yst-w-56"},(0,e.createElement)(l.SidebarNavigation.Sidebar,null,(0,e.createElement)(zl,{postTypes:s,taxonomies:r}))),(0,e.createElement)("div",{className:or()("yst-flex yst-grow yst-flex-wrap",!o&&"xl:yst-pr-[17.5rem]")},(0,e.createElement)("div",{className:"yst-grow yst-space-y-6 yst-mb-8 xl:yst-mb-0"},(0,e.createElement)(l.Paper,{as:"main"},(0,e.createElement)(l.ErrorBoundary,{FallbackComponent:el},(0,e.createElement)(Js,{key:t,appear:!0,show:!0,enter:"yst-transition-opacity yst-delay-100 yst-duration-300",enterFrom:"yst-opacity-0",enterTo:"yst-opacity-100"},(0,e.createElement)(ft,null,(0,e.createElement)(pt,{path:"author-archives",element:(0,e.createElement)(dl,null)}),(0,e.createElement)(pt,{path:"breadcrumbs",element:(0,e.createElement)(ul,null)}),(0,e.createElement)(pt,{path:"crawl-optimization",element:(0,e.createElement)(hl,null)}),(0,e.createElement)(pt,{path:"date-archives",element:(0,e.createElement)(_l,null)}),(0,e.createElement)(pt,{path:"homepage",element:(0,e.createElement)(El,null)}),(0,e.createElement)(pt,{path:"format-archives",element:(0,e.createElement)(gl,null)}),(0,e.createElement)(pt,{path:"media-pages",element:(0,e.createElement)(xl,null)}),(0,e.createElement)(pt,{path:"rss",element:(0,e.createElement)(Sl,null)}),(0,e.createElement)(pt,{path:"site-basics",element:(0,e.createElement)(Fl,null)}),(0,e.createElement)(pt,{path:"site-connections",element:(0,e.createElement)(jl,null)}),(0,e.createElement)(pt,{path:"site-representation",element:(0,e.createElement)(Ml,null)}),(0,e.createElement)(pt,{path:"site-features",element:(0,e.createElement)(Nl,null)}),(0,e.createElement)(pt,{path:"special-pages",element:(0,e.createElement)(Dl,null)}),(0,e.createElement)(pt,{path:"post-type"},(0,le.map)(s,(t=>(0,e.createElement)(pt,{key:`route-post-type-${t.name}`,path:t.route,element:(0,e.createElement)(ol,{...t})})))),(0,e.createElement)(pt,{path:"taxonomy"},(0,le.map)(r,(t=>(0,e.createElement)(pt,{key:`route-taxonomy-${t.name}`,path:t.route,element:(0,e.createElement)(ll,{...t})})))),(0,e.createElement)(pt,{path:"*",element:(0,e.createElement)(ut,{to:"/site-features",replace:!0})}))))),!o&&(0,e.createElement)(Gr,{premiumLink:n,premiumUpsellConfig:d,isPromotionActive:p})),!o&&(0,e.createElement)("div",{className:"xl:yst-max-w-3xl xl:yst-fixed xl:yst-right-8 xl:yst-w-[16rem]"},(0,e.createElement)(Zr,{premiumLink:c,premiumUpsellConfig:d,academyLink:u,isPromotionActive:p}))))))},Wl=window.yoast.externals.redux,Hl=()=>(0,le.get)(window,"wpseoScriptData.postTypes",{}),Yl="updatePostTypeReviewStatus",Gl=(0,Tt.createSlice)({name:"postTypes",initialState:Hl(),reducers:{},extraReducers:e=>{e.addCase(`${Yl}/result`,((e,{payload:t})=>{e[t].isNew=!1}))}}),Kl={selectPostType:(e,t,s={})=>(0,le.get)(e,`postTypes.${t}`,s),selectAllPostTypes:(e,t=null)=>{const s=(0,le.get)(e,"postTypes",{});return t?(0,le.pick)(s,t):s}};Kl.selectPostTypes=(0,Tt.createSelector)(Kl.selectAllPostTypes,(e=>(0,le.omit)(e,["attachment"])));const Zl={[Yl]:async({payload:e})=>Gt()({path:"/yoast/v1/new-content-type-visibility/dismiss-post-type",method:"POST",data:{post_type_name:e}})},Jl={...Gl.actions,updatePostTypeReviewStatus:function*(e){try{yield{type:Yl,payload:e}}catch(t){console.error(`Error: Failed to remove "New" badge for ${e}, ${t}`)}return{type:`${Yl}/result`,payload:e}}},Ql=Gl.reducer,Xl=()=>{var e;return{...(0,le.get)(window,"wpseoScriptData.preferences",{}),documentTitle:(0,le.defaultTo)(null===(e=document)||void 0===e?void 0:e.title,"")}},ec=(0,Tt.createSlice)({name:"preferences",initialState:Xl(),reducers:{}}),tc={selectPreference:(e,t,s={})=>(0,le.get)(e,`preferences.${t}`,s),selectPreferences:e=>(0,le.get)(e,"preferences",{})};tc.selectHasPageForPosts=(0,Tt.createSelector)([e=>tc.selectPreference(e,"homepageIsLatestPosts"),e=>tc.selectPreference(e,"homepagePostsEditUrl")],((e,t)=>!e&&!(0,le.isEmpty)(t))),tc.selectCanEditUser=(0,Tt.createSelector)([e=>tc.selectPreference(e,"currentUserId",-1),e=>tc.selectPreference(e,"canEditUsers",!1),(e,t)=>t],((e,t,s)=>e===s||t)),tc.selectExampleUrl=(0,Tt.createSelector)([e=>tc.selectPreference(e,"siteUrl","https://example.com"),(e,t)=>t],((e,t)=>e+t)),tc.selectPluginUrl=(0,Tt.createSelector)([e=>tc.selectPreference(e,"pluginUrl","https://example.com"),(e,t)=>t],((e,t)=>e+t)),tc.selectUpsellSettingsAsProps=(0,Tt.createSelector)([e=>tc.selectPreference(e,"upsellSettings",{}),(e,t="premiumCtbId")=>t],((e,t)=>({"data-action":null==e?void 0:e.actionId,"data-ctb-id":null==e?void 0:e[t]})));const sc=ec.actions,rc=ec.reducer,ac=()=>(0,le.reduce)((0,le.get)(window,"wpseoScriptData.taxonomies",{}),((e,{postTypes:t,...s},r)=>({...e,[r]:{...s,postTypes:(0,le.values)(t)}})),{}),oc="updateTaxonomyReviewStatus",nc=(0,Tt.createSlice)({name:"taxonomies",initialState:ac(),reducers:{},extraReducers:e=>{e.addCase(`${oc}/result`,((e,{payload:t})=>{e[t].isNew=!1}))}}),ic={selectTaxonomy:(e,t,s={})=>(0,le.get)(e,`taxonomies.${t}`,s),selectAllTaxonomies:e=>(0,le.get)(e,"taxonomies",{})};ic.selectTaxonomies=(0,Tt.createSelector)(ic.selectAllTaxonomies,(e=>(0,le.omit)(e,["post_format"])));const lc={[oc]:async({payload:e})=>Gt()({path:"/yoast/v1/new-content-type-visibility/dismiss-taxonomy",method:"POST",data:{taxonomy_name:e}})},cc={...nc.actions,updateTaxonomyReviewStatus:function*(e){try{yield{type:oc,payload:e}}catch(t){console.error(`Error: Failed to remove "New" badge for ${e}, ${t}`)}return{type:`${oc}/result`,payload:e}}},dc=nc.reducer,uc={selectBreadcrumbsForPostTypes:(0,Tt.createSelector)([ic.selectAllTaxonomies,Kl.selectAllPostTypes],((e,t)=>{const s={value:0,label:(0,Lt.__)("None","wordpress-seo")},r={};return(0,le.forEach)(t,((t,a)=>{const o=(0,le.filter)(e,(e=>(0,le.includes)(e.postTypes,a)));(0,le.isEmpty)(o)||(r[a]={...t,options:[s,...(0,le.map)(o,(({name:e,label:t})=>({value:e,label:t})))]})})),r})),selectBreadcrumbsForTaxonomies:(0,Tt.createSelector)([ic.selectAllTaxonomies,Kl.selectAllPostTypes,tc.selectHasPageForPosts],((e,t,s)=>{let r=[{value:0,label:(0,Lt.__)("None","wordpress-seo")}];s&&r.push({value:"post",label:(0,Lt.__)("Blog","wordpress-seo")});const a=(0,le.filter)(t,(({hasArchive:e})=>e));return r=r.concat((0,le.map)(a,(({name:e,label:t})=>({value:e,label:t})))),(0,le.mapValues)(e,(e=>({name:e.name,label:e.label,options:r})))}))},pc=()=>({...(0,le.get)(window,"wpseoScriptData.defaultSettingValues",{})}),mc=(0,Tt.createSlice)({name:"defaultSettingValues",initialState:pc(),reducers:{}}),fc={selectDefaultSettingValue:(e,t,s={})=>(0,le.get)(e,`defaultSettingValues.${t}`,s),selectDefaultSettingValues:e=>(0,le.get)(e,"defaultSettingValues",{})},hc=mc.actions,yc=mc.reducer,_c=()=>(0,le.get)(window,"wpseoScriptData.fallbacks",{}),wc=(0,Tt.createSlice)({name:"fallbacks",initialState:_c(),reducers:{}}),gc={selectFallback:(e,t,s={})=>(0,le.get)(e,`fallbacks.${t}`,s),selectFallbacks:e=>(0,le.get)(e,"fallbacks",{})},bc=wc.actions,vc=wc.reducer,Ec=(0,Tt.createEntityAdapter)(),xc=()=>Ec.getInitialState({status:Qt,error:""}),kc="fetchMedia",Sc=e=>{var t,s;return{id:null==e?void 0:e.id,title:(null==e||null===(t=e.title)||void 0===t?void 0:t.rendered)||(null==e?void 0:e.title),slug:(null==e?void 0:e.slug)||(null==e?void 0:e.name),alt:(null==e?void 0:e.alt_text)||(null==e?void 0:e.alt),url:(null==e?void 0:e.source_url)||(null==e?void 0:e.url),type:(null==e?void 0:e.media_type)||(null==e?void 0:e.type),mime:(null==e?void 0:e.mime_type)||(null==e?void 0:e.mime),author:null==e?void 0:e.author,sizes:(0,le.mapValues)((null==e?void 0:e.sizes)||(null==e||null===(s=e.media_details)||void 0===s?void 0:s.sizes),(e=>({url:(null==e?void 0:e.url)||(null==e?void 0:e.source_url),width:null==e?void 0:e.width,height:null==e?void 0:e.height})),{})}},Lc=(0,Tt.createSlice)({name:"media",initialState:xc(),reducers:{addOneMedia:{reducer:Ec.addOne,prepare:e=>({payload:Sc(e)})},addManyMedia:{reducer:Ec.addMany,prepare:e=>({payload:(0,le.map)(e,Sc)})}},extraReducers:e=>{e.addCase(`${kc}/${Kt}`,(e=>{e.status=Xt})),e.addCase(`${kc}/${Zt}`,((e,t)=>{e.status=es,Ec.addMany(e,(0,le.map)(t.payload,Sc))})),e.addCase(`${kc}/${Jt}`,((e,t)=>{e.status=ts,e.error=t.payload}))}}),Tc=Ec.getSelectors((e=>e.media)),Fc={selectMediaIds:Tc.selectIds,selectMediaById:Tc.selectById,selectIsMediaLoading:e=>(0,le.get)(e,"media.status",Qt)===Xt,selectIsMediaError:e=>(0,le.get)(e,"media.status",Qt)===ts},$c={...Lc.actions,fetchMedia:function*(e){yield{type:`${kc}/${Kt}`};try{const t=yield{type:kc,payload:{per_page:100,include:e}};return{type:`${kc}/${Zt}`,payload:t}}catch(e){return{type:`${kc}/${Jt}`,payload:e}}}},Pc={[kc]:async({payload:e})=>Gt()({path:`/wp/v2/media?${(0,Rt.buildQueryString)(e)}`})},Rc=Lc.reducer,Nc=window.wp.htmlEntities,Ic=(0,Tt.createEntityAdapter)(),Oc="fetchPages",Cc="pages";let Ac;const Mc=e=>{var t;return{id:null==e?void 0:e.id,name:(0,Nc.decodeEntities)((0,le.trim)(null==e?void 0:e.title.rendered))||(null==e?void 0:e.slug)||e.id,slug:null==e?void 0:e.slug,protected:null==e||null===(t=e.content)||void 0===t?void 0:t.protected}},Dc=(0,Tt.createSlice)({name:"pages",initialState:Ic.getInitialState({status:Qt,error:""}),reducers:{addOnePage:{reducer:Ic.addOne,prepare:e=>({payload:Mc(e)})},addManyPages:{reducer:Ic.addMany,prepare:e=>({payload:(0,le.map)(e,Mc)})}},extraReducers:e=>{e.addCase(`${Oc}/${Kt}`,(e=>{e.status=Xt})),e.addCase(`${Oc}/${Zt}`,((e,t)=>{e.status=es,Ic.addMany(e,(0,le.map)(t.payload,Mc))})),e.addCase(`${Oc}/${Jt}`,((e,t)=>{e.status=ts,e.error=t.payload}))}}),Bc=Dc.getInitialState,Uc=Ic.getSelectors((e=>e.pages)),Vc={selectPageIds:Uc.selectIds,selectPageById:Uc.selectById,selectPages:Uc.selectEntities};Vc.selectPagesWith=(0,Tt.createSelector)([Vc.selectPages,(e,t={})=>t],((e,t)=>{const s={};t.forEach((t=>{null!=t&&t.id&&!e[t.id]&&(s[t.id]={...t})}));const r=(0,le.pickBy)(e,(e=>!e.protected));return{...s,...r}}));const jc={...Dc.actions,fetchPages:function*(e){yield{type:`${Oc}/${Kt}`};try{const t=yield{type:Oc,payload:{...e}};return{type:`${Oc}/${Zt}`,payload:t}}catch(e){return{type:`${Oc}/${Jt}`,payload:e}}}},zc={[Oc]:async({payload:e})=>{var t;return null===(t=Ac)||void 0===t||t.abort(),Ac=new AbortController,Gt()({path:`/wp/v2/pages?${(0,Rt.buildQueryString)(e)}`,signal:Ac.signal})}},qc=Dc.reducer,Wc=()=>({recommended:(0,le.get)(window,"wpseoScriptData.replacementVariables.recommended",{}),shared:(0,le.get)(window,"wpseoScriptData.replacementVariables.shared",[]),specific:(0,le.get)(window,"wpseoScriptData.replacementVariables.specific",{}),variables:(0,le.get)(window,"wpseoScriptData.replacementVariables.variables",[])}),Hc=(0,Tt.createSlice)({name:"replacementVariables",initialState:Wc(),reducers:{}}),Yc={selectRecommendedReplacementVariables:e=>(0,le.get)(e,"replacementVariables.recommended",{}),selectSharedReplacementVariables:e=>(0,le.get)(e,"replacementVariables.shared",[]),selectSpecificReplacementVariables:e=>(0,le.get)(e,"replacementVariables.specific",{}),selectReplacementVariables:e=>(0,le.get)(e,"replacementVariables.variables",[])};Yc.selectSpecificReplacementVariablesFor=(0,Tt.createSelector)([Yc.selectSharedReplacementVariables,Yc.selectSpecificReplacementVariables,(e,t)=>t,(e,t,s)=>s],((e,t,s,r)=>[...e,...(0,le.get)(t,s,(0,le.get)(t,r,[]))])),Yc.selectReplacementVariablesFor=(0,Tt.createSelector)([Yc.selectReplacementVariables,Yc.selectSpecificReplacementVariablesFor],((e,t)=>(0,le.filter)(e,(({name:e})=>(0,le.includes)(t,e))))),Yc.selectRecommendedReplacementVariablesFor=(0,Tt.createSelector)([Yc.selectRecommendedReplacementVariables,(e,t)=>t,(e,t,s)=>s],((e,t,s)=>(0,le.get)(e,t,(0,le.get)(e,s,[]))));const Gc=Hc.actions,Kc=Hc.reducer,Zc=(e,t)=>{ // translators: %1$s expands to the schema type, e.g. "Web Page" or "Blog Post". const s=(0,Lt.__)("%1$s (default)","wordpress-seo");return e.map((({label:e,value:r})=>({value:r,label:r===t?(0,Lt.sprintf)(s,e):e})))},Jc=()=>({articleTypes:(0,le.get)(window,"wpseoScriptData.schema.articleTypes",{}),articleTypeDefaults:(0,le.get)(window,"wpseoScriptData.schema.articleTypeDefaults",{}),pageTypes:(0,le.get)(window,"wpseoScriptData.schema.pageTypes",{}),pageTypeDefaults:(0,le.get)(window,"wpseoScriptData.schema.pageTypeDefaults",{})}),Qc=(0,Tt.createSlice)({name:"schema",initialState:Jc(),reducers:{}}),Xc={selectSchema:e=>(0,le.get)(e,"schema",{}),selectArticleTypes:e=>(0,le.get)(e,"schema.articleTypes",{}),selectArticleTypeDefaults:e=>(0,le.get)(e,"schema.articleTypeDefaults",{}),selectPageTypes:e=>(0,le.get)(e,"schema.pageTypes",{}),selectPageTypeDefaults:e=>(0,le.get)(e,"schema.pageTypeDefaults",{})};Xc.selectArticleTypeValues=(0,Tt.createSelector)(Xc.selectArticleTypes,(e=>(0,le.values)(e))),Xc.selectArticleTypeDefault=(0,Tt.createSelector)([Xc.selectArticleTypeDefaults,(e,t)=>t],((e,t)=>(0,le.get)(e,t,"None"))),Xc.selectArticleTypeValuesFor=(0,Tt.createSelector)([Xc.selectArticleTypeValues,Xc.selectArticleTypeDefault],((e,t)=>Zc(e,t))),Xc.selectPageTypeValues=(0,Tt.createSelector)(Xc.selectPageTypes,(e=>(0,le.values)(e))),Xc.selectPageTypeDefault=(0,Tt.createSelector)([Xc.selectPageTypeDefaults,(e,t)=>t],((e,t)=>(0,le.get)(e,t,"WebPage"))),Xc.selectPageTypeValuesFor=(0,Tt.createSelector)([Xc.selectPageTypeValues,Xc.selectPageTypeDefault],((e,t)=>Zc(e,t)));const ed=Qc.actions,td=Qc.reducer,sd=(e,{userLocale:t})=>yn((0,le.join)([...(0,le.isArray)(null==e?void 0:e.keywords)?e.keywords:[],null==e?void 0:e.routeLabel,null==e?void 0:e.fieldLabel]," "),t),rd=(e,t="",{userLocale:s})=>(0,le.reduce)(e,((e,r,a)=>{const o=(0,le.join)((0,le.filter)([t,a],Boolean),".");return"other_social_urls"===a?{...e,[o]:{route:null==r?void 0:r.route,routeLabel:null==r?void 0:r.routeLabel,fieldId:null==r?void 0:r.fieldId,fieldLabel:null==r?void 0:r.fieldLabel,keywords:sd(r,{userLocale:s})}}:null!=r&&r.route?{...e,[o]:{...r,keywords:sd(r,{userLocale:s})}}:{...e,...rd(r,o,{userLocale:s})}}),{}),ad=()=>{const e=(0,le.get)(window,"wpseoScriptData.postTypes",{}),t=(0,le.get)(window,"wpseoScriptData.taxonomies",{}),s=(0,le.get)(window,"wpseoScriptData.preferences.userLocale",{});return{index:bn(e,t,{userLocale:s})}},od=(0,Tt.createSlice)({name:"search",initialState:ad(),reducers:{}}),nd={selectSearchIndex:e=>(0,le.get)(e,"search.index",{})};nd.selectQueryableSearchIndex=(0,Tt.createSelector)([nd.selectSearchIndex,e=>tc.selectPreference(e,"userLocale")],((e,t)=>rd(e,"",{userLocale:t})));const id=od.actions,ld=od.reducer,cd=(0,Tt.createEntityAdapter)(),dd="fetchUsers",ud=()=>cd.getInitialState({status:Qt,error:""}),pd=e=>({id:null==e?void 0:e.id,name:(0,le.trim)(null==e?void 0:e.name)||(null==e?void 0:e.slug)||(null==e?void 0:e.id),slug:null==e?void 0:e.slug}),md=(0,Tt.createSlice)({name:"users",initialState:ud(),reducers:{addOneUser:{reducer:cd.addOne,prepare:e=>({payload:pd(e)})},addManyUsers:{reducer:cd.addMany,prepare:e=>({payload:(0,le.map)(e,pd)})}},extraReducers:e=>{e.addCase(`${dd}/${Kt}`,(e=>{e.status=Xt})),e.addCase(`${dd}/${Zt}`,((e,t)=>{e.status=es,cd.addMany(e,(0,le.map)(t.payload,pd))})),e.addCase(`${dd}/${Jt}`,((e,t)=>{e.status=ts,e.error=t.payload}))}}),fd=cd.getSelectors((e=>e.users)),hd={selectUserIds:fd.selectIds,selectUserById:fd.selectById,selectUsers:fd.selectEntities};hd.selectUsersWith=(0,Tt.createSelector)([hd.selectUsers,(e,t={})=>t],((e,t)=>null!=t&&t.id&&!e[t.id]?{...e,[t.id]:{...t}}:e));const yd={...md.actions,fetchUsers:function*(e){yield{type:`${dd}/${Kt}`};try{const t=yield{type:dd,payload:{...e}};return{type:`${dd}/${Zt}`,payload:t}}catch(e){return{type:`${dd}/${Jt}`,payload:e}}}},_d={[dd]:async({payload:e})=>Gt()({path:`/wp/v2/users?${(0,Rt.buildQueryString)(e)}`})},wd=md.reducer,{isPromotionActive:gd}=Wl.selectors,{currentPromotions:bd}=Wl.reducers,{setCurrentPromotions:vd}=Wl.actions,Ed=({initialState:e={}}={})=>{(0,a.register)((({initialState:e})=>(0,a.createReduxStore)(Qr,{actions:{...hc,...bc,...At,...$c,...jt,...jc,...Jl,...sc,...Gc,...ed,...id,...cc,...yd,setCurrentPromotions:vd},selectors:{...uc,...fc,...gc,...Ct,...Fc,...Vt,...Vc,...Kl,...tc,...Yc,...Xc,...nd,...ic,...hd,isPromotionActive:gd},initialState:(0,le.merge)({},{defaultSettingValues:pc(),fallbacks:_c(),[Nt]:Ot(),media:xc(),[Dt]:Ut(),[Cc]:Bc(),postTypes:Hl(),preferences:Xl(),replacementVariables:Wc(),schema:Jc(),search:ad(),taxonomies:ac(),users:ud(),currentPromotions:{promotions:[]}},e),reducer:(0,a.combineReducers)({defaultSettingValues:yc,fallbacks:vc,[Nt]:Mt,media:Rc,[Dt]:zt,[Cc]:qc,postTypes:Ql,preferences:rc,replacementVariables:Kc,schema:td,search:ld,taxonomies:dc,users:wd,currentPromotions:bd}),controls:{...Pc,..._d,...Zl,...lc,...zc}}))({initialState:e}))};n()((()=>{const t=document.getElementById("yoast-seo-settings");if(!t)return;const s=document.createElement("div"),o=s.attachShadow({mode:"open"});document.body.appendChild(s);const n=(0,le.get)(window,"wpseoScriptData.settings",{}),c=(0,le.get)(window,"wpseoScriptData.fallbacks",{}),d=(0,le.get)(window,"wpseoScriptData.postTypes",{}),u=(0,le.get)(window,"wpseoScriptData.taxonomies",{}),p=(0,le.get)(window,"wpseoScriptData.showNewContentTypeNotification",!1)?{"new-content-type":{id:"new-content-type",variant:"info",size:"large",title:(0,Lt.__)("New type of content added to your site!","wordpress-seo"),description:(0,Lt.__)("Please see the “New” badges and review the Search appearance settings.","wordpress-seo")}}:{};Ed({initialState:{notifications:p,[Nt]:(0,le.get)(window,"wpseoScriptData.linkParams",{}),currentPromotions:{promotions:(0,le.get)(window,"wpseoScriptData.currentPromotions",[])}}}),(async({settings:e,fallbacks:t})=>{const s=(0,le.get)(e,"wpseo_titles",{}),r=(0,le.filter)([(0,le.get)(e,"wpseo_social.og_default_image_id","0"),(0,le.get)(e,"wpseo_titles.open_graph_frontpage_image_id","0"),(0,le.get)(e,"wpseo_titles.company_logo_id","0"),(0,le.get)(e,"wpseo_titles.person_logo_id","0"),(0,le.get)(t,"siteLogoId","0"),...(0,le.reduce)(s,((e,t,s)=>(0,le.includes)(s,"social-image-id")?[...e,t]:e),[])],Boolean),o=(0,le.chunk)(r,100),{fetchMedia:n}=(0,a.dispatch)(Qr);(0,le.forEach)(o,n)})({settings:n,fallbacks:c}),(async({settings:e})=>{const t=(0,le.get)(e,"wpseo_titles.company_or_person_user_id"),{fetchUsers:s}=(0,a.dispatch)(Qr);t&&s({include:[t]})})({settings:n}),document.querySelector('[href="#wpbody-content"]').addEventListener("click",(e=>{var t,s;e.preventDefault(),window.outerWidth>782?null===(s=document.getElementById("link-yoast-logo"))||void 0===s||s.focus():null===(t=document.getElementById("button-open-settings-navigation-mobile"))||void 0===t||t.focus()})),document.querySelector('[href="#wp-toolbar"]').addEventListener("click",(e=>{var t;e.preventDefault(),null===(t=document.querySelector("#wp-admin-bar-wp-logo a"))||void 0===t||t.focus()})),(()=>{const e=document.getElementById("wpcontent"),t=document.getElementById("adminmenuwrap");e&&t&&(e.style.minHeight=`${t.offsetHeight}px`)})();const m=(0,a.select)(Qr).selectPreference("isRtl",!1);(0,i.render)((0,e.createElement)(l.Root,{context:{isRtl:m}},(0,e.createElement)(St.StyleSheetManager,{target:o},(0,e.createElement)(r.SlotFillProvider,null,(0,e.createElement)(gt,null,(0,e.createElement)(K,{initialValues:n,validationSchema:zi(d,u),onSubmit:En},(0,e.createElement)(ql,null)))))),t)}))})()})();js/dist/used-keywords-assessment.js000064400000001416147206602470013463 0ustar00(()=>{"use strict";const s=window.yoast.analysis.bundledPlugins.usedKeywords;(new class{constructor(){this._initialized=!1}register(){analysisWorker.registerMessageHandler("updateKeywordUsage",this.updateKeywordUsage.bind(this),"used-keywords-assessment"),analysisWorker.registerMessageHandler("initialize",this.initialize.bind(this),"used-keywords-assessment")}initialize(e){this._plugin=new s(analysisWorker,e),this._plugin.registerPlugin(),this._initialized=!0}updateKeywordUsage(s){if(!this._initialized)throw new Error("UsedKeywordsAssessment must be initialized before keyphrases can be updated.");const e=s.usedKeywords,i=s.usedKeywordsPostTypes;this._plugin.updateKeywordUsage(e,i),analysisWorker.refreshAssessment("usedKeywords","previouslyUsedKeywords")}}).register()})();js/dist/import.js000064400000013417147206602470010011 0ustar00(()=>{"use strict";var t={n:e=>{var s=e&&e.__esModule?()=>e.default:()=>e;return t.d(s,{a:s}),s},d:(e,s)=>{for(var n in s)t.o(s,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:s[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)};const e=window.jQuery;var s=t.n(e);const n=window.wp.i18n;class a extends Error{constructor(t){super(t),this.name="ImportValidationError"}}const i=window.lodash;class o extends Error{constructor(t,e,s,n,a){super(t),this.name="RequestError",this.url=e,this.method=s,this.statusCode=n,this.stackTrace=a}}class r extends Error{constructor(t,e){super(t),this.name="ParseError",this.parseString=e}}class d{constructor(t,e=[],s=[]){this.settings=t,(0,i.isObject)(e)?this.preIndexingActions=(0,i.pickBy)(e,i.isFunction):this.preIndexingActions={},(0,i.isObject)(s)?this.postIndexingActions=(0,i.pickBy)(s,i.isFunction):this.postIndexingActions={}}async index(t,e){if(!(0,i.isObject)(t))return 0;let s=0;for(const n of Object.keys(t)){const a=t[n];s=await this.handleEndpoint(n,a,s,e)}return s}async handleEndpoint(t,e,s,n){let a=this.settings.restApi.root+e;for(;!1!==a;){await this.doPreIndexingAction(t);const e=await this.doIndexingRequest(a);await this.doPostIndexingAction(t,e),n(s+=e.objects.length),a=!!e.next_url&&this.settings.restApi.root+e.next_url}return s}async doIndexingRequest(t){const e=await fetch(t,{method:"POST",headers:{"X-WP-Nonce":this.settings.restApi.nonce}}),s=await e.text();let n;try{n=JSON.parse(s)}catch(t){throw new r("Error parsing the response to JSON.",s)}if(!e.ok){const s=n.data?n.data.stackTrace:"";throw"wpseo_error_validation"===(n.code?n.code:"")?new a(n.message):new o(n.message,t,"POST",e.status,s)}return n}async doPreIndexingAction(t){this.preIndexingActions[t]&&await this.preIndexingActions[t](this.settings)}async doPostIndexingAction(t,e){this.postIndexingActions[t]&&await this.postIndexingActions[t](e.objects,this.settings)}}const p="WPSEO_Import_AIOSEO_V4";let c,l,m,h,u,g,w,f,y,x,_,I;function v(t){var e=m,s=f,n=c;"import"===t&&(e=g,s=y,n=h),e.children(".yoast-import-spinner").show(),s.show(),e.closest("div").find(".yoast-import-failure").remove(),n.prop("disabled",!0)}function b(t){v("import")}function D(t){v("cleanup")}function A(t){var e=m,n=f,a=c,i=l;"import"===t&&(e=g,n=y,a=h,i=u),e.children(".yoast-import-spinner").hide(),n.hide(),e.children(".yoast-import-success-mark").show(),e.closest("div").find(".yoast-import-failure").remove(),a.prop("disabled",!1),s()("option:selected",i).remove(),s()("option[value='']",i).prop("selected",!0),i.trigger("change"),i.children("option").length<2&&(i.prop("disabled",!0),e.after(s()("

    ").text(window.yoastImportData.assets.no_data_msg)))}function O(){A("import")}function E(){A("cleanup")}function P(t,e){var i,o=m,r=f,d=c,p=window.yoastImportData.assets.cleanup_failure;"import"===e&&(o=g,r=y,d=h,p=window.yoastImportData.assets.import_failure),o.children(".yoast-import-spinner").hide(),r.hide(),d.prop("disabled",!1),i=t instanceof a?window.yoastImportData.assets.validation_failure:(0,n.sprintf)(p,""+t+"");var l=s()("
    ").addClass("yoast-measure yoast-import-failure").html(i);o.after(l)}function j(t){P(t,"import")}function k(t){P(t,"cleanup")}function S(t){u.val()===p&&(t.preventDefault(),new d(window.yoastImportData).index(window.yoastImportData.restApi.importing_endpoints.aioseo,b).then(O).catch(j))}function C(t){l.val()===p&&(t.preventDefault(),new d(window.yoastImportData).index(window.yoastImportData.restApi.cleanup_endpoints.aioseo,D).then(E).catch(k))}function T(t){var e,a,i,o=t.closest("form").find("input[type=submit]");t.on("change",(function(){""!==(e=s()(this).find("option:selected").attr("value"))?(o.prop("disabled",!1),t===u&&(a=(0,n.sprintf)(window.yoastImportData.assets.replacing_texts.select_header,s()(this).find("option:selected").text()),i=e===p?window.yoastImportData.assets.replacing_texts.plugins.aioseo:window.yoastImportData.assets.replacing_texts.plugins.other,a+="
      ",i.forEach((function(t){a+="
    • "+t.data_name+"
      "+t.data_note+"
    • "})),a+="
    ",I.html(a))):o.prop("disabled",!0)}))}s()((function(){c=s()("[name='clean_external']"),c.val(window.yoastImportData.assets.replacing_texts.cleanup_button),l=s()("[name='clean_external_plugin']"),m=s()(c).parents("form:first"),h=s()("[name='import_external']"),u=s()("[name='import_external_plugin']"),g=s()(h).parents("form:first"),g.after(s()("

    ").html(""+window.yoastImportData.assets.note+""+window.yoastImportData.assets.cleanup_after_import_msg)),w=s()("").addClass("yoast-import-spinner").attr("src",window.yoastImportData.assets.spinner).css({display:"inline-block","margin-left":"10px","vertical-align":"middle"}).hide(),y=s()("").html(window.yoastImportData.assets.loading_msg_import).css({"margin-left":"5px","vertical-align":"middle"}).hide(),f=s()("").html(window.yoastImportData.assets.loading_msg_cleanup).css({"margin-left":"5px","vertical-align":"middle"}).hide(),x=s()("").addClass("dashicons dashicons-yes-alt yoast-import-success-mark").css({"margin-left":"10px","vertical-align":"middle",color:"green"}).hide(),I=s()(".yoast-import-explanation"),I.html(window.yoastImportData.assets.replacing_texts.import_explanation),_=s()(".yoast-cleanup-explanation"),_.html(window.yoastImportData.assets.replacing_texts.cleanup_explanation),u&&(T(u),u.append("").trigger("change")),l&&(T(l),l.append("").trigger("change")),g&&g.on("submit",S),m&&m.on("submit",C),s()(x).insertAfter([h,c]),s()(y).insertAfter(h),s()(f).insertAfter(c),s()(w).insertAfter([h,c])}))})();js/dist/classic-editor.js000064400000502547147206602470011413 0ustar00(()=>{var e={6746:(e,t,s)=>{"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=i(s(9196)),a=i(s(9156)),o=i(s(6743));function i(e){return e&&e.__esModule?e:{default:e}}var l=void 0;function c(e,t){var s,o,i,d,u,p,m,h,g=[],y={};for(p=0;p "+l);if("componentClose"===u.type)throw new Error("Missing opening component token: `"+u.value+"`");if("componentOpen"===u.type){s=t[u.value],i=p;break}g.push(t[u.value])}else g.push(u.value);return s&&(d=function(e,t){var s,n,r=t[e],a=0;for(n=e+1;n{"use strict";function t(e){return e.match(/^\{\{\//)?{type:"componentClose",value:e.replace(/\W/g,"")}:e.match(/\/\}\}$/)?{type:"componentSelfClosing",value:e.replace(/\W/g,"")}:e.match(/^\{\{/)?{type:"componentOpen",value:e.replace(/\W/g,"")}:{type:"string",value:e}}e.exports=function(e){return e.split(/(\{\{\/?\s*\w+\s*\/?\}\})/g).map(t)}},9156:(e,t,s)=>{"use strict";var n=s(9196),r="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,a=s(7942),o=s(9179),i=s(397),l=".",c=":",d="function"==typeof Symbol&&Symbol.iterator,u="@@iterator";function p(e,t){return e&&"object"==typeof e&&null!=e.key?(s=e.key,n={"=":"=0",":":"=2"},"$"+(""+s).replace(/[=:]/g,(function(e){return n[e]}))):t.toString(36);var s,n}function m(e,t,s,n){var a,i=typeof e;if("undefined"!==i&&"boolean"!==i||(e=null),null===e||"string"===i||"number"===i||"object"===i&&e.$$typeof===r)return s(n,e,""===t?l+p(e,0):t),1;var h=0,g=""===t?l:t+c;if(Array.isArray(e))for(var y=0;y{"use strict";function t(e){return function(){return e}}var s=function(){};s.thatReturns=t,s.thatReturnsFalse=t(!1),s.thatReturnsTrue=t(!0),s.thatReturnsNull=t(null),s.thatReturnsThis=function(){return this},s.thatReturnsArgument=function(e){return e},e.exports=s},9179:e=>{"use strict";e.exports=function(e,t,s,n,r,a,o,i){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[s,n,r,a,o,i],d=0;(l=new Error(t.replace(/%s/g,(function(){return c[d++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},397:(e,t,s)=>{"use strict";var n=s(7942);e.exports=n},4530:(e,t)=>{var s;!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t{"use strict";e.exports=window.React}},t={};function s(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,s),a.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=s(9196),t=s.n(e);const n=window.wp.element,r=window.wp.components,a=window.yoast.propTypes;var o=s.n(a);const i=window.lodash,l=window.yoast.styledComponents;var c=s.n(l);const d=window.yoast.externals.contexts,u=({theme:t,location:s,children:n})=>(0,e.createElement)(d.LocationProvider,{value:s},(0,e.createElement)(l.ThemeProvider,{theme:t},n));u.propTypes={theme:o().object.isRequired,location:o().oneOf(["sidebar","metabox","modal"]).isRequired,children:o().element.isRequired};const p=u,m=window.yoast.uiLibrary,h=window.wp.data;const g=window.yoast.componentsNew,y=window.yoast.styleGuide,f=window.yoast.analysis;function b(e){switch(e){case"loading":return{icon:"loading-spinner",color:y.colors.$color_green_medium_light};case"not-set":return{icon:"seo-score-none",color:y.colors.$color_score_icon};case"noindex":return{icon:"seo-score-none",color:y.colors.$color_noindex};case"good":return{icon:"seo-score-good",color:y.colors.$color_green_medium};case"ok":return{icon:"seo-score-ok",color:y.colors.$color_ok};default:return{icon:"seo-score-bad",color:y.colors.$color_red}}}function w({target:e,children:t}){let s=e;return"string"==typeof e&&(s=document.getElementById(e)),s?(0,n.createPortal)(t,s):null}w.propTypes={target:o().oneOfType([o().string,o().object]).isRequired,children:o().node.isRequired};const E=({target:t,scoreIndicator:s})=>(0,e.createElement)(w,{target:t},(0,e.createElement)(g.SvgIcon,{...b(s)}));E.propTypes={target:o().string.isRequired,scoreIndicator:o().string.isRequired};const v=E,k=window.wp.i18n,_=({handleRefreshClick:t,supportLink:s})=>(0,e.createElement)("div",{className:"yst-flex yst-gap-2"},(0,e.createElement)(m.Button,{onClick:t},(0,k.__)("Refresh this page","wordpress-seo")),(0,e.createElement)(m.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,k.__)("Contact support","wordpress-seo")));_.propTypes={handleRefreshClick:o().func.isRequired,supportLink:o().string.isRequired};const x=({handleRefreshClick:t,supportLink:s})=>(0,e.createElement)("div",{className:"yst-grid yst-grid-cols-1 yst-gap-y-2"},(0,e.createElement)(m.Button,{className:"yst-order-last",onClick:t},(0,k.__)("Refresh this page","wordpress-seo")),(0,e.createElement)(m.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,k.__)("Contact support","wordpress-seo")));x.propTypes={handleRefreshClick:o().func.isRequired,supportLink:o().string.isRequired};const T=({error:t,children:s})=>(0,e.createElement)("div",{role:"alert",className:"yst-max-w-screen-sm yst-p-8 yst-space-y-4"},(0,e.createElement)(m.Title,null,(0,k.__)("Something went wrong. An unexpected error occurred.","wordpress-seo")),(0,e.createElement)("p",null,(0,k.__)("We're very sorry, but it seems like the following error has interrupted our application:","wordpress-seo")),(0,e.createElement)(m.Alert,{variant:"error"},(null==t?void 0:t.message)||(0,k.__)("Undefined error message.","wordpress-seo")),(0,e.createElement)("p",null,(0,k.__)("Unfortunately, this means that any unsaved changes in this section will be lost. You can try and refresh this page to resolve the problem. If this error still occurs, please get in touch with our support team, and we'll get you all the help you need!","wordpress-seo")),s);T.propTypes={error:o().object.isRequired,children:o().node},T.VerticalButtons=x,T.HorizontalButtons=_;const S=({error:t})=>{const s=(0,n.useCallback)((()=>{var e,t;return null===(e=window)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.reload()}),[]),r=(0,h.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/metabox-error-support")),[]),a=(0,h.useSelect)((e=>e("yoast-seo/editor").getPreference("isRtl",!1)),[]);return(0,n.useEffect)((()=>{document.querySelectorAll('[id^="wpseo-meta-tab-"]').forEach((e=>{!function(e){const t=document.querySelector(`#${e}`);null!==t&&(t.style.opacity="0.5",t.style.pointerEvents="none",t.setAttribute("aria-disabled","true"),t.classList.contains("yoast-active-tab")&&t.classList.remove("yoast-active-tab"))}(e.id)}))}),[]),(0,e.createElement)(m.Root,{context:{isRtl:a}},(0,e.createElement)(T,{error:t},(0,e.createElement)(T.HorizontalButtons,{supportLink:r,handleRefreshClick:s}),(0,e.createElement)(v,{target:"wpseo-seo-score-icon",scoreIndicator:"not-set"}),(0,e.createElement)(v,{target:"wpseo-readability-score-icon",scoreIndicator:"not-set"}),(0,e.createElement)(v,{target:"wpseo-inclusive-language-score-icon",scoreIndicator:"not-set"})))};function R({theme:t}){return(0,e.createElement)(p,{theme:t,location:"metabox"},(0,e.createElement)(m.ErrorBoundary,{FallbackComponent:S},(0,e.createElement)(r.Slot,{name:"YoastMetabox"},(e=>{return void 0===(t=e).length?t:(0,i.flatten)(t).sort(((e,t)=>void 0===e.props.renderPriority?1:e.props.renderPriority-t.props.renderPriority));var t}))))}S.propTypes={error:o().object.isRequired};const I=window.wp.compose,C=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{d:"M2 11a1 1 0 011-1h2a1 1 0 011 1v5a1 1 0 01-1 1H3a1 1 0 01-1-1v-5zM8 7a1 1 0 011-1h2a1 1 0 011 1v9a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM14 4a1 1 0 011-1h2a1 1 0 011 1v12a1 1 0 01-1 1h-2a1 1 0 01-1-1V4z"}))}));var L=s(4530),P=s.n(L);const A=({className:t,...s})=>(0,e.createElement)("span",{className:P()("yst-grow yst-overflow-hidden yst-overflow-ellipsis yst-whitespace-nowrap yst-font-wp yst-text-[#555] yst-text-base yst-leading-[normal] yst-subpixel-antialiased yst-text-left",t),...s});A.displayName="MetaboxButton.Text",A.propTypes={className:o().string},A.defaultProps={className:""};const F=({className:t,...s})=>(0,e.createElement)("button",{type:"button",className:P()("yst-flex yst-items-center yst-w-full yst-pt-4 yst-pb-4 yst-pr-4 yst-pl-6 yst-space-x-2 yst-border-t yst-border-t-[rgb(0,0,0,0.2)] yst-rounded-none yst-transition-all hover:yst-bg-[#f0f0f0] focus:yst-outline focus:yst-outline-[1px] focus:yst-outline-[color:#0066cd] focus:-yst-outline-offset-1 focus:yst-shadow-[0_0_3px_rgba(8,74,103,0.8)]",t),...s});F.propTypes={className:o().string},F.defaultProps={className:""},F.Text=A;const q=window.yoast.helpers,M=c().div` min-width: 600px; @media screen and ( max-width: 680px ) { min-width: 0; width: 86vw; } `,D=c().div` @media screen and ( min-width: 600px ) { max-width: 420px; } `,O=(c()(g.Icon)` float: ${(0,q.getDirectionalStyle)("right","left")}; margin: ${(0,q.getDirectionalStyle)("0 0 16px 16px","0 16px 16px 0")}; && { width: 150px; height: 150px; @media screen and ( max-width: 680px ) { width: 80px; height: 80px; } } `,"yoast yoast-gutenberg-modal"),N=t=>{const{title:s,className:n,showYoastIcon:a,additionalClassName:o,...i}=t,l=a?(0,e.createElement)("span",{className:"yoast-icon"}):null;return(0,e.createElement)(r.Modal,{title:s,className:`${n} ${o}`,icon:l,...i},t.children)};N.propTypes={title:o().string,className:o().string,showYoastIcon:o().bool,children:o().oneOfType([o().node,o().arrayOf(o().node)]),additionalClassName:o().string},N.defaultProps={title:"Yoast SEO",className:O,showYoastIcon:!0,children:null,additionalClassName:""};const B=N;var $,W;function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",U({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 425 456.27"},t),$||($=e.createElement("path",{d:"M73 405.26a66.79 66.79 0 0 1-6.54-1.7 64.75 64.75 0 0 1-6.28-2.31c-1-.42-2-.89-3-1.37-1.49-.72-3-1.56-4.77-2.56-1.5-.88-2.71-1.64-3.83-2.39-.9-.61-1.8-1.26-2.68-1.92a70.154 70.154 0 0 1-5.08-4.19 69.21 69.21 0 0 1-8.4-9.17c-.92-1.2-1.68-2.25-2.35-3.24a70.747 70.747 0 0 1-3.44-5.64 68.29 68.29 0 0 1-8.29-32.55V142.13a68.26 68.26 0 0 1 8.29-32.55c1-1.92 2.21-3.82 3.44-5.64s2.55-3.58 4-5.27a69.26 69.26 0 0 1 14.49-13.25C50.37 84.19 52.27 83 54.2 82A67.59 67.59 0 0 1 73 75.09a68.75 68.75 0 0 1 13.75-1.39h169.66L263 55.39H86.75A86.84 86.84 0 0 0 0 142.13v196.09A86.84 86.84 0 0 0 86.75 425h11.32v-18.35H86.75A68.75 68.75 0 0 1 73 405.26zM368.55 60.85l-1.41-.53-6.41 17.18 1.41.53a68.06 68.06 0 0 1 8.66 4c1.93 1 3.82 2.2 5.65 3.43A69.19 69.19 0 0 1 391 98.67c1.4 1.68 2.72 3.46 3.95 5.27s2.39 3.72 3.44 5.64a68.29 68.29 0 0 1 8.29 32.55v264.52H233.55l-.44.76c-3.07 5.37-6.26 10.48-9.49 15.19L222 425h203V142.13a87.2 87.2 0 0 0-56.45-81.28z"})),W||(W=e.createElement("path",{stroke:"#000",strokeMiterlimit:10,strokeWidth:3.81,d:"M119.8 408.28v46c28.49-1.12 50.73-10.6 69.61-29.58 19.45-19.55 36.17-50 52.61-96L363.94 1.9H305l-98.25 272.89-48.86-153h-54l71.7 184.18a75.67 75.67 0 0 1 0 55.12c-7.3 18.68-20.25 40.66-55.79 47.19z"}))),H=t=>(0,e.createElement)("div",{className:"yoast components-panel__body"},(0,e.createElement)("h2",{className:"components-panel__body-title"},(0,e.createElement)("button",{id:t.id,onClick:t.onClick,className:"components-button components-panel__body-toggle",type:"button"},t.prefixIcon&&(0,e.createElement)("span",{className:"yoast-icon-span",style:{fill:`${t.prefixIcon&&t.prefixIcon.color||""}`}},(0,e.createElement)(g.SvgIcon,{size:t.prefixIcon.size,icon:t.prefixIcon.icon})),(0,e.createElement)("span",{className:"yoast-title-container"},(0,e.createElement)("div",{className:"yoast-title"},t.title),(0,e.createElement)("div",{className:"yoast-subtitle"},t.subTitle)),t.children,t.suffixIcon&&(0,e.createElement)(g.SvgIcon,{size:t.suffixIcon.size,icon:t.suffixIcon.icon}),t.SuffixHeroIcon))),Y=H;H.propTypes={onClick:o().func.isRequired,title:o().string.isRequired,id:o().string,subTitle:o().string,suffixIcon:o().object,SuffixHeroIcon:o().object,prefixIcon:o().object,children:o().node},H.defaultProps={id:"",suffixIcon:null,SuffixHeroIcon:null,prefixIcon:null,subTitle:"",children:null};const z=window.moment;var j=s.n(z),V=s(6746);const G=(0,q.makeOutboundLink)(),Z=t=>{const s=(0,k.sprintf)(/* translators: %d expands to the amount of allowed keyphrases on a free account, %s expands to a link to Wincher plans. */ (0,k.__)("You've reached the maximum amount of %d keyphrases you can add to your Wincher account. If you wish to add more keyphrases, please %s.","wordpress-seo"),t.limit,"{{updateWincherPlanLink/}}");return(0,e.createElement)(g.Alert,{type:"error"},(0,V.Z)({mixedString:s,components:{updateWincherPlanLink:(0,e.createElement)(G,{href:wpseoAdminGlobalL10n["links.wincher.pricing"]},(0,k.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,k.__)("upgrade your %s plan","wordpress-seo"),"Wincher"))}}))};Z.propTypes={limit:o().number},Z.defaultProps={limit:10};const X=Z,Q=()=>(0,e.createElement)(g.Alert,{type:"error"},(0,k.__)("Something went wrong while tracking the ranking position(s) of your page. Please try again later.","wordpress-seo")),J=window.wp.apiFetch;var ee=s.n(J);async function te(e,t,s,n=200){try{const r=await e();return!!r&&(r.status===n?t(r):s(r))}catch(e){console.error(e.message)}}async function se(e){try{return await ee()(e)}catch(e){return e.error&&e.status?e:e instanceof Response&&await e.json()}}async function ne(e){return(0,i.isArray)(e)||(e=[e]),await se({path:"yoast/v1/wincher/keyphrases/track",method:"POST",data:{keyphrases:e}})}const re=c().p` color: ${y.colors.$color_pink_dark}; font-size: 14px; font-weight: 700; margin: 13px 0 10px; `,ae=c()(g.SvgIcon)` margin-right: 5px; vertical-align: middle; `,oe=c().button` position: absolute; top: 9px; right: 9px; border: none; background: none; cursor: pointer; `,ie=c().p` font-size: 13px; font-weight: 500; margin: 10px 0 13px; `,le=c().div` position: relative; background: ${e=>e.isTitleShortened?"#F5F7F7":"transparent"}; border: 1px solid #C7C7C7; border-left: 4px solid${y.colors.$color_pink_dark}; padding: 0 16px; margin-bottom: 1.5em; `,ce=e=>{const[t,s]=(0,n.useState)(null);return(0,n.useEffect)((()=>{e&&!t&&async function(){return await se({path:"yoast/v1/wincher/account/limit",method:"GET"})}().then((e=>s(e)))}),[t]),t};ce.propTypes={limit:o().bool.isRequired};const de=({limit:t,usage:s,isTitleShortened:n,isFreeAccount:r})=>{const a=(0,k.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,k.__)("Your are tracking %1$s out of %2$s keyphrases included in your free account.","wordpress-seo"),s,t),o=(0,k.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,k.__)("Your are tracking %1$s out of %2$s keyphrases included in your account.","wordpress-seo"),s,t),i=r?a:o,l=(0,k.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,k.__)("Keyphrases tracked: %1$s/%2$s","wordpress-seo"),s,t),c=n?l:i;return(0,e.createElement)(re,null,n&&(0,e.createElement)(ae,{icon:"exclamation-triangle",color:y.colors.$color_pink_dark,size:"14px"}),c)};de.propTypes={limit:o().number.isRequired,usage:o().number.isRequired,isTitleShortened:o().bool,isFreeAccount:o().bool};const ue=(0,q.makeOutboundLink)(),pe=({discount:t,months:s})=>{const n=(0,e.createElement)(ue,{href:wpseoAdminGlobalL10n["links.wincher.upgrade"],style:{fontWeight:600}},(0,k.sprintf)(/* Translators: %s : Expands to "Wincher". */ (0,k.__)("Click here to upgrade your %s plan","wordpress-seo"),"Wincher"));if(!t||!s)return(0,e.createElement)(ie,null,n);const r=100*t,a=(0,k.sprintf)( /* Translators: %1$s expands to upgrade account link. * %2$s expands to the upgrade discount value. * %3$s expands to the upgrade discount duration e.g. 2 months. */ (0,k.__)("%1$s and get an exclusive %2$s discount for %3$s month(s).","wordpress-seo"),"{{wincherAccountUpgradeLink/}}",r+"%",s);return(0,e.createElement)(ie,null,(0,V.Z)({mixedString:a,components:{wincherAccountUpgradeLink:n}}))};pe.propTypes={discount:o().number,months:o().number};const me=({onClose:t,isTitleShortened:s,trackingInfo:r})=>{const a=(()=>{const[e,t]=(0,n.useState)(null);return(0,n.useEffect)((()=>{e||async function(){return await se({path:"yoast/v1/wincher/account/upgrade-campaign",method:"GET"})}().then((e=>t(e)))}),[e]),e})();if(null===r)return null;const{limit:o,usage:i}=r;if(!(o&&i/o>=.8))return null;const l=Boolean(null==a?void 0:a.discount);return(0,e.createElement)(le,{isTitleShortened:s},t&&(0,e.createElement)(oe,{type:"button","aria-label":(0,k.__)("Close the upgrade callout","wordpress-seo"),onClick:t},(0,e.createElement)(g.SvgIcon,{icon:"times-circle",color:y.colors.$color_pink_dark,size:"14px"})),(0,e.createElement)(de,{...r,isTitleShortened:s,isFreeAccount:l}),(0,e.createElement)(pe,{discount:null==a?void 0:a.discount,months:null==a?void 0:a.months}))};me.propTypes={onClose:o().func,isTitleShortened:o().bool,trackingInfo:o().object};const he=me,ge=()=>(0,e.createElement)(g.Alert,{type:"success"},(0,k.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,k.__)("You have successfully connected to %s! You can now track the SEO performance for the keyphrase(s) of this page.","wordpress-seo"),"Wincher")),ye=()=>(0,e.createElement)(g.Alert,{type:"info"},(0,k.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,k.__)("%s is currently tracking the ranking position(s) of your page. This may take a few minutes. Please wait or check back later.","wordpress-seo"),"Wincher")),fe=({data:t,mapChartDataToTableData:s,dataTableCaption:n,dataTableHeaderLabels:r,isDataTableVisuallyHidden:a})=>t.length!==r.length?(0,e.createElement)("p",null,(0,k.__)("The number of headers and header labels don't match.","wordpress-seo")):(0,e.createElement)("div",{className:a?"screen-reader-text":null},(0,e.createElement)("table",null,(0,e.createElement)("caption",null,n),(0,e.createElement)("thead",null,(0,e.createElement)("tr",null,r.map(((t,s)=>(0,e.createElement)("th",{key:s},t))))),(0,e.createElement)("tbody",null,(0,e.createElement)("tr",null,t.map(((t,n)=>(0,e.createElement)("td",{key:n},s(t.y))))))));fe.propTypes={data:o().arrayOf(o().shape({x:o().number,y:o().number})).isRequired,mapChartDataToTableData:o().func,dataTableCaption:o().string.isRequired,dataTableHeaderLabels:o().array.isRequired,isDataTableVisuallyHidden:o().bool},fe.defaultProps={mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const be=fe,we=({data:t,width:s,height:r,fillColor:a,strokeColor:o,strokeWidth:i,className:l,mapChartDataToTableData:c,dataTableCaption:d,dataTableHeaderLabels:u,isDataTableVisuallyHidden:p})=>{const m=Math.max(1,Math.max(...t.map((e=>e.x)))),h=Math.max(1,Math.max(...t.map((e=>e.y)))),g=r-i,y=t.map((e=>`${e.x/m*s},${g-e.y/h*g+i}`)).join(" "),f=`0,${g+i} `+y+` ${s},${g+i}`;return(0,e.createElement)(n.Fragment,null,(0,e.createElement)("svg",{width:s,height:r,viewBox:`0 0 ${s} ${r}`,className:l,role:"img","aria-hidden":"true",focusable:"false"},(0,e.createElement)("polygon",{fill:a,points:f}),(0,e.createElement)("polyline",{fill:"none",stroke:o,strokeWidth:i,strokeLinejoin:"round",strokeLinecap:"round",points:y})),c&&(0,e.createElement)(be,{data:t,mapChartDataToTableData:c,dataTableCaption:d,dataTableHeaderLabels:u,isDataTableVisuallyHidden:p}))};we.propTypes={data:o().arrayOf(o().shape({x:o().number,y:o().number})).isRequired,width:o().number.isRequired,height:o().number.isRequired,fillColor:o().string,strokeColor:o().string,strokeWidth:o().number,className:o().string,mapChartDataToTableData:o().func,dataTableCaption:o().string.isRequired,dataTableHeaderLabels:o().array.isRequired,isDataTableVisuallyHidden:o().bool},we.defaultProps={fillColor:null,strokeColor:"#000000",strokeWidth:1,className:"",mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const Ee=we,ve=()=>(0,e.createElement)("p",{className:"yoast-wincher-seo-performance-modal__loading-message"},(0,k.__)("Tracking the ranking position...","wordpress-seo")," ",(0,e.createElement)(g.SvgIcon,{icon:"loading-spinner"})),ke=c()(g.SvgIcon)` margin-left: 2px; flex-shrink: 0; rotate: ${e=>e.isImproving?"-90deg":"90deg"}; `,_e=c().span` color: ${e=>e.isImproving?"#69AB56":"#DC3332"}; font-size: 13px; font-weight: 600; line-height: 20px; margin-right: 2px; margin-left: 12px; `,xe=c().td` padding-right: 0 !important; & > div { margin: 0px; } `,Te=c().td` padding-left: 2px !important; `,Se=c().td.attrs({className:"yoast-table--nopadding"})` & > div { justify-content: center; } `,Re=c().div` display: flex; align-items: center; & > a { box-sizing: border-box; } `,Ie=c().button` background: none; color: inherit; border: none; padding: 0; font: inherit; cursor: pointer; outline: inherit; display: flex; align-items: center; `,Ce=c().tr` background-color: ${e=>e.isEnabled?"#FFFFFF":"#F9F9F9"} !important; `;function Le(e){return Math.round(100*e)}function Pe({chartData:t}){if((0,i.isEmpty)(t)||(0,i.isEmpty)(t.position))return"?";const s=function(e){return Array.from({length:e.position.history.length},((e,t)=>t+1)).map((e=>(0,k.sprintf)((0,k._n)("%d day","%d days",e,"wordpress-seo"),e)))}(t),n=t.position.history.map(((e,t)=>({x:t,y:101-e.value})));return(0,e.createElement)(Ee,{width:66,height:24,data:n,strokeWidth:1.8,strokeColor:"#498afc",fillColor:"#ade3fc",mapChartDataToTableData:Le,dataTableCaption:(0,k.__)("Keyphrase position in the last 90 days on a scale from 0 to 100.","wordpress-seo"),dataTableHeaderLabels:s})}Pe.propTypes={chartData:o().object},Pe.defaultProps={chartData:{}};const Ae=({rowData:t})=>{var s;if(null==t||null===(s=t.position)||void 0===s||!s.change)return(0,e.createElement)(Pe,{chartData:t});const r=t.position.change<0;return(0,e.createElement)(n.Fragment,null,(0,e.createElement)(Pe,{chartData:t}),(0,e.createElement)(_e,{isImproving:r},Math.abs(t.position.change)),(0,e.createElement)(ke,{icon:"caret-right",color:r?"#69AB56":"#DC3332",size:"14px",isImproving:r}))};function Fe(t){var s;const{keyphrase:r,rowData:a,onTrackKeyphrase:o,onUntrackKeyphrase:l,isFocusKeyphrase:c,isDisabled:d,isLoading:u,isSelected:p,onSelectKeyphrases:m}=t,h=!(0,i.isEmpty)(a),y=!(0,i.isEmpty)(null==a||null===(s=a.position)||void 0===s?void 0:s.history),f=(0,n.useCallback)((()=>{d||(h?l(r,a.id):o(r))}),[r,o,l,h,a,d]),b=(0,n.useCallback)((()=>{m((e=>p?e.filter((e=>e!==r)):e.concat(r)))}),[m,p,r]);return(0,e.createElement)(Ce,{isEnabled:h},(0,e.createElement)(xe,null,y&&(0,e.createElement)(g.Checkbox,{id:"select-"+r,onChange:b,checked:p,label:""})),(0,e.createElement)(Te,null,r,c&&(0,e.createElement)("span",null,"*")),function(t){const{rowData:s,websiteId:r,keyphrase:a,onSelectKeyphrases:o}=t,l=(0,n.useCallback)((()=>{o([a])}),[o,a]),c=!(0,i.isEmpty)(s),d=s&&s.updated_at&&j()(s.updated_at)>=j()().subtract(7,"days"),u=s?(0,k.sprintf)("https://app.wincher.com/websites/%s/keywords?serp=%s&utm_medium=plugin&utm_source=yoast&referer=yoast&partner=yoast",r,s.id):null;return c?d?(0,e.createElement)(n.Fragment,null,(0,e.createElement)("td",null,(0,e.createElement)(Re,null,function(e){return!e||!e.position||e.position.value>100?"> 100":e.position.value}(s),(0,e.createElement)(g.ButtonStyledLink,{variant:"secondary",href:u,style:{height:28,marginLeft:12},rel:"noopener",target:"_blank"},(0,k.__)("View","wordpress-seo")))),(0,e.createElement)("td",{className:"yoast-table--nopadding"},(0,e.createElement)(Ie,{type:"button",onClick:l},(0,e.createElement)(Ae,{rowData:s}))),(0,e.createElement)("td",null,(p=s.updated_at,j()(p).fromNow()))):(0,e.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,e.createElement)(ve,null)):(0,e.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,e.createElement)("i",null,(0,k.__)("Activate tracking to show the ranking position","wordpress-seo")));var p}(t),(0,e.createElement)(Se,null,function({keyphrase:t,isEnabled:s,toggleAction:n,isLoading:r}){return r?(0,e.createElement)(g.SvgIcon,{icon:"loading-spinner"}):(0,e.createElement)(g.Toggle,{id:`toggle-keyphrase-tracking-${t}`,className:"wincher-toggle",isEnabled:s,onSetToggleState:n,showToggleStateLabel:!1})}({keyphrase:r,isEnabled:h,toggleAction:f,isLoading:u})))}Ae.propTypes={rowData:o().object},Fe.propTypes={rowData:o().object,keyphrase:o().string.isRequired,onTrackKeyphrase:o().func,onUntrackKeyphrase:o().func,isFocusKeyphrase:o().bool,isDisabled:o().bool,isLoading:o().bool,websiteId:o().string,isSelected:o().bool.isRequired,onSelectKeyphrases:o().func.isRequired},Fe.defaultProps={rowData:{},onTrackKeyphrase:()=>{},onUntrackKeyphrase:()=>{},isFocusKeyphrase:!1,isDisabled:!1,isLoading:!1,websiteId:""};const qe=(0,q.makeOutboundLink)(),Me=c().span` display: block; font-style: italic; @media (min-width: 782px) { display: inline; position: absolute; ${(0,q.getDirectionalStyle)("right","left")}: 8px; } `,De=c().div` width: 100%; overflow-y: auto; `,Oe=c().th` pointer-events: ${e=>e.isDisabled?"none":"initial"}; padding-right: 0 !important; & > div { margin: 0px; } `,Ne=c().th` padding-left: 2px !important; `,Be=e=>{const t=(0,n.useRef)();return(0,n.useEffect)((()=>{t.current=e})),t.current},$e=(0,i.debounce)((async function(e=null,t=null,s=null,n){return await se({path:"yoast/v1/wincher/keyphrases",method:"POST",data:{keyphrases:e,permalink:s,startAt:t},signal:n})}),500,{leading:!0}),We=t=>{const{addTrackedKeyphrase:s,isLoggedIn:r,keyphrases:a,permalink:o,removeTrackedKeyphrase:l,setKeyphraseLimitReached:c,setRequestFailed:d,setRequestSucceeded:u,setTrackedKeyphrases:p,setHasTrackedAll:m,trackAll:h,trackedKeyphrases:y,isNewlyAuthenticated:f,websiteId:b,focusKeyphrase:w,newRequest:E,startAt:v,selectedKeyphrases:_,onSelectKeyphrases:x}=t,T=(0,n.useRef)(),S=(0,n.useRef)(),R=(0,n.useRef)(!1),[I,C]=(0,n.useState)([]),L=(0,n.useCallback)((e=>{const t=e.toLowerCase();return y&&!(0,i.isEmpty)(y)&&y.hasOwnProperty(t)?y[t]:null}),[y]),P=(0,n.useMemo)((()=>async()=>{await te((()=>(S.current&&S.current.abort(),S.current="undefined"==typeof AbortController?null:new AbortController,$e(a,v,o,S.current.signal))),(e=>{u(e),p(e.results)}),(e=>{d(e)}))}),[u,d,p,a,o,v]),A=(0,n.useCallback)((async e=>{const t=(Array.isArray(e)?e:[e]).map((e=>e.toLowerCase()));C((e=>[...e,...t])),await te((()=>ne(t)),(e=>{u(e),s(e.results),P()}),(e=>{400===e.status&&e.limit&&c(e.limit),d(e)}),201),C((e=>(0,i.without)(e,...t)))}),[u,d,c,s,P]),F=(0,n.useCallback)((async(e,t)=>{e=e.toLowerCase(),C((t=>[...t,e])),await te((()=>async function(e){return await se({path:"yoast/v1/wincher/keyphrases/untrack",method:"DELETE",data:{keyphraseID:e}})}(t)),(t=>{u(t),l(e)}),(e=>{d(e)})),C((t=>(0,i.without)(t,e)))}),[u,l,d]),q=(0,n.useCallback)((async e=>{E(),await A(e)}),[E,A]),M=Be(o),D=Be(a),O=Be(v),N=o&&v;(0,n.useEffect)((()=>{r&&N&&(o!==M||(0,i.difference)(a,D).length||v!==O)&&P()}),[r,o,M,a,D,P,N,v,O]),(0,n.useEffect)((()=>{if(r&&h&&null!==y){const e=a.filter((e=>!L(e)));e.length&&A(e),m()}}),[r,h,y,A,m,L,a]),(0,n.useEffect)((()=>{f&&!R.current&&(P(),R.current=!0)}),[f,P]),(0,n.useEffect)((()=>{if(r&&!(0,i.isEmpty)(y))return(0,i.filter)(y,(e=>(0,i.isEmpty)(e.updated_at))).length>0&&(T.current=setInterval((()=>{P()}),1e4)),()=>{clearInterval(T.current)}}),[r,y,P]);const B=r&&null===y,$=(0,n.useMemo)((()=>(0,i.isEmpty)(y)?[]:Object.values(y).filter((e=>{var t;return!(0,i.isEmpty)(null==e||null===(t=e.position)||void 0===t?void 0:t.history)})).map((e=>e.keyword))),[y]),W=(0,n.useMemo)((()=>_.length>0&&$.length>0&&$.every((e=>_.includes(e)))),[_,$]),U=(0,n.useCallback)((()=>{x(W?[]:$)}),[x,W,$]),K=(0,n.useMemo)((()=>(0,i.orderBy)(a,[e=>Object.values(y||{}).map((e=>e.keyword)).includes(e)],["desc"])),[a,y]);return a&&!(0,i.isEmpty)(a)&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)(De,null,(0,e.createElement)("table",{className:"yoast yoast-table"},(0,e.createElement)("thead",null,(0,e.createElement)("tr",null,(0,e.createElement)(Oe,{isDisabled:0===$.length},(0,e.createElement)(g.Checkbox,{id:"select-all",onChange:U,checked:W,label:""})),(0,e.createElement)(Ne,{scope:"col",abbr:(0,k.__)("Keyphrase","wordpress-seo")},(0,k.__)("Keyphrase","wordpress-seo")),(0,e.createElement)("th",{scope:"col",abbr:(0,k.__)("Position","wordpress-seo")},(0,k.__)("Position","wordpress-seo")),(0,e.createElement)("th",{scope:"col",abbr:(0,k.__)("Position over time","wordpress-seo")},(0,k.__)("Position over time","wordpress-seo")),(0,e.createElement)("th",{scope:"col",abbr:(0,k.__)("Last updated","wordpress-seo")},(0,k.__)("Last updated","wordpress-seo")),(0,e.createElement)("th",{scope:"col",abbr:(0,k.__)("Tracking","wordpress-seo")},(0,k.__)("Tracking","wordpress-seo")))),(0,e.createElement)("tbody",null,K.map(((t,s)=>(0,e.createElement)(Fe,{key:`trackable-keyphrase-${s}`,keyphrase:t,onTrackKeyphrase:q,onUntrackKeyphrase:F,rowData:L(t),isFocusKeyphrase:t===w.trim().toLowerCase(),websiteId:b,isDisabled:!r,isLoading:B||I.indexOf(t.toLowerCase())>=0,isSelected:_.includes(t),onSelectKeyphrases:x})))))),(0,e.createElement)("p",{style:{marginBottom:0,position:"relative"}},(0,e.createElement)(qe,{href:wpseoAdminGlobalL10n["links.wincher.login"]},(0,k.sprintf)(/* translators: %s expands to Wincher */ (0,k.__)("Get more insights over at %s","wordpress-seo"),"Wincher")),(0,e.createElement)(Me,null,(0,k.__)("* focus keyphrase","wordpress-seo"))))};We.propTypes={addTrackedKeyphrase:o().func.isRequired,isLoggedIn:o().bool,isNewlyAuthenticated:o().bool,keyphrases:o().array,newRequest:o().func.isRequired,removeTrackedKeyphrase:o().func.isRequired,setRequestFailed:o().func.isRequired,setKeyphraseLimitReached:o().func.isRequired,setRequestSucceeded:o().func.isRequired,setTrackedKeyphrases:o().func.isRequired,setHasTrackedAll:o().func.isRequired,trackAll:o().bool,trackedKeyphrases:o().object,websiteId:o().string,permalink:o().string.isRequired,focusKeyphrase:o().string,startAt:o().string,selectedKeyphrases:o().arrayOf(o().string).isRequired,onSelectKeyphrases:o().func.isRequired},We.defaultProps={isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],trackAll:!1,websiteId:"",focusKeyphrase:""};const Ue=We,Ke=(0,I.compose)([(0,h.withSelect)((e=>{const{getWincherWebsiteId:t,getWincherTrackableKeyphrases:s,getWincherLoginStatus:n,getWincherPermalink:r,getFocusKeyphrase:a,isWincherNewlyAuthenticated:o,shouldWincherTrackAll:i}=e("yoast-seo/editor");return{focusKeyphrase:a(),keyphrases:s(),isLoggedIn:n(),trackAll:i(),websiteId:t(),isNewlyAuthenticated:o(),permalink:r()}})),(0,h.withDispatch)((e=>{const{setWincherNewRequest:t,setWincherRequestSucceeded:s,setWincherRequestFailed:n,setWincherSetKeyphraseLimitReached:r,setWincherTrackedKeyphrases:a,setWincherTrackingForKeyphrase:o,setWincherTrackAllKeyphrases:i,unsetWincherTrackingForKeyphrase:l}=e("yoast-seo/editor");return{newRequest:()=>{t()},setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{n(e)},setKeyphraseLimitReached:e=>{r(e)},addTrackedKeyphrase:e=>{o(e)},removeTrackedKeyphrase:e=>{l(e)},setTrackedKeyphrases:e=>{a(e)},setHasTrackedAll:()=>{i(!1)}}}))])(Ue),He=(0,q.makeOutboundLink)(),Ye=(0,q.makeOutboundLink)(),ze=()=>{const t=(0,k.sprintf)((0,k.__)(/* translators: %1$s expands to a link to Wincher, %2$s expands to a link to the keyphrase tracking article on Yoast.com */ "With %1$s you can track the ranking position of your page in the search results based on your keyphrase(s). %2$s","wordpress-seo"),"{{wincherLink/}}","{{wincherReadMoreLink/}}");return(0,e.createElement)("p",null,(0,V.Z)({mixedString:t,components:{wincherLink:(0,e.createElement)(He,{href:wpseoAdminGlobalL10n["links.wincher.website"]},"Wincher"),wincherReadMoreLink:(0,e.createElement)(Ye,{href:wpseoAdminL10n["shortlinks.wincher.seo_performance"]},(0,k.__)("Read more about keyphrase tracking with Wincher","wordpress-seo"))}}))},je=()=>(0,e.createElement)(g.Alert,{type:"error"},(0,k.__)("No keyphrase has been set. Please set a keyphrase first.","wordpress-seo")),Ve=()=>(0,e.createElement)(g.Alert,{type:"info"},(0,k.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,k.__)("Automatic tracking of keyphrases is enabled. Your keyphrase(s) will automatically be tracked by %s when you publish your post.","wordpress-seo"),"Wincher"));class Ge{constructor(e,t={},s={}){this.url=e,this.origin=new URL(e).origin,this.eventHandlers=Object.assign({success:{type:"",callback:()=>{}},error:{type:"",callback:()=>{}}},t),this.options=Object.assign({height:570,width:340,title:""},s),this.popup=null,this.createPopup=this.createPopup.bind(this),this.messageHandler=this.messageHandler.bind(this),this.getPopup=this.getPopup.bind(this)}createPopup(){const{height:e,width:t,title:s}=this.options,n=["top="+(window.top.outerHeight/2+window.top.screenY-e/2),"left="+(window.top.outerWidth/2+window.top.screenX-t/2),"width="+t,"height="+e,"resizable=1","scrollbars=1","status=0"];this.popup&&!this.popup.closed||(this.popup=window.open(this.url,s,n.join(","))),this.popup&&this.popup.focus(),window.addEventListener("message",this.messageHandler,!1)}async messageHandler(e){const{data:t,source:s,origin:n}=e;n===this.origin&&this.popup===s&&(t.type===this.eventHandlers.success.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.success.callback(t)),t.type===this.eventHandlers.error.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.error.callback(t)))}getPopup(){return this.popup}isClosed(){return!this.popup||this.popup.closed}focus(){this.isClosed()||this.popup.focus()}}const Ze=t=>{const s=(0,k.sprintf)(/* translators: %s expands to a link to open the Wincher login popup. */ (0,k.__)("It seems like something went wrong when retrieving your website's data. Please %s and try again.","wordpress-seo"),"{{reconnectToWincher/}}","Wincher");return(0,e.createElement)(g.Alert,{type:"error",className:t.className},(0,V.Z)({mixedString:s,components:{reconnectToWincher:(0,e.createElement)("a",{href:"#",onClick:e=>{e.preventDefault(),t.onReconnect()}},(0,k.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,k.__)("reconnect to %s","wordpress-seo"),"Wincher"))}}))};Ze.propTypes={onReconnect:o().func.isRequired,className:o().string},Ze.defaultProps={className:""};const Xe=Ze,Qe=()=>(0,e.createElement)(g.Alert,{type:"error"},(0,k.__)("Before you can track your SEO performance make sure to set either the post’s title and save it as a draft or manually set the post’s slug.","wordpress-seo")),Je=window.yoast["chart.js"],et="label";function tt(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function st(e,t){e.labels=t}function nt(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:et;const n=[];e.datasets=t.map((t=>{const r=e.datasets.find((e=>e[s]===t[s]));return r&&t.data&&!n.includes(r)?(n.push(r),Object.assign(r,t),r):{...t}}))}function rt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:et;const s={labels:[],datasets:[]};return st(s,e.labels),nt(s,e.datasets,t),s}function at(t,s){const{height:n=150,width:r=300,redraw:a=!1,datasetIdKey:o,type:i,data:l,options:c,plugins:d=[],fallbackContent:u,updateMode:p,...m}=t,h=(0,e.useRef)(null),g=(0,e.useRef)(),y=()=>{h.current&&(g.current=new Je.Chart(h.current,{type:i,data:rt(l,o),options:c&&{...c},plugins:d}),tt(s,g.current))},f=()=>{tt(s,null),g.current&&(g.current.destroy(),g.current=null)};return(0,e.useEffect)((()=>{!a&&g.current&&c&&function(e,t){const s=e.options;s&&t&&Object.assign(s,t)}(g.current,c)}),[a,c]),(0,e.useEffect)((()=>{!a&&g.current&&st(g.current.config.data,l.labels)}),[a,l.labels]),(0,e.useEffect)((()=>{!a&&g.current&&l.datasets&&nt(g.current.config.data,l.datasets,o)}),[a,l.datasets]),(0,e.useEffect)((()=>{g.current&&(a?(f(),setTimeout(y)):g.current.update(p))}),[a,c,l.labels,l.datasets,p]),(0,e.useEffect)((()=>{g.current&&(f(),setTimeout(y))}),[i]),(0,e.useEffect)((()=>(y(),()=>f())),[]),e.createElement("canvas",Object.assign({ref:h,role:"img",height:n,width:r},m),u)}const ot=(0,e.forwardRef)(at);function it(t,s){return Je.Chart.register(s),(0,e.forwardRef)(((s,n)=>e.createElement(ot,Object.assign({},s,{ref:n,type:t}))))}const lt=it("line",Je.LineController),ct={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Je._adapters._date.override("function"==typeof j()?{_id:"moment",formats:function(){return ct},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=j()(e,t):e instanceof j()||(e=j()(e)),e.isValid()?e.valueOf():null},format:function(e,t){return j()(e).format(t)},add:function(e,t,s){return j()(e).add(t,s).valueOf()},diff:function(e,t,s){return j()(e).diff(j()(t),s)},startOf:function(e,t,s){return e=j()(e),"isoWeek"===t?(s=Math.trunc(Math.min(Math.max(0,s),6)),e.isoWeekday(s).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return j()(e).endOf(t).valueOf()}}:{}),Math.PI,Number.POSITIVE_INFINITY,Math.log10,Math.sign,"undefined"==typeof window||window.requestAnimationFrame,new Map,Object.create(null),Object.create(null),Number.EPSILON;const dt=["top","right","bottom","left"];function ut(e,t,s){const n={};s=s?"-"+s:"";for(let r=0;r<4;r++){const a=dt[r];n[a]=parseFloat(e[t+"-"+a+s])||0}return n.width=n.left+n.right,n.height=n.top+n.bottom,n}!function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}}(),Je.Chart.register(Je.CategoryScale,Je.LineController,Je.LineElement,Je.PointElement,Je.LinearScale,Je.TimeScale,Je.Legend,Je.Tooltip);const pt=["#ff983b","#ffa3f7","#3798ff","#ff3b3b","#acce81","#b51751","#3949ab","#26c6da","#ccb800","#de66ff","#4db6ac","#ffab91","#45f5f1","#77f210","#90a4ae","#ffd54f","#006b5e","#8ec7d2","#b1887c","#cc9300"];function mt({datasets:t,isChartShown:s,keyphrases:r}){if(!s)return null;const a=(0,n.useMemo)((()=>Object.fromEntries([...r].sort().map(((e,t)=>[e,pt[t%pt.length]])))),[r]),o=t.map((e=>{const t=a[e.label];return{...e,data:e.data.map((({datetime:e,value:t})=>({x:e,y:t}))),lineTension:0,pointRadius:1,pointHoverRadius:4,borderWidth:2,pointHitRadius:6,backgroundColor:t,borderColor:t}})).filter((e=>!1!==e.selected));return(0,e.createElement)(lt,{height:100,data:{datasets:o},options:{plugins:{legend:{display:!0,position:"bottom",labels:{color:"black",usePointStyle:!0,boxHeight:7,boxWidth:7},onClick:i.noop},tooltip:{enabled:!0,callbacks:{title:e=>j()(e[0].raw.x).utc().format("YYYY-MM-DD")},titleAlign:"center",mode:"xPoint",position:"nearest",usePointStyle:!0,boxHeight:7,boxWidth:7,boxPadding:2}},scales:{x:{bounds:"ticks",type:"time",time:{unit:"day",minUnit:"day"},grid:{display:!1},ticks:{autoSkipPadding:50,maxRotation:0,color:"black"}},y:{bounds:"ticks",offset:!0,reverse:!0,ticks:{precision:0,color:"black"},max:101}}}})}Je.Interaction.modes.xPoint=(e,t,s,n)=>{const r=function(e,t){if("native"in e)return e;const{canvas:s,currentDevicePixelRatio:n}=t,r=(m=s).ownerDocument.defaultView.getComputedStyle(m,null),a="border-box"===r.boxSizing,o=ut(r,"padding"),i=ut(r,"border","width"),{x:l,y:c,box:d}=function(e,t){const s=e.touches,n=s&&s.length?s[0]:e,{offsetX:r,offsetY:a}=n;let o,i,l=!1;if(((e,t,s)=>(e>0||t>0)&&(!s||!s.shadowRoot))(r,a,e.target))o=r,i=a;else{const e=t.getBoundingClientRect();o=n.clientX-e.left,i=n.clientY-e.top,l=!0}return{x:o,y:i,box:l}}(e,s),u=o.left+(d&&i.left),p=o.top+(d&&i.top);var m;let{width:h,height:g}=t;return a&&(h-=o.width+i.width,g-=o.height+i.height),{x:Math.round((l-u)/h*s.width/n),y:Math.round((c-p)/g*s.height/n)}}(t,e);let a=[];if(Je.Interaction.evaluateInteractionItems(e,"x",r,((e,t,s)=>{e.inXRange(r.x,n)&&a.push({element:e,datasetIndex:t,index:s})})),0===a.length)return a;const o=a.reduce(((e,t)=>Math.abs(r.x-e.element.x)e.element.x===o)),a.some((e=>Math.abs(e.element.y-r.y)<10))?a:[]},mt.propTypes={datasets:o().arrayOf(o().shape({label:o().string.isRequired,data:o().arrayOf(o().shape({datetime:o().string.isRequired,value:o().number.isRequired})).isRequired,selected:o().bool})).isRequired,isChartShown:o().bool.isRequired,keyphrases:o().array.isRequired};const ht=({response:t,onLogin:s})=>[401,403,404].includes(t.status)?(0,e.createElement)(Xe,{onReconnect:s}):(0,e.createElement)(Q,null);ht.propTypes={response:o().object.isRequired,onLogin:o().func.isRequired};const gt=({isSuccess:t,response:s,allKeyphrasesMissRanking:n,onLogin:r,keyphraseLimitReached:a,limit:o})=>a?(0,e.createElement)(X,{limit:o}):(0,i.isEmpty)(s)||t?n?(0,e.createElement)(ye,null):null:(0,e.createElement)(ht,{response:s,onLogin:r});gt.propTypes={isSuccess:o().bool.isRequired,allKeyphrasesMissRanking:o().bool.isRequired,response:o().object,onLogin:o().func.isRequired,keyphraseLimitReached:o().bool.isRequired,limit:o().number.isRequired},gt.defaultProps={response:{}};let yt=null;const ft=async e=>{if(yt&&!yt.isClosed())return void yt.focus();const{url:t}=await async function(){return await se({path:"yoast/v1/wincher/authorization-url",method:"GET"})}();yt=new Ge(t,{success:{type:"wincher:oauth:success",callback:t=>(async(e,t)=>{const{onAuthentication:s,setRequestSucceeded:n,setRequestFailed:r,keyphrases:a,addTrackedKeyphrase:o,setKeyphraseLimitReached:i}=e;await te((()=>async function(e){const{code:t,websiteId:s}=e;return await se({path:"yoast/v1/wincher/authenticate",method:"POST",data:{code:t,websiteId:s}})}(t)),(async e=>{s(!0,!0,t.websiteId.toString()),n(e);const l=(Array.isArray(a)?a:[a]).map((e=>e.toLowerCase()));await te((()=>ne(l)),(e=>{n(e),o(e.results)}),(e=>{400===e.status&&e.limit&&i(e.limit),r(e)}),201);const c=yt.getPopup();c&&c.close()}),(async e=>r(e)))})(e,t)},error:{type:"wincher:oauth:error",callback:()=>e.onAuthentication(!1,!1)}},{title:"Wincher_login",width:500,height:700}),yt.createPopup()},bt=t=>t.isLoggedIn?null:(0,e.createElement)("p",null,(0,e.createElement)(g.NewButton,{onClick:t.onLogin,variant:"primary"},(0,k.sprintf)(/* translators: %s expands to Wincher */ (0,k.__)("Connect with %s","wordpress-seo"),"Wincher")));bt.propTypes={isLoggedIn:o().bool.isRequired,onLogin:o().func.isRequired};const wt=c().div` p { margin: 1em 0; } `,Et=c().div` ${e=>e.isDisabled&&"\n\t\topacity: .5;\n\t\tpointer-events: none;\n\t"}; `,vt=c().div` font-weight: var(--yoast-font-weight-bold); color: var(--yoast-color-label); font-size: var(--yoast-font-size-default); `,kt=c().div.attrs({className:"yoast-field-group"})` display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; `,_t=c().div` margin: 8px 0; `,xt=j().utc().startOf("day"),Tt=[{name:(0,k.__)("Last day","wordpress-seo"),value:j()(xt).subtract(1,"days").format(),defaultIndex:1},{name:(0,k.__)("Last week","wordpress-seo"),value:j()(xt).subtract(1,"week").format(),defaultIndex:2},{name:(0,k.__)("Last month","wordpress-seo"),value:j()(xt).subtract(1,"month").format(),defaultIndex:3},{name:(0,k.__)("Last year","wordpress-seo"),value:j()(xt).subtract(1,"year").format(),defaultIndex:0}],St=t=>{const{onSelect:s,selected:n,options:r,isLoggedIn:a}=t;return a?r.length<1?null:(0,e.createElement)("select",{className:"components-select-control__input",id:"wincher-period-picker",value:(null==n?void 0:n.value)||r[0].value,onChange:s},r.map((t=>(0,e.createElement)("option",{key:t.name,value:t.value},t.name)))):null};St.propTypes={onSelect:o().func.isRequired,selected:o().object,options:o().array.isRequired,isLoggedIn:o().bool.isRequired};const Rt=t=>{const{trackedKeyphrases:s,isLoggedIn:r,keyphrases:a,shouldTrackAll:o,permalink:l,historyDaysLimit:c}=t;if(!l&&r)return(0,e.createElement)(Qe,null);if(0===a.length)return(0,e.createElement)(je,null);const d=j()(xt).subtract(c,"days"),u=Tt.filter((e=>j()(e.value).isSameOrAfter(d))),p=(0,i.orderBy)(u,(e=>e.defaultIndex),"desc")[0],[m,h]=(0,n.useState)(p),[g,y]=(0,n.useState)([]),f=g.length>0,b=(0,I.usePrevious)(s);(0,n.useEffect)((()=>{if(!(0,i.isEmpty)(s)&&(0,i.difference)(Object.keys(s),Object.keys(b||[])).length){const e=Object.values(s).map((e=>e.keyword));y(e)}}),[s,b]),(0,n.useEffect)((()=>{h(p)}),[null==p?void 0:p.name]);const w=(0,n.useCallback)((e=>{const t=Tt.find((t=>t.value===e.target.value));t&&h(t)}),[h]),E=(0,n.useMemo)((()=>(0,i.isEmpty)(g)||(0,i.isEmpty)(s)?[]:Object.values(s).filter((e=>{var t;return!(null==e||null===(t=e.position)||void 0===t||!t.history)})).map((e=>{var t;return{label:e.keyword,data:e.position.history,selected:g.includes(e.keyword)&&!(0,i.isEmpty)(null===(t=e.position)||void 0===t?void 0:t.history)}}))),[g,s]);return(0,e.createElement)(Et,{isDisabled:!r},(0,e.createElement)("p",null,(0,k.__)("You can enable / disable tracking the SEO performance for each keyphrase below.","wordpress-seo")),r&&o&&(0,e.createElement)(Ve,null),(0,e.createElement)(kt,null,(0,e.createElement)(St,{selected:m,onSelect:w,options:u,isLoggedIn:r})),(0,e.createElement)(_t,null,(0,e.createElement)(mt,{isChartShown:f,datasets:E,keyphrases:a})),(0,e.createElement)(Ke,{startAt:null==m?void 0:m.value,selectedKeyphrases:g,onSelectKeyphrases:y,trackedKeyphrases:s}))};function It(t){const{isNewlyAuthenticated:s,isLoggedIn:r}=t,a=(0,n.useCallback)((()=>{ft(t)}),[ft,t]),o=ce(r);return(0,e.createElement)(wt,null,s&&(0,e.createElement)(ge,null),r&&(0,e.createElement)(he,{trackingInfo:o}),(0,e.createElement)(vt,null,(0,k.__)("SEO performance","wordpress-seo"),(0,e.createElement)(g.HelpIcon,{linkTo:wpseoAdminL10n["shortlinks.wincher.seo_performance"] /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about the SEO performance feature.","wordpress-seo")})),(0,e.createElement)(ze,null),(0,e.createElement)(bt,{isLoggedIn:r,onLogin:a}),(0,e.createElement)(gt,{...t,onLogin:a}),(0,e.createElement)(Rt,{...t,historyDaysLimit:(null==o?void 0:o.historyDays)||31}))}Rt.propTypes={trackedKeyphrases:o().object,keyphrases:o().array.isRequired,isLoggedIn:o().bool.isRequired,shouldTrackAll:o().bool.isRequired,permalink:o().string.isRequired,historyDaysLimit:o().number},It.propTypes={trackedKeyphrases:o().object,addTrackedKeyphrase:o().func.isRequired,isLoggedIn:o().bool,isNewlyAuthenticated:o().bool,keyphrases:o().array,response:o().object,shouldTrackAll:o().bool,permalink:o().string,historyDaysLimit:o().number},It.defaultProps={trackedKeyphrases:null,isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],response:{},shouldTrackAll:!1,permalink:"",historyDaysLimit:0};const Ct=(0,I.compose)([(0,h.withSelect)((e=>{const{isWincherNewlyAuthenticated:t,getWincherKeyphraseLimitReached:s,getWincherLimit:n,getWincherHistoryDaysLimit:r,getWincherLoginStatus:a,getWincherRequestIsSuccess:o,getWincherRequestResponse:i,getWincherTrackableKeyphrases:l,getWincherTrackedKeyphrases:c,getWincherAllKeyphrasesMissRanking:d,getWincherPermalink:u,shouldWincherAutomaticallyTrackAll:p}=e("yoast-seo/editor");return{keyphrases:l(),trackedKeyphrases:c(),allKeyphrasesMissRanking:d(),isLoggedIn:a(),isNewlyAuthenticated:t(),isSuccess:o(),keyphraseLimitReached:s(),limit:n(),response:i(),shouldTrackAll:p(),permalink:u(),historyDaysLimit:r()}})),(0,h.withDispatch)((e=>{const{setWincherWebsiteId:t,setWincherRequestSucceeded:s,setWincherRequestFailed:n,setWincherTrackingForKeyphrase:r,setWincherSetKeyphraseLimitReached:a,setWincherLoginStatus:o}=e("yoast-seo/editor");return{setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{n(e)},addTrackedKeyphrase:e=>{r(e)},setKeyphraseLimitReached:e=>{a(e)},onAuthentication:(e,s,n)=>{t(n),o(e,s)}}}))])(It),Lt=c()(C)` width: 18px; height: 18px; margin: 3px; `;function Pt(e){const{keyphrases:t,onNoKeyphraseSet:s,onOpen:n,location:r}=e;if(!t.length){let e=document.querySelector("#focus-keyword-input-metabox");return e||(e=document.querySelector("#focus-keyword-input-sidebar")),e.focus(),void s()}n(r)}function At(t){const{location:s,whichModalOpen:r,shouldCloseOnClickOutside:a}=t,o=(0,n.useCallback)((()=>{Pt(t)}),[Pt,t]),i=(0,k.__)("Track SEO performance","wordpress-seo"),l=((t=null)=>(0,e.useMemo)((()=>{const e={role:"img","aria-hidden":"true"};return null!==t&&(e.focusable=t?"true":"false"),e}),[t]))();return(0,e.createElement)(n.Fragment,null,r===s&&(0,e.createElement)(B,{title:i,onRequestClose:t.onClose,icon:(0,e.createElement)(K,null),additionalClassName:"yoast-wincher-seo-performance-modal yoast-gutenberg-modal__no-padding",shouldCloseOnClickOutside:a},(0,e.createElement)(M,{className:"yoast-gutenberg-modal__content yoast-wincher-seo-performance-modal__content"},(0,e.createElement)(Ct,null))),"sidebar"===s&&(0,e.createElement)(Y,{id:`wincher-open-button-${s}`,title:i,SuffixHeroIcon:(0,e.createElement)(Lt,{className:"yst-text-slate-500",...l}),onClick:o}),"metabox"===s&&(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(F,{id:`wincher-open-button-${s}`,onClick:o},(0,e.createElement)(F.Text,null,i),(0,e.createElement)(C,{className:"yst-h-5 yst-w-5 yst-text-slate-500",...l}))))}At.propTypes={location:o().string,whichModalOpen:o().oneOf(["none","metabox","sidebar","postpublish"]),shouldCloseOnClickOutside:o().bool,keyphrases:o().array.isRequired,onNoKeyphraseSet:o().func.isRequired,onOpen:o().func.isRequired,onClose:o().func.isRequired},At.defaultProps={location:"",whichModalOpen:"none",shouldCloseOnClickOutside:!0};const Ft=(0,I.compose)([(0,h.withSelect)((e=>{const{getWincherModalOpen:t,getWincherTrackableKeyphrases:s}=e("yoast-seo/editor");return{keyphrases:s(),whichModalOpen:t()}})),(0,h.withDispatch)((e=>{const{setWincherOpenModal:t,setWincherDismissModal:s,setWincherNoKeyphrase:n}=e("yoast-seo/editor");return{onOpen:e=>{t(e)},onClose:()=>{s()},onNoKeyphraseSet:()=>{n()}}}))])(At),qt=window.yoast.externals.components;function Mt(){return(0,I.createHigherOrderComponent)((function(e){return(0,I.pure)((function(t){const s=(0,n.useContext)(d.LocationContext);return(0,n.createElement)(e,{...t,location:s})}))}),"withLocation")}const Dt=(0,I.compose)([(0,h.withSelect)((e=>{const{isCornerstoneContent:t}=e("yoast-seo/editor");return{isCornerstone:t(),learnMoreUrl:wpseoAdminL10n["shortlinks.cornerstone_content_info"]}})),(0,h.withDispatch)((e=>{const{toggleCornerstoneContent:t}=e("yoast-seo/editor");return{onChange:t}})),Mt()])(qt.CollapsibleCornerstone),Ot=window.yoast.searchMetadataPreviews,Nt=c()(g.StyledSection)` &${g.StyledSectionBase} { padding: 0; & ${g.StyledHeading} { ${(0,q.getDirectionalStyle)("padding-left","padding-right")}: 20px; margin-left: ${(0,q.getDirectionalStyle)("0","20px")}; } } `,Bt=({children:t,title:s,icon:n,hasPaperStyle:r,shoppingData:a})=>(0,e.createElement)(Nt,{headingLevel:3,headingText:s,headingIcon:n,headingIconColor:"#555",hasPaperStyle:r,shoppingData:a},t);Bt.propTypes={children:o().element,title:o().string,icon:o().string,hasPaperStyle:o().bool,shoppingData:o().object},Bt.defaultProps={hasPaperStyle:!0,shoppingData:null};const $t=Bt,Wt=window.wp.sanitize,Ut="SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLE";function Kt(e,t,s="",n=!1){const r="string"==typeof t?(0,q.decodeHTML)(t):t;return{type:Ut,name:e,value:r,label:s,hidden:n}}function Ht(e){return e.charAt(0).toUpperCase()+e.slice(1)}const{stripHTMLTags:Yt}=q.strings,zt=["slug","content","contentImage","snippetPreviewImageURL"];function jt(e,t="_"){return e.replace(/\s/g,t)}const Vt=(0,i.memoize)(((e,t)=>0===e?i.noop:(0,i.debounce)((s=>t(s,e)),500))),Gt=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),Zt=({link:t,text:s})=>(0,e.createElement)(m.Root,null,(0,e.createElement)("p",null,s),(0,e.createElement)(m.Button,{href:t,as:"a",className:"yst-gap-2 yst-mb-5 yst-mt-2",variant:"upsell",target:"_blank",rel:"noopener"},(0,e.createElement)(Gt,{className:"yst-w-4 yst-h-4 yst--ml-1 yst-shrink-0"}),(0,k.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,k.__)("Unlock with %1$s","wordpress-seo"),"Yoast WooCommerce SEO")));Zt.propTypes={link:o().string.isRequired,text:o().string.isRequired};const Xt=Zt,Qt=function(e,t){let s=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(s=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[s]&&(e.url=e.url.slice(0,s)+e.url.slice(s+1)),function(e){const t=(0,i.get)(window,["YoastSEO","app","pluggable"],!1);if(!t||!(0,i.get)(window,["YoastSEO","app","pluggable","loaded"],!1))return function(e){const t=(0,i.get)(window,["YoastSEO","wp","replaceVarsPlugin","replaceVariables"],i.identity);return{url:e.url,title:Yt(t(e.title)),description:Yt(t(e.description)),filteredSEOTitle:e.filteredSEOTitle?Yt(t(e.filteredSEOTitle)):""}}(e);const s=t._applyModifications.bind(t);return{url:e.url,title:Yt(s("data_page_title",e.title)),description:Yt(s("data_meta_desc",e.description)),filteredSEOTitle:e.filteredSEOTitle?Yt(s("data_page_title",e.filteredSEOTitle)):""}}(e)},Jt=(0,I.compose)([(0,h.withSelect)((function(e){const{getBaseUrlFromSettings:t,getDateFromSettings:s,getFocusKeyphrase:n,getRecommendedReplaceVars:r,getReplaceVars:a,getShoppingData:o,getSiteIconUrlFromSettings:i,getSnippetEditorData:l,getSnippetEditorMode:c,getSnippetEditorPreviewImageUrl:d,getSnippetEditorWordsToHighlight:u,isCornerstoneContent:p,getIsTerm:m,getContentLocale:h,getSiteName:g}=e("yoast-seo/editor"),y=a();return y.forEach((e=>{""!==e.value||["title","excerpt","excerpt_only"].includes(e.name)||(e.value="%%"+e.name+"%%")})),{baseUrl:t(),data:l(),date:s(),faviconSrc:i(),keyword:n(),mobileImageSrc:d(),mode:c(),recommendedReplacementVariables:r(),replacementVariables:y,shoppingData:o(),wordsToHighlight:u(),isCornerstone:p(),isTaxonomy:m(),locale:h(),siteName:g()}})),(0,h.withDispatch)((function(e,t,{select:s}){const{updateData:n,switchMode:r,updateAnalysisData:a,findCustomFields:o}=e("yoast-seo/editor"),i=e("core/editor"),l=s("yoast-seo/editor").getPostId();return{onChange:(e,t)=>{switch(e){case"mode":r(t);break;case"slug":n({slug:t}),i&&i.editPost({slug:t});break;default:n({[e]:t})}},onChangeAnalysisData:a,onReplacementVariableSearchChange:Vt(l,o)}}))])((t=>{const s=(0,h.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/product-google-preview-metabox")),[]),n=(0,h.useSelect)((e=>e("yoast-seo/editor").getIsWooSeoUpsell()),[]),r=(0,k.__)("Want an enhanced Google preview of how your WooCommerce products look in the search results?","wordpress-seo");return(0,e.createElement)(d.LocationConsumer,null,(a=>(0,e.createElement)($t,{icon:"eye",hasPaperStyle:t.hasPaperStyle},(0,e.createElement)(e.Fragment,null,n&&(0,e.createElement)(Xt,{link:s,text:r}),(0,e.createElement)(Ot.SnippetEditor,{...t,descriptionPlaceholder:(0,k.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:Qt,showCloseButton:!1,idSuffix:a})))))})),es=(0,h.withSelect)((e=>{const{getWarningMessage:t}=e("yoast-seo/editor");return{message:t()}}))(g.Warning),ts=window.yoast.featureFlag,ss=c()(g.Collapsible)` h2 > button { padding-left: 24px; padding-top: 16px; &:hover { background-color: #f0f0f0; } } div[class^="collapsible_content"] { padding: 24px 0; margin: 0 24px; border-top: 1px solid rgba(0,0,0,0.2); } `,ns=t=>(0,e.createElement)(ss,{hasPadding:!0,hasSeparator:!0,...t}),rs=()=>{const t=(0,h.useSelect)((e=>e("yoast-seo/editor").getEstimatedReadingTime()),[]),s=(0,n.useMemo)((()=>(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-estimated_reading_time","")),[]);return(0,e.createElement)(g.InsightsCard,{amount:t,unit:(0,k._n)("minute","minutes",t,"wordpress-seo"),title:(0,k.__)("Reading time","wordpress-seo"),linkTo:s /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about reading time","wordpress-seo")})},as=(0,q.makeOutboundLink)();function os(t,s,n){const r=function(e){switch(e){case f.DIFFICULTY.FAIRLY_DIFFICULT:case f.DIFFICULTY.DIFFICULT:case f.DIFFICULTY.VERY_DIFFICULT:return(0,k.__)("Try to make shorter sentences, using less difficult words to improve readability","wordpress-seo");case f.DIFFICULTY.NO_DATA:return(0,k.__)("Continue writing to get insight into the readability of your text!","wordpress-seo");default:return(0,k.__)("Good job!","wordpress-seo")}}(s);return(0,e.createElement)("span",null,function(e,t){return-1===e?(0,k.sprintf)((0,k.__)("Your text should be slightly longer to calculate your Flesch reading ease score.","wordpress-seo")):(0,k.sprintf)( /* Translators: %1$s expands to the numeric Flesch reading ease score, %2$s expands to the easiness of reading (e.g. 'easy' or 'very difficult'). */ (0,k.__)("The copy scores %1$s in the test, which is considered %2$s to read.","wordpress-seo"),e,function(e){switch(e){case f.DIFFICULTY.NO_DATA:return(0,k.__)("no data","wordpress-seo");case f.DIFFICULTY.VERY_EASY:return(0,k.__)("very easy","wordpress-seo");case f.DIFFICULTY.EASY:return(0,k.__)("easy","wordpress-seo");case f.DIFFICULTY.FAIRLY_EASY:return(0,k.__)("fairly easy","wordpress-seo");case f.DIFFICULTY.OKAY:return(0,k.__)("okay","wordpress-seo");case f.DIFFICULTY.FAIRLY_DIFFICULT:return(0,k.__)("fairly difficult","wordpress-seo");case f.DIFFICULTY.DIFFICULT:return(0,k.__)("difficult","wordpress-seo");case f.DIFFICULTY.VERY_DIFFICULT:return(0,k.__)("very difficult","wordpress-seo")}}(t))}(t,s)," ",s>=f.DIFFICULTY.FAIRLY_DIFFICULT?(0,e.createElement)(as,{href:n},r+"."):r)}const is=()=>{let t=(0,h.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseScore()),[]);const s=(0,n.useMemo)((()=>(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease","")),[]),r=(0,h.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseDifficulty()),[t]),a=(0,n.useMemo)((()=>{const e=(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease_article","");return os(t,r,e)}),[t,r]);return-1===t&&(t="?"),(0,e.createElement)(g.InsightsCard,{amount:t,unit:(0,k.__)("out of 100","wordpress-seo"),title:(0,k.__)("Flesch reading ease","wordpress-seo"),linkTo:s /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about Flesch reading ease","wordpress-seo"),description:a})};let ls,cs,ds,us;const ps=/<(\/)?(\w+)\s*(\/)?>/g;function ms(e,t,s,n,r){return{element:e,tokenStart:t,tokenLength:s,prevOffset:n,leadingTextStart:r,children:[]}}function hs(){const e=ls.length-cs;0!==e&&ds.push(ls.substring(cs,cs+e))}function gs(e){const{element:t,tokenStart:s,tokenLength:r,prevOffset:a,children:o}=e,i=us[us.length-1],l=ls.substring(i.prevOffset,s);l&&i.children.push(l),i.children.push((0,n.cloneElement)(t,null,...o)),i.prevOffset=a||s+r}function ys(e){const t=function(){const e=ps.exec(ls);if(null===e)return["no-more-tokens"];const t=e.index,[s,n,r,a]=e,o=s.length;return a?["self-closed",r,t,o]:n?["closer",r,t,o]:["opener",r,t,o]}(),[s,r,a,o]=t,i=us.length,l=a>cs?cs:null;if(!e[r])return hs(),!1;switch(s){case"no-more-tokens":if(0!==i){const{leadingTextStart:e,tokenStart:t}=us.pop();ds.push(ls.substring(e,e+t))}return hs(),!1;case"self-closed":return 0===i?(null!==l&&ds.push(ls.substring(l,a)),ds.push(e[r]),cs=a+o,!0):(gs(ms(e[r],a,o)),cs=a+o,!0);case"opener":return us.push(ms(e[r],a,o,a+o,l)),cs=a+o,!0;case"closer":if(1===i)return function(e){const{element:t,leadingTextStart:s,prevOffset:r,tokenStart:a,children:o}=us.pop(),i=e?ls.substring(r,e):ls.substring(r);i&&o.push(i),null!==s&&ds.push(ls.substring(s,a)),ds.push((0,n.cloneElement)(t,null,...o))}(a),cs=a+o,!0;const t=us.pop(),s=ls.substring(t.prevOffset,a);t.children.push(s),t.prevOffset=a+o;const c=ms(t.element,t.tokenStart,t.tokenLength,a+o);return c.children=t.children,gs(c),cs=a+o,!0;default:return hs(),!1}}const fs=(e,t)=>{if(ls=e,cs=0,ds=[],us=[],ps.lastIndex=0,!(e=>{const t="object"==typeof e,s=t&&Object.values(e);return t&&s.length&&s.every((e=>(0,n.isValidElement)(e)))})(t))throw new TypeError("The conversionMap provided is not valid. It must be an object with values that are WPElements");do{}while(ys(t));return(0,n.createElement)(n.Fragment,null,...ds)},bs=({data:t,itemScreenReaderText:s,className:r,...a})=>{const o=(0,n.useMemo)((()=>{var e,s;return null!==(e=null===(s=(0,i.maxBy)(t,"number"))||void 0===s?void 0:s.number)&&void 0!==e?e:0}),[t]);return(0,e.createElement)("ul",{className:P()("yoast-data-model",r),...a},t.map((({name:t,number:n})=>(0,e.createElement)("li",{key:`${t}_dataItem`,style:{"--yoast-width":n/o*100+"%"}},t,(0,e.createElement)("span",null,n),s&&(0,e.createElement)("span",{className:"screen-reader-text"},(0,k.sprintf)(s,n))))))};bs.propTypes={data:o().arrayOf(o().shape({name:o().string.isRequired,number:o().number.isRequired})),itemScreenReaderText:o().string,className:o().string},bs.defaultProps={data:[],itemScreenReaderText:"",className:""};const ws=bs,Es=window.wp.url,vs=(0,q.makeOutboundLink)(),ks=({location:t})=>{const s=(0,h.useSelect)((e=>{var t,s;return null===(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getPreference("isProminentWordsAvailable",!1))||void 0===t||t}),[]),r=(0,h.useSelect)((e=>e("yoast-seo/editor").getPreference("shouldUpsell",!1)),[]),a=(0,n.useMemo)((()=>(0,i.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${t}-prominent_words`,"")),[t]),o=(0,n.useMemo)((()=>{const t=(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-keyword_research_link","");return fs((0,k.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,k.__)("Read our %1$sultimate guide to keyword research%2$s to learn more about keyword research and keyword strategy.","wordpress-seo"),"",""),{a:(0,e.createElement)(vs,{href:t})})}),[]),l=(0,n.useMemo)((()=>fs((0,k.sprintf)( // translators: %1$s expands to a starting `b` tag, %1$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,k.__)("With %1$s%3$s%2$s, this section will show you which words occur most often in your text. By checking these prominent words against your intended keyword(s), you'll know how to edit your text to be more focused.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,e.createElement)("b",null)})),[]),c=(0,h.useSelect)((e=>{var t,s;return null!==(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getProminentWords())&&void 0!==t?t:[]}),[]),u=(0,n.useMemo)((()=>{const e=(0,k.sprintf)( // translators: %1$s expands to Yoast SEO Premium. (0,k.__)("Get %s to enjoy the benefits of prominent words","wordpress-seo"),"Yoast SEO Premium").split(/\s+/);return e.map(((t,s)=>({name:t,number:e.length-s})))}),[]),p=(0,n.useMemo)((()=>r?u:c.map((({word:e,occurrence:t})=>({name:e,number:t})))),[c,u]);if(!s)return null;const{locationContext:m}=(0,d.useRootContext)();return(0,e.createElement)("div",{className:"yoast-prominent-words"},(0,e.createElement)("div",{className:"yoast-field-group__title"},(0,e.createElement)("b",null,(0,k.__)("Prominent words","wordpress-seo"))),!r&&(0,e.createElement)("p",null,0===p.length?(0,k.__)("Once you add a bit more copy, we'll give you a list of words that occur the most in the content. These give an indication of what your content focuses on.","wordpress-seo"):(0,k.__)("The following words occur the most in the content. These give an indication of what your content focuses on. If the words differ a lot from your topic, you might want to rewrite your content accordingly.","wordpress-seo")),r&&(0,e.createElement)("p",null,l),r&&(0,e.createElement)(vs,{href:(0,Es.addQueryArgs)(a,{context:m}),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2",className:"yoast-button yoast-button-upsell"},(0,k.sprintf)( // translators: %s expands to `Premium` (part of add-on name). (0,k.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,e.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,e.createElement)("p",null,o),(0,e.createElement)(ws,{data:p,itemScreenReaderText:/* translators: Hidden accessibility text; %d expands to the number of occurrences. */ (0,k.__)("%d occurrences","wordpress-seo"),"aria-label":(0,k.__)("Prominent words","wordpress-seo"),className:r?"yoast-data-model--upsell":null}))};ks.propTypes={location:o().string.isRequired};const _s=ks,xs=()=>{const t=(0,h.useSelect)((e=>e("yoast-seo/editor").getTextLength()),[]),s=(0,n.useMemo)((()=>(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-word_count","")),[]);let r=(0,k._n)("word","words",t.count,"wordpress-seo"),a=(0,k.__)("Word count","wordpress-seo"),o=(0,k.__)("Learn more about word count","wordpress-seo");return"character"===t.unit&&(r=(0,k._n)("character","characters",t.count,"wordpress-seo"),a=(0,k.__)("Character count","wordpress-seo"), /* translators: Hidden accessibility text. */ o=(0,k.__)("Learn more about character count","wordpress-seo")),(0,e.createElement)(g.InsightsCard,{amount:t.count,unit:r,title:a,linkTo:s,linkText:o})},Ts=(0,q.makeOutboundLink)(),Ss=({location:t})=>{const s=(0,n.useMemo)((()=>(0,i.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${t}-text_formality`,"")),[t]),r=(0,n.useMemo)((()=>fs((0,k.sprintf)( // Translators: %1$s expands to a starting `b` tag, %2$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,k.__)("%1$s%3$s%2$s will help you assess the formality level of your text.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,e.createElement)("b",null)})),[]);return(0,e.createElement)(n.Fragment,null,(0,e.createElement)("div",null,(0,e.createElement)("p",null,r),(0,e.createElement)(Ts,{href:s,className:"yoast-button yoast-button-upsell"},(0,k.sprintf)( // Translators: %s expands to `Premium` (part of add-on name). (0,k.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,e.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))))};Ss.propTypes={location:o().string.isRequired};const Rs=Ss;function Is(){return(0,i.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1})}const Cs=({location:t,name:s})=>{const n=(0,h.useSelect)((e=>e("yoast-seo/editor").isFormalitySupported()),[]),a=Is().isPremium,o=a?(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_premium",""):(0,i.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_free",""),l=(0,k.__)("Read more about text formality.","wordpress-seo");return n?(0,e.createElement)("div",{className:"yoast-text-formality"},(0,e.createElement)("div",{className:"yoast-field-group__title"},(0,e.createElement)("b",null,(0,k.__)("Text formality","wordpress-seo")),(0,e.createElement)(g.HelpIcon,{linkTo:o,linkText:l})),a?(0,e.createElement)(r.Slot,{name:s}):(0,e.createElement)(Rs,{location:t})):null};Cs.propTypes={location:o().string.isRequired,name:o().string.isRequired};const Ls=Cs,Ps=({location:t})=>{const s=(0,h.useSelect)((e=>e("yoast-seo/editor").isFleschReadingEaseAvailable()),[]);return(0,e.createElement)(ns,{title:(0,k.__)("Insights","wordpress-seo"),id:`yoast-insights-collapsible-${t}`,className:"yoast-insights"},(0,e.createElement)(_s,{location:t}),(0,e.createElement)("div",null,s&&(0,e.createElement)("div",{className:"yoast-insights-row"},(0,e.createElement)(is,null)),(0,e.createElement)("div",{className:"yoast-insights-row yoast-insights-row--columns"},(0,e.createElement)(rs,null),(0,e.createElement)(xs,null)),(0,ts.isFeatureEnabled)("TEXT_FORMALITY")&&(0,e.createElement)(Ls,{location:t,name:"YoastTextFormalityMetabox"})))};Ps.propTypes={location:o().string},Ps.defaultProps={location:"metabox"};const As=Ps,Fs=e.forwardRef((function(t,s){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},t),e.createElement("path",{fillRule:"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z",clipRule:"evenodd"}))})),qs=()=>[(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$sAI%2$s: Better SEO titles and meta descriptions, faster.","wordpress-seo"),"",""),(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$sMultiple keywords%2$s: Rank higher for more searches.","wordpress-seo"),"",""),(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$sSuper fast%2$s internal linking suggestions.","wordpress-seo"),"",""),(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$sNo more broken links%2$s: Automatic redirect manager.","wordpress-seo"),"",""),(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$sAppealing social previews%2$s people actually want to click on.","wordpress-seo"),"",""),(0,k.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,k.__)("%1$s24/7 support%2$s: Also on evenings and weekends.","wordpress-seo"),"","")],Ms=c().div` padding: 25px 32px 32px; color: #303030; `,Ds=c().ul` margin: 0; padding: 0; li { list-style-image: var(--yoast-svg-icon-check); margin: 0.5rem 0 0 1.5rem; line-height: 1.4em; &::marker { font-size: 1.5rem; } } `,Os=c().span` display: block; margin-top: 4px; `,Ns=c().h2` margin-top: 0; margin-bottom: 0.25rem; color: #303030; font-size: 0.8125rem; font-weight: 600; `,Bs=c().p` display: block; margin: 0.25rem 0 1rem 0 !important; max-width: 420px; `,$s=c().hr` margin-top: 1.5rem; margin-bottom: 1rem; border-top: 0; border-bottom: 1px solid #E2E8F0; `,Ws=c().div` text-align: center; `,Us=c().a` width: 100%; `,Ks=(0,q.makeOutboundLink)(Us);class Hs extends n.Component{constructor(e){super(e),this.state={defaultPrice:"99"}}createBenefitsList(t){return t.length>0&&(0,e.createElement)(Ds,{role:"list"},t.map(((t,s)=>(0,e.createElement)("li",{key:`upsell-benefit-${s}`},(0,n.createInterpolateElement)(t,{strong:(0,e.createElement)("strong",null)})))))}render(){const t=(0,h.select)("yoast-seo/editor").isPromotionActive("black-friday-2024-promotion"),{defaultPrice:s}=this.state,r=t?"69.30":null,a=r||s;return(0,e.createElement)(n.Fragment,null,t&&(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-text-lg yst-content-between yst-bg-black yst-text-amber-300 yst-h-9 yst-border-amber-300 yst-border-y yst-border-x-0 yst-border-solid yst-px-6"},(0,e.createElement)("div",{className:"yst-mx-auto"},(0,k.__)("30% OFF - BLACK FRIDAY","wordpress-seo"))),(0,e.createElement)(Ms,null,(0,e.createElement)(Ns,null,this.props.title),(0,e.createElement)(Bs,null,this.props.description),(0,e.createElement)(Ws,null,(0,e.createElement)(Ks,{...this.props.upsellButton},this.props.upsellButtonText,this.props.upsellButtonHasCaret&&(0,e.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,e.createElement)("div",{className:"yst-text-slate-600 yst-my-4"},r&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("span",{className:"yst-text-slate-500 yst-line-through"},s)," "),(0,e.createElement)("span",{className:"yst-text-slate-900 yst-text-2xl yst-font-bold"},a)," ",(0,k.__)("$ USD / € EUR / £ GBP per year (ex. VAT)","wordpress-seo")),(0,e.createElement)(Os,{id:this.props.upsellButton["aria-describedby"]},this.props.upsellButtonLabel)),(0,e.createElement)($s,null),(0,e.createElement)(Ns,null,this.props.benefitsTitle),this.createBenefitsList(this.props.benefits)))}}Hs.propTypes={title:o().node,benefits:o().array,benefitsTitle:o().node,description:o().node,upsellButton:o().object,upsellButtonText:o().string.isRequired,upsellButtonLabel:o().string,upsellButtonHasCaret:o().bool},Hs.defaultProps={title:null,description:null,benefits:[],benefitsTitle:null,upsellButton:{href:"",className:"button button-primary"},upsellButtonLabel:"",upsellButtonHasCaret:!0};const Ys=Hs,zs=()=>{const[t,,,s,n]=(0,m.useToggleState)(!1),{locationContext:r}=(0,d.useRootContext)(),a=(0,m.useSvgAria)(),o=r.includes("sidebar"),i=r.includes("metabox"),l=wpseoAdminL10n[o?"shortlinks.upsell.sidebar.internal_linking_suggestions":"shortlinks.upsell.metabox.internal_linking_suggestions"];return(0,e.createElement)(e.Fragment,null,t&&(0,e.createElement)(B,{title:(0,k.__)("Get internal linking suggestions","wordpress-seo"),onRequestClose:n,additionalClassName:"",id:"yoast-internal-linking-suggestions-upsell",className:`${O} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,e.createElement)(D,null,(0,e.createElement)(Ys,{title:(0,k.__)("Rank higher by connecting your content","wordpress-seo"),description:(0,k.sprintf)(/* translators: %s expands to Yoast SEO Premium. */ (0,k.__)("%s automatically suggests to what content you can link with easy drag-and-drop functionality, which is good for your SEO!","wordpress-seo"),"Yoast SEO Premium"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qs(),upsellButtonText:(0,k.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:(0,Es.addQueryArgs)(l,{context:r}),className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,k.__)("1 year free support and updates included!","wordpress-seo")}))),o&&(0,e.createElement)(Y,{id:"yoast-internal-linking-suggestions-sidebar-modal-open-button",title:(0,k.__)("Internal linking suggestions","wordpress-seo"),onClick:s},(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...a})))),i&&(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(F,{id:"yoast-internal-linking-suggestions-metabox-modal-open-button",onClick:s},(0,e.createElement)(F.Text,null,(0,k.__)("Internal linking suggestions","wordpress-seo")),(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...a}),(0,e.createElement)("span",null,"Premium")))))},js=({children:t})=>(0,e.createElement)("div",null,t);js.propTypes={renderPriority:o().number.isRequired,children:o().node.isRequired};const Vs=js,Gs=({noIndex:t,onNoIndexChange:s,editorContext:r,isPrivateBlog:a})=>{const o=(e=>{const t=(0,k.__)("No","wordpress-seo"),s=(0,k.__)("Yes","wordpress-seo"),n=e.noIndex?t:s;return window.wpseoScriptData.isPost?[{name:(0,k.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,k.__)("%s (current default for %s)","wordpress-seo"),n,e.postTypeNamePlural),value:"0"},{name:t,value:"1"},{name:s,value:"2"}]:[{name:(0,k.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,k.__)("%s (current default for %s)","wordpress-seo"),n,e.postTypeNamePlural),value:"default"},{name:s,value:"index"},{name:t,value:"noindex"}]})(r);return(0,e.createElement)(d.LocationConsumer,null,(r=>(0,e.createElement)(n.Fragment,null,a&&(0,e.createElement)(g.Alert,{type:"warning"},(0,k.__)("Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.","wordpress-seo")),(0,e.createElement)(g.Select,{label:(0,k.__)("Allow search engines to show this content in search results?","wordpress-seo"),onChange:s,id:(0,q.join)(["yoast-meta-robots-noindex",r]),options:o,selected:t,linkTo:wpseoAdminL10n["shortlinks.advanced.allow_search_engines"] /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about the no-index setting on our help page.","wordpress-seo")}))))};Gs.propTypes={noIndex:o().string.isRequired,onNoIndexChange:o().func.isRequired,editorContext:o().object.isRequired,isPrivateBlog:o().bool},Gs.defaultProps={isPrivateBlog:!1};const Zs=({noFollow:t,onNoFollowChange:s})=>(0,e.createElement)(d.LocationConsumer,null,(n=>{const r=(0,q.join)(["yoast-meta-robots-nofollow",n]);return(0,e.createElement)(g.RadioButtonGroup,{id:r,options:[{value:"0",label:"Yes"},{value:"1",label:"No"}],label:(0,k.__)("Should search engines follow links on this content?","wordpress-seo"),groupName:r,onChange:s,selected:t,linkTo:wpseoAdminL10n["shortlinks.advanced.follow_links"] /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about the no-follow setting on our help page.","wordpress-seo")})}));Zs.propTypes={noFollow:o().string.isRequired,onNoFollowChange:o().func.isRequired};const Xs=({advanced:t,onAdvancedChange:s})=>(0,e.createElement)(d.LocationConsumer,null,(n=>{const r=(0,q.join)(["yoast-meta-robots-advanced",n]),a=`${r}-input`;return(0,e.createElement)(g.MultiSelect,{label:(0,k.__)("Meta robots advanced","wordpress-seo"),onChange:s,id:r,inputId:a,options:[{name:(0,k.__)("No Image Index","wordpress-seo"),value:"noimageindex"},{name:(0,k.__)("No Archive","wordpress-seo"),value:"noarchive"},{name:(0,k.__)("No Snippet","wordpress-seo"),value:"nosnippet"}],selected:t,linkTo:wpseoAdminL10n["shortlinks.advanced.meta_robots"] /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about advanced meta robots settings on our help page.","wordpress-seo")})}));Xs.propTypes={advanced:o().array.isRequired,onAdvancedChange:o().func.isRequired};const Qs=({breadcrumbsTitle:t,onBreadcrumbsTitleChange:s})=>(0,e.createElement)(d.LocationConsumer,null,(n=>(0,e.createElement)(g.TextInput,{label:(0,k.__)("Breadcrumbs Title","wordpress-seo"),id:(0,q.join)(["yoast-breadcrumbs-title",n]),onChange:s,value:t,linkTo:wpseoAdminL10n["shortlinks.advanced.breadcrumbs_title"] /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about the breadcrumbs title setting on our help page.","wordpress-seo")})));Qs.propTypes={breadcrumbsTitle:o().string.isRequired,onBreadcrumbsTitleChange:o().func.isRequired};const Js=({canonical:t,onCanonicalChange:s})=>(0,e.createElement)(d.LocationConsumer,null,(n=>(0,e.createElement)(g.TextInput,{label:(0,k.__)("Canonical URL","wordpress-seo"),id:(0,q.join)(["yoast-canonical",n]),onChange:s,value:t,linkTo:"https://yoa.st/canonical-url" /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about canonical URLs on our help page.","wordpress-seo")})));Js.propTypes={canonical:o().string.isRequired,onCanonicalChange:o().func.isRequired};const en=t=>{const{noIndex:s,noFollow:r,advanced:a,breadcrumbsTitle:o,canonical:i,onNoIndexChange:l,onNoFollowChange:c,onAdvancedChange:d,onBreadcrumbsTitleChange:u,onCanonicalChange:p,onLoad:m,isLoading:h,editorContext:g,isBreadcrumbsDisabled:y,isPrivateBlog:f}=t;(0,n.useEffect)((()=>{setTimeout((()=>{h&&m()}))}));const b={noIndex:s,onNoIndexChange:l,editorContext:g,isPrivateBlog:f},w={noFollow:r,onNoFollowChange:c},E={advanced:a,onAdvancedChange:d},v={breadcrumbsTitle:o,onBreadcrumbsTitleChange:u},k={canonical:i,onCanonicalChange:p};return h?null:(0,e.createElement)(n.Fragment,null,(0,e.createElement)(Gs,{...b}),g.isPost&&(0,e.createElement)(Zs,{...w}),g.isPost&&(0,e.createElement)(Xs,{...E}),!y&&(0,e.createElement)(Qs,{...v}),(0,e.createElement)(Js,{...k}))};en.propTypes={noIndex:o().string.isRequired,canonical:o().string.isRequired,onNoIndexChange:o().func.isRequired,onCanonicalChange:o().func.isRequired,onLoad:o().func.isRequired,isLoading:o().bool.isRequired,editorContext:o().object.isRequired,isBreadcrumbsDisabled:o().bool.isRequired,isPrivateBlog:o().bool,advanced:o().array,onAdvancedChange:o().func,noFollow:o().string,onNoFollowChange:o().func,breadcrumbsTitle:o().string,onBreadcrumbsTitleChange:o().func},en.defaultProps={advanced:[],onAdvancedChange:()=>{},noFollow:"",onNoFollowChange:()=>{},breadcrumbsTitle:"",onBreadcrumbsTitleChange:()=>{},isPrivateBlog:!1};const tn=en,sn=(0,I.compose)([(0,h.withSelect)((e=>{const{getNoIndex:t,getNoFollow:s,getAdvanced:n,getBreadcrumbsTitle:r,getCanonical:a,getIsLoading:o,getEditorContext:i,getPreferences:l}=e("yoast-seo/editor"),{isBreadcrumbsDisabled:c,isPrivateBlog:d}=l();return{noIndex:t(),noFollow:s(),advanced:n(),breadcrumbsTitle:r(),canonical:a(),isLoading:o(),editorContext:i(),isBreadcrumbsDisabled:c,isPrivateBlog:d}})),(0,h.withDispatch)((e=>{const{setNoIndex:t,setNoFollow:s,setAdvanced:n,setBreadcrumbsTitle:r,setCanonical:a,loadAdvancedSettingsData:o}=e("yoast-seo/editor");return{onNoIndexChange:t,onNoFollowChange:s,onAdvancedChange:n,onBreadcrumbsTitleChange:r,onCanonicalChange:a,onLoad:o}}))])(tn),nn=c().p` color: #606770; flex-shrink: 0; font-size: 12px; line-height: 16px; overflow: hidden; padding: 0; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; margin: 0; position: ${e=>"landscape"===e.mode?"relative":"static"}; `,rn=t=>{const{siteUrl:s}=t;return(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{className:"screen-reader-text"},s),(0,e.createElement)(nn,{"aria-hidden":"true"},(0,e.createElement)("span",null,s)))};rn.propTypes={siteUrl:o().string.isRequired};const an=rn,on=window.yoast.socialMetadataForms,ln=c().img` && { max-width: ${e=>e.width}px; height: ${e=>e.height}px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: none; } `,cn=c().img` &&{ height: 100%; position: absolute; width: 100%; object-fit: cover; } `,dn=c().div` padding-bottom: ${e=>e.aspectRatio}%; `,un=t=>{const{imageProps:s,width:n,height:r,imageMode:a}=t;return"landscape"===a?(0,e.createElement)(dn,{aspectRatio:s.aspectRatio},(0,e.createElement)(cn,{src:s.src,alt:s.alt})):(0,e.createElement)(ln,{src:s.src,alt:s.alt,width:n,height:r,imageProperties:s})};function pn(e,t,s){return"landscape"===s?{widthRatio:t.width/e.landscapeWidth,heightRatio:t.height/e.landscapeHeight}:"portrait"===s?{widthRatio:t.width/e.portraitWidth,heightRatio:t.height/e.portraitHeight}:{widthRatio:t.width/e.squareWidth,heightRatio:t.height/e.squareHeight}}function mn(e,t){return t.widthRatio<=t.heightRatio?{width:Math.round(e.width/t.widthRatio),height:Math.round(e.height/t.widthRatio)}:{width:Math.round(e.width/t.heightRatio),height:Math.round(e.height/t.heightRatio)}}async function hn(e,t,s=!1){const n=await function(e){return new Promise(((t,s)=>{const n=new Image;n.onload=()=>{t({width:n.width,height:n.height})},n.onerror=s,n.src=e}))}(e);let r=s?"landscape":"square";"Facebook"===t&&(r=(0,on.determineFacebookImageMode)(n));const a=function(e){return"Twitter"===e?on.TWITTER_IMAGE_SIZES:on.FACEBOOK_IMAGE_SIZES}(t),o=function(e,t,s){return"square"===s&&t.width===t.height?{width:e.squareWidth,height:e.squareHeight}:mn(t,pn(e,t,s))}(a,n,r);return{mode:r,height:o.height,width:o.width}}async function gn(e,t,s=!1){try{return{imageProperties:await hn(e,t,s),status:"loaded"}}catch(e){return{imageProperties:null,status:"errored"}}}un.propTypes={imageProps:o().shape({src:o().string.isRequired,alt:o().string.isRequired,aspectRatio:o().number.isRequired}).isRequired,width:o().number.isRequired,height:o().number.isRequired,imageMode:o().string},un.defaultProps={imageMode:"landscape"};const yn=c().div` position: relative; ${e=>"landscape"===e.mode?`max-width: ${e.dimensions.width}`:`min-width: ${e.dimensions.width}; height: ${e.dimensions.height}`}; overflow: hidden; background-color: ${y.colors.$color_white}; `,fn=c().div` box-sizing: border-box; max-width: ${on.FACEBOOK_IMAGE_SIZES.landscapeWidth}px; height: ${on.FACEBOOK_IMAGE_SIZES.landscapeHeight}px; background-color: ${y.colors.$color_grey}; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; display: flex; justify-content: center; align-items: center; text-decoration: underline; font-size: 14px; cursor: pointer; `;class bn extends e.Component{constructor(e){super(e),this.state={imageProperties:null,status:"loading"},this.socialMedium="Facebook",this.handleFacebookImage=this.handleFacebookImage.bind(this),this.setState=this.setState.bind(this)}async handleFacebookImage(){try{const e=await gn(this.props.src,this.socialMedium);this.setState(e),this.props.onImageLoaded(e.imageProperties.mode||"landscape")}catch(e){this.setState(e),this.props.onImageLoaded("landscape")}}componentDidUpdate(e){e.src!==this.props.src&&this.handleFacebookImage()}componentDidMount(){this.handleFacebookImage()}retrieveContainerDimensions(e){switch(e){case"square":return{height:on.FACEBOOK_IMAGE_SIZES.squareHeight+"px",width:on.FACEBOOK_IMAGE_SIZES.squareWidth+"px"};case"portrait":return{height:on.FACEBOOK_IMAGE_SIZES.portraitHeight+"px",width:on.FACEBOOK_IMAGE_SIZES.portraitWidth+"px"};case"landscape":return{height:on.FACEBOOK_IMAGE_SIZES.landscapeHeight+"px",width:on.FACEBOOK_IMAGE_SIZES.landscapeWidth+"px"}}}render(){const{imageProperties:t,status:s}=this.state;if("loading"===s||""===this.props.src||"errored"===s)return(0,e.createElement)(fn,{onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,k.__)("Select image","wordpress-seo"));const n=this.retrieveContainerDimensions(t.mode);return(0,e.createElement)(yn,{mode:t.mode,dimensions:n,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave,onClick:this.props.onImageClick},(0,e.createElement)(un,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:on.FACEBOOK_IMAGE_SIZES.aspectRatio},width:t.width,height:t.height,imageMode:t.mode}))}}bn.propTypes={src:o().string,alt:o().string,onImageLoaded:o().func,onImageClick:o().func,onMouseEnter:o().func,onMouseLeave:o().func},bn.defaultProps={src:"",alt:"",onImageLoaded:i.noop,onImageClick:i.noop,onMouseEnter:i.noop,onMouseLeave:i.noop};const wn=bn,En=c().span` line-height: ${20}px; min-height : ${20}px; color: #1d2129; font-weight: 600; overflow: hidden; font-size: 16px; margin: 3px 0 0; letter-spacing: normal; white-space: normal; flex-shrink: 0; cursor: pointer; display: -webkit-box; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; `,vn=c().p` line-height: ${16}px; min-height : ${16}px; color: #606770; font-size: 14px; padding: 0; text-overflow: ellipsis; margin: 3px 0 0 0; display: -webkit-box; cursor: pointer; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; @media all and ( max-width: ${e=>e.maxWidth} ) { display: none; } `,kn=e=>{switch(e){case"landscape":return"527px";case"square":case"portrait":return"369px";default:return"476px"}},xn=c().div` box-sizing: border-box; display: flex; flex-direction: ${e=>"landscape"===e.mode?"column":"row"}; background-color: #f2f3f5; max-width: 527px; `,Tn=c().div` box-sizing: border-box; background-color: #f2f3f5; margin: 0; padding: 10px 12px; position: relative; border-bottom: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-top: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-right: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border: ${e=>"landscape"===e.mode?"1px solid #dddfe2":""}; display: flex; flex-direction: column; flex-grow: 1; justify-content: ${e=>"landscape"===e.mode?"flex-start":"center"}; font-size: 12px; overflow: hidden; `;class Sn extends e.Component{constructor(e){super(e),this.state={imageMode:null,maxLineCount:0,descriptionLineCount:0},this.facebookTitleRef=t().createRef(),this.onImageLoaded=this.onImageLoaded.bind(this),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}onImageLoaded(e){this.setState({imageMode:e})}getTitleLineCount(){return this.facebookTitleRef.current.offsetHeight/20}maybeSetMaxLineCount(){const{imageMode:e,maxLineCount:t}=this.state,s="landscape"===e?2:5;s!==t&&this.setState({maxLineCount:s})}maybeSetDescriptionLineCount(){const{descriptionLineCount:e,maxLineCount:t,imageMode:s}=this.state,n=this.getTitleLineCount();let r=t-n;"portrait"===s&&(r=5===n?0:4),r!==e&&this.setState({descriptionLineCount:r})}componentDidUpdate(){this.maybeSetMaxLineCount(),this.maybeSetDescriptionLineCount()}render(){const{imageMode:t,maxLineCount:s,descriptionLineCount:n}=this.state;return(0,e.createElement)(xn,{id:"facebookPreview",mode:t},(0,e.createElement)(wn,{src:this.props.imageUrl||this.props.imageFallbackUrl,alt:this.props.alt,onImageLoaded:this.onImageLoaded,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,e.createElement)(Tn,{mode:t},(0,e.createElement)(an,{siteUrl:this.props.siteUrl,mode:t}),(0,e.createElement)(En,{ref:this.facebookTitleRef,onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle,lineCount:s},this.props.title),n>0&&(0,e.createElement)(vn,{maxWidth:kn(t),onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription,lineCount:n},this.props.description)))}}Sn.propTypes={siteUrl:o().string.isRequired,title:o().string.isRequired,description:o().string,imageUrl:o().string,imageFallbackUrl:o().string,alt:o().string,onSelect:o().func,onImageClick:o().func,onMouseHover:o().func},Sn.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{}};const Rn=Sn,In=c().div` text-transform: lowercase; color: rgb(83, 100, 113); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; fill: currentcolor; display: flex; flex-direction: row; align-items: flex-end; `,Cn=t=>(0,e.createElement)(In,null,(0,e.createElement)("span",null,t.siteUrl));Cn.propTypes={siteUrl:o().string.isRequired};const Ln=Cn,Pn=(e,t=!0)=>e?`\n\t\t\tmax-width: ${on.TWITTER_IMAGE_SIZES.landscapeWidth}px;\n\t\t\t${t?"border-bottom: 1px solid #E1E8ED;":""}\n\t\t\tborder-radius: 14px 14px 0 0;\n\t\t\t`:`\n\t\twidth: ${on.TWITTER_IMAGE_SIZES.squareWidth}px;\n\t\t${t?"border-right: 1px solid #E1E8ED;":""}\n\t\tborder-radius: 14px 0 0 14px;\n\t\t`,An=c().div` position: relative; box-sizing: content-box; overflow: hidden; background-color: #e1e8ed; flex-shrink: 0; ${e=>Pn(e.isLarge)} `,Fn=c().div` display: flex; justify-content: center; align-items: center; box-sizing: border-box; max-width: 100%; margin: 0; padding: 1em; text-align: center; font-size: 1rem; ${e=>Pn(e.isLarge,!1)} `,qn=c()(Fn)` ${e=>e.isLarge&&`height: ${on.TWITTER_IMAGE_SIZES.landscapeHeight}px;`} border-top-left-radius: 14px; ${e=>e.isLarge?"border-top-right-radius":"border-bottom-left-radius"}: 14px; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; text-decoration: underline; font-size: 14px; cursor: pointer; `;class Mn extends t().Component{constructor(e){super(e),this.state={status:"loading"},this.socialMedium="Twitter",this.handleTwitterImage=this.handleTwitterImage.bind(this),this.setState=this.setState.bind(this)}async handleTwitterImage(){if(null===this.props.src)return;const e=await gn(this.props.src,this.socialMedium,this.props.isLarge);this.setState(e)}componentDidUpdate(e){e.src!==this.props.src&&this.handleTwitterImage()}componentDidMount(){this.handleTwitterImage()}render(){const{status:t,imageProperties:s}=this.state;return"loading"===t||""===this.props.src||"errored"===t?(0,e.createElement)(qn,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,k.__)("Select image","wordpress-seo")):(0,e.createElement)(An,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,e.createElement)(un,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:on.TWITTER_IMAGE_SIZES.aspectRatio},width:s.width,height:s.height,imageMode:s.mode}))}}Mn.propTypes={isLarge:o().bool.isRequired,src:o().string,alt:o().string,onImageClick:o().func,onMouseEnter:o().func,onMouseLeave:o().func},Mn.defaultProps={src:"",alt:"",onMouseEnter:i.noop,onImageClick:i.noop,onMouseLeave:i.noop};const Dn=c().div` display: flex; flex-direction: column; padding: 12px; justify-content: center; margin: 0; box-sizing: border-box; flex: auto; min-width: 0px; gap:2px; > * { line-height:20px; min-height:20px; font-size:15px; } `,On=t=>(0,e.createElement)(Dn,null,t.children);On.propTypes={children:o().array.isRequired};const Nn=On,Bn=c().p` white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(15, 20, 25); cursor: pointer; `,$n=c().p` max-height: 55px; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(83, 100, 113); display: -webkit-box; cursor: pointer; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @media all and ( max-width: ${on.TWITTER_IMAGE_SIZES.landscapeWidth}px ) { display: none; } `,Wn=c().div` font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif; font-size: 15px; font-weight: 400; line-height: 20px; max-width: 507px; border: 1px solid #E1E8ED; box-sizing: border-box; border-radius: 14px; color: #292F33; background: #FFFFFF; text-overflow: ellipsis; display: flex; &:hover { background: #f5f8fa; border: 1px solid rgba(136,153,166,.5); } `,Un=c()(Wn)` flex-direction: column; max-height: 370px; `,Kn=c()(Wn)` flex-direction: row; height: 125px; `;class Hn extends e.Component{constructor(e){super(e),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}render(){const{isLarge:t,imageUrl:s,imageFallbackUrl:n,alt:r,title:a,description:o,siteUrl:i}=this.props,l=t?Un:Kn;return(0,e.createElement)(l,{id:"twitterPreview"},(0,e.createElement)(Mn,{src:s||n,alt:r,isLarge:t,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,e.createElement)(Nn,null,(0,e.createElement)(Ln,{siteUrl:i}),(0,e.createElement)(Bn,{onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle},a),(0,e.createElement)($n,{onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription},o)))}}Hn.propTypes={siteUrl:o().string.isRequired,title:o().string.isRequired,description:o().string,isLarge:o().bool,imageUrl:o().string,imageFallbackUrl:o().string,alt:o().string,onSelect:o().func,onImageClick:o().func,onMouseHover:o().func},Hn.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{},isLarge:!0};const Yn=Hn,zn=window.yoast.replacementVariableEditor;class jn extends e.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.SocialPreview="Social"===e.socialMediumName?Rn:Yn,this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:s,onTitleChange:n,onSelectImageClick:r,onRemoveImageClick:a,socialMediumName:o,imageWarnings:i,siteUrl:l,description:c,descriptionInputPlaceholder:d,descriptionPreviewFallback:u,imageUrl:p,imageFallbackUrl:m,alt:h,title:y,titleInputPlaceholder:f,titlePreviewFallback:b,replacementVariables:w,recommendedReplacementVariables:E,applyReplacementVariables:v,onReplacementVariableSearchChange:k,isPremium:_,isLarge:x,socialPreviewLabel:T,idSuffix:S,activeMetaTabId:R}=this.props,I=v({title:y||b,description:c||u});return(0,e.createElement)(t().Fragment,null,T&&(0,e.createElement)(g.SimulatedLabel,null,T),(0,e.createElement)(this.SocialPreview,{onMouseHover:this.setHoveredField,onSelect:this.setActiveField,onImageClick:r,siteUrl:l,title:I.title,description:I.description,imageUrl:p,imageFallbackUrl:m,alt:h,isLarge:x,activeMetaTabId:R}),(0,e.createElement)(on.SocialMetadataPreviewForm,{onDescriptionChange:s,socialMediumName:o,title:y,titleInputPlaceholder:f,onRemoveImageClick:a,imageSelected:!!p,imageUrl:p,onTitleChange:n,onSelectImageClick:r,description:c,descriptionInputPlaceholder:d,imageWarnings:i,replacementVariables:w,recommendedReplacementVariables:E,onReplacementVariableSearchChange:k,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:_,setEditorRef:this.setEditorRef,idSuffix:S}))}}jn.propTypes={title:o().string.isRequired,onTitleChange:o().func.isRequired,description:o().string.isRequired,onDescriptionChange:o().func.isRequired,imageUrl:o().string.isRequired,imageFallbackUrl:o().string.isRequired,onSelectImageClick:o().func.isRequired,onRemoveImageClick:o().func.isRequired,socialMediumName:o().string.isRequired,alt:o().string,isPremium:o().bool,imageWarnings:o().array,isLarge:o().bool,siteUrl:o().string,descriptionInputPlaceholder:o().string,titleInputPlaceholder:o().string,descriptionPreviewFallback:o().string,titlePreviewFallback:o().string,replacementVariables:zn.replacementVariablesShape,recommendedReplacementVariables:zn.recommendedReplacementVariablesShape,applyReplacementVariables:o().func,onReplacementVariableSearchChange:o().func,socialPreviewLabel:o().string,idSuffix:o().string,activeMetaTabId:o().string},jn.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,isLarge:!0,siteUrl:"",descriptionInputPlaceholder:"",titleInputPlaceholder:"",descriptionPreviewFallback:"",titlePreviewFallback:"",alt:"",applyReplacementVariables:e=>e,onReplacementVariableSearchChange:null,socialPreviewLabel:"",idSuffix:"",activeMetaTabId:""};const Vn={},Gn=(e,t,{log:s=console.warn}={})=>{Vn[e]||(Vn[e]=!0,s(t))},Zn=(e,t=i.noop)=>{const s={};for(const n in e)Object.hasOwn(e,n)&&Object.defineProperty(s,n,{set:s=>{e[n]=s,t("set",n,s)},get:()=>(t("get",n),e[n])});return s};Zn({squareWidth:125,squareHeight:125,landscapeWidth:506,landscapeHeight:265,aspectRatio:50.2},((e,t)=>Gn(`@yoast/social-metadata-previews/TWITTER_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "TWITTER_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`))),Zn({squareWidth:158,squareHeight:158,landscapeWidth:527,landscapeHeight:273,portraitWidth:158,portraitHeight:237,aspectRatio:52.2,largeThreshold:{width:446,height:233}},((e,t)=>Gn(`@yoast/social-metadata-previews/FACEBOOK_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "FACEBOOK_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`)));const Xn=c().div` max-width: calc(527px + 1.5rem); `,Qn=t=>{const s="X"===t.socialMediumName?(0,k.__)("X share preview","wordpress-seo"):(0,k.__)("Social share preview","wordpress-seo"),{locationContext:n}=(0,m.useRootContext)();return(0,e.createElement)(m.Root,null,(0,e.createElement)(Xn,null,(0,e.createElement)(m.FeatureUpsell,{shouldUpsell:!0,variant:"card",cardLink:(0,Es.addQueryArgs)(wpseoAdminL10n["shortlinks.upsell.social_preview."+t.socialMediumName.toLowerCase()],{context:n}),cardText:(0,k.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,k.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2"},(0,e.createElement)("div",{className:"yst-grayscale yst-opacity-50"},(0,e.createElement)(m.Label,null,s),(0,e.createElement)(Rn,{title:"",description:"",siteUrl:"",imageUrl:"",imageFallbackUrl:"",alt:"",onSelect:i.noop,onImageClick:i.noop,onMouseHover:i.noop})))))};Qn.propTypes={socialMediumName:o().oneOf(["Social","Twitter","X"]).isRequired};const Jn=Qn;class er extends n.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:t,onTitleChange:s,onSelectImageClick:r,onRemoveImageClick:a,socialMediumName:o,imageWarnings:i,description:l,descriptionInputPlaceholder:c,imageUrl:d,alt:u,title:p,titleInputPlaceholder:m,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,isPremium:f,location:b}=this.props;return(0,e.createElement)(n.Fragment,null,(0,e.createElement)(Jn,{socialMediumName:o}),(0,e.createElement)(on.SocialMetadataPreviewForm,{onDescriptionChange:t,socialMediumName:o,title:p,titleInputPlaceholder:m,onRemoveImageClick:a,imageSelected:!!d,imageUrl:d,imageAltText:u,onTitleChange:s,onSelectImageClick:r,description:l,descriptionInputPlaceholder:c,imageWarnings:i,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:f,setEditorRef:this.setEditorRef,idSuffix:b}))}}er.propTypes={title:o().string.isRequired,onTitleChange:o().func.isRequired,description:o().string.isRequired,onDescriptionChange:o().func.isRequired,imageUrl:o().string.isRequired,onSelectImageClick:o().func.isRequired,onRemoveImageClick:o().func.isRequired,socialMediumName:o().string.isRequired,isPremium:o().bool,imageWarnings:o().array,descriptionInputPlaceholder:o().string,titleInputPlaceholder:o().string,replacementVariables:zn.replacementVariablesShape,recommendedReplacementVariables:zn.recommendedReplacementVariablesShape,onReplacementVariableSearchChange:o().func,location:o().string,alt:o().string},er.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,descriptionInputPlaceholder:"",titleInputPlaceholder:"",onReplacementVariableSearchChange:null,location:"",alt:""};const tr=er,sr=t=>{const[s,a]=(0,n.useState)(""),o=(0,n.useCallback)((e=>{a(e.detail.metaTabId)}),[a]);(0,n.useEffect)((()=>(setTimeout(t.onLoad),window.addEventListener("YoastSEO:metaTabChange",o),()=>{window.removeEventListener("YoastSEO:metaTabChange",o)})),[]);const i=(0,n.useMemo)((()=>({...t,activeMetaTabId:s})),[t,s]);return t.isPremium?(0,e.createElement)(r.Slot,{name:`YoastFacebookPremium${t.location.charAt(0).toUpperCase()+t.location.slice(1)}`,fillProps:i}):(0,e.createElement)(tr,{...i})};sr.propTypes={isPremium:o().bool.isRequired,onLoad:o().func.isRequired,location:o().string.isRequired};const nr=sr;function rr(e){(function(e){const t=window.wp.media();return t.on("select",(()=>{const s=t.state().get("selection").first();var n;e({type:(n=s.attributes).subtype,width:n.width,height:n.height,url:n.url,id:n.id,sizes:n.sizes,alt:n.alt||n.title||n.name})})),t})(e).open()}const ar=()=>{rr((e=>(0,h.dispatch)("yoast-seo/editor").setFacebookPreviewImage((e=>{const{width:t,height:s}=e,n=(0,on.determineFacebookImageMode)({width:t,height:s}),r=on.FACEBOOK_IMAGE_SIZES[n+"Width"],a=on.FACEBOOK_IMAGE_SIZES[n+"Height"],o=Object.values(e.sizes).find((e=>e.width>=r&&e.height>=a));return{url:o?o.url:e.url,id:e.id,warnings:(0,q.validateFacebookImage)(e),alt:e.alt||""}})(e))))},or=(0,I.compose)([(0,h.withSelect)((e=>{const{getFacebookDescription:t,getDescription:s,getFacebookTitle:n,getSeoTitle:r,getFacebookImageUrl:a,getImageFallback:o,getFacebookWarnings:i,getRecommendedReplaceVars:l,getReplaceVars:c,getSiteUrl:d,getSeoTitleTemplate:u,getSeoTitleTemplateNoFallback:p,getSocialTitleTemplate:m,getSeoDescriptionTemplate:h,getSocialDescriptionTemplate:g,getReplacedExcerpt:y,getFacebookAltText:f}=e("yoast-seo/editor");return{imageUrl:a(),imageFallbackUrl:o(),recommendedReplacementVariables:l(),replacementVariables:c(),description:t(),descriptionPreviewFallback:g()||s()||h()||y()||"",title:n(),titlePreviewFallback:m()||r()||p()||u()||"",imageWarnings:i(),siteUrl:d(),isPremium:!!Is().isPremium,titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"Social",alt:f()}})),(0,h.withDispatch)(((e,t,{select:s})=>{const{setFacebookPreviewTitle:n,setFacebookPreviewDescription:r,clearFacebookPreviewImage:a,loadFacebookPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:ar,onRemoveImageClick:a,onDescriptionChange:r,onTitleChange:n,onLoad:o,onReplacementVariableSearchChange:Vt(l,i)}})),Mt()])(nr),ir=t=>((0,n.useEffect)((()=>{setTimeout(t.onLoad)}),[]),t.isPremium?(0,e.createElement)(r.Slot,{name:`YoastTwitterPremium${t.location.charAt(0).toUpperCase()+t.location.slice(1)}`,fillProps:t}):(0,e.createElement)(tr,{...t}));ir.propTypes={isPremium:o().bool.isRequired,onLoad:o().func.isRequired,location:o().string.isRequired};const lr=ir,cr=()=>{rr((e=>(0,h.dispatch)("yoast-seo/editor").setTwitterPreviewImage((e=>{const t="summary"!==(0,i.get)(window,"wpseoScriptData.metabox.twitterCardType")?"landscape":"square",s=on.TWITTER_IMAGE_SIZES[t+"Width"],n=on.TWITTER_IMAGE_SIZES[t+"Height"],r=Object.values(e.sizes).find((e=>e.width>=s&&e.height>=n));return{url:r?r.url:e.url,id:e.id,warnings:(0,q.validateTwitterImage)(e),alt:e.alt||""}})(e))))},dr=(0,I.compose)([(0,h.withSelect)((e=>{const{getTwitterDescription:t,getTwitterTitle:s,getTwitterImageUrl:n,getFacebookImageUrl:r,getFacebookTitle:a,getFacebookDescription:o,getDescription:i,getSeoTitle:l,getTwitterWarnings:c,getTwitterImageType:d,getImageFallback:u,getRecommendedReplaceVars:p,getReplaceVars:m,getSiteUrl:h,getSeoTitleTemplate:g,getSeoTitleTemplateNoFallback:y,getSocialTitleTemplate:f,getSeoDescriptionTemplate:b,getSocialDescriptionTemplate:w,getReplacedExcerpt:E,getTwitterAltText:v}=e("yoast-seo/editor");return{imageUrl:n(),imageFallbackUrl:r()||u(),recommendedReplacementVariables:p(),replacementVariables:m(),description:t(),descriptionPreviewFallback:w()||o()||i()||b()||E()||"",title:s(),titlePreviewFallback:f()||a()||l()||y()||g()||"",imageWarnings:c(),siteUrl:h(),isPremium:!!Is().isPremium,isLarge:"summary"!==d(),titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"X",alt:v()}})),(0,h.withDispatch)(((e,t,{select:s})=>{const{setTwitterPreviewTitle:n,setTwitterPreviewDescription:r,clearTwitterPreviewImage:a,loadTwitterPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:cr,onRemoveImageClick:a,onDescriptionChange:r,onTitleChange:n,onLoad:o,onReplacementVariableSearchChange:Vt(l,i)}})),Mt()])(lr),ur=c().legend` margin: 16px 0; padding: 0; color: ${y.colors.$color_headings}; font-size: 12px; font-weight: 300; `,pr=c().legend` margin: 0 0 16px; padding: 0; color: ${y.colors.$color_headings}; font-size: 12px; font-weight: 300; `,mr=c().div` padding: 16px; `,hr=({useOpenGraphData:t,useTwitterData:s})=>(0,e.createElement)(n.Fragment,null,s&&t&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)(ns,{hasSeparator:!1 /* translators: Social media appearance refers to a preview of how a page will be represented on social media. */,title:(0,k.__)("Social media appearance","wordpress-seo"),initialIsOpen:!0},(0,e.createElement)(pr,null,(0,k.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,e.createElement)(or,null),(0,e.createElement)(ur,null,(0,k.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below. If you leave these settings untouched, the 'Social media appearance' settings mentioned above will also be applied for sharing on X.","wordpress-seo"))),(0,e.createElement)(ns,{title:(0,k.__)("X appearance","wordpress-seo"),hasSeparator:!0,initialIsOpen:!1},(0,e.createElement)(dr,null))),t&&!s&&(0,e.createElement)(mr,null,(0,e.createElement)(pr,null,(0,k.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,e.createElement)(or,null)),!t&&s&&(0,e.createElement)(mr,null,(0,e.createElement)(pr,null,(0,k.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below.","wordpress-seo")),(0,e.createElement)(dr,null)));hr.propTypes={useOpenGraphData:o().bool.isRequired,useTwitterData:o().bool.isRequired};const gr=hr,yr=(0,h.withSelect)((e=>{const{getPreferences:t}=e("yoast-seo/editor"),{useOpenGraphData:s,useTwitterData:n}=t();return{useOpenGraphData:s,useTwitterData:n}}))(gr);function fr({target:t}){return(0,e.createElement)(w,{target:t},(0,e.createElement)(yr,null))}fr.propTypes={target:o().string.isRequired};const br=(0,q.makeOutboundLink)(),wr=c().div` padding: 16px; `,Er="yoast-seo/editor";function vr({location:t,show:s}){return s?(0,e.createElement)(g.Alert,{type:"info"},(0,k.sprintf)(/* translators: %s Expands to "Yoast News SEO" */ (0,k.__)("Are you working on a news article? %s helps you optimize your site for Google News.","wordpress-seo"),"Yoast News SEO")+" ",(0,e.createElement)(br,{href:window.wpseoAdminL10n[`shortlinks.upsell.${t}.news`]},(0,k.sprintf)(/* translators: %s: Expands to "Yoast News SEO". */ (0,k.__)("Buy %s now!","wordpress-seo"),"Yoast News SEO"))):null}vr.propTypes={show:o().bool.isRequired,location:o().string.isRequired};const kr=(e,t,s)=>{const n=(0,h.useSelect)((e=>e(Er).getIsProduct()),[]),r=(0,h.useSelect)((e=>e(Er).getIsWooSeoActive()),[]),a=n&&r?{name:(0,k.__)("Item Page","wordpress-seo"),value:"ItemPage"}:e.find((e=>e.value===t));return[{name:(0,k.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s expands to the current site wide default. */ (0,k.__)("Default for %1$s (%2$s)","wordpress-seo"),s,a?a.name:""),value:""},...e]},_r=e=>(0,k.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s and %3$s expand to a link to the Settings page */ (0,k.__)("You can change the default type for %1$s under Content types in the %2$sSettings%3$s.","wordpress-seo"),e,"{{link}}","{{/link}}");o().string.isRequired,o().string.isRequired,o().string.isRequired;const xr=t=>{const s=kr(t.pageTypeOptions,t.defaultPageType,t.postTypeName),r=kr(t.articleTypeOptions,t.defaultArticleType,t.postTypeName),a=(0,h.useSelect)((e=>e(Er).selectLink("https://yoa.st/product-schema-metabox")),[]),o=(0,h.useSelect)((e=>e(Er).getIsWooSeoUpsell()),[]),[i,l]=(0,n.useState)(t.schemaArticleTypeSelected),c=(0,k.__)("Want your products stand out in search results with rich results like price, reviews and more?","wordpress-seo"),d=(0,h.useSelect)((e=>e(Er).getIsProduct()),[]),u=(0,h.useSelect)((e=>e(Er).getIsWooSeoActive()),[]),p=(0,h.useSelect)((e=>e(Er).selectAdminLink("?page=wpseo_page_settings")),[]),m=d&&u,y=(0,n.useCallback)(((e,t)=>{l(t)}),[i]);return(0,n.useEffect)((()=>{y(null,t.schemaArticleTypeSelected)}),[t.schemaArticleTypeSelected]),(0,e.createElement)(n.Fragment,null,(0,e.createElement)(g.FieldGroup,{label:(0,k.__)("What type of page or content is this?","wordpress-seo"),linkTo:t.additionalHelpTextLink /* translators: Hidden accessibility text. */,linkText:(0,k.__)("Learn more about page or content types","wordpress-seo")}),o&&(0,e.createElement)(Xt,{link:a,text:c}),(0,e.createElement)(g.Select,{id:(0,q.join)(["yoast-schema-page-type",t.location]),options:s,label:(0,k.__)("Page type","wordpress-seo"),onChange:t.schemaPageTypeChange,selected:m?"ItemPage":t.schemaPageTypeSelected,disabled:m}),t.showArticleTypeInput&&(0,e.createElement)(g.Select,{id:(0,q.join)(["yoast-schema-article-type",t.location]),options:r,label:(0,k.__)("Article type","wordpress-seo"),onChange:t.schemaArticleTypeChange,selected:t.schemaArticleTypeSelected,onOptionFocus:y}),(0,e.createElement)(vr,{location:t.location,show:!t.isNewsEnabled&&(w=i,E=t.defaultArticleType,"NewsArticle"===w||""===w&&"NewsArticle"===E)}),t.displayFooter&&!m&&(0,e.createElement)("p",null,(f=t.postTypeName,b=p,(0,V.Z)({mixedString:_r(f),components:{link:(0,e.createElement)("a",{href:b,target:"_blank",rel:"noreferrer"})}}))),m&&(0,e.createElement)("p",null,(0,k.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,k.__)("You have %1$s activated on your site, automatically setting the Page type for your products to 'Item Page'. As a result, the Page type selection is disabled.","wordpress-seo"),"Yoast WooCommerce SEO")));var f,b,w,E},Tr=o().arrayOf(o().shape({name:o().string,value:o().string}));xr.propTypes={schemaPageTypeChange:o().func,schemaPageTypeSelected:o().string,pageTypeOptions:Tr.isRequired,schemaArticleTypeChange:o().func,schemaArticleTypeSelected:o().string,articleTypeOptions:Tr.isRequired,showArticleTypeInput:o().bool.isRequired,additionalHelpTextLink:o().string.isRequired,helpTextLink:o().string.isRequired,helpTextTitle:o().string.isRequired,helpTextDescription:o().string.isRequired,postTypeName:o().string.isRequired,displayFooter:o().bool,defaultPageType:o().string.isRequired,defaultArticleType:o().string.isRequired,location:o().string.isRequired,isNewsEnabled:o().bool},xr.defaultProps={schemaPageTypeChange:()=>{},schemaPageTypeSelected:null,schemaArticleTypeChange:()=>{},schemaArticleTypeSelected:null,displayFooter:!1,isNewsEnabled:!1};const Sr=t=>t.isMetabox?(0,n.createPortal)((0,e.createElement)(wr,null,(0,e.createElement)(xr,{...t})),document.getElementById("wpseo-meta-section-schema")):(0,e.createElement)(xr,{...t});Sr.propTypes={showArticleTypeInput:o().bool,articleTypeLabel:o().string,additionalHelpTextLink:o().string,pageTypeLabel:o().string.isRequired,helpTextLink:o().string.isRequired,helpTextTitle:o().string.isRequired,helpTextDescription:o().string.isRequired,isMetabox:o().bool.isRequired,postTypeName:o().string.isRequired,displayFooter:o().bool,loadSchemaArticleData:o().func.isRequired,loadSchemaPageData:o().func.isRequired,location:o().string.isRequired},Sr.defaultProps={showArticleTypeInput:!1,articleTypeLabel:"",additionalHelpTextLink:"",displayFooter:!1};const Rr=Sr;class Ir{static get articleTypeInput(){return document.getElementById("yoast_wpseo_schema_article_type")}static get defaultArticleType(){return Ir.articleTypeInput.getAttribute("data-default")}static get articleType(){return Ir.articleTypeInput.value}static set articleType(e){Ir.articleTypeInput.value=e}static get pageTypeInput(){return document.getElementById("yoast_wpseo_schema_page_type")}static get defaultPageType(){return Ir.pageTypeInput.getAttribute("data-default")}static get pageType(){return Ir.pageTypeInput.value}static set pageType(e){Ir.pageTypeInput.value=e}}const Cr=t=>{const s=null!==Ir.articleTypeInput;(0,n.useEffect)((()=>{t.loadSchemaPageData(),s&&t.loadSchemaArticleData()}),[]);const{pageTypeOptions:r,articleTypeOptions:a}=window.wpseoScriptData.metabox.schema,o={articleTypeLabel:(0,k.__)("Article type","wordpress-seo"),pageTypeLabel:(0,k.__)("Page type","wordpress-seo"),postTypeName:window.wpseoAdminL10n.postTypeNamePlural,helpTextTitle:(0,k.__)("Yoast SEO automatically describes your pages using schema.org","wordpress-seo"),helpTextDescription:(0,k.__)("This helps search engines understand your website and your content. You can change some of your settings for this page below.","wordpress-seo"),showArticleTypeInput:s,pageTypeOptions:r,articleTypeOptions:a},i={...t,...o,...(l=t.location,"metabox"===l?{helpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.page_type"],isMetabox:!0}:{helpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.page_type"],isMetabox:!1})};var l;return(0,e.createElement)(Rr,{...i})};Cr.propTypes={displayFooter:o().bool.isRequired,schemaPageTypeSelected:o().string.isRequired,schemaArticleTypeSelected:o().string.isRequired,defaultArticleType:o().string.isRequired,defaultPageType:o().string.isRequired,loadSchemaPageData:o().func.isRequired,loadSchemaArticleData:o().func.isRequired,schemaPageTypeChange:o().func.isRequired,schemaArticleTypeChange:o().func.isRequired,location:o().string.isRequired};const Lr=(0,I.compose)([(0,h.withSelect)((e=>{const{getPreferences:t,getPageType:s,getDefaultPageType:n,getArticleType:r,getDefaultArticleType:a}=e("yoast-seo/editor"),{displaySchemaSettingsFooter:o,isNewsEnabled:i}=t();return{displayFooter:o,isNewsEnabled:i,schemaPageTypeSelected:s(),schemaArticleTypeSelected:r(),defaultArticleType:a(),defaultPageType:n()}})),(0,h.withDispatch)((e=>{const{setPageType:t,setArticleType:s,getSchemaPageData:n,getSchemaArticleData:r}=e("yoast-seo/editor");return{loadSchemaPageData:n,loadSchemaArticleData:r,schemaPageTypeChange:t,schemaArticleTypeChange:s}})),Mt()])(Cr),Pr=window.yoast.relatedKeyphraseSuggestions,Ar=()=>(0,e.createElement)("p",{className:"yoast-related-keyphrases-modal__loading-message"},(0,k.sprintf)(/* translators: %1$s expands to "Yoast SEO", %2$s expands to "Semrush". */ (0,k.__)("Please wait while %1$s connects to %2$s to get related keyphrases...","wordpress-seo"),"Yoast SEO","Semrush")," ",(0,e.createElement)(g.SvgIcon,{icon:"loading-spinner"})),Fr=(0,q.makeOutboundLink)(),qr=()=>(0,e.createElement)(n.Fragment,null,(0,e.createElement)("p",null,(0,k.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,k.__)("You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.","wordpress-seo"),"Semrush")),(0,e.createElement)(Fr,{href:window.wpseoAdminL10n["shortlinks.semrush.prices"],className:"yoast-button-upsell"},(0,k.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,k.__)("Upgrade your %s plan","wordpress-seo"),"Semrush"),(0,e.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))),Mr="yoast-semrush-country-selector",Dr=[{value:"us",name:"United States - US"},{value:"uk",name:"United Kingdom - UK"},{value:"ca",name:"Canada - CA"},{value:"ru",name:"Russia - RU"},{value:"de",name:"Germany - DE"},{value:"fr",name:"France - FR"},{value:"es",name:"Spain - ES"},{value:"it",name:"Italy - IT"},{value:"br",name:"Brazil - BR"},{value:"au",name:"Australia - AU"},{value:"ar",name:"Argentina - AR"},{value:"be",name:"Belgium - BE"},{value:"ch",name:"Switzerland - CH"},{value:"dk",name:"Denmark - DK"},{value:"fi",name:"Finland - FI"},{value:"hk",name:"Hong Kong - HK"},{value:"ie",name:"Ireland - IE"},{value:"il",name:"Israel - IL"},{value:"mx",name:"Mexico - MX"},{value:"nl",name:"Netherlands - NL"},{value:"no",name:"Norway - NO"},{value:"pl",name:"Poland - PL"},{value:"se",name:"Sweden - SE"},{value:"sg",name:"Singapore - SG"},{value:"tr",name:"Turkey - TR"},{value:"jp",name:"Japan - JP"},{value:"in",name:"India - IN"},{value:"hu",name:"Hungary - HU"},{value:"af",name:"Afghanistan - AF"},{value:"al",name:"Albania - AL"},{value:"dz",name:"Algeria - DZ"},{value:"ao",name:"Angola - AO"},{value:"am",name:"Armenia - AM"},{value:"at",name:"Austria - AT"},{value:"az",name:"Azerbaijan - AZ"},{value:"bh",name:"Bahrain - BH"},{value:"bd",name:"Bangladesh - BD"},{value:"by",name:"Belarus - BY"},{value:"bz",name:"Belize - BZ"},{value:"bo",name:"Bolivia - BO"},{value:"ba",name:"Bosnia and Herzegovina - BA"},{value:"bw",name:"Botswana - BW"},{value:"bn",name:"Brunei - BN"},{value:"bg",name:"Bulgaria - BG"},{value:"cv",name:"Cabo Verde - CV"},{value:"kh",name:"Cambodia - KH"},{value:"cm",name:"Cameroon - CM"},{value:"cl",name:"Chile - CL"},{value:"co",name:"Colombia - CO"},{value:"cr",name:"Costa Rica - CR"},{value:"hr",name:"Croatia - HR"},{value:"cy",name:"Cyprus - CY"},{value:"cz",name:"Czech Republic - CZ"},{value:"cd",name:"Congo - CD"},{value:"do",name:"Dominican Republic - DO"},{value:"ec",name:"Ecuador - EC"},{value:"eg",name:"Egypt - EG"},{value:"sv",name:"El Salvador - SV"},{value:"ee",name:"Estonia - EE"},{value:"et",name:"Ethiopia - ET"},{value:"ge",name:"Georgia - GE"},{value:"gh",name:"Ghana - GH"},{value:"gr",name:"Greece - GR"},{value:"gt",name:"Guatemala - GT"},{value:"gy",name:"Guyana - GY"},{value:"ht",name:"Haiti - HT"},{value:"hn",name:"Honduras - HN"},{value:"is",name:"Iceland - IS"},{value:"id",name:"Indonesia - ID"},{value:"jm",name:"Jamaica - JM"},{value:"jo",name:"Jordan - JO"},{value:"kz",name:"Kazakhstan - KZ"},{value:"kw",name:"Kuwait - KW"},{value:"lv",name:"Latvia - LV"},{value:"lb",name:"Lebanon - LB"},{value:"lt",name:"Lithuania - LT"},{value:"lu",name:"Luxembourg - LU"},{value:"mg",name:"Madagascar - MG"},{value:"my",name:"Malaysia - MY"},{value:"mt",name:"Malta - MT"},{value:"mu",name:"Mauritius - MU"},{value:"md",name:"Moldova - MD"},{value:"mn",name:"Mongolia - MN"},{value:"me",name:"Montenegro - ME"},{value:"ma",name:"Morocco - MA"},{value:"mz",name:"Mozambique - MZ"},{value:"na",name:"Namibia - NA"},{value:"np",name:"Nepal - NP"},{value:"nz",name:"New Zealand - NZ"},{value:"ni",name:"Nicaragua - NI"},{value:"ng",name:"Nigeria - NG"},{value:"om",name:"Oman - OM"},{value:"py",name:"Paraguay - PY"},{value:"pe",name:"Peru - PE"},{value:"ph",name:"Philippines - PH"},{value:"pt",name:"Portugal - PT"},{value:"ro",name:"Romania - RO"},{value:"sa",name:"Saudi Arabia - SA"},{value:"sn",name:"Senegal - SN"},{value:"rs",name:"Serbia - RS"},{value:"sk",name:"Slovakia - SK"},{value:"si",name:"Slovenia - SI"},{value:"za",name:"South Africa - ZA"},{value:"kr",name:"South Korea - KR"},{value:"lk",name:"Sri Lanka - LK"},{value:"th",name:"Thailand - TH"},{value:"bs",name:"Bahamas - BS"},{value:"tt",name:"Trinidad and Tobago - TT"},{value:"tn",name:"Tunisia - TN"},{value:"ua",name:"Ukraine - UA"},{value:"ae",name:"United Arab Emirates - AE"},{value:"uy",name:"Uruguay - UY"},{value:"ve",name:"Venezuela - VE"},{value:"vn",name:"Vietnam - VN"},{value:"zm",name:"Zambia - ZM"},{value:"zw",name:"Zimbabwe - ZW"},{value:"ly",name:"Libya - LY"}];class Or extends n.Component{constructor(e){super(e),this.relatedKeyphrasesRequest=this.relatedKeyphrasesRequest.bind(this),this.onChangeHandler=this.onChangeHandler.bind(this)}componentDidMount(){this.props.response&&this.props.keyphrase===this.props.lastRequestKeyphrase||this.relatedKeyphrasesRequest()}storeCountryCode(e){ee()({path:"yoast/v1/semrush/country_code",method:"POST",data:{country_code:e}})}async relatedKeyphrasesRequest(){const{keyphrase:e,countryCode:t,newRequest:s}=this.props;s(t,e),this.storeCountryCode(t);const n=await this.doRequest(e,t);200!==n.status?this.handleFailedResponse(n):this.handleSuccessResponse(n)}handleSuccessResponse(e){const{setNoResultsFound:t,setRequestSucceeded:s}=this.props;0!==e.results.rows.length?s(e):t()}handleFailedResponse(e){const{setRequestLimitReached:t,setRequestFailed:s}=this.props;"error"in e&&(e.error.includes("TOTAL LIMIT EXCEEDED")?t():s(e))}async doRequest(e,t){return await ee()({path:(0,Es.addQueryArgs)("/yoast/v1/semrush/related_keyphrases",{keyphrase:e,country_code:t})})}onChangeHandler(e){this.props.setCountry(e)}render(){return(0,e.createElement)("div",{id:Mr},(0,e.createElement)(g.SingleSelect,{id:Mr+"-select",label:(0,k.__)("Show results for:","wordpress-seo"),name:"semrush-country-code",options:Dr,selected:this.props.countryCode,onChange:this.onChangeHandler,wrapperClassName:"yoast-field-group yoast-field-group--inline"}),(0,e.createElement)(g.NewButton,{id:Mr+"-button",variant:"secondary",onClick:this.relatedKeyphrasesRequest},(0,k.__)("Select country","wordpress-seo")))}}Or.propTypes={keyphrase:o().string,countryCode:o().string,response:o().object,lastRequestKeyphrase:o().string,setCountry:o().func.isRequired,newRequest:o().func.isRequired,setNoResultsFound:o().func.isRequired,setRequestSucceeded:o().func.isRequired,setRequestLimitReached:o().func.isRequired,setRequestFailed:o().func.isRequired},Or.defaultProps={keyphrase:"",countryCode:"us",response:{},lastRequestKeyphrase:""};const Nr=Or,Br=(0,q.makeOutboundLink)(),$r=()=>(0,e.createElement)(g.Alert,{type:"info"},(0,k.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,k.__)("You’ll reach more people with multiple keyphrases! Want to quickly add these related keyphrases to the %s analyses for even better content optimization?","wordpress-seo"),"Yoast SEO")+" ",(0,e.createElement)(Br,{href:window.wpseoAdminL10n["shortlinks.semrush.premium_landing_page"]},(0,k.sprintf)(/* translators: %s: Expands to "Yoast SEO Premium". */ (0,k.__)("Explore %s!","wordpress-seo"),"Yoast SEO Premium"))),Wr=()=>(0,e.createElement)(g.Alert,{type:"error"},(0,k.__)("We've encountered a problem trying to get related keyphrases. Please try again later.","wordpress-seo")),Ur=()=>(0,e.createElement)(g.Alert,{type:"warning"},(0,k.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,k.__)("You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.","wordpress-seo"),"Yoast SEO"));function Kr(t){var s,r,a;const{response:o,lastRequestKeyphrase:l,keyphrase:c,newRequest:d,setCountry:u,renderAction:p,countryCode:h,requestLimitReached:g,setRequestFailed:y,setNoResultsFound:f,relatedKeyphrases:b,setRequestSucceeded:w,setRequestLimitReached:E,isPending:v,isRtl:_}=t,x=Is().isPremium,T=(0,q.makeOutboundLink)(),S="https://www.semrush.com/analytics/keywordoverview/?q="+encodeURIComponent(c)+"&db="+encodeURIComponent(h);return(0,e.createElement)(n.Fragment,null,!g&&(0,e.createElement)(n.Fragment,null,!x&&(0,e.createElement)($r,null),x&&function(e){return e&&e.length>=4}(b)&&(0,e.createElement)(Ur,null),(0,e.createElement)(Nr,{countryCode:h,setCountry:u,newRequest:d,keyphrase:c,setRequestFailed:y,setNoResultsFound:f,setRequestSucceeded:w,setRequestLimitReached:E,response:o,lastRequestKeyphrase:l})),function(t){const{isPending:s,requestLimitReached:n,isSuccess:r,response:a,requestHasData:o}=t;return s?(0,e.createElement)(Ar,null):n?(0,e.createElement)(qr,null):!r&&function(e){return!(0,i.isEmpty)(e)&&"error"in e}(a)?(0,e.createElement)(Wr,null):o?void 0:(0,e.createElement)("p",null,(0,k.__)("Sorry, there's no data available for that keyphrase/country combination.","wordpress-seo"))}(t),(0,e.createElement)(m.Root,{context:{isRtl:_}},(0,e.createElement)(Pr.KeyphrasesTable,{relatedKeyphrases:b,columnNames:null==o||null===(s=o.results)||void 0===s?void 0:s.columnNames,data:null==o||null===(r=o.results)||void 0===r?void 0:r.rows,isPending:v,renderButton:p}),(null==o||null===(a=o.results)||void 0===a?void 0:a.rows)&&(0,e.createElement)("p",{className:"yst-mb-0 yst-mt-2"},(0,e.createElement)(T,{href:S},(0,k.sprintf)(/* translators: %s expands to Semrush */ (0,k.__)("Get more insights at %s","wordpress-seo"),"Semrush")))))}Kr.propTypes={keyphrase:o().string,relatedKeyphrases:o().array,renderAction:o().func,requestLimitReached:o().bool,countryCode:o().string.isRequired,setCountry:o().func.isRequired,newRequest:o().func.isRequired,setRequestSucceeded:o().func.isRequired,setRequestLimitReached:o().func.isRequired,setRequestFailed:o().func.isRequired,setNoResultsFound:o().func.isRequired,response:o().object,lastRequestKeyphrase:o().string,isRtl:o().bool,isPending:o().bool},Kr.defaultProps={keyphrase:"",relatedKeyphrases:[],renderAction:null,requestLimitReached:!1,response:{},lastRequestKeyphrase:"",isRtl:!1,isPending:!1};const Hr=(0,I.compose)([(0,h.withSelect)((e=>{const{getFocusKeyphrase:t,getSEMrushSelectedCountry:s,getSEMrushRequestLimitReached:n,getSEMrushRequestResponse:r,getSEMrushRequestIsSuccess:a,getSEMrushIsRequestPending:o,getSEMrushRequestHasData:i,getSEMrushRequestKeyphrase:l,getPreference:c}=e("yoast-seo/editor");return{keyphrase:t(),countryCode:s(),requestLimitReached:n(),response:r(),isSuccess:a(),isPending:o(),requestHasData:i(),lastRequestKeyphrase:l(),isRtl:c("isRtl",!1)}})),(0,h.withDispatch)((e=>{const{setSEMrushChangeCountry:t,setSEMrushNewRequest:s,setSEMrushRequestSucceeded:n,setSEMrushRequestFailed:r,setSEMrushSetRequestLimitReached:a,setSEMrushNoResultsFound:o}=e("yoast-seo/editor");return{setCountry:e=>{t(e)},newRequest:(e,t)=>{s(e,t)},setRequestSucceeded:e=>{n(e)},setRequestFailed:e=>{r(e)},setRequestLimitReached:()=>{a()},setNoResultsFound:()=>{o()}}}))])(Kr),Yr=(0,k.__)("Check your text on even more SEO criteria and get an enhanced keyphrase analysis, making it easier to optimize your content.","wordpress-seo"),zr=t=>{const{locationContext:s}=(0,d.useRootContext)(),n=(0,Es.addQueryArgs)(wpseoAdminL10n[t.buyLink],{context:s});return(0,e.createElement)(Ys,{title:(0,k.__)("Get more help with writing content that ranks","wordpress-seo"),description:t.description,benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qs(),upsellButtonText:(0,k.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:n,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,k.__)("1 year of premium support and updates included!","wordpress-seo")})};zr.propTypes={buyLink:o().string.isRequired,description:o().string},zr.defaultProps={description:Yr};const jr=zr,Vr=({location:t})=>{const[s,r]=(0,n.useState)(!1),a=(0,n.useCallback)((()=>r(!1)),[]),o=(0,n.useCallback)((()=>r(!0)),[]),i=(0,m.useSvgAria)();return(0,e.createElement)(n.Fragment,null,s&&(0,e.createElement)(B,{title:(0,k.__)("Unlock Premium SEO analysis","wordpress-seo"),onRequestClose:a,additionalClassName:"",className:`${O} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,id:"yoast-premium-seo-analysis-modal",shouldCloseOnClickOutside:!0},(0,e.createElement)(D,null,(0,e.createElement)(jr,{buyLink:`shortlinks.upsell.${t}.premium_seo_analysis_button`}))),"sidebar"===t&&(0,e.createElement)(Y,{id:"yoast-premium-seo-analysis-modal-open-button",title:(0,k.__)("Premium SEO analysis","wordpress-seo"),prefixIcon:{icon:"seo-score-none",color:y.colors.$color_grey},onClick:o},(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...i})))),"metabox"===t&&(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(F,{id:"yoast-premium-seo-analysis-metabox-modal-open-button",onClick:o},(0,e.createElement)(g.SvgIcon,{icon:"seo-score-none",color:y.colors.$color_grey}),(0,e.createElement)(F.Text,null,(0,k.__)("Premium SEO analysis","wordpress-seo")),(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...i}),(0,e.createElement)("span",null,"Premium")))))};Vr.propTypes={location:o().string},Vr.defaultProps={location:"sidebar"};const Gr=Vr,Zr=t=>(0,e.createElement)(Ys,{title:(0,k.__)("Reach a wider audience","wordpress-seo"),description:(0,k.__)("Get help optimizing for up to 5 related keyphrases. This helps you reach a wider audience and get more traffic.","wordpress-seo"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:qs(),upsellButtonText:(0,k.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,k.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:t.buyLink,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,k.__)("1 year free support and updates included!","wordpress-seo")});Zr.propTypes={buyLink:o().string.isRequired};const Xr=Zr,Qr=()=>{const[t,,,s,r]=(0,m.useToggleState)(!1),a=(0,n.useContext)(d.LocationContext),{locationContext:o}=(0,d.useRootContext)(),i=(0,m.useSvgAria)(),l=wpseoAdminL10n["sidebar"===a.toLowerCase()?"shortlinks.upsell.sidebar.additional_button":"shortlinks.upsell.metabox.additional_button"];return(0,e.createElement)(e.Fragment,null,t&&(0,e.createElement)(B,{title:(0,k.__)("Add related keyphrases","wordpress-seo"),onRequestClose:r,additionalClassName:"",id:"yoast-additional-keyphrases-modal",className:`${O} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,e.createElement)(D,null,(0,e.createElement)(Xr,{buyLink:(0,Es.addQueryArgs)(l,{context:o})}))),"sidebar"===a&&(0,e.createElement)(Y,{id:"yoast-additional-keyphrase-modal-open-button",title:(0,k.__)("Add related keyphrase","wordpress-seo"),prefixIcon:{icon:"plus",color:y.colors.$color_grey_medium_dark},onClick:s},(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...i})))),"metabox"===a&&(0,e.createElement)("div",{className:"yst-root"},(0,e.createElement)(F,{id:"yoast-additional-keyphrase-metabox-modal-open-button",onClick:s},(0,e.createElement)(g.SvgIcon,{icon:"plus",color:y.colors.$color_grey_medium_dark}),(0,e.createElement)(F.Text,null,(0,k.__)("Add related keyphrase","wordpress-seo")),(0,e.createElement)(m.Badge,{size:"small",variant:"upsell"},(0,e.createElement)(Fs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...i}),(0,e.createElement)("span",null,"Premium")))))};var Jr,ea,ta,sa,na,ra,aa,oa,ia,la,ca,da,ua,pa,ma,ha,ga,ya,fa,ba,wa,Ea,va,ka,_a,xa,Ta,Sa,Ra,Ia,Ca,La,Pa,Aa,Fa,qa,Ma,Da,Oa,Na,Ba,$a,Wa,Ua,Ka,Ha,Ya;function za(){return za=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",za({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 448 360"},t),Jr||(Jr=e.createElement("circle",{cx:226,cy:211,r:149,fill:"#f0ecf0"})),ea||(ea=e.createElement("path",{fill:"#fbd2a6",d:"M173.53 189.38s-35.47-5.3-41.78-11c-9.39-24.93-29.61-48-35.47-66.21-.71-2.24 3.72-11.39 3.53-15.41s-5.34-11.64-5.23-14-.09-15.27-.09-15.27l-4.75-.72s-5.13 6.07-3.56 9.87c-1.73-4.19 4.3 7.93.5 9.35 0 0-6-5.94-11.76-8.27s-19.57-3.65-19.57-3.65L43.19 73l-4.42.6L31 69.7l-2.85 5.12 7.53 5.29L40.86 92l17.19 10.2 10.2 10.56 9.86 3.56s26.49 79.67 45 92c17 11.33 37.23 15.92 37.23 15.92z"})),ta||(ta=e.createElement("path",{fill:"#a4286a",d:"M270.52 345.13c2.76-14.59 15.94-35.73 30.24-54.58 16.22-21.39 14-79.66-33.19-91.46-17.3-4.32-52.25-1-59.85-3.41C186.54 189 170 187 168 190.17c-5 10.51-7.73 27.81-5.51 36.26 1.18 4.73 3.54 5.91 20.49 13.4-5.12 15-16.35 26.3-22.86 37s7.88 27.2 7.1 33.51c-.48 3.8-4.26 21.13-7.18 34.25a149.47 149.47 0 0 0 110.3 8.66 25.66 25.66 0 0 1 .18-8.12z"})),sa||(sa=e.createElement("path",{fill:"#9a5815",d:"M206.76 66.43c-5 14.4-1.42 25.67-3.93 40.74-10 60.34-24.08 43.92-31.44 93.6 7.24-14.19 14.32-15.82 20.63-23.11-.83 3.09-10.25 13.75-8.05 34.81 9.85-8.51 6.35-8.75 11.86-8.54.36 3.25 3.53 3.22-3.59 10.53 2.52.69 17.42-14.32 20.16-12.66s0 5.72-6 7.76c2.15 2.2 30.47-3.87 43.81-14.71 4.93-4 10-13.16 13.38-18.2 7.17-10.62 12.38-24.77 17.71-36.6 8.94-19.87 15.09-39.34 16.11-61.31.53-10.44-3.41-18.44-4.41-28.86-2.57-27.8-67.63-37.26-86.24 16.55z"})),na||(na=e.createElement("path",{fill:"#efb17c",d:"M277.74 179.06c.62-.79 1.24-1.59 1.84-2.39-.85 2.59-1.52 3.73-1.84 2.39z"})),ra||(ra=e.createElement("path",{fill:"#fbd2a6",d:"M216.1 206.72c3.69-5.42 8.28-3.35 15.57-8.28 3.76-3.06 1.57-9.46 1.77-11.82 18.25 4.56 37.38-1.18 49.07-16 .62 5.16-2.77 22.27-.2 27 4.73 8.67 13.4 18.92 13.4 18.92-35.47-2.76-63.45 39-89.86 44.54 5.52-28.74-2.36-35.84 10.25-54.36z"})),aa||(aa=e.createElement("path",{fill:"#f6b488",d:"m235.21 167.9 53.21-25.23s-3.65 24-6.5 32.72c-64.05 62.66-46.47-7.33-46.71-7.49z"})),oa||(oa=e.createElement("path",{fill:"#fbd2a6",d:"M226.86 50.64C215 59.31 206.37 93.21 204 95.57c-19.46 19.47-3.59 41.39-3.94 51.24-.2 5.52-4.14 25.42 5.72 29.36 22.22 8.89 60-3.48 67.19-12.61 13.28-16.75 40.89-94.78 17.74-108.19-7.92-4.58-42.78-20.18-63.85-4.73z"})),ia||(ia=e.createElement("path",{fill:"#e5766c",d:"M243.69 143.66c-10.7-6.16-8.56-6.73-19.76-12.71-3.86-2.07-3.94.64-6.32 0-2.91-.79-1.39-2.74-5.37-3.48-6.52-1.21-3.67 3.63-3.15 6 1.32 6.15-8.17 17.3 3.26 21.42 12.65 4.55 21.38-9.41 31.34-11.23z"})),la||(la=e.createElement("path",{fill:"#fff",d:"M240.68 143.9c-11.49-5.53-11.65-8.17-24.64-11.69-8.6-2.32-5.53 1-5.69 4.42-.2 4.16-1.26 9.87 4.9 12.66 9 4.09 18.16-6.02 25.43-5.39zm.7-40.9c-.16 1.26-.06 4.9 5.46 8.25 11.43-4.73 16.36-2.56 17-3.33 1.48-1.76-2-8.87-7.88-9.85-5.58-.94-14.14 1.24-14.58 4.93z"})),ca||(ca=e.createElement("path",{fill:"#000001",d:"M263.53 108.19c-4.32-4.33-6.85-6.24-12.26-8.21-2.77-1-6.18.18-8.65 1.67a3.65 3.65 0 0 0-1.24 1.23h-.12a3.73 3.73 0 0 1 1-1.52 12.53 12.53 0 0 1 11.93-3c4.73 1 9.43 4.63 9.42 9.82z"})),da||(da=e.createElement("circle",{cx:254.13,cy:104.05,r:4.19,fill:"#000001"})),ua||(ua=e.createElement("path",{fill:"#fff",d:"M225.26 99.22c-.29 1-6.6 3.45-10.92 1.48-1.15-3.24-5-6.43-5.25-6.71-.5-2.86 5.55-8 10.06-6.3a10.21 10.21 0 0 1 6.11 11.53z"})),pa||(pa=e.createElement("path",{fill:"#000001",d:"M209.29 94.21c-.19-2.34 1.84-4.1 3.65-5.2 7-3.87 13.18 3 12.43 10h-.12c-.14-4-2.38-8.44-6.47-9.11a3.19 3.19 0 0 0-2.42.31c-1.37.85-2.38 2-3.89 2.56-1 .45-1.92.42-3 1.4h-.22z"})),ma||(ma=e.createElement("circle",{cx:219.55,cy:95.28,r:4,fill:"#000001"})),ha||(ha=e.createElement("path",{fill:"#efb17c",d:"M218.66 120.27a27.32 27.32 0 0 0 4.54 3.45c-2.29-.72-4.28-.69-6.32-2.27-2.53-2-3.39-5.16-.73-7.72 10.24-9.82 12.56-13.82 14.77-24.42-1 12.37-6 17.77-10.63 23.18-2.53 2.97-4.68 5.06-1.63 7.78z"})),ga||(ga=e.createElement("path",{fill:"#a57c52",d:"M231.22 69.91c-.67-3.41-8.78-2.83-11.06-1.93-3.48 1.39-6.08 5.22-7.13 8.53 2.9-4.3 6.74-8.12 12.46-6 1.16.42 3.18 2.35 4.48 1.85s1.03-2.2 1.25-2.45zm32.16 8.56c-2.75-1.66-12.24-5.08-12.18.82 2.56.24 5-.19 7.64.95 11.22 4.76 12.77 17.61 12.85 17.86.2-.53.1 1.26.23.7-.02.2.95-12.12-8.54-20.33z"})),ya||(ya=e.createElement("path",{fill:"#fbd2a6",d:"M53.43 250.73c6.29 0-.6-.17 7.34 0 1.89.05-2.38-.7 0-.69 4.54-4.2 12.48-.74 20.6-2.45 4.55.35 3.93 1.35 5.59 4.19 4.89 8.38 4.78 14.21 14 19.56 16.42 8.38 66 12.92 88.49 18.86 5.52.83 42.64-20.15 61-23.75 6.51 10.74 11.46 28.68 8.39 34.93-6.54 13.3-57.07 25.4-75.91 25.15C156.47 326.18 94 294 92.2 293c-.94-.57.7-.7-7.68 0s-10.15.72-17.47-1.4c-3-.87-4.61-1.33-6.33-3.54-2 .22-3.39.2-4.78-1-3.15-2.74-4.84-6.61-2.73-10.06h-.12c-3.35-2.48-6.54-7.69-3.08-11.72 1-1.18 6.06-1.94 7.77-2.28-1.58-.29-6.37.19-7.49-.72-3.06-2.5-4.96-11.55 3.14-11.55z"})),fa||(fa=e.createElement("path",{fill:"#a4286a",d:"M303.22 237.52c-9.87-11.88-41.59 8.19-47.8 12.34s-14.89 17.95-14.89 17.95c6 9.43 8.36 31 5.65 46.34l30.51-3s18-15.62 22.59-28.7 6.3-42.54 6.3-42.54"})),ba||(ba=e.createElement("path",{fill:"#cb9833",d:"M278.63 31.67c-6.08 0-22.91 4.07-22.93 12.91 0 11 47.9 38.38 16.14 85.85 10.21-.79 10.79-8.12 14.92-14.93-3.66 77-49.38 93.58-40.51 142.25 7.68-25.81 20.3-11.62 38.13-33.84 3.45 4.88 9 18.28-9.46 33.78 50-31.26 57.31-56.6 51.92-95C319.93 113.53 348.7 42 278.63 31.67z"})),wa||(wa=e.createElement("path",{fill:"#fbd2a6",d:"M283.64 126.83c-2.42 9.67-8 15.76-1.48 16.46A21.26 21.26 0 0 0 302 132.6c5.17-8.52 3.93-16.44-2.46-18s-13.48 2.56-15.9 12.23z"})),Ea||(Ea=e.createElement("path",{fill:"#efb17c",d:"M38 73.45c1.92 2 4.25 9.21 6.32 10.91 2.25 1.85 5.71 2.12 8.1 4.45 3.66-2 6-8.72 10-9.31-2.59 1.31-4.42 3.5-6.93 4.88-1.42.8-3 1.31-4.38 2.25-2.16-1.46-4.27-1.77-6.26-3.38-2.52-2.02-5.31-8-6.85-9.8z"})),va||(va=e.createElement("path",{fill:"#efb17c",d:"M39 74.4c4.83 1.1 12.52 6.44 15.89 10-3.22-1.34-14.73-6.15-15.89-10zm.62-1.5c6.71-.79 18 1.54 23.29 5.9-3.85-.2-5.42-1.48-9-2.94-4.08-1.69-8.83-2.03-14.29-2.96zm46.43 14.58c-3.72-1.32-10.52-1.13-13.22 3.52 2-1.16 1.84-2.11 4.18-1.72-3.81-4.15 8.16-.74 11.6-.24m-2.78 13.15c.56-3.29-8-7.81-10.58-9.17-6.25-3.29-12.16 1.36-19.33-4.53 5.94 6.1 14.23 2.5 19.55 5.76 3.06 1.88 8.65 6.09 9.35 9.38-.23-.4 1.29-1.44 1.01-1.44z"})),ka||(ka=e.createElement("circle",{cx:38.13,cy:30.03,r:3.14,fill:"#b89ac8"})),_a||(_a=e.createElement("circle",{cx:60.26,cy:39.96,r:3.14,fill:"#e31e0c"})),xa||(xa=e.createElement("circle",{cx:50.29,cy:25.63,r:3.14,fill:"#3baa45"})),Ta||(Ta=e.createElement("circle",{cx:22.19,cy:19.21,r:3.14,fill:"#2ca9e1"})),Sa||(Sa=e.createElement("circle",{cx:22.19,cy:30.03,r:3.14,fill:"#e31e0c"})),Ra||(Ra=e.createElement("circle",{cx:26.86,cy:8.28,r:3.14,fill:"#3baa45"})),Ia||(Ia=e.createElement("circle",{cx:49.32,cy:39.99,r:3.14,fill:"#e31e0c"})),Ca||(Ca=e.createElement("circle",{cx:63.86,cy:59.52,r:3.14,fill:"#f8ad39"})),La||(La=e.createElement("circle",{cx:50.88,cy:50.72,r:3.14,fill:"#3baa45"})),Pa||(Pa=e.createElement("circle",{cx:63.47,cy:76.17,r:3.14,fill:"#e31e0c"})),Aa||(Aa=e.createElement("circle",{cx:38.34,cy:14.83,r:3.14,fill:"#2ca9e1"})),Fa||(Fa=e.createElement("circle",{cx:44.44,cy:5.92,r:3.14,fill:"#f8ad39"})),qa||(qa=e.createElement("circle",{cx:57.42,cy:10.24,r:3.14,fill:"#e31e0c"})),Ma||(Ma=e.createElement("circle",{cx:66.81,cy:12.4,r:3.14,fill:"#2ca9e1"})),Da||(Da=e.createElement("circle",{cx:77.95,cy:5.14,r:3.14,fill:"#b89ac8"})),Oa||(Oa=e.createElement("circle",{cx:77.95,cy:30.34,r:3.14,fill:"#e31e0c"})),Na||(Na=e.createElement("circle",{cx:80.97,cy:16.55,r:3.14,fill:"#f8ad39"})),Ba||(Ba=e.createElement("circle",{cx:62.96,cy:27.27,r:3.14,fill:"#3baa45"})),$a||($a=e.createElement("circle",{cx:75.36,cy:48.67,r:3.14,fill:"#2ca9e1"})),Wa||(Wa=e.createElement("circle",{cx:76.11,cy:65.31,r:3.14,fill:"#3baa45"})),Ua||(Ua=e.createElement("path",{fill:"#71b026",d:"M78.58 178.43C54.36 167.26 32 198.93 5 198.93c19.56 20.49 63.53 1.52 69 15.5 1.48-14.01 4.11-30.9 4.58-36z"})),Ka||(Ka=e.createElement("path",{fill:"#074a67",d:"M67.75 251.08c0-4.65 10.13-72.65 10.13-72.65h2.8l-9.09 72.3z"})),Ha||(Ha=e.createElement("ellipse",{cx:255.38,cy:103.18,fill:"#fff",rx:1.84,ry:1.77})),Ya||(Ya=e.createElement("ellipse",{cx:221.24,cy:94.75,fill:"#fff",rx:1.84,ry:1.77}))),Va=(0,I.compose)([(0,h.withSelect)(((e,t)=>{const{isAlertDismissed:s}=e(t.store||"yoast-seo/editor");return{isAlertDismissed:s(t.alertKey)}})),(0,h.withDispatch)(((e,t)=>{const{dismissAlert:s}=e(t.store||"yoast-seo/editor");return{onDismissed:()=>s(t.alertKey)}}))]),Ga=({children:t,id:s,hasIcon:n=!0,title:r,image:a=null,isAlertDismissed:o,onDismissed:i})=>o?null:(0,e.createElement)("div",{id:s,className:"notice-yoast yoast is-dismissible yoast-webinar-dashboard yoast-general-page-notices"},(0,e.createElement)("div",{className:"notice-yoast__container"},(0,e.createElement)("div",null,(0,e.createElement)("div",{className:"notice-yoast__header"},n&&(0,e.createElement)("span",{className:"yoast-icon"}),(0,e.createElement)("h2",{className:"notice-yoast__header-heading yoast-notice-migrated-header"},r)),(0,e.createElement)("div",{className:"notice-yoast-content"},(0,e.createElement)("p",null,t))),a&&(0,e.createElement)(a,{height:"60"})),(0,e.createElement)("button",{type:"button",className:"notice-dismiss",onClick:i},(0,e.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,k.__)("Dismiss this notice.","wordpress-seo"))));Ga.propTypes={children:o().node.isRequired,id:o().string.isRequired,hasIcon:o().bool,title:o().any.isRequired,image:o().elementType,isAlertDismissed:o().bool.isRequired,onDismissed:o().func.isRequired};const Za=Va(Ga),Xa=({store:t="yoast-seo/editor",image:s=null,title:n,promoId:r,alertKey:a,children:o,...i})=>(0,h.select)(t).isPromotionActive(r)&&(0,e.createElement)(Za,{alertKey:a,store:t,id:a,title:n,image:s,...i},o);Xa.propTypes={store:o().string,image:o().elementType,title:o().any.isRequired,promoId:o().string.isRequired,alertKey:o().string.isRequired,children:o().node};const Qa=({store:t="yoast-seo/editor",location:s="sidebar",...r})=>{const a=(0,h.useSelect)((e=>e(t).getIsPremium()),[t]),o=(0,h.useSelect)((e=>e(t).selectLinkParams()),[t]),i="sidebar"===s?(0,k.sprintf)(/* translators: %1$s expands to Yoast SEO Premium */ (0,k.__)("Now with 30%% OFF: %1$s","wordpress-seo"),"Yoast SEO Premium"):(0,n.createInterpolateElement)((0,k.sprintf)(/* translators: %1$s expands to Yoast SEO Premium, %2$s expands to a link on yoast.com, %3$s expands to the anchor end tag. */ (0,k.__)("Now with 30%% OFF: %1$s %2$sBuy now!%3$s","wordpress-seo"),"Yoast SEO Premium","",""),{a:(0,e.createElement)("a",{href:(0,Es.addQueryArgs)("https://yoa.st/black-friday-sale",o),target:"_blank",rel:"noreferrer"})});return a?null:(0,e.createElement)(Xa,{id:`black-friday-2024-promotion-${s}`,promoId:"black-friday-2024-promotion",alertKey:"black-friday-2024-promotion",store:t,title:i,...r},(0,e.createElement)("span",{className:"yoast-bf-sale-badge"},(0,k.__)("BLACK FRIDAY SALE","wordpress-seo")," "),"sidebar"===s&&(0,e.createElement)("a",{className:"yst-block yst--mb-[1em]",href:(0,Es.addQueryArgs)("https://yoa.st/black-friday-sale",o),target:"_blank",rel:"noreferrer"},(0,k.__)("Buy now!","wordpress-seo")))};Qa.propTypes={store:o().string,location:o().oneOf(["sidebar","metabox"])};const Ja=t=>s=>!(()=>{var e,t;const s=(0,h.select)("yoast-seo/editor").getIsPremium(),n=(0,h.select)("yoast-seo/editor").getWarningMessage();return(s&&null!==(e=null===(t=(0,h.select)("yoast-seo-premium/editor"))||void 0===t?void 0:t.getMetaboxWarning())&&void 0!==e?e:[]).length>0||n.length>0})()&&(0,e.createElement)(t,{...s}),eo=Ja((()=>{const t=(0,h.useSelect)((e=>e("yoast-seo/editor").selectLinkParams()),[]),s=(0,k.sprintf)(/* translators: %1$s expands to 'WooCommerce'. */ (0,k.__)("Is your %1$s store ready for Black Friday?","wordpress-seo"),"WooCommerce");return(0,e.createElement)(Xa,{id:"black-friday-2023-product-editor-checklist",alertKey:"black-friday-2023-product-editor-checklist",promoId:"black-friday-2023-checklist",store:"yoast-seo/editor",title:s,image:ja},(0,n.createInterpolateElement)((0,k.sprintf)(/* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ (0,k.__)("The Yoast %1$sultimate Black Friday checklist%2$s helps you prepare in time, so you can boost your results during this sale.","wordpress-seo"),"",""),{strong:(0,e.createElement)("strong",null)})," ",(0,e.createElement)("a",{href:(0,Es.addQueryArgs)("https://yoa.st/black-friday-checklist",t),target:"_blank",rel:"noreferrer"},(0,k.__)("Get the checklist and start optimizing now!","wordpress-seo")))})),to=Ja(Qa);function so({settings:t}){const s=(0,h.useSelect)((e=>e("yoast-seo/editor").getIsTerm()),[]),a=(0,h.useSelect)((e=>e("yoast-seo/editor").getIsProduct()),[]),o=(0,h.useSelect)((e=>e("yoast-seo/editor").getIsWooCommerceActive()),[]),i=a&&o;return(0,e.createElement)(n.Fragment,null,(0,e.createElement)(r.Fill,{name:"YoastMetabox"},(0,e.createElement)(Vs,{key:"warning",renderPriority:1},(0,e.createElement)(es,null)),(0,e.createElement)(Vs,{key:"time-constrained-notification",renderPriority:2},i&&(0,e.createElement)(eo,null),(0,e.createElement)(to,{image:null,hasIcon:!1,location:"metabox"})),t.isKeywordAnalysisActive&&(0,e.createElement)(Vs,{key:"keyword-input",renderPriority:8},(0,e.createElement)(qt.KeywordInput,{isSEMrushIntegrationActive:t.isSEMrushIntegrationActive}),!window.wpseoScriptData.metabox.isPremium&&(0,e.createElement)(r.Fill,{name:"YoastRelatedKeyphrases"},(0,e.createElement)(Hr,null))),(0,e.createElement)(Vs,{key:"search-appearance",renderPriority:9},(0,e.createElement)(ns,{id:"yoast-snippet-editor-metabox",title:(0,k.__)("Search appearance","wordpress-seo"),initialIsOpen:!0},(0,e.createElement)(Jt,{hasPaperStyle:!1}))),t.isContentAnalysisActive&&(0,e.createElement)(Vs,{key:"readability-analysis",renderPriority:10},(0,e.createElement)(qt.ReadabilityAnalysis,{shouldUpsell:t.shouldUpsell})),t.isKeywordAnalysisActive&&(0,e.createElement)(Vs,{key:"seo-analysis",renderPriority:20},(0,e.createElement)(n.Fragment,null,(0,e.createElement)(qt.SeoAnalysis,{shouldUpsell:t.shouldUpsell,shouldUpsellWordFormRecognition:t.isWordFormRecognitionActive}),t.shouldUpsell&&(0,e.createElement)(Gr,{location:"metabox"}))),t.isInclusiveLanguageAnalysisActive&&(0,e.createElement)(Vs,{key:"inclusive-language-analysis",renderPriority:21},(0,e.createElement)(qt.InclusiveLanguageAnalysis,null)),t.isKeywordAnalysisActive&&(0,e.createElement)(Vs,{key:"additional-keywords-upsell",renderPriority:22},t.shouldUpsell&&(0,e.createElement)(Qr,null)),t.isKeywordAnalysisActive&&t.isWincherIntegrationActive&&(0,e.createElement)(Vs,{key:"wincher-seo-performance",renderPriority:23},(0,e.createElement)(Ft,{location:"metabox"})),t.shouldUpsell&&!s&&(0,e.createElement)(Vs,{key:"internal-linking-suggestions-upsell",renderPriority:25},(0,e.createElement)(zs,null)),t.isCornerstoneActive&&(0,e.createElement)(Vs,{key:"cornerstone",renderPriority:30},(0,e.createElement)(Dt,null)),t.displayAdvancedTab&&(0,e.createElement)(Vs,{key:"advanced",renderPriority:40},(0,e.createElement)(ns,{id:"collapsible-advanced-settings",title:(0,k.__)("Advanced","wordpress-seo")},(0,e.createElement)(sn,null))),t.displaySchemaSettings&&(0,e.createElement)(Vs,{key:"schema",renderPriority:50},(0,e.createElement)(Lr,null)),(0,e.createElement)(Vs,{key:"social",renderPriority:-1},(0,e.createElement)(fr,{target:"wpseo-section-social"})),t.isInsightsEnabled&&(0,e.createElement)(Vs,{key:"insights",renderPriority:52},(0,e.createElement)(As,{location:"metabox"}))))}so.propTypes={settings:o().object.isRequired};const no=(0,I.compose)([(0,h.withSelect)(((e,t)=>{const{getPreferences:s}=e("yoast-seo/editor");return{settings:s(),store:t.store}}))])(so);function ro({target:t,store:s,theme:n}){return(0,e.createElement)(w,{target:t},(0,e.createElement)(R,{store:s,theme:n}),(0,e.createElement)(no,{store:s,theme:n}))}ro.propTypes={target:o().string.isRequired,store:o().object,theme:o().object};const ao=[];let oo=null;class io extends n.Component{constructor(e){super(e),this.state={registeredComponents:[]}}registerComponent(e,t){this.setState({registeredComponents:[...this.state.registeredComponents,{key:e,Component:t}]})}render(){return this.state.registeredComponents.map((({Component:t,key:s})=>(0,e.createElement)(t,{key:s})))}}function lo(e,t){null===oo||null===oo.current?ao.push({key:e,Component:t}):oo.current.registerComponent(e,t)}const co=window.yoast.externals.redux,uo=window.jQuery;var po=s.n(uo);function mo(e){let t="";var s;return t=!1===function(e){if("undefined"==typeof tinyMCE||void 0===tinyMCE.editors||0===tinyMCE.editors.length)return!1;const t=tinyMCE.get(e);return null!==t&&!t.isHidden()}(e)||0==(s=e,null!==document.getElementById(s+"_ifr"))?function(e){return document.getElementById(e)&&document.getElementById(e).value||""}(e):tinyMCE.get(e).getContent(),t}i.noop,i.noop,i.noop;const{removeMarks:ho}=f.markers,{updateReplacementVariable:go,updateData:yo,hideReplacementVariables:fo,setContentImage:bo,setEditorDataContent:wo,setEditorDataTitle:Eo,setEditorDataExcerpt:vo,setEditorDataImageUrl:ko,setEditorDataSlug:_o}=co.actions;window.yoast=window.yoast||{},window.yoast.initEditorIntegration=function(t){window.YoastSEO=window.YoastSEO||{},window.YoastSEO._registerReactComponent=lo,function(t){const s=Is();oo=(0,n.createRef)();const a={isRtl:s.isRtl};(0,n.render)((0,e.createElement)(r.SlotFillProvider,null,(0,e.createElement)(d.Root,{context:{locationContext:"classic-metabox"}},(0,e.createElement)(ro,{target:"wpseo-metabox-root",store:t,theme:a})),(0,e.createElement)(io,{ref:oo})),document.getElementById("wpseo-metabox-root")),ao.forEach((e=>{oo.current.registerComponent(e.key,e.Component)}))}(t)},window.yoast.EditorData=class{constructor(e,t,s="content"){this._refresh=e,this._store=t,this._tinyMceId=s,this._previousData={},this._previousEditorData={},this.updateReplacementData=this.updateReplacementData.bind(this),this.refreshYoastSEO=this.refreshYoastSEO.bind(this)}initialize(e,t=[]){const s=this.getInitialData(e);var n,r;n=s,r=this._store,(0,i.forEach)(n,((e,t)=>{zt.includes(t)||r.dispatch(Kt(t,e))})),this._store.dispatch(fo(t)),this._previousEditorData.content=s.content,this._store.dispatch(wo(s.content)),this._previousEditorData.contentImage=s.contentImage,this._store.dispatch(bo(s.contentImage)),this.setImageInSnippetPreview(s.snippetPreviewImageURL||s.contentImage),this._previousEditorData.slug=s.slug,this._store.dispatch(_o(s.slug)),this.updateReplacementData({target:{value:s.title}},"title"),this.updateReplacementData({target:{value:s.excerpt}},"excerpt"),this.updateReplacementData({target:{value:s.excerpt_only}},"excerpt_only"),this.subscribeToElements(),this.subscribeToStore(),this.subscribeToSnippetPreviewImage(),this.subscribeToTinyMceEditor(),this.subscribeToSlug()}subscribeToTinyMceEditor(){const e=e=>{if((0,i.isString)(e)||(e=this.getContent()),this._previousEditorData.content===e)return;if(this._previousEditorData.content=e,this._store.dispatch(wo(e)),this.featuredImageIsSet)return;const t=this.getContentImage(e);this._previousEditorData.contentImage!==t&&(this._previousEditorData.contentImage=t,this._store.dispatch(bo(t)),this.setImageInSnippetPreview(t))};po()(document).on("tinymce-editor-init",((t,s)=>{s.id===this._tinyMceId&&(e(this.getContent()),["input","change","cut","paste"].forEach((t=>s.on(t,(0,i.debounce)(e,1e3)))))}));const t=document.getElementById("attachment_content");t&&(e(t.value),t.addEventListener("input",(t=>e(t.target.value))))}subscribeToSlug(){const e=e=>{this._previousEditorData.slug!==e&&(this._previousEditorData.slug=e,this._store.dispatch(_o(e)),this._store.dispatch(yo({slug:e})))},t=document.getElementById("slug");t&&t.addEventListener("input",(t=>e(t.target.value)));const s=document.getElementById("post_name");s&&s.addEventListener("input",(t=>e(t.target.value)));const n=document.getElementById("edit-slug-buttons");n&&new MutationObserver(((t,s)=>t.forEach((t=>{t.addedNodes.forEach((t=>{var n,r;if(null==t||null===(n=t.classList)||void 0===n||!n.contains("edit-slug"))return;const a=null===(r=document.getElementById("editable-post-name-full"))||void 0===r?void 0:r.innerText;a&&(e(a),s.disconnect(),this.subscribeToSlug())}))})))).observe(n,{childList:!0})}subscribeToSnippetPreviewImage(){if((0,i.isUndefined)(wp.media)||(0,i.isUndefined)(wp.media.featuredImage))return;po()("#postimagediv").on("click","#remove-post-thumbnail",(()=>{this.featuredImageIsSet=!1,this.setImageInSnippetPreview(this.getContentImage(this.getContent()))}));const e=wp.media.featuredImage.frame();var t,s,n;e.on("select",(()=>{const t=e.state().get("selection").first().attributes.url;t&&(this.featuredImageIsSet=!0,this.setImageInSnippetPreview(t))})),t=this._tinyMceId,s=["init"],n=()=>{const e=this.getContentImage(this.getContent()),t=this.getFeaturedImage()||e||"";this._store.dispatch(bo(e)),this.setImageInSnippetPreview(t)},"undefined"!=typeof tinyMCE&&"function"==typeof tinyMCE.on&&tinyMCE.on("addEditor",(function(e){const r=e.editor;r.id===t&&(0,i.forEach)(s,(function(e){r.on(e,n)}))}))}getFeaturedImage(){const e=po()("#set-post-thumbnail img").attr("src");return e?(this.featuredImageIsSet=!0,e):(this.featuredImageIsSet=!1,null)}setImageInSnippetPreview(e){this._store.dispatch(ko(e)),this._store.dispatch(yo({snippetPreviewImageURL:e}))}getContentImage(e){if(this.featuredImageIsSet)return"";const t=f.languageProcessing.imageInText(e);if(0===t.length)return"";const s=po().parseHTML(t.join(""));for(const e of s)if(e.src)return e.src;return""}getTitle(){const e=document.getElementById("title")||document.getElementById("name");return e&&e.value||""}getExcerpt(e=!0){const t=document.getElementById("excerpt"),s=t&&t.value||"",n="ja"===function(){const e=Is();return(0,i.get)(e,"contentLocale","en_US")}()?80:156;return""!==s||!1===e?s:function(e,t=156){return(e=(e=(0,Wt.stripTags)(e)).trim()).length<=t||(e=e.substring(0,t),/\s/.test(e)&&(e=e.substring(0,e.lastIndexOf(" ")))),e}(this.getContent(),n)}getSlug(){let e="";const t=document.getElementById("new-post-slug")||document.getElementById("slug");return t?e=t.value:null!==document.getElementById("editable-post-name-full")&&(e=document.getElementById("editable-post-name-full").textContent),e}getContent(){return ho(mo(this._tinyMceId))}subscribeToElements(){this.subscribeToInputElement("title","title"),this.subscribeToInputElement("excerpt","excerpt"),this.subscribeToInputElement("excerpt","excerpt_only")}subscribeToInputElement(e,t){const s=document.getElementById(e);s&&s.addEventListener("input",(e=>{this.updateReplacementData(e,t)}))}updateReplacementData(e,t){let s=e.target.value;if("excerpt"===t&&""===s&&(s=this.getExcerpt()),this._previousEditorData[t]!==s){switch(this._previousEditorData[t]=s,t){case"title":this._store.dispatch(Eo(s));break;case"excerpt":this._store.dispatch(vo(s))}this._store.dispatch(go(t,s))}}isShallowEqual(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(e.hasOwnProperty(s)&&(!(s in t)||e[s]!==t[s]))return!1;return!0}refreshYoastSEO(){const e=this.getData();!this.isShallowEqual(this._previousData,e)&&(this.handleEditorChange(e),this._previousData=e,window.YoastSEO&&window.YoastSEO.app&&window.YoastSEO.app.refresh())}handleEditorChange(e){this._previousData.excerpt!==e.excerpt&&(this._store.dispatch(go("excerpt",e.excerpt)),this._store.dispatch(go("excerpt_only",e.excerpt_only))),this._previousData.snippetPreviewImageURL!==e.snippetPreviewImageURL&&this.setImageInSnippetPreview(e.snippetPreviewImageURL),this._previousData.slug!==e.slug&&this._store.dispatch(_o(e.slug)),this._previousData.title!==e.title&&this._store.dispatch(Eo(e.title))}subscribeToStore(){this.subscriber=(0,i.debounce)(this.refreshYoastSEO,500),this._store.subscribe(this.subscriber)}getInitialData(e){e=function(e,t){if(!e.custom_taxonomies)return e;const s={};return(0,i.forEach)(e.custom_taxonomies,((e,t)=>{const{name:n,label:r,descriptionName:a,descriptionLabel:o}=function(e){const t=jt(e);return{name:"ct_"+t,label:Ht(e+" (custom taxonomy)"),descriptionName:"ct_desc_"+t,descriptionLabel:Ht(e+" description (custom taxonomy)")}}(t),i="string"==typeof e.name?(0,q.decodeHTML)(e.name):e.name,l="string"==typeof e.description?(0,q.decodeHTML)(e.description):e.description;s[n]={value:i,label:r},s[a]={value:l,label:o}})),t.dispatch(function(e){return{type:"SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLES_BATCH",updatedVariables:e}}(s)),(0,i.omit)({...e},"custom_taxonomies")}(e=function(e,t){return e.custom_fields?((0,i.forEach)(e.custom_fields,((e,s)=>{const{name:n,label:r}=function(e){return{name:"cf_"+jt(e),label:Ht(e+" (custom field)")}}(s);t.dispatch(Kt(n,e,r))})),(0,i.omit)({...e},"custom_fields")):e}(e,this._store),this._store);const t=this.getContent(),s=this.getFeaturedImage();return{...e,title:this.getTitle(),excerpt:this.getExcerpt(),excerpt_only:this.getExcerpt(!1),slug:this.getSlug(),content:t,snippetPreviewImageURL:s,contentImage:this.getContentImage(t)}}getData(){return{...this._store.getState().snippetEditor.data,title:this.getTitle(),content:this.getContent(),excerpt:this.getExcerpt(),excerpt_only:this.getExcerpt(!1)}}}})()})();js/dist/post-edit.js000064400000367614147206602470010422 0ustar00(()=>{var e={2322:e=>{var t,s,n="",i=function(e){e=e||"polite";var t=document.createElement("div");return t.id="a11y-speak-"+e,t.className="a11y-speak-region",t.setAttribute("style","clip: rect(1px, 1px, 1px, 1px); position: absolute; height: 1px; width: 1px; overflow: hidden; word-wrap: normal;"),t.setAttribute("aria-live",e),t.setAttribute("aria-relevant","additions text"),t.setAttribute("aria-atomic","true"),document.querySelector("body").appendChild(t),t};!function(e){if("complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll)return e();document.addEventListener("DOMContentLoaded",e)}((function(){t=document.getElementById("a11y-speak-polite"),s=document.getElementById("a11y-speak-assertive"),null===t&&(t=i("polite")),null===s&&(s=i("assertive"))})),e.exports=function(e,i){!function(){for(var e=document.querySelectorAll(".a11y-speak-region"),t=0;t]+>/g," "),n===e&&(e+=" "),n=e,s&&"assertive"===i?s.textContent=e:t&&(t.textContent=e)}},7084:function(e,t,s){!function(t){"use strict";var s={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}|~{3,})([^`~\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|\\n*|\\n*|)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:y,table:y,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function n(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||v.defaults,this.rules=s.normal,this.options.pedantic?this.rules=s.pedantic:this.options.gfm&&(this.rules=s.gfm)}s._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,s._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,s.def=u(s.def).replace("label",s._label).replace("title",s._title).getRegex(),s.bullet=/(?:[*+-]|\d{1,9}\.)/,s.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,s.item=u(s.item,"gm").replace(/bull/g,s.bullet).getRegex(),s.list=u(s.list).replace(/bull/g,s.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+s.def.source+")").getRegex(),s._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",s._comment=//,s.html=u(s.html,"i").replace("comment",s._comment).replace("tag",s._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),s.paragraph=u(s._paragraph).replace("hr",s.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",s._tag).getRegex(),s.blockquote=u(s.blockquote).replace("paragraph",s.paragraph).getRegex(),s.normal=f({},s),s.gfm=f({},s.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),s.pedantic=f({},s.normal,{html:u("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",s._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:y,paragraph:u(s.normal._paragraph).replace("hr",s.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",s.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),n.rules=s,n.lex=function(e,t){return new n(t).lex(e)},n.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},n.prototype.token=function(e,t){var n,i,r,o,a,l,c,p,u,h,g,m,y,f,_,k;for(e=e.replace(/^ +$/gm,"");e;)if((r=this.rules.newline.exec(e))&&(e=e.substring(r[0].length),r[0].length>1&&this.tokens.push({type:"space"})),r=this.rules.code.exec(e)){var v=this.tokens[this.tokens.length-1];e=e.substring(r[0].length),v&&"paragraph"===v.type?v.text+="\n"+r[0].trimRight():(r=r[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?r:b(r,"\n")}))}else if(r=this.rules.fences.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"code",lang:r[2]?r[2].trim():r[2],text:r[3]||""});else if(r=this.rules.heading.exec(e))e=e.substring(r[0].length),this.tokens.push({type:"heading",depth:r[1].length,text:r[2]});else if((r=this.rules.nptable.exec(e))&&(l={type:"table",header:w(r[1].replace(/^ *| *\| *$/g,"")),align:r[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:r[3]?r[3].replace(/\n$/,"").split("\n"):[]}).header.length===l.align.length){for(e=e.substring(r[0].length),g=0;g ?/gm,""),this.token(r,t),this.tokens.push({type:"blockquote_end"});else if(r=this.rules.list.exec(e)){for(e=e.substring(r[0].length),c={type:"list_start",ordered:f=(o=r[2]).length>1,start:f?+o:"",loose:!1},this.tokens.push(c),p=[],n=!1,y=(r=r[0].match(this.rules.item)).length,g=0;g1?1===a.length:a.length>1||this.options.smartLists&&a!==o)&&(e=r.slice(g+1).join("\n")+e,g=y-1)),i=n||/\n\n(?!\s*$)/.test(l),g!==y-1&&(n="\n"===l.charAt(l.length-1),i||(i=n)),i&&(c.loose=!0),k=void 0,(_=/^\[[ xX]\] /.test(l))&&(k=" "!==l[1],l=l.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:_,checked:k,loose:i},p.push(u),this.tokens.push(u),this.token(l,!1),this.tokens.push({type:"list_item_end"});if(c.loose)for(y=p.length,g=0;g?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:y,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:y,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\?@\\[^_{|}~",i.em=u(i.em).replace(/punctuation/g,i._punctuation).getRegex(),i._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,i._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,i._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,i.autolink=u(i.autolink).replace("scheme",i._scheme).replace("email",i._email).getRegex(),i._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,i.tag=u(i.tag).replace("comment",s._comment).replace("attribute",i._attribute).getRegex(),i._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,i._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,i._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,i.link=u(i.link).replace("label",i._label).replace("href",i._href).replace("title",i._title).getRegex(),i.reflink=u(i.reflink).replace("label",i._label).getRegex(),i.normal=f({},i),i.pedantic=f({},i.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:u(/^!?\[(label)\]\((.*?)\)/).replace("label",i._label).getRegex(),reflink:u(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",i._label).getRegex()}),i.gfm=f({},i.normal,{escape:u(i.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\/i.test(o[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(o[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(o[0])&&(this.inRawBlock=!1),e=e.substring(o[0].length),l+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):d(o[0]):o[0];else if(o=this.rules.link.exec(e)){var c=_(o[2],"()");if(c>-1){var p=4+o[1].length+c;o[2]=o[2].substring(0,c),o[0]=o[0].substring(0,p).trim(),o[3]=""}e=e.substring(o[0].length),this.inLink=!0,n=o[2],this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n))?(n=t[1],i=t[3]):i="":i=o[3]?o[3].slice(1,-1):"",n=n.trim().replace(/^<([\s\S]*)>$/,"$1"),l+=this.outputLink(o,{href:r.escapes(n),title:r.escapes(i)}),this.inLink=!1}else if((o=this.rules.reflink.exec(e))||(o=this.rules.nolink.exec(e))){if(e=e.substring(o[0].length),t=(o[2]||o[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){l+=o[0].charAt(0),e=o[0].substring(1)+e;continue}this.inLink=!0,l+=this.outputLink(o,t),this.inLink=!1}else if(o=this.rules.strong.exec(e))e=e.substring(o[0].length),l+=this.renderer.strong(this.output(o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.em.exec(e))e=e.substring(o[0].length),l+=this.renderer.em(this.output(o[6]||o[5]||o[4]||o[3]||o[2]||o[1]));else if(o=this.rules.code.exec(e))e=e.substring(o[0].length),l+=this.renderer.codespan(d(o[2].trim(),!0));else if(o=this.rules.br.exec(e))e=e.substring(o[0].length),l+=this.renderer.br();else if(o=this.rules.del.exec(e))e=e.substring(o[0].length),l+=this.renderer.del(this.output(o[1]));else if(o=this.rules.autolink.exec(e))e=e.substring(o[0].length),n="@"===o[2]?"mailto:"+(s=d(this.mangle(o[1]))):s=d(o[1]),l+=this.renderer.link(n,null,s);else if(this.inLink||!(o=this.rules.url.exec(e))){if(o=this.rules.text.exec(e))e=e.substring(o[0].length),this.inRawBlock?l+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(o[0]):d(o[0]):o[0]):l+=this.renderer.text(d(this.smartypants(o[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===o[2])n="mailto:"+(s=d(o[0]));else{do{a=o[0],o[0]=this.rules._backpedal.exec(o[0])[0]}while(a!==o[0]);s=d(o[0]),n="www."===o[1]?"http://"+s:s}e=e.substring(o[0].length),l+=this.renderer.link(n,null,s)}return l},r.escapes=function(e){return e?e.replace(r.rules._escapes,"$1"):e},r.prototype.outputLink=function(e,t){var s=t.href,n=t.title?d(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(s,n,this.output(e[1])):this.renderer.image(s,n,d(e[1]))},r.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},r.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,s="",n=e.length,i=0;i.5&&(t="x"+t.toString(16)),s+="&#"+t+";";return s},o.prototype.code=function(e,t,s){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,n);null!=i&&i!==e&&(s=!0,e=i)}return n?'
    '+(s?e:d(e,!0))+"
    \n":"
    "+(s?e:d(e,!0))+"
    "},o.prototype.blockquote=function(e){return"
    \n"+e+"
    \n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,s,n){return this.options.headerIds?"'+e+"\n":""+e+"\n"},o.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},o.prototype.list=function(e,t,s){var n=t?"ol":"ul";return"<"+n+(t&&1!==s?' start="'+s+'"':"")+">\n"+e+"\n"},o.prototype.listitem=function(e){return"
  • "+e+"
  • \n"},o.prototype.checkbox=function(e){return" "},o.prototype.paragraph=function(e){return"

    "+e+"

    \n"},o.prototype.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},o.prototype.tablerow=function(e){return"\n"+e+"\n"},o.prototype.tablecell=function(e,t){var s=t.header?"th":"td";return(t.align?"<"+s+' align="'+t.align+'">':"<"+s+">")+e+"\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+""},o.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,t,s){if(null===(e=h(this.options.sanitize,this.options.baseUrl,e)))return s;var n='"+s+""},o.prototype.image=function(e,t,s){if(null===(e=h(this.options.sanitize,this.options.baseUrl,e)))return s;var n=''+s+'":">")},o.prototype.text=function(e){return e},a.prototype.strong=a.prototype.em=a.prototype.codespan=a.prototype.del=a.prototype.text=function(e){return e},a.prototype.link=a.prototype.image=function(e,t,s){return""+s},a.prototype.br=function(){return""},l.parse=function(e,t){return new l(t).parse(e)},l.prototype.parse=function(e){this.inline=new r(e.links,this.options),this.inlineText=new r(e.links,f({},this.options,{renderer:new a})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},l.prototype.next=function(){return this.token=this.tokens.pop(),this.token},l.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},l.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},l.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,p(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,s,n,i="",r="";for(s="",e=0;e?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t)){var s=t;do{this.seen[s]++,t=s+"-"+this.seen[s]}while(this.seen.hasOwnProperty(t))}return this.seen[t]=0,t},d.escapeTest=/[&<>"']/,d.escapeReplace=/[&<>"']/g,d.replacements={"&":"&","<":"<",">":">",'"':""","'":"'"},d.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,d.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var g={},m=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function y(){}function f(e){for(var t,s,n=1;n=0&&"\\"===s[i];)n=!n;return n?"|":" |"})).split(/ \|/),n=0;if(s.length>t)s.splice(t);else for(;s.lengthAn error occurred:

    "+d(e.message+"",!0)+"
    ";throw e}}y.exec=y,v.options=v.setOptions=function(e){return f(v.defaults,e),v},v.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new o,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},v.defaults=v.getDefaults(),v.Parser=l,v.parser=l.parse,v.Renderer=o,v.TextRenderer=a,v.Lexer=n,v.lexer=n.lex,v.InlineLexer=r,v.inlineLexer=r.output,v.Slugger=c,v.parse=v,e.exports=v}(this||("undefined"!=typeof window?window:s.g))}},t={};function s(n){var i=t[n];if(void 0!==i)return i.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};s.r(e),s.d(e,{DISMISS_ALERT:()=>Ae,SNIPPET_EDITOR_FIND_CUSTOM_FIELDS:()=>Ie,wistiaEmbedPermission:()=>Me});var t={};s.r(t),s.d(t,{addEventHandler:()=>Et,disableMarkerButtons:()=>St,enableMarkerButtons:()=>Rt,getContentTinyMce:()=>xt,isTextViewActive:()=>Tt,isTinyMCEAvailable:()=>vt,isTinyMCELoaded:()=>kt,pauseMarkers:()=>Ct,resumeMarkers:()=>Pt,setStore:()=>_t,termsTmceId:()=>bt,tinyMceEventBinder:()=>At,tmceId:()=>wt,wpTextViewOnInitCheck:()=>Ot});var n={};s.r(n),s.d(n,{createSEOScoreLabel:()=>Dt,createScoresInPublishBox:()=>$t,initialize:()=>qt,scrollToCollapsible:()=>Ut,updateScore:()=>Ft});const i=window.wp.domReady;var r=s.n(i);const o=window.jQuery;var a=s.n(o);const l=window.lodash,c=window.React,d=window.wp.components,p=window.wp.data,u=window.wp.element,h=window.wp.hooks,g=window.wp.i18n,m=window.yoast.uiLibrary,y=window.yoast.propTypes;var f=s.n(y);f().string.isRequired;const w=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),b=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{fillRule:"evenodd",d:"M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),k=({learnMoreLink:e,thumbnail:t,wistiaEmbedPermission:s,upsellLink:n,isProductCopy:i,title:r,upsellLabel:o,newToText:a,bundleNote:l})=>{const{onClose:d,initialFocus:p}=(0,m.useModalContext)(),h={a:(0,c.createElement)(N,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,c.createElement)(b,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"})};return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,c.createElement)("div",{className:"yst-relative yst-w-full"},(0,c.createElement)(ae,{videoId:"vmrahpfjxp",thumbnail:t,wistiaEmbedPermission:s}),(0,c.createElement)(m.Badge,{className:"yst-absolute yst-top-0 yst-right-2 yst-mt-2 yst-ml-2",variant:"info"},"Beta")),(0,c.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,c.createElement)("span",{className:"yst-logo-icon"}),a))),(0,c.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,c.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},r),(0,c.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},i?(0,u.createInterpolateElement)((0,g.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,g.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for product titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),h):(0,u.createInterpolateElement)((0,g.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,g.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),h))),(0,c.createElement)("div",{className:"yst-w-full yst-flex yst-mt-10"},(0,c.createElement)(m.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:n,target:"_blank",ref:p},(0,c.createElement)(w,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),o,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,g.__)("(Opens in a new browser tab)","wordpress-seo")))),l,(0,c.createElement)(m.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:d},(0,g.__)("Close","wordpress-seo"))))};k.propTypes={learnMoreLink:f().string.isRequired,upsellLink:f().string.isRequired,thumbnail:f().shape({src:f().string.isRequired,width:f().string,height:f().string}).isRequired,wistiaEmbedPermission:f().shape({value:f().bool.isRequired,status:f().string.isRequired,set:f().func.isRequired}).isRequired,title:f().string,upsellLabel:f().string,newToText:f().string,isProductCopy:f().bool,bundleNote:f().oneOfType([f().string,f().element])},k.defaultProps={title:(0,g.__)("Use AI to write your titles & meta descriptions!","wordpress-seo"),upsellLabel:(0,g.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,g.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),newToText:"Yoast SEO Premium",isProductCopy:!1,bundleNote:""};var v;function x(){return x=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",x({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1000 1000"},e),v||(v=c.createElement("path",{fill:"#fff",d:"M500 0C223.9 0 0 223.9 0 500s223.9 500 500 500 500-223.9 500-500S776.1 0 500 0Zm87.2 412.4c0-21.9 4.3-40.2 13.1-54.4s24-27.1 45.9-38.2l10.1-4.9c17.8-9 22.4-16.7 22.4-26 0-11.1-9.5-19.1-25-19.1-18.3 0-32.2 9.5-41.8 28.9l-24.7-24.8c5.4-11.6 14.1-20.9 25.8-28.1a70.8 70.8 0 0 1 38.9-11.1c17.8 0 33.3 4.6 45.9 14.2s19.4 22.7 19.4 39.4c0 26.6-15 42.9-43.1 57.3l-15.7 8c-16.8 8.5-25.1 16-27.4 29.4h85.4v35.4H587.2Zm-82.1 373.3c-157.8 0-285.7-127.9-285.7-285.7s127.9-285.7 285.7-285.7a286.4 286.4 0 0 1 55.9 5.5l-55.9 116.9c-90 0-163.3 73.3-163.3 163.3s73.3 163.3 163.3 163.3a162.8 162.8 0 0 0 106.4-39.6l61.8 107.2a283.9 283.9 0 0 1-168.2 54.8ZM705 704.1l-70.7-122.5H492.9l70.7-122.4H705l70.7 122.4Z"}))),S=window.ReactDOM;var R,C,P;(C=R||(R={})).Pop="POP",C.Push="PUSH",C.Replace="REPLACE",function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(P||(P={})),new Set(["lazy","caseSensitive","path","id","index","children"]),Error;const T=["post","put","patch","delete"],O=(new Set(T),["get",...T]);new Set(O),new Set([301,302,303,307,308]),new Set([307,308]),Symbol("deferred"),c.Component,c.startTransition,new Promise((()=>{})),c.Component,new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);try{window.__reactRouterVersion="6"}catch(e){}var A,I,M,L;new Map,c.startTransition,S.flushSync,c.useId,"undefined"!=typeof window&&void 0!==window.document&&window.document.createElement,(L=A||(A={})).UseScrollRestoration="useScrollRestoration",L.UseSubmit="useSubmit",L.UseSubmitFetcher="useSubmitFetcher",L.UseFetcher="useFetcher",L.useViewTransitionState="useViewTransitionState",(M=I||(I={})).UseFetcher="useFetcher",M.UseFetchers="useFetchers",M.UseScrollRestoration="useScrollRestoration",f().string.isRequired,f().string;const N=({href:e,children:t,...s})=>(0,c.createElement)(m.Link,{target:"_blank",rel:"noopener noreferrer",...s,href:e},t,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,g.__)("(Opens in a new browser tab)","wordpress-seo")));N.propTypes={href:f().string.isRequired,children:f().node},N.defaultProps={children:null};const B=c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var D,F,$;function U(){return U=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",U({xmlns:"http://www.w3.org/2000/svg",id:"star-rating-half_svg__Layer_1","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),D||(D=c.createElement("defs",null,c.createElement("style",null,".star-rating-half_svg__cls-1{fill:#fbbf24}"))),F||(F=c.createElement("path",{d:"M250 392.04 98.15 471.87l29-169.09L4.3 183.03l169.77-24.67L250 4.52l75.93 153.84 169.77 24.67-122.85 119.75 29 169.09L250 392.04z",className:"star-rating-half_svg__cls-1"})),$||($=c.createElement("path",{d:"m250 9.04 73.67 149.27.93 1.88 2.08.3 164.72 23.94-119.19 116.19-1.51 1.47.36 2.07 28.14 164.06-147.34-77.46-1.86-1-1.86 1-147.34 77.46 28.14-164.06.36-2.07-1.51-1.47L8.6 184.43l164.72-23.9 2.08-.3.93-1.88L250 9.04m0-9-77.25 156.49L0 181.64l125 121.89-29.51 172L250 394.3l154.51 81.23-29.51-172 125-121.89-172.75-25.11L250 0Z",className:"star-rating-half_svg__cls-1"})),c.createElement("path",{d:"m500 181.64-172.75-25.11L250 0v394.3l154.51 81.23L375 303.48l125-121.84z",style:{fill:"#f3f4f6"}}));function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",z({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),c.createElement("path",{d:"m250 0 77.25 156.53L500 181.64 375 303.48l29.51 172.05L250 394.3 95.49 475.53 125 303.48 0 181.64l172.75-25.11L250 0z",style:{fill:"#fbbf24"}}));var Y,V,K,W,H,Q,Z,G,J;function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;tc.createElement("svg",X({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 500 500"},e),Y||(Y=c.createElement("path",{fill:"#a4286a",d:"M80 0h340a80 80 0 0 1 80 80v420H80a80 80 0 0 1-80-80V80A80 80 0 0 1 80 0z"})),V||(V=c.createElement("path",{fill:"#6c2548",d:"M437.61 2 155.89 500H500V80a80 80 0 0 0-62.39-78z"})),K||(K=c.createElement("path",{fill:"#fff",d:"M74.4 337.3v34.9c21.6-.9 38.5-8 52.8-22.5s27.4-38 39.9-72.9l92.6-248h-44.8L140.3 236l-37-116.2h-41l54.4 139.8a57.54 57.54 0 0 1 0 41.8c-5.5 14.2-15.4 30.9-42.3 35.9z"})),W||(W=c.createElement("circle",{cx:368.33,cy:124.68,r:97.34,fill:"#9fda4f",transform:"rotate(-45 368.335 124.68)"})),H||(H=c.createElement("path",{fill:"#77b227",d:"m416.2 39.93-95.74 169.51A97.34 97.34 0 1 0 416.2 39.93z"})),Q||(Q=c.createElement("path",{fill:"#fec228",d:"m294.78 254.75-.15-.08-.13-.07a63.6 63.6 0 0 0-62.56 110.76h.13a63.6 63.6 0 0 0 62.71-110.67z"})),Z||(Z=c.createElement("path",{fill:"#f49a00",d:"m294.5 254.59-62.56 110.76a63.6 63.6 0 1 0 62.56-110.76z"})),G||(G=c.createElement("path",{fill:"#ff4e47",d:"M222.31 450.07A38.16 38.16 0 0 0 203 416.83a38.18 38.18 0 1 0 19.41 33.27z"})),J||(J=c.createElement("path",{fill:"#ed261f",d:"m202.9 416.8-37.54 66.48a38.17 38.17 0 0 0 37.54-66.48z"}))),te=({link:e,linkProps:t,isPromotionActive:s})=>{let n=(0,u.useMemo)((()=>(0,g.__)("Use AI to generate titles and meta descriptions, automatically redirect deleted pages, get 24/7 support, and much, much more!","wordpress-seo")),[]),i=(0,u.createInterpolateElement)((0,g.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,g.__)("%1$sGet%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,c.createElement)("span",{className:"yst-whitespace-nowrap"})});const r=s("black-friday-2024-promotion");return r&&(n=(0,u.useMemo)((()=>(0,g.__)("If you were thinking about upgrading, now's the time! 30% OFF ends 3rd Dec 11am (CET)","wordpress-seo")),[]),i=(0,u.createInterpolateElement)((0,g.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,g.__)("%1$sBuy%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,c.createElement)("span",{className:"yst-whitespace-nowrap"})})),(0,c.createElement)("div",{className:"yst-p-6 yst-rounded-lg yst-text-white yst-bg-primary-500 yst-shadow"},(0,c.createElement)("figure",{className:"yst-logo-square yst-w-16 yst-h-16 yst-mx-auto yst-overflow-hidden yst-border yst-border-white yst-rounded-xl yst-rounded-br-none yst-relative yst-z-10 yst-mt-[-2.6rem]"},(0,c.createElement)(ee,null)),r&&(0,c.createElement)("div",{className:"sidebar__sale_banner_container"},(0,c.createElement)("div",{className:"sidebar__sale_banner"},(0,c.createElement)("span",{className:"banner_text"},(0,g.__)("30% OFF - BLACK FRIDAY","wordpress-seo")))),(0,c.createElement)(m.Title,{as:"h2",className:"yst-mt-6 yst-text-base yst-font-extrabold yst-text-white"},i),(0,c.createElement)("p",{className:"yst-mt-2"},n),(0,c.createElement)(m.Button,{as:"a",variant:"upsell",href:e,target:"_blank",rel:"noopener",className:"yst-flex yst-justify-center yst-gap-2 yst-mt-4 focus:yst-ring-offset-primary-500",...t},(0,c.createElement)("span",null,r?(0,g.__)("Buy now","wordpress-seo"):i),(0,c.createElement)(B,{className:"yst-w-4 yst-h-4 yst-icon-rtl"})),(0,c.createElement)("p",{className:"yst-text-center yst-text-xs yst-mx-2 yst-font-light yst-leading-5 yst-mt-2"},!r&&(0,c.createElement)(c.Fragment,null,(0,g.__)("Only $/€/£99 per year (ex VAT)","wordpress-seo"),(0,c.createElement)("br",null)),(0,g.__)("30-day money back guarantee.","wordpress-seo")),(0,c.createElement)("hr",{className:"yst-border-t yst-border-primary-300 yst-my-4"}),(0,c.createElement)("a",{className:"yst-block yst-mt-4 yst-no-underline",href:"https://www.g2.com/products/yoast-yoast/reviews",target:"_blank",rel:"noopener noreferrer"},(0,c.createElement)("span",{className:"yst-font-medium yst-text-white hover:yst-underline"},(0,g.__)("Read reviews from real users","wordpress-seo")),(0,c.createElement)("span",{className:"yst-flex yst-gap-2 yst-mt-2 yst-items-center"},(0,c.createElement)(E,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)("span",{className:"yst-flex yst-gap-1"},(0,c.createElement)(j,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(j,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(j,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(j,{className:"yst-w-5 yst-h-5"}),(0,c.createElement)(q,{className:"yst-w-5 yst-h-5"})),(0,c.createElement)("span",{className:"yst-text-sm yst-font-semibold yst-text-white"},"4.6 / 5"))))};te.propTypes={link:f().string.isRequired,linkProps:f().object,isPromotionActive:f().func},te.defaultProps={linkProps:{},isPromotionActive:l.noop};const se=window.yoast.reactHelmet,ne="loading",ie="showPlay",re="askPermission",oe="isPlaying",ae=({videoId:e,thumbnail:t,wistiaEmbedPermission:s})=>{const[n,i]=(0,u.useState)(s.value?oe:ie),r=(0,u.useCallback)((()=>i(oe)),[i]),o=(0,u.useCallback)((()=>{s.value?r():i(re)}),[s.value,r,i]),a=(0,u.useCallback)((()=>i(ie)),[i]),l=(0,u.useCallback)((()=>{s.set(!0),r()}),[s.set,r]);return(0,c.createElement)(c.Fragment,null,s.value&&(0,c.createElement)(se.Helmet,null,(0,c.createElement)("script",{src:"https://fast.wistia.com/assets/external/E-v1.js",async:!0})),(0,c.createElement)("div",{className:"yst-relative yst-w-full yst-h-0 yst-pt-[56.25%] yst-overflow-hidden yst-rounded-md yst-drop-shadow-md yst-bg-white"},n===ie&&(0,c.createElement)("button",{type:"button",className:"yst-absolute yst-inset-0 yst-button yst-p-0 yst-border-none yst-bg-white yst-transition-opacity yst-duration-1000 yst-opacity-100",onClick:o},(0,c.createElement)("img",{className:"yst-w-full yst-h-auto",alt:"",loading:"lazy",decoding:"async",...t})),n===re&&(0,c.createElement)("div",{className:"yst-absolute yst-inset-0 yst-flex yst-flex-col yst-items-center yst-justify-center yst-bg-white"},(0,c.createElement)("p",{className:"yst-max-w-xs yst-mx-auto yst-text-center"},s.status===ne&&(0,c.createElement)(m.Spinner,null),s.status!==ne&&(0,g.sprintf)(/* translators: %1$s expands to Yoast SEO. %2$s expands to Wistia. */ (0,g.__)("To see this video, you need to allow %1$s to load embedded videos from %2$s.","wordpress-seo"),"Yoast SEO","Wistia")),(0,c.createElement)("div",{className:"yst-flex yst-mt-6 yst-gap-x-4"},(0,c.createElement)(m.Button,{type:"button",variant:"secondary",onClick:a,disabled:s.status===ne},(0,g.__)("Deny","wordpress-seo")),(0,c.createElement)(m.Button,{type:"button",variant:"primary",onClick:l,disabled:s.status===ne},(0,g.__)("Allow","wordpress-seo")))),s.value&&n===oe&&(0,c.createElement)("div",{className:"yst-absolute yst-w-full yst-h-full yst-top-0 yst-left-0"},null===e&&(0,c.createElement)(m.Spinner,{className:"yst-h-full yst-mx-auto"}),null!==e&&(0,c.createElement)("div",{className:`wistia_embed wistia_async_${e} videoFoam=true`}))))};ae.propTypes={videoId:f().string.isRequired,thumbnail:f().shape({src:f().string.isRequired,width:f().string,height:f().string}).isRequired,wistiaEmbedPermission:f().shape({value:f().bool.isRequired,status:f().string.isRequired,set:f().func.isRequired}).isRequired};const le=({learnMoreLink:e,thumbnail:t,wistiaEmbedPermission:s,upsellLink:n,upsellLabel:i})=>{const{onClose:r,initialFocus:o}=(0,m.useModalContext)(),a={a:(0,c.createElement)(N,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,c.createElement)(b,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"}),br:(0,c.createElement)("br",null)};return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,c.createElement)("div",{className:"yst-relative yst-w-full"},(0,c.createElement)(ae,{videoId:"vun9z1dpfh",thumbnail:t,wistiaEmbedPermission:s}),(0,c.createElement)(m.Badge,{className:"yst-absolute yst-right-0 yst-mr-4 yst-text-center yst-justify-center",variant:"info",style:{top:"-8px"}},(0,g.__)("Beta","wordpress-seo-premium"))),(0,c.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,c.createElement)("span",{className:"yst-logo-icon"}),"Yoast SEO Premium"))),(0,c.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,c.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,c.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},(0,g.sprintf)(/* translators: %s: Expands to "Yoast AI" */ (0,g.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,c.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,u.createInterpolateElement)((0,g.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */ (0,g.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"
    ","","",""),a))),(0,c.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,c.createElement)(m.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:n,target:"_blank",ref:o},(0,c.createElement)(w,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),i,(0,c.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,g.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,c.createElement)(m.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:r},(0,g.__)("Close","wordpress-seo"))))};le.propTypes={learnMoreLink:f().string.isRequired,upsellLink:f().string.isRequired,thumbnail:f().shape({src:f().string.isRequired,width:f().string,height:f().string}).isRequired,wistiaEmbedPermission:f().shape({value:f().bool.isRequired,status:f().string.isRequired,set:f().func.isRequired}).isRequired,upsellLabel:f().string},le.defaultProps={upsellLabel:(0,g.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,g.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},c.forwardRef((function(e,t){return c.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:t},e),c.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),f().bool.isRequired,f().func,f().func,f().string.isRequired,f().string.isRequired,f().string.isRequired,f().string.isRequired;const ce="yoast-seo/editor",de=()=>{const e=(0,p.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-learn-more")),[]),t=(0,p.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell")),[]),s=(0,p.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell-woo-seo-premium-bundle")),[]),n=(0,p.useSelect)((e=>e(ce).selectLink("https://yoa.st/ai-generator-upsell-woo-seo")),[]),i=(0,p.useSelect)((e=>e(ce).getIsPremium()),[]),r=(0,p.useSelect)((e=>e(ce).getIsWooSeoActive()),[]),o=(0,p.useSelect)((e=>e(ce).getIsWooCommerceActive()),[]),a=(0,p.useSelect)((e=>e(ce).getIsProduct()),[]),l=(0,p.useSelect)((e=>e(ce).getIsProductTerm()),[]),d={upsellLink:t};if(o&&a&&(d.title=(0,g.__)("Generate product titles & descriptions with AI!","wordpress-seo"),d.isProductCopy=!0),o&&(a||l)){const e=(0,g.sprintf)(/* translators: %1$s expands to Yoast SEO Premium, %2$s expands to Yoast WooCommerce SEO. */ (0,g.__)("%1$s + %2$s","wordpress-seo"),"Yoast SEO Premium","Yoast WooCommerce SEO");d.newToText=(0,g.sprintf)(/* translators: %1$s expands to Yoast SEO Premium and Yoast WooCommerce SEO. */ (0,g.__)("New in %1$s","wordpress-seo"),e),i?(d.upsellLabel=(0,g.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,g.__)("Unlock with %1$s","wordpress-seo"),"Yoast WooCommerce SEO"),d.upsellLink=n):r||(d.upsellLabel=`${(0,g.sprintf)(/* translators: %1$s expands to Woo Premium bundle. */ (0,g.__)("Unlock with the %1$s","wordpress-seo"),"Woo Premium bundle")}*`,d.bundleNote=(0,c.createElement)("div",{className:"yst-text-xs yst-text-slate-500 yst-mt-2"},`*${e}`),d.upsellLink=s)}const h=(0,p.useSelect)((e=>e(ce).selectImageLink("ai-generator-preview.png")),[]),m=(0,u.useMemo)((()=>({src:h,width:"432",height:"244"})),[h]),y=(0,p.useSelect)((e=>e(ce).selectWistiaEmbedPermissionValue()),[]),f=(0,p.useSelect)((e=>e(ce).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:w}=(0,p.useDispatch)(ce),b=(0,u.useMemo)((()=>({value:y,status:f,set:w})),[y,f,w]);return(0,c.createElement)(k,{learnMoreLink:e,thumbnail:m,wistiaEmbedPermission:b,...d})},pe=({fieldId:e})=>{const[t,,,s,n]=(0,m.useToggleState)(!1),i=(0,u.useCallback)((()=>{s()}),[s]),r=(0,u.useRef)(null);return(0,c.createElement)(c.Fragment,null,(0,c.createElement)("button",{type:"button",id:`yst-replacevar__use-ai-button__${e}`,className:"yst-replacevar__use-ai-button-upsell",onClick:i},(0,g.__)("Use AI","wordpress-seo")),(0,c.createElement)(m.Modal,{className:"yst-introduction-modal",isOpen:t,onClose:n,initialFocus:r},(0,c.createElement)(m.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl"},(0,c.createElement)(de,{onClose:n,focusElementRef:r}))))};pe.propTypes={fieldId:f().string.isRequired};const ue="yoast-seo/editor";const he=window.yoast.externals.redux,ge=window.yoast.reduxJsToolkit,me="adminUrl",ye=(0,ge.createSlice)({name:me,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),fe=(ye.getInitialState,{selectAdminUrl:e=>(0,l.get)(e,me,"")});fe.selectAdminLink=(0,ge.createSelector)([fe.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),ye.actions,ye.reducer;const we=window.wp.url,be="linkParams",_e=(0,ge.createSlice)({name:be,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),ke=(_e.getInitialState,{selectLinkParam:(e,t,s={})=>(0,l.get)(e,`${be}.${t}`,s),selectLinkParams:e=>(0,l.get)(e,be,{})});ke.selectLink=(0,ge.createSelector)([ke.selectLinkParams,(e,t)=>t,(e,t,s={})=>s],((e,t,s)=>(0,we.addQueryArgs)(t,{...e,...s}))),_e.actions,_e.reducer;const ve=(0,ge.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:s="default",title:n,description:i})=>({payload:{id:e||(0,ge.nanoid)(),variant:t,size:s,title:n||"",description:i}})},removeNotification:(e,{payload:t})=>(0,l.omit)(e,t)}}),xe=(ve.getInitialState,ve.actions,ve.reducer,"pluginUrl"),Ee=(0,ge.createSlice)({name:xe,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),Se=(Ee.getInitialState,{selectPluginUrl:e=>(0,l.get)(e,xe,"")});Se.selectImageLink=(0,ge.createSelector)([Se.selectPluginUrl,(e,t,s="images")=>s,(e,t)=>t],((e,t,s)=>[(0,l.trimEnd)(e,"/"),(0,l.trim)(t,"/"),(0,l.trimStart)(s,"/")].join("/"))),Ee.actions,Ee.reducer;const Re=window.wp.apiFetch;var Ce=s.n(Re);const Pe="wistiaEmbedPermission",Te=(0,ge.createSlice)({name:Pe,initialState:{value:!1,status:"idle",error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${Pe}/request`,(e=>{e.status=ne})),e.addCase(`${Pe}/success`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${Pe}/error`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,l.get)(t,"error.code",500),message:(0,l.get)(t,"error.message","Unknown")}}))}}),Oe=(Te.getInitialState,Te.actions,{[Pe]:async({payload:e})=>Ce()({path:"/yoast/v1/wistia_embed_permission",method:"POST",data:{value:Boolean(e)}})});function Ae({alertKey:e}){return new Promise((t=>wpseoApi.post("alerts/dismiss",{key:e},(()=>t()))))}function Ie({query:e,postId:t}){return new Promise((s=>{wpseoApi.get("meta/search",{query:e,post_id:t},(e=>{s(e.meta)}))}))}Te.reducer;const Me=Oe[Pe];var Le=s(2322),Ne=s.n(Le);function Be(){return window.wpseoScriptData&&"1"===window.wpseoScriptData.isBlockEditor}const De=window.yoast.analysis,Fe=window.wp.isShallowEqual,$e=window.wp.api;var Ue={source:"wpseoScriptData.analysis.plugins.replaceVars",scope:[],aliases:[]},qe=function(e,t,s){this.placeholder=e,this.replacement=t,this.options=(0,l.defaults)(s,Ue)};qe.prototype.getPlaceholder=function(e){return(e=e||!1)&&this.hasAlias()?this.placeholder+"|"+this.getAliases().join("|"):this.placeholder},qe.prototype.setSource=function(e){this.options.source=e},qe.prototype.hasScope=function(){return!(0,l.isEmpty)(this.options.scope)},qe.prototype.addScope=function(e){this.hasScope()||(this.options.scope=[]),this.options.scope.push(e)},qe.prototype.inScope=function(e){return!this.hasScope()||(0,l.indexOf)(this.options.scope,e)>-1},qe.prototype.hasAlias=function(){return!(0,l.isEmpty)(this.options.aliases)},qe.prototype.addAlias=function(e){this.hasAlias()||(this.options.aliases=[]),this.options.aliases.push(e)},qe.prototype.getAliases=function(){return this.options.aliases};const ze=qe,{removeReplacementVariable:je,updateReplacementVariable:Ye,refreshSnippetEditor:Ve}=he.actions;var Ke=["content","title","snippet_title","snippet_meta","primary_category","data_page_title","data_meta_desc","excerpt"],We={},He={},Qe=function(e,t){this._app=e,this._app.registerPlugin("replaceVariablePlugin",{status:"ready"}),this._store=t,this.replaceVariables=this.replaceVariables.bind(this),this.registerReplacements(),this.registerModifications(),this.registerEvents(),this.subscribeToGutenberg()};Qe.prototype.registerReplacements=function(){this.addReplacement(new ze("%%author_first_name%%","author_first_name")),this.addReplacement(new ze("%%author_last_name%%","author_last_name")),this.addReplacement(new ze("%%category%%","category")),this.addReplacement(new ze("%%category_title%%","category_title")),this.addReplacement(new ze("%%currentdate%%","currentdate")),this.addReplacement(new ze("%%currentday%%","currentday")),this.addReplacement(new ze("%%currentmonth%%","currentmonth")),this.addReplacement(new ze("%%currenttime%%","currenttime")),this.addReplacement(new ze("%%currentyear%%","currentyear")),this.addReplacement(new ze("%%date%%","date")),this.addReplacement(new ze("%%id%%","id")),this.addReplacement(new ze("%%page%%","page")),this.addReplacement(new ze("%%permalink%%","permalink")),this.addReplacement(new ze("%%post_content%%","post_content")),this.addReplacement(new ze("%%post_month%%","post_month")),this.addReplacement(new ze("%%post_year%%","post_year")),this.addReplacement(new ze("%%searchphrase%%","searchphrase")),this.addReplacement(new ze("%%sitedesc%%","sitedesc")),this.addReplacement(new ze("%%sitename%%","sitename")),this.addReplacement(new ze("%%userid%%","userid")),this.addReplacement(new ze("%%focuskw%%","keyword",{source:"app",aliases:["%%keyword%%"]})),this.addReplacement(new ze("%%term_description%%","text",{source:"app",scope:["term","category","tag"],aliases:["%%tag_description%%","%%category_description%%"]})),this.addReplacement(new ze("%%term_title%%","term_title",{scope:["term"]})),this.addReplacement(new ze("%%term_hierarchy%%","term_hierarchy",{scope:["term"]})),this.addReplacement(new ze("%%title%%","title",{source:"app",scope:["post","term","page"]})),this.addReplacement(new ze("%%parent_title%%","title",{source:"app",scope:["page","category"]})),this.addReplacement(new ze("%%excerpt%%","excerpt",{source:"app",scope:["post"],aliases:["%%excerpt_only%%"]})),this.addReplacement(new ze("%%primary_category%%","primaryCategory",{source:"app",scope:["post"]})),this.addReplacement(new ze("%%sep%%(\\s*%%sep%%)*","sep"))},Qe.prototype.registerEvents=function(){const e=wpseoScriptData.analysis.plugins.replaceVars.scope;"post"===e&&jQuery(".categorydiv").each(this.bindTaxonomyEvents.bind(this)),"post"!==e&&"page"!==e||jQuery("#postcustomstuff > #list-table").each(this.bindFieldEvents.bind(this))},Qe.prototype.subscribeToGutenberg=function(){if(!Be())return;const e={0:""};let t=null;const s=wp.data;s.subscribe((()=>{const n=s.select("core/editor").getEditedPostAttribute("parent");if(void 0!==n&&t!==n)return t=n,n<1?(this._currentParentPageTitle="",void this.declareReloaded()):(0,l.isUndefined)(e[n])?void $e.loadPromise.done((()=>{new $e.models.Page({id:n}).fetch().then((t=>{this._currentParentPageTitle=t.title.rendered,e[n]=this._currentParentPageTitle,this.declareReloaded()})).fail((()=>{this._currentParentPageTitle="",this.declareReloaded()}))})):(this._currentParentPageTitle=e[n],void this.declareReloaded())}))},Qe.prototype.addReplacement=function(e){We[e.placeholder]=e},Qe.prototype.removeReplacement=function(e){delete We[e.getPlaceholder()]},Qe.prototype.registerModifications=function(){var e=this.replaceVariables.bind(this);(0,l.forEach)(Ke,function(t){this._app.registerModification(t,e,"replaceVariablePlugin",10)}.bind(this))},Qe.prototype.replaceVariables=function(e){return(0,l.isUndefined)(e)||(e=this.parentReplace(e),e=this.replaceCustomTaxonomy(e),e=this.replaceByStore(e),e=this.replacePlaceholders(e)),e},Qe.prototype.replaceByStore=function(e){const t=this._store.getState().snippetEditor.replacementVariables;return(0,l.forEach)(t,(t=>{""!==t.value&&(e=e.replace("%%"+t.name+"%%",t.value))})),e},Qe.prototype.getReplacementSource=function(e){return"app"===e.source?this._app.rawData:"direct"===e.source?"direct":wpseoScriptData.analysis.plugins.replaceVars.replace_vars},Qe.prototype.getReplacement=function(e){var t=this.getReplacementSource(e.options);return!1===e.inScope(wpseoScriptData.analysis.plugins.replaceVars.scope)?"":"direct"===t?e.replacement:t[e.replacement]||""},Qe.prototype.replacePlaceholders=function(e){return(0,l.forEach)(We,function(t){e=e.replace(new RegExp(t.getPlaceholder(!0),"g"),this.getReplacement(t))}.bind(this)),e},Qe.prototype.declareReloaded=function(){this._app.pluginReloaded("replaceVariablePlugin"),this._store.dispatch(Ve())},Qe.prototype.getCategoryName=function(e){var t=e.parent("label").clone();return t.children().remove(),t.text().trim()},Qe.prototype.parseTaxonomies=function(e,t){(0,l.isUndefined)(He[t])&&(He[t]={});const s=[];(0,l.forEach)(e,function(e){const n=(e=jQuery(e)).val(),i=this.getCategoryName(e),r=e.prop("checked");He[t][n]={label:i,checked:r},r&&-1===s.indexOf(i)&&s.push(i)}.bind(this)),"category"!==t&&(t="ct_"+t),this._store.dispatch(Ye(t,s.join(", ")))},Qe.prototype.getAvailableTaxonomies=function(e){var t=jQuery(e).find("input[type=checkbox]"),s=jQuery(e).attr("id").replace("taxonomy-","");t.length>0&&this.parseTaxonomies(t,s),this.declareReloaded()},Qe.prototype.bindTaxonomyEvents=function(e,t){(t=jQuery(t)).on("wpListAddEnd",".categorychecklist",this.getAvailableTaxonomies.bind(this,t)),t.on("change","input[type=checkbox]",this.getAvailableTaxonomies.bind(this,t)),this.getAvailableTaxonomies(t)},Qe.prototype.replaceCustomTaxonomy=function(e){return(0,l.forEach)(He,function(t,s){var n="%%ct_"+s+"%%";"category"===s&&(n="%%"+s+"%%"),e=e.replace(n,this.getTaxonomyReplaceVar(s))}.bind(this)),e},Qe.prototype.getTaxonomyReplaceVar=function(e){var t=[],s=He[e];return!0===(0,l.isUndefined)(s)?"":((0,l.forEach)(s,(function(e){!1!==e.checked&&t.push(e.label)})),jQuery.uniqueSort(t).join(", "))},Qe.prototype.parseFields=function(e){jQuery(e).each(function(e,t){var s=jQuery("#"+t.id+"-key").val(),n=jQuery("#"+t.id+"-value").val();const i="cf_"+this.sanitizeCustomFieldNames(s),r=s+" (custom field)";this._store.dispatch(Ye(i,n,r)),this.addReplacement(new ze(`%%${i}%%`,n,{source:"direct"}))}.bind(this))},Qe.prototype.removeFields=function(e){jQuery(e).each(function(e,t){var s=jQuery("#"+t.id+"-key").val();this.removeReplacement("%%cf_"+this.sanitizeCustomFieldNames(s)+"%%")}.bind(this))},Qe.prototype.sanitizeCustomFieldNames=function(e){return e.replace(/\s/g,"_")},Qe.prototype.getAvailableFields=function(e){this.removeCustomFields();var t=jQuery(e).find("#the-list > tr:visible[id]");t.length>0&&this.parseFields(t),this.declareReloaded()},Qe.prototype.bindFieldEvents=function(e,t){var s=(t=jQuery(t)).find("#the-list");s.on("wpListDelEnd.wpseoCustomFields",this.getAvailableFields.bind(this,t)),s.on("wpListAddEnd.wpseoCustomFields",this.getAvailableFields.bind(this,t)),s.on("input.wpseoCustomFields",".textarea",this.getAvailableFields.bind(this,t)),s.on("click.wpseoCustomFields",".button + .updatemeta",this.getAvailableFields.bind(this,t)),this.getAvailableFields(t)},Qe.prototype.removeCustomFields=function(){var e=(0,l.filter)(We,(function(e,t){return t.indexOf("%%cf_")>-1}));(0,l.forEach)(e,function(e){this._store.dispatch(je((0,l.trim)(e.placeholder,"%%"))),this.removeReplacement(e)}.bind(this))},Qe.prototype.parentReplace=function(e){const t=jQuery("#parent_id, #parent").eq(0);return this.hasParentTitle(t)&&(e=e.replace(/%%parent_title%%/,this.getParentTitleReplacement(t))),Be()&&!(0,l.isUndefined)(this._currentParentPageTitle)&&(e=e.replace(/%%parent_title%%/,this._currentParentPageTitle)),e},Qe.prototype.hasParentTitle=function(e){return!(0,l.isUndefined)(e)&&!(0,l.isUndefined)(e.prop("options"))},Qe.prototype.getParentTitleReplacement=function(e){var t=e.find("option:selected").text();return t===(0,g.__)("(no parent)","wordpress-seo")?"":t},Qe.ReplaceVar=ze;const Ze=Qe,Ge=window.wp.blocks,Je=class{constructor(e,t,s){this._registerPlugin=e,this._registerModification=t,this._refreshAnalysis=s,this._reusableBlocks={},this._selectCore=(0,p.select)("core"),this._selectCoreEditor=(0,p.select)("core/editor"),this.reusableBlockChangeListener=this.reusableBlockChangeListener.bind(this),this.parseReusableBlocks=this.parseReusableBlocks.bind(this)}register(){this._registerPlugin("YoastReusableBlocksPlugin",{status:"ready"}),this._registerModification("content",this.parseReusableBlocks,"YoastReusableBlocksPlugin",1),(0,p.subscribe)((0,l.debounce)(this.reusableBlockChangeListener,500))}reusableBlockChangeListener(){const{blocks:e}=this._selectCoreEditor.getPostEdits();if(!e)return;let t=!1;e.forEach((e=>{if(!(0,Ge.isReusableBlock)(e))return;const s=this.getBlockContent(e.attributes.ref);this._reusableBlocks[e.attributes.ref]?this._reusableBlocks[e.attributes.ref].content!==s&&(this._reusableBlocks[e.attributes.ref].content=s,t=!0):(this._reusableBlocks[e.attributes.ref]={id:e.attributes.ref,clientId:e.clientId,content:s},t=!0)})),t&&this._refreshAnalysis()}parseReusableBlocks(e){const t=//g;return e.match(t)?e.replace(t,((t,s)=>this._reusableBlocks[s]&&this._reusableBlocks[s].content?this._reusableBlocks[s].content:e)):e}getBlockContent(e){const t=this._selectCore.getEditedEntityRecord("postType","wp_block",e);if(t){if((0,l.isFunction)(t.content))return t.content(t);if(t.blocks)return(0,Ge.__unstableSerializeAndClean)(t.blocks);if(t.content)return t.content}return""}},Xe="[^<>&/\\[\\]\0- =]+?",et=new RegExp("\\["+Xe+"( [^\\]]+?)?\\]","g"),tt=new RegExp("\\[/"+Xe+"\\]","g");class st{constructor({registerPlugin:e,registerModification:t,pluginReady:s,pluginReloaded:n},i){this._registerModification=t,this._pluginReady=s,this._pluginReloaded=n,e("YoastShortcodePlugin",{status:"loading"}),this.bindElementEvents();const r="("+i.join("|")+")";this.shortcodesRegex=new RegExp(r,"g"),this.closingTagRegex=new RegExp("\\[\\/"+r+"\\]","g"),this.nonCaptureRegex=new RegExp("\\["+r+"[^\\]]*?\\]","g"),this.parsedShortcodes=[],this.loadShortcodes(this.declareReady.bind(this))}declareReady(){this._pluginReady("YoastShortcodePlugin"),this.registerModifications()}declareReloaded(){this._pluginReloaded("YoastShortcodePlugin")}registerModifications(){this._registerModification("content",this.replaceShortcodes.bind(this),"YoastShortcodePlugin")}removeUnknownShortCodes(e){return(e=e.replace(et,"")).replace(tt,"")}replaceShortcodes(e){return"string"==typeof e&&this.parsedShortcodes.forEach((({shortcode:t,output:s})=>{e=e.replace(t,s)})),e=this.removeUnknownShortCodes(e)}loadShortcodes(e){const t=this.getUnparsedShortcodes(this.getShortcodes(this.getContentTinyMCE()));if(!(t.length>0))return e();this.parseShortcodes(t,e)}bindElementEvents(){const e=document.querySelector(".wp-editor-area"),t=(0,l.debounce)(this.loadShortcodes.bind(this,this.declareReloaded.bind(this)),500);e&&(e.addEventListener("keyup",t),e.addEventListener("change",t)),"undefined"!=typeof tinyMCE&&"function"==typeof tinyMCE.on&&tinyMCE.on("addEditor",(function(e){e.editor.on("change",t),e.editor.on("keyup",t)}))}getContentTinyMCE(){let e=document.querySelector(".wp-editor-area")?document.querySelector(".wp-editor-area").value:"";return"undefined"!=typeof tinyMCE&&void 0!==tinyMCE.editors&&0!==tinyMCE.editors.length&&(e=tinyMCE.get("content")?tinyMCE.get("content").getContent():""),e}getUnparsedShortcodes(e){return"object"!=typeof e?(console.error("Failed to get unparsed shortcodes. Expected parameter to be an array, instead received "+typeof e),!1):e.filter((e=>this.isUnparsedShortcode(e)))}isUnparsedShortcode(e){return!this.parsedShortcodes.some((({shortcode:t})=>t===e))}getShortcodes(e){if("string"!=typeof e)return console.error("Failed to get shortcodes. Expected parameter to be a string, instead received"+typeof e),!1;const t=this.matchCapturingShortcodes(e);t.forEach((t=>{e=e.replace(t,"")}));const s=this.matchNonCapturingShortcodes(e);return t.concat(s)}matchCapturingShortcodes(e){const t=(e.match(this.closingTagRegex)||[]).join(" ").match(this.shortcodesRegex)||[];return(0,l.flatten)(t.map((t=>{const s="\\["+t+"[^\\]]*?\\].*?\\[\\/"+t+"\\]";return e.match(new RegExp(s,"g"))||[]})))}matchNonCapturingShortcodes(e){return e.match(this.nonCaptureRegex)||[]}parseShortcodes(e,t){return"function"!=typeof t?(console.error("Failed to parse shortcodes. Expected parameter to be a function, instead received "+typeof t),!1):"object"==typeof e&&e.length>0?void jQuery.post(ajaxurl,{action:"wpseo_filter_shortcodes",_wpnonce:wpseoScriptData.analysis.plugins.shortcodes.wpseo_filter_shortcodes_nonce,data:e},function(e){this.saveParsedShortcodes(e,t)}.bind(this)):t()}saveParsedShortcodes(e,t){const s=JSON.parse(e);this.parsedShortcodes.push(...s),t()}}const nt=st,{updateShortcodesForParsing:it}=he.actions;var rt=s(7084),ot=s.n(rt);const at=class{constructor(e,t){this._registerPlugin=e,this._registerModification=t}register(){this._registerPlugin("YoastMarkdownPlugin",{status:"ready"}),this._registerModification("content",this.parseMarkdown.bind(this),"YoastMarkdownPlugin",1)}parseMarkdown(e){return ot()(e)}},lt="yoastmark";function ct(e,t){return e._properties.position.startOffset>t.length||e._properties.position.endOffset>t.length}function dt(e,t,s){const n=e.dom;let i=e.getContent();if(i=De.markers.removeMarks(i),(0,l.isEmpty)(s))return void e.setContent(i);i=s[0].hasPosition()?function(e,t){if(!t)return"";for(let s=(e=(0,l.orderBy)(e,(e=>e._properties.position.startOffset),["asc"])).length-1;s>=0;s--){const n=e[s];ct(n,t)||(t=n.applyWithPosition(t))}return t}(s,i):function(e,t,s,n){const{fieldsToMark:i,selectedHTML:r}=De.languageProcessing.getFieldsToMark(s,n);return(0,l.forEach)(s,(function(t){"acf_content"!==e.id&&(t._properties.marked=De.languageProcessing.normalizeHTML(t._properties.marked),t._properties.original=De.languageProcessing.normalizeHTML(t._properties.original)),i.length>0?r.forEach((e=>{const s=t.applyWithReplace(e);n=n.replace(e,s)})):n=t.applyWithReplace(n)})),n}(e,0,s,i),e.setContent(i),function(e){let t=e.getContent();t=t.replace(new RegExp("<yoastmark.+?>","g"),"").replace(new RegExp("</yoastmark>","g"),""),e.setContent(t)}(e);const r=n.select(lt);(0,l.forEach)(r,(function(e){e.setAttribute("data-mce-bogus","1")}))}function pt(e){return window.test=e,dt.bind(null,e)}const ut="et_pb_main_editor_wrap",ht=class{static isActive(){return!!document.getElementById(ut)}static isTinyMCEHidden(){const e=document.getElementById(ut);return!!e&&e.classList.contains("et_pb_hidden")}listen(e){this.classicEditorContainer=document.getElementById(ut),this.classicEditorContainer&&new MutationObserver((t=>{(0,l.forEach)(t,(t=>{"attributes"===t.type&&"class"===t.attributeName&&(t.target.classList.contains("et_pb_hidden")?e.classicEditorHidden():e.classicEditorShown())}))})).observe(this.classicEditorContainer,{attributes:!0})}},gt=class{static isActive(){return!!window.VCV_I18N}},mt={classicEditorHidden:l.noop,classicEditorShown:l.noop,pageBuilderLoaded:l.noop},yt=class{constructor(){this.determineActivePageBuilders()}determineActivePageBuilders(){ht.isActive()&&(this.diviActive=!0),gt.isActive()&&(this.vcActive=!0)}isPageBuilderActive(){return this.diviActive||this.vcActive}listen(e){this.callbacks=(0,l.defaults)(e,mt),this.diviActive&&(new ht).listen(e)}isClassicEditorHidden(){return!(!this.diviActive||!ht.isTinyMCEHidden())}};let ft;const wt="content",bt="description";function _t(e){ft=e}function kt(){return"undefined"!=typeof tinyMCE&&void 0!==tinyMCE.editors&&0!==tinyMCE.editors.length}function vt(e){if(!kt())return!1;const t=tinyMCE.get(e);return null!==t&&!t.isHidden()}function xt(e){let t="";var s;return t=!1===vt(e)||0==(s=e,null!==document.getElementById(s+"_ifr"))?function(e){return document.getElementById(e)&&document.getElementById(e).value||""}(e):tinyMCE.get(e).getContent(),t}function Et(e,t,s){"undefined"!=typeof tinyMCE&&"function"==typeof tinyMCE.on&&tinyMCE.on("addEditor",(function(n){const i=n.editor;i.id===e&&(0,l.forEach)(t,(function(e){i.on(e,s)}))}))}function St(){(0,l.isUndefined)(ft)||ft.dispatch(he.actions.setMarkerStatus("disabled"))}function Rt(){(0,l.isUndefined)(ft)||ft.dispatch(he.actions.setMarkerStatus("enabled"))}function Ct(){(0,l.isUndefined)(ft)||ft.dispatch(he.actions.setMarkerPauseStatus(!0))}function Pt(){(0,l.isUndefined)(ft)||ft.dispatch(he.actions.setMarkerPauseStatus(!1))}function Tt(){const e=document.getElementById("wp-content-wrap");return!!e&&e.classList.contains("html-active")}function Ot(){Tt()&&(St(),kt()&&tinyMCE.on("AddEditor",(function(){Rt()})))}function At(e,t){Et(t,["input","change","cut","paste"],e),Et(t,["hide"],St);const s=["show"];(new yt).isPageBuilderActive()||s.push("init"),Et(t,s,Rt),Et("content",["focus"],(function(e){const t=e.target;(function(e){return-1!==e.getContent({format:"raw"}).indexOf("<"+lt)})(t)&&(function(e){pt(e)(null,[])}(t),YoastSEO.app.disableMarkers()),Ct()})),Et("content",["blur"],(function(){Pt()}))}class It{constructor(e){this.refresh=e,this.loaded=!1,this.preloadThreshold=3e3,this.plugins={},this.modifications={},this._registerPlugin=this._registerPlugin.bind(this),this._ready=this._ready.bind(this),this._reloaded=this._reloaded.bind(this),this._registerModification=this._registerModification.bind(this),this._registerAssessment=this._registerAssessment.bind(this),this._applyModifications=this._applyModifications.bind(this),setTimeout(this._pollLoadingPlugins.bind(this),1500)}_registerPlugin(e,t){return(0,l.isString)(e)?(0,l.isUndefined)(t)||(0,l.isObject)(t)?!1===this._validateUniqueness(e)?(console.error("Failed to register plugin. Plugin with name "+e+" already exists"),!1):(this.plugins[e]=t,!0):(console.error("Failed to register plugin "+e+". Expected parameters `options` to be a object."),!1):(console.error("Failed to register plugin. Expected parameter `pluginName` to be a string."),!1)}_ready(e){return(0,l.isString)(e)?(0,l.isUndefined)(this.plugins[e])?(console.error("Failed to modify status for plugin "+e+". The plugin was not properly registered."),!1):(this.plugins[e].status="ready",!0):(console.error("Failed to modify status for plugin "+e+". Expected parameter `pluginName` to be a string."),!1)}_reloaded(e){return(0,l.isString)(e)?(0,l.isUndefined)(this.plugins[e])?(console.error("Failed to reload Content Analysis for plugin "+e+". The plugin was not properly registered."),!1):(this.refresh(),!0):(console.error("Failed to reload Content Analysis for "+e+". Expected parameter `pluginName` to be a string."),!1)}_registerModification(e,t,s,n){if(!(0,l.isString)(e))return console.error("Failed to register modification for plugin "+s+". Expected parameter `modification` to be a string."),!1;if(!(0,l.isFunction)(t))return console.error("Failed to register modification for plugin "+s+". Expected parameter `callable` to be a function."),!1;if(!(0,l.isString)(s))return console.error("Failed to register modification for plugin "+s+". Expected parameter `pluginName` to be a string."),!1;if(!1===this._validateOrigin(s))return console.error("Failed to register modification for plugin "+s+". The integration has not finished loading yet."),!1;const i={callable:t,origin:s,priority:(0,l.isNumber)(n)?n:10};return(0,l.isUndefined)(this.modifications[e])&&(this.modifications[e]=[]),this.modifications[e].push(i),!0}_registerAssessment(e,t,s,n){return(0,l.isString)(t)?(0,l.isObject)(s)?(0,l.isString)(n)?(t=n+"-"+t,e.addAssessment(t,s),!0):(console.error("Failed to register assessment for plugin "+n+". Expected parameter `pluginName` to be a string."),!1):(console.error("Failed to register assessment for plugin "+n+". Expected parameter `assessment` to be a function."),!1):(console.error("Failed to register test for plugin "+n+". Expected parameter `name` to be a string."),!1)}_applyModifications(e,t,s){let n=this.modifications[e];return!(0,l.isArray)(n)||n.length<1||(n=this._stripIllegalModifications(n),n.sort(((e,t)=>e.priority-t.priority)),(0,l.forEach)(n,(function(n){const i=n.callable(t,s);typeof i==typeof t?t=i:console.error("Modification with name "+e+" performed by plugin with name "+n.origin+" was ignored because the data that was returned by it was of a different type than the data we had passed it.")}))),t}_pollLoadingPlugins(e){e=(0,l.isUndefined)(e)?0:e,!0===this._allReady()?(this.loaded=!0,this.refresh()):e>=this.preloadThreshold?(this._pollTimeExceeded(),this.loaded=!0,this.refresh()):(e+=50,setTimeout(this._pollLoadingPlugins.bind(this,e),50))}_allReady(){return(0,l.reduce)(this.plugins,(function(e,t){return e&&"ready"===t.status}),!0)}_pollTimeExceeded(){(0,l.forEach)(this.plugins,(function(e,t){(0,l.isUndefined)(e.options)||"ready"===e.options.status||(console.error("Error: Plugin "+t+". did not finish loading in time."),delete this.plugins[t])}))}_stripIllegalModifications(e){return(0,l.forEach)(e,((t,s)=>{!1===this._validateOrigin(t.origin)&&delete e[s]})),e}_validateOrigin(e){return"ready"===this.plugins[e].status}_validateUniqueness(e){return(0,l.isUndefined)(this.plugins[e])}}function Mt(e,t,s){e("morphology",new De.Paper("",{keyword:s})).then((e=>{const s=e.result.keyphraseForms;t.dispatch(he.actions.updateWordsToHighlight((0,l.uniq)((0,l.flatten)(s))))})).catch((()=>{t.dispatch(he.actions.updateWordsToHighlight([]))}))}var Lt="score-text",Nt="image yoast-logo svg",Bt=jQuery;function Dt(e,t,s=null){var n,i,r,o,a;if(null!==s)return(0,l.get)(s,t,"");const c=(0,p.select)("yoast-seo/editor").getIsPremium(),d={na:(0,g.__)("Not available","wordpress-seo"),bad:(0,g.__)("Needs improvement","wordpress-seo"),ok:(0,g.__)("OK","wordpress-seo"),good:(0,g.__)("Good","wordpress-seo")},u={keyword:{label:c?(0,g.__)("Premium SEO analysis:","wordpress-seo"):(0,g.__)("SEO analysis:","wordpress-seo"),anchor:"yoast-seo-analysis-collapsible-metabox",status:d},content:{label:(0,g.__)("Readability analysis:","wordpress-seo"),anchor:"yoast-readability-analysis-collapsible-metabox",status:d},"inclusive-language":{label:(0,g.__)("Inclusive language:","wordpress-seo"),anchor:"yoast-inclusive-language-analysis-collapsible-metabox",status:{...d,ok:(0,g.__)("Potentially non-inclusive","wordpress-seo")}}};return null!=u&&null!==(n=u[e])&&void 0!==n&&null!==(i=n.status)&&void 0!==i&&i[t]?`${null===(o=u[e])||void 0===o?void 0:o.label} ${null===(a=u[e])||void 0===a?void 0:a.status[t]}`:""}function Ft(e,t,s=null){var n=Bt("#"+e+"-score"),i=Nt+" "+t;n.children(".image").attr("class",i);var r=Dt(e,t,s);n.children("."+Lt).html(r)}function $t(e,t,s=null){const n=Bt("
    ",{class:"misc-pub-section yoast yoast-seo-score "+e+"-score",id:e+"-score"}),i=Bt("",{class:Lt,html:Dt(e,t,s)}),r=Bt("").attr("class",Nt+" na");n.append(r).append(i),Bt("#yoast-seo-publishbox-section").append(n)}function Ut(e){const t=Bt("#wpadminbar"),s=Bt(e);if(!t||!s)return;const n="fixed"===t.css("position")?t.height():0;Bt([document.documentElement,document.body]).animate({scrollTop:s.offset().top-n},1e3),s.trigger("focus"),0===s.parent().siblings().length&&s.trigger("click")}function qt(){var e="na";wpseoScriptData.metabox.keywordAnalysisActive&&$t("keyword",e),wpseoScriptData.metabox.contentAnalysisActive&&$t("content",e),wpseoScriptData.metabox.inclusiveLanguageAnalysisActive&&$t("inclusive-language",e),Bt("#content-score").on("click","[href='#yoast-readability-analysis-collapsible-metabox']",(function(e){e.preventDefault(),document.querySelector("#wpseo-meta-tab-readability").click(),Ut("#wpseo-meta-section-readability")})),Bt("#keyword-score").on("click","[href='#yoast-seo-analysis-collapsible-metabox']",(function(e){e.preventDefault(),document.querySelector("#wpseo-meta-tab-content").click(),Ut("#yoast-seo-analysis-collapsible-metabox")})),Bt("#inclusive-language-score").on("click","[href='#yoast-inclusive-language-analysis-collapsible-metabox']",(function(e){e.preventDefault(),document.querySelector("#wpseo-meta-tab-inclusive-language").click(),Ut("#wpseo-meta-section-inclusive-language")}))}function zt(e){var t=jQuery(".yst-traffic-light"),s=t.closest(".wpseo-meta-section-link"),n=jQuery("#wpseo-traffic-light-desc"),i=e.className||"na";t.attr("class","yst-traffic-light "+i),s.attr("aria-describedby","wpseo-traffic-light-desc"),n.length>0?n.text(e.screenReaderText):s.closest("li").append(""+e.screenReaderText+"")}function jt(e){jQuery("#wp-admin-bar-wpseo-menu .wpseo-score-icon").attr("title",e.screenReaderText).attr("class","wpseo-score-icon "+e.className).find(".wpseo-score-text").text(e.screenReaderText)}function Yt(){return(0,l.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1})}function Vt(){const e=Yt();return(0,l.get)(e,"contentLocale","en_US")}function Kt(){const e=Yt();return!0===(0,l.get)(e,"contentAnalysisActive",!1)}function Wt(){const e=Yt();return!0===(0,l.get)(e,"keywordAnalysisActive",!1)}function Ht(){const e=Yt();return!0===(0,l.get)(e,"inclusiveLanguageAnalysisActive",!1)}const Qt=window.yoast.featureFlag;function Zt(){}let Gt=!1;function Jt(e){return e.sort(((e,t)=>e._identifier.localeCompare(t._identifier)))}function Xt(e,t,s,n,i){if(!Gt)return;const r=De.Paper.parse(t());e.analyze(r).then((o=>{const{result:{seo:a,readability:l,inclusiveLanguage:c}}=o;if(a){const e=a[""];e.results.forEach((e=>{e.getMarker=()=>()=>s(r,e.marks)})),e.results=Jt(e.results),n.dispatch(he.actions.setSeoResultsForKeyword(r.getKeyword(),e.results)),n.dispatch(he.actions.setOverallSeoScore(e.score,r.getKeyword())),n.dispatch(he.actions.refreshSnippetEditor()),i.saveScores(e.score,r.getKeyword())}l&&(l.results.forEach((e=>{e.getMarker=()=>()=>s(r,e.marks)})),l.results=Jt(l.results),n.dispatch(he.actions.setReadabilityResults(l.results)),n.dispatch(he.actions.setOverallReadabilityScore(l.score)),n.dispatch(he.actions.refreshSnippetEditor()),i.saveContentScore(l.score)),c&&(c.results.forEach((e=>{e.getMarker=()=>()=>s(r,e.marks)})),c.results=Jt(c.results),n.dispatch(he.actions.setInclusiveLanguageResults(c.results)),n.dispatch(he.actions.setOverallInclusiveLanguageScore(c.score)),n.dispatch(he.actions.refreshSnippetEditor()),i.saveInclusiveLanguageScore(c.score)),(0,h.doAction)("yoast.analysis.refresh",o,{paper:r,worker:e,collectData:t,applyMarks:s,store:n,dataCollector:i})})).catch(Zt)}const es="yoast-measurement-element";function ts(e){let t=document.getElementById(es);return t||(t=function(){const e=document.createElement("div");return e.id=es,e.style.position="absolute",e.style.left="-9999em",e.style.top=0,e.style.height=0,e.style.overflow="hidden",e.style.fontFamily="arial, sans-serif",e.style.fontSize="20px",e.style.fontWeight="400",document.body.appendChild(e),e}()),t.innerText=e,t.offsetWidth}const ss=e=>(e=e.filter((e=>e.isValid))).map((e=>{const t=(0,Ge.serialize)([e],{isInnerBlocks:!1});return e.blockLength=t&&t.length,e.innerBlocks&&(e.innerBlocks=ss(e.innerBlocks)),e}));function ns(e){return(0,l.isNil)(e)||(e/=10),function(e){switch(e){case"feedback":return{className:"na",screenReaderText:(0,g.__)("Not available","wordpress-seo"),screenReaderReadabilityText:(0,g.__)("Not available","wordpress-seo"),screenReaderInclusiveLanguageText:(0,g.__)("Not available","wordpress-seo")};case"bad":return{className:"bad",screenReaderText:(0,g.__)("Needs improvement","wordpress-seo"),screenReaderReadabilityText:(0,g.__)("Needs improvement","wordpress-seo"),screenReaderInclusiveLanguageText:(0,g.__)("Needs improvement","wordpress-seo")};case"ok":return{className:"ok",screenReaderText:(0,g.__)("OK SEO score","wordpress-seo"),screenReaderReadabilityText:(0,g.__)("OK","wordpress-seo"),screenReaderInclusiveLanguageText:(0,g.__)("Potentially non-inclusive","wordpress-seo")};case"good":return{className:"good",screenReaderText:(0,g.__)("Good SEO score","wordpress-seo"),screenReaderReadabilityText:(0,g.__)("Good","wordpress-seo"),screenReaderInclusiveLanguageText:(0,g.__)("Good","wordpress-seo")};default:return{className:"loading",screenReaderText:"",screenReaderReadabilityText:"",screenReaderInclusiveLanguageText:""}}}(De.interpreters.scoreToRating(e))}const{tmceId:is}=t,rs=jQuery,os=function(e){"object"==typeof CKEDITOR&&console.warn("YoastSEO currently doesn't support ckEditor. The content analysis currently only works with the HTML editor or TinyMCE."),this._data=e.data,this._store=e.store};os.prototype.getData=function(){const e=this._data.getData(),t=this._store.getState();return{keyword:Wt()?this.getKeyword():"",meta:this.getMeta(),text:e.content,title:e.title,url:e.slug,excerpt:e.excerpt,snippetTitle:this.getSnippetTitle(),snippetMeta:this.getSnippetMeta(),snippetCite:this.getSnippetCite(),primaryCategory:this.getPrimaryCategory(),searchUrl:this.getSearchUrl(),postUrl:this.getPostUrl(),permalink:this.getPermalink(),titleWidth:ts(this.getSnippetTitle()),metaTitle:(0,l.get)(t,["analysisData","snippet","title"],this.getSnippetTitle()),url:(0,l.get)(t,["snippetEditor","data","slug"],e.slug),meta:this.getMetaDescForAnalysis(t)}},os.prototype.getKeyword=function(){return document.getElementById("yoast_wpseo_focuskw")&&document.getElementById("yoast_wpseo_focuskw").value||""},os.prototype.getMetaDescForAnalysis=function(e){let t=(0,l.get)(e,["analysisData","snippet","description"],this.getSnippetMeta());return""!==wpseoScriptData.metabox.metaDescriptionDate&&(t=wpseoScriptData.metabox.metaDescriptionDate+" - "+t),t},os.prototype.getMeta=function(){return document.getElementById("yoast_wpseo_metadesc")&&document.getElementById("yoast_wpseo_metadesc").value||""},os.prototype.getText=function(){return De.markers.removeMarks(xt(is))},os.prototype.getTitle=function(){return document.getElementById("title")&&document.getElementById("title").value||""},os.prototype.getUrl=function(){const e=(0,p.select)("core/editor");if(e&&e.getCurrentPostAttribute("slug"))return e.getCurrentPostAttribute("slug");var t="",s=rs("#new-post-slug");return 0 label");return n.length?e=this.getCategoryName(n):e},os.prototype.getSearchUrl=function(){return wpseoScriptData.metabox.search_url},os.prototype.getPostUrl=function(){return wpseoScriptData.metabox.post_edit_url},os.prototype.getPermalink=function(){var e=this.getUrl();return wpseoScriptData.metabox.base_url+e},os.prototype.getCategoryName=function(e){var t=e.clone();return t.children().remove(),t.text().trim()},os.prototype.setDataFromSnippet=function(e,t){switch(t){case"snippet_meta":document.getElementById("yoast_wpseo_metadesc").value=e;break;case"snippet_cite":if(this.leavePostNameUntouched)return void(this.leavePostNameUntouched=!1);null!==document.getElementById("post_name")&&(document.getElementById("post_name").value=e),null!==document.getElementById("editable-post-name")&&null!==document.getElementById("editable-post-name-full")&&(document.getElementById("editable-post-name").textContent=e,document.getElementById("editable-post-name-full").textContent=e);break;case"snippet_title":document.getElementById("yoast_wpseo_title").value=e}},os.prototype.saveSnippetData=function(e){this.setDataFromSnippet(e.title,"snippet_title"),this.setDataFromSnippet(e.urlPath,"snippet_cite"),this.setDataFromSnippet(e.metaDesc,"snippet_meta")},os.prototype.bindElementEvents=function(e){this.inputElementEventBinder(e),this.changeElementEventBinder(e)},os.prototype.changeElementEventBinder=function(e){for(var t=["#yoast-wpseo-primary-category",'.categorychecklist input[name="post_category[]"]'],s=0;s{e=(0,l.merge)(e,t())})),e}}window.wp.annotations;const cs=function(e){return(0,l.uniq)((0,l.flatten)(e.map((e=>{if(!(0,l.isUndefined)(e.getFieldsToMark()))return e.getFieldsToMark()}))))},ds=window.wp.richText,ps=/(<([a-z]|\/)[^<>]+>)/gi,{htmlEntitiesRegex:us}=De.helpers.htmlEntities,hs=e=>{let t=0;return(0,l.forEachRight)(e,(e=>{const[s]=e;let n=s.length;/^<\/?br/.test(s)&&(n-=1),t+=n})),t},gs="",ms="",ys='';function fs(e,t,s,n,i){const r=n.clientId,o=(0,ds.create)({html:e,multilineTag:s.multilineTag,multilineWrapperTag:s.multilineWrapperTag}).text;return(0,l.flatMap)(i,(s=>{let i;return i=s.hasBlockPosition&&s.hasBlockPosition()?function(e,t,s,n,i){if(t===e.getBlockClientId()){let t=e.getBlockPositionStart(),r=e.getBlockPositionEnd();if(e.isMarkForFirstBlockSection()){const e=((e,t,s)=>{const n="yoast/faq-block"===s?'':'';return{blockStartOffset:e-=n.length,blockEndOffset:t-=n.length}})(t,r,s);t=e.blockStartOffset,r=e.blockEndOffset}if(n.slice(t,r)===i.slice(t,r))return[{startOffset:t,endOffset:r}];const o=((e,t,s)=>{const n=s.slice(0,e),i=s.slice(0,t),r=((e,t,s,n)=>{const i=[...e.matchAll(ps)];s-=hs(i);const r=[...t.matchAll(ps)];return{blockStartOffset:s,blockEndOffset:n-=hs(r)}})(n,i,e,t),o=((e,t,s,n)=>{let i=[...e.matchAll(us)];return(0,l.forEachRight)(i,(e=>{const[,t]=e;s-=t.length})),i=[...t.matchAll(us)],(0,l.forEachRight)(i,(e=>{const[,t]=e;n-=t.length})),{blockStartOffset:s,blockEndOffset:n}})(n,i,e=r.blockStartOffset,t=r.blockEndOffset);return{blockStartOffset:e=o.blockStartOffset,blockEndOffset:t=o.blockEndOffset}})(t,r,n);return[{startOffset:o.blockStartOffset,endOffset:o.blockEndOffset}]}return[]}(s,r,n.name,e,o):function(e,t){const s=t.getOriginal().replace(/(<([^>]+)>)/gi,""),n=t.getMarked().replace(/(<(?!\/?yoastmark)[^>]+>)/gi,""),i=function(e,t,s=!0){const n=[];if(0===e.length)return n;let i,r=0;for(s||(t=t.toLowerCase(),e=e.toLowerCase());(i=e.indexOf(t,r))>-1;)n.push(i),r=i+t.length;return n}(e,s);if(0===i.length)return[];const r=function(e){let t=e.indexOf(gs);const s=t>=0;s||(t=e.indexOf(ys));let n=null;const i=[];for(;t>=0;){if(n=(e=s?e.replace(gs,""):e.replace(ys,"")).indexOf(ms),n{i.forEach((n=>{const i=n+e.startOffset;let r=n+e.endOffset;0===e.startOffset&&e.endOffset===t.getOriginal().length&&(r=n+s.length),o.push({startOffset:i,endOffset:r})}))})),o}(o,s),i?i.map((e=>({...e,block:r,richTextIdentifier:t}))):[]}))}const ws=e=>e[0].toUpperCase()+e.slice(1),bs=(e,t,s,n,i)=>(e=e.map((e=>{const r=`${e.id}-${i[0]}`,o=`${e.id}-${i[1]}`,a=ws(i[0]),l=ws(i[1]),c=e[`json${a}`],d=e[`json${l}`],{marksForFirstSection:p,marksForSecondSection:u}=((e,t)=>({marksForFirstSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&e.isMarkForFirstBlockSection():e)),marksForSecondSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&!e.isMarkForFirstBlockSection():e))}))(t,e),h=fs(c,r,s,n,p),g=fs(d,o,s,n,u);return h.concat(g)})),(0,l.flattenDeep)(e)),_s="yoast";let ks=[];const vs={"core/paragraph":[{key:"content"}],"core/list":[{key:"values",multilineTag:"li",multilineWrapperTag:["ul","ol"]}],"core/list-item":[{key:"content"}],"core/heading":[{key:"content"}],"core/audio":[{key:"caption"}],"core/embed":[{key:"caption"}],"core/gallery":[{key:"caption"}],"core/image":[{key:"caption"}],"core/table":[{key:"caption"}],"core/video":[{key:"caption"}],"yoast/faq-block":[{key:"questions"}],"yoast/how-to-block":[{key:"steps"},{key:"jsonDescription"}]};function xs(){const e=ks.shift();e&&((0,p.dispatch)("core/annotations").__experimentalAddAnnotation(e),Es())}function Es(){(0,l.isFunction)(window.requestIdleCallback)?window.requestIdleCallback(xs,{timeout:1e3}):setTimeout(xs,150)}const Ss=(e,t)=>{return(0,l.flatMap)((s=e.name,vs.hasOwnProperty(s)?vs[s]:[]),(s=>"yoast/faq-block"===e.name?((e,t,s)=>{const n=t.attributes[e.key];return 0===n.length?[]:bs(n,s,e,t,["question","answer"])})(s,e,t):"yoast/how-to-block"===e.name?((e,t,s)=>{const n=t.attributes[e.key];if(n&&0===n.length)return[];const i=[];return"steps"===e.key&&i.push(bs(n,s,e,t,["name","text"])),"jsonDescription"===e.key&&(s=s.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?!e.getBlockAttributeId():e)),i.push(fs(n,"description",e,t,s))),(0,l.flattenDeep)(i)})(s,e,t):function(e,t,s){const n=e.key,i=((e,t)=>{const s=e.attributes[t];return"string"==typeof s?s:(s||"").toString()})(t,n);return fs(i,n,e,t,s)}(s,e,t)));var s};function Rs(e,t){return(0,l.flatMap)(e,(e=>{const s=function(e){return e.innerBlocks.length>0}(e)?Rs(e.innerBlocks,t):[];return Ss(e,t).concat(s)}))}function Cs(e){ks=[],(0,p.dispatch)("core/annotations").__experimentalRemoveAnnotationsBySource(_s);const t=cs(e);if(0===e.length)return;let s=(0,p.select)("core/block-editor").getBlocks();var n;t.length>0&&(s=s.filter((e=>t.some((t=>"core/"+t===e.name))))),n=Rs(s,e),ks=n.map((e=>({blockClientId:e.block,source:_s,richTextIdentifier:e.richTextIdentifier,range:{start:e.startOffset,end:e.endOffset}}))),Es()}function Ps(e,t){let s;vt(wt)&&((0,l.isUndefined)(s)&&(s=pt(tinyMCE.get(wt))),s(e,t)),(0,p.select)("core/block-editor")&&(0,l.isFunction)((0,p.select)("core/block-editor").getBlocks)&&(0,p.select)("core/annotations")&&(0,l.isFunction)((0,p.dispatch)("core/annotations").__experimentalAddAnnotation)&&(function(e,t){tinyMCE.editors.map((e=>pt(e))).forEach((s=>s(e,t)))}(e,t),Cs(t)),(0,h.doAction)("yoast.analysis.applyMarks",t)}function Ts(){const e=(0,p.select)("yoast-seo/editor").isMarkingAvailable(),t=(0,p.select)("yoast-seo/editor").getMarkerPauseStatus();return!e||t?l.noop:Ps}var Os=jQuery;function As(e,t,s,n,i){this._scriptUrl=n,this._options={usedKeywords:t.keyword_usage,usedKeywordsPostTypes:t.keyword_usage_post_types,searchUrl:t.search_url,postUrl:t.post_edit_url},this._keywordUsage=t.keyword_usage,this._usedKeywordsPostTypes=t.keyword_usage_post_types,this._postID=Os("#post_ID, [name=tag_ID]").val(),this._taxonomy=Os("[name=taxonomy]").val()||"",this._nonce=i,this._ajaxAction=e,this._refreshAnalysis=s,this._initialized=!1}As.prototype.init=function(){const{worker:e}=window.YoastSEO.analysis;this.requestKeywordUsage=(0,l.debounce)(this.requestKeywordUsage.bind(this),500),e.loadScript(this._scriptUrl).then((()=>{e.sendMessage("initialize",this._options,"used-keywords-assessment")})).then((()=>{this._initialized=!0,(0,l.isEqual)(this._options.usedKeywords,this._keywordUsage)?this._refreshAnalysis():e.sendMessage("updateKeywordUsage",this._keywordUsage,"used-keywords-assessment").then((()=>this._refreshAnalysis()))})).catch((e=>console.error(e)))},As.prototype.setKeyword=function(e){(0,l.has)(this._keywordUsage,e)||this.requestKeywordUsage(e)},As.prototype.requestKeywordUsage=function(e){Os.post(ajaxurl,{action:this._ajaxAction,post_id:this._postID,keyword:e,taxonomy:this._taxonomy,nonce:this._nonce},this.updateKeywordUsage.bind(this,e),"json")},As.prototype.updateKeywordUsage=function(e,t){const{worker:s}=window.YoastSEO.analysis,n=t.keyword_usage,i=t.post_types;n&&(0,l.isArray)(n)&&(this._keywordUsage[e]=n,this._usedKeywordsPostTypes[e]=i,this._initialized&&s.sendMessage("updateKeywordUsage",{usedKeywords:this._keywordUsage,usedKeywordsPostTypes:this._usedKeywordsPostTypes},"used-keywords-assessment").then((()=>this._refreshAnalysis())))};const{setFocusKeyword:Is,updateData:Ms,setCornerstoneContent:Ls,refreshSnippetEditor:Ns,setReadabilityResults:Bs,setSeoResultsForKeyword:Ds}=he.actions;function Fs(e,s,i){if("undefined"==typeof wpseoScriptData)return;let r,o,a,c;const d=new ls;function u(e){return""===e.responseText?o.val():jQuery("
    "+e.responseText+"
    ").find("#editable-post-name-full").text()}function g(){const e={};return Wt()&&(e.output="does-not-really-exist-but-it-needs-something"),Kt()&&(e.contentOutput="also-does-not-really-exist-but-it-needs-something"),e}function m(e){(0,l.isUndefined)(e.seoAssessorPresenter)||(e.seoAssessorPresenter.render=function(){}),(0,l.isUndefined)(e.contentAssessorPresenter)||(e.contentAssessorPresenter.render=function(){},e.contentAssessorPresenter.renderIndividualRatings=function(){})}let y;function f(e,t){const s=y||"";y=e.getState().analysisData.snippet,!(0,Fe.isShallowEqualObjects)(s,y)&&t()}function w(){return(0,p.select)("core/edit-post").getEditorMode()}jQuery(document).on("ajaxComplete",(function(e,t,n){if("/admin-ajax.php"===n.url.substring(n.url.length-15)&&"string"==typeof n.data&&-1!==n.data.indexOf("action=sample-permalink")){c.leavePostNameUntouched=!0;const e={slug:u(t)};s.dispatch(Ms(e))}})),function(){if(r=e("#wpseo_meta"),_t(s),Ot(),function(){const e=new yt;e.isClassicEditorHidden()&&St(),e.vcActive?St():e.listen({classicEditorHidden:()=>{St()},classicEditorShown:()=>{Tt()||Rt()}})}(),0===r.length)return;c=function(e){const t=new as({data:e,store:s});return t.leavePostNameUntouched=!1,t}(i),qt();const u=function(t){const s={elementTarget:[wt,"yoast_wpseo_focuskw_text_input","yoast_wpseo_metadesc","excerpt","editable-post-name","editable-post-name-full"],targets:g(),callbacks:{getData:c.getData.bind(c)},locale:wpseoScriptData.metabox.contentLocale,marker:Ts(),contentAnalysisActive:Kt(),keywordAnalysisActive:Wt(),debouncedRefresh:!1,researcher:new window.yoast.Researcher.default};return Wt()&&(t.dispatch(Is(e("#yoast_wpseo_focuskw").val())),s.callbacks.saveScores=c.saveScores.bind(c),s.callbacks.updatedKeywordsResults=function(e){const s=t.getState().focusKeyword;t.dispatch(Ds(s,e)),t.dispatch(Ns())}),Kt()&&(s.callbacks.saveContentScore=c.saveContentScore.bind(c),s.callbacks.updatedContentResults=function(e){t.dispatch(Bs(e)),t.dispatch(Ns())}),o=e("#title"),s}(s);a=new De.App(u),window.YoastSEO=window.YoastSEO||{},window.YoastSEO.app=a,window.YoastSEO.store=s,window.YoastSEO.analysis={},window.YoastSEO.analysis.worker=function(){const e=(0,l.get)(window,["wpseoScriptData","analysis","worker","url"],"analysis-worker.js"),t=(0,De.createWorker)(e),s=(0,l.get)(window,["wpseoScriptData","analysis","worker","dependencies"],[]),n=[];for(const e in s){if(!Object.prototype.hasOwnProperty.call(s,e))continue;const t=window.document.getElementById(`${e}-js-translations`);if(!t)continue;const i=t.innerHTML.slice(214),r=i.indexOf(","),o=i.slice(0,r-1);try{const e=JSON.parse(i.slice(r+1,-4));n.push([o,e])}catch(t){console.warn(`Failed to parse translation data for ${e} to send to the Yoast SEO worker`);continue}}return t.postMessage({dependencies:s,translations:n}),new De.AnalysisWorkerWrapper(t)}(),window.YoastSEO.analysis.collectData=()=>function(e,t,s,n,i){const r=(0,l.cloneDeep)(t.getState());(0,l.merge)(r,s.getData());const o=e.getData();let a=null;i&&(a=i.getBlocks()||[],a=ss(a));const c={text:o.content,textTitle:o.title,keyword:r.focusKeyword,synonyms:r.synonyms,description:r.analysisData.snippet.description||r.snippetEditor.data.description,title:r.analysisData.snippet.title||r.snippetEditor.data.title,slug:r.snippetEditor.data.slug,permalink:r.settings.snippetEditor.baseUrl+r.snippetEditor.data.slug,wpBlocks:a,date:r.settings.snippetEditor.date};n.loaded&&(c.title=n._applyModifications("data_page_title",c.title),c.title=n._applyModifications("title",c.title),c.description=n._applyModifications("data_meta_desc",c.description),c.text=n._applyModifications("content",c.text),c.wpBlocks=n._applyModifications("wpBlocks",c.wpBlocks));const d=r.analysisData.snippet.filteredSEOTitle;return c.titleWidth=ts(d||r.snippetEditor.data.title),c.locale=Vt(),c.writingDirection=function(){let e="LTR";return Yt().isRtl&&(e="RTL"),e}(),c.shortcodes=window.wpseoScriptData.analysis.plugins.shortcodes?window.wpseoScriptData.analysis.plugins.shortcodes.wpseo_shortcode_tags:[],c.isFrontPage="1"===(0,l.get)(window,"wpseoScriptData.isFrontPage","0"),De.Paper.parse((0,h.applyFilters)("yoast.analysis.data",c))}(i,s,d,a.pluggable,(0,p.select)("core/block-editor")),window.YoastSEO.analysis.applyMarks=(e,t)=>Ts()(e,t),window.YoastSEO.app.refresh=(0,l.debounce)((()=>Xt(window.YoastSEO.analysis.worker,window.YoastSEO.analysis.collectData,window.YoastSEO.analysis.applyMarks,s,c)),500),window.YoastSEO.app.registerCustomDataCallback=d.register,window.YoastSEO.app.pluggable=new It(window.YoastSEO.app.refresh),window.YoastSEO.app.registerPlugin=window.YoastSEO.app.pluggable._registerPlugin,window.YoastSEO.app.pluginReady=window.YoastSEO.app.pluggable._ready,window.YoastSEO.app.pluginReloaded=window.YoastSEO.app.pluggable._reloaded,window.YoastSEO.app.registerModification=window.YoastSEO.app.pluggable._registerModification,window.YoastSEO.app.registerAssessment=(e,t,s)=>{if(!(0,l.isUndefined)(a.seoAssessor))return window.YoastSEO.app.pluggable._registerAssessment(a.defaultSeoAssessor,e,t,s)&&window.YoastSEO.app.pluggable._registerAssessment(a.cornerStoneSeoAssessor,e,t,s)},window.YoastSEO.app.changeAssessorOptions=function(e){window.YoastSEO.analysis.worker.initialize(e).catch(Zt),window.YoastSEO.app.refresh()},function(e,t,s){const n=Yt();if(!n.previouslyUsedKeywordActive)return;const i=new As("get_focus_keyword_usage_and_post_types",n,e,(0,l.get)(window,["wpseoScriptData","analysis","worker","keywords_assessment_url"],"used-keywords-assessment.js"),(0,l.get)(window,["wpseoScriptData","usedKeywordsNonce"],""));i.init();let r={};s.subscribe((()=>{const e=s.getState()||{};e.focusKeyword!==r.focusKeyword&&(r=e,i.setKeyword(e.focusKeyword))}))}(a.refresh,0,s),s.subscribe(f.bind(null,s,a.refresh)),window.YoastSEO.analyzerArgs=u,window.YoastSEO.wp={},window.YoastSEO.wp.replaceVarsPlugin=new Ze(a,s),function(e,t){let s=[];s=(0,h.applyFilters)("yoast.analysis.shortcodes",s);const n=wpseoScriptData.analysis.plugins.shortcodes.wpseo_shortcode_tags;s=s.filter((e=>n.includes(e))),s.length>0&&(t.dispatch(it(s)),window.YoastSEO.wp.shortcodePlugin=new st({registerPlugin:e.registerPlugin,registerModification:e.registerModification,pluginReady:e.pluginReady,pluginReloaded:e.pluginReloaded},s))}(a,s),Be()&&new Je(a.registerPlugin,a.registerModification,window.YoastSEO.app.refresh).register(),wpseoScriptData.metabox.markdownEnabled&&new at(a.registerPlugin,a.registerModification).register(),window.YoastSEO.wp._tinyMCEHelper=t,Wt()&&function(t){const s=ns(e("#yoast_wpseo_linkdex").val());zt(s),jt(s),t.updateScore("keyword",s.className)}(n),Kt()&&function(t){const s=ns(e("#yoast_wpseo_content_score").val());jt(s),t.updateScore("content",s.className)}(n),Ht()&&function(t){const s=ns(e("#yoast_wpseo_inclusive_language_score").val());jt(s),t.updateScore("inclusive-language",s.className)}(n),window.YoastSEO.analysis.worker.initialize(function(e={}){const t={locale:Vt(),contentAnalysisActive:Kt(),keywordAnalysisActive:Wt(),inclusiveLanguageAnalysisActive:Ht(),defaultQueryParams:(0,l.get)(window,["wpseoAdminL10n","default_query_params"],{}),logLevel:(0,l.get)(window,["wpseoScriptData","analysis","worker","log_level"],"ERROR"),enabledFeatures:(0,Qt.enabledFeatures)()};return(0,l.merge)(t,e)}()).then((()=>{jQuery(window).trigger("YoastSEO:ready")})).catch(Zt),c.bindElementEvents((0,l.debounce)((()=>Xt(window.YoastSEO.analysis.worker,window.YoastSEO.analysis.collectData,window.YoastSEO.analysis.applyMarks,s,c)),500)),m(a);const y=a.initAssessorPresenters.bind(a);a.initAssessorPresenters=function(){y(),m(a)},i.setRefresh&&i.setRefresh(a.refresh);let b={title:(_=c).getSnippetTitle(),slug:_.getSnippetCite(),description:_.getSnippetMeta()};var _;const k=function(e){const t={};if((0,l.isUndefined)(e))return t;t.title=e.title_template;const s=e.metadesc_template;return(0,l.isEmpty)(s)||(t.description=s),t}(wpseoScriptData.metabox);b=function(e,t){const s={...e};return(0,l.forEach)(t,((t,n)=>{(0,l.has)(e,n)&&""===e[n]&&(s[n]=t)})),s}(b,k),s.dispatch(Ms(b)),s.dispatch(Ls("1"===document.getElementById("yoast_wpseo_is_cornerstone").value));let v=s.getState().focusKeyword;Mt(window.YoastSEO.analysis.worker.runResearch,s,v);const x=(0,l.debounce)((()=>{a.refresh()}),50);let E=null;if(s.subscribe((()=>{const t=s.getState().focusKeyword;v!==t&&(v=t,Mt(window.YoastSEO.analysis.worker.runResearch,s,v),e("#yoast_wpseo_focuskw").val(v),x());const n=function(e){const t=e.getState().snippetEditor.data;return{title:t.title,slug:t.slug,description:t.description}}(s),i=function(e,t){const s={...e};return(0,l.forEach)(t,((t,n)=>{(0,l.has)(e,n)&&e[n].trim()===t&&(s[n]="")})),s}(n,k);b.title!==n.title&&c.setDataFromSnippet(i.title,"snippet_title"),b.slug!==n.slug&&c.setDataFromSnippet(i.slug,"snippet_cite"),b.description!==n.description&&c.setDataFromSnippet(i.description,"snippet_meta");const r=s.getState();E!==r.isCornerstone&&(E=r.isCornerstone,document.getElementById("yoast_wpseo_is_cornerstone").value=r.isCornerstone,a.changeAssessorOptions({useCornerstone:r.isCornerstone})),b.title=n.title,b.slug=n.slug,b.description=n.description})),Be()){let e=w();(0,p.subscribe)((()=>{const t=w();t!==e&&(e=t)}))}Gt=!0,window.YoastSEO.app.refresh()}()}window.YoastReplaceVarPlugin=Ze,window.YoastShortcodePlugin=nt;const $s=window.yoast.styledComponents;var Us=s.n($s);const qs=window.wp.compose,zs=({id:e,value:t,terms:s,label:n,onChange:i})=>{const r=(0,u.useCallback)((e=>{i(parseInt(e,10))}),[i]);return(0,c.createElement)(d.SelectControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,id:e,label:n,value:t,onChange:r,options:s.map((e=>({label:(0,l.unescape)(e.name),value:e.id})))})};zs.propTypes={terms:f().arrayOf(f().shape({id:f().number.isRequired,name:f().string.isRequired})),onChange:f().func.isRequired,id:f().string,label:f().string,value:f().number};const js=zs,Ys=Us().div` padding-top: 16px; `;class Vs extends u.Component{constructor(e){super(e),this.onChange=this.onChange.bind(this),this.updateReplacementVariable=this.updateReplacementVariable.bind(this);const{fieldId:t,name:s}=e.taxonomy;this.input=document.getElementById(t),e.setPrimaryTaxonomyId(s,parseInt(this.input.value,10)),this.state={selectedTerms:[],terms:[]}}componentDidMount(){this.fetchTerms()}componentDidUpdate(e,t){if(e.selectedTermIds.lengthe.id===t))||this.onChange(e.length?e[0].id:-1)}termIsAvailable(e){return!!this.state.terms.find((t=>t.id===e))}fetchTerms(){const{taxonomy:e}=this.props;e&&(this.fetchRequest=Ce()({path:(0,we.addQueryArgs)(`/wp/v2/${e.restBase}`,{per_page:-1,orderby:"count",order:"desc",_fields:"id,name"})}),this.fetchRequest.then((e=>{const t=this.state;this.setState({terms:e,selectedTerms:this.getSelectedTerms(e,this.props.selectedTermIds)},(()=>{0===t.terms.length&&this.state.terms.length>0&&this.updateReplacementVariable(this.props.primaryTaxonomyId)}))})))}getSelectedTerms(e,t){return e.filter((e=>t.includes(e.id)))}updateSelectedTerms(e,t){const s=this.getSelectedTerms(e,t);this.setState({selectedTerms:s})}onChange(e){const{name:t}=this.props.taxonomy;this.updateReplacementVariable(e),this.props.setPrimaryTaxonomyId(t,e),this.input.value=-1===e?"":e}updateReplacementVariable(e){if("category"!==this.props.taxonomy.name)return;const t=this.state.selectedTerms.find((t=>t.id===e));this.props.updateReplacementVariable(`primary_${this.props.taxonomy.name}`,t?t.name:"")}render(){const{primaryTaxonomyId:e,taxonomy:t,learnMoreLink:s}=this.props;if(this.state.selectedTerms.length<2)return null;const n=`yoast-primary-${t.name}-picker`;return(0,c.createElement)(Ys,{className:"components-base-control__field"},(0,c.createElement)(js,{label:(0,g.sprintf)(/* translators: %s expands to the taxonomy name. */ (0,g.__)("Select the primary %s","wordpress-seo"),t.singularLabel.toLowerCase()),value:e,onChange:this.onChange,id:n,terms:this.state.selectedTerms}),(0,c.createElement)(d.ExternalLink,{className:"yst-inline-block yst-mt-2",href:s},(0,g.__)("Learn more","wordpress-seo"),(0,c.createElement)("span",{className:"screen-reader-text"},(0,g.__)("Learn more about the primary category.","wordpress-seo"))))}}Vs.propTypes={selectedTermIds:f().arrayOf(f().number),primaryTaxonomyId:f().number,setPrimaryTaxonomyId:f().func,updateReplacementVariable:f().func,taxonomy:f().shape({name:f().string,fieldId:f().string,restBase:f().string,singularLabel:f().string}),learnMoreLink:f().string.isRequired},Vs.defaultProps={selectedTermIds:[],primaryTaxonomyId:-1,setPrimaryTaxonomyId:l.noop,updateReplacementVariable:l.noop,taxonomy:{}};const Ks=Vs,Ws=(0,qs.compose)([(0,p.withSelect)(((e,t)=>{const s=e("core/editor"),n=e("yoast-seo/editor"),{taxonomy:i}=t;return{selectedTermIds:s.getEditedPostAttribute(i.restBase)||[],primaryTaxonomyId:n.getPrimaryTaxonomyId(i.name),learnMoreLink:n.selectLink("https://yoa.st/primary-category-more")}})),(0,p.withDispatch)((e=>{const{setPrimaryTaxonomyId:t,updateReplacementVariable:s}=e("yoast-seo/editor");return{setPrimaryTaxonomyId:t,updateReplacementVariable:s}}))])(Ks);let Hs=null,Qs=null;const Zs=Us().div` margin: 16px 0 8px; `;class Gs extends u.Component{constructor(){super(),Hs&&Qs||(Hs=(0,l.get)(window.wpseoPrimaryCategoryL10n,"taxonomies",{}),Qs=(0,l.values)(Hs).map((e=>e.name))),this.state={exceptionCaught:!1,error:null}}componentDidCatch(e){this.setState({exceptionCaught:!0,error:e})}taxonomyHasPrimaryTermSupport(){return Qs.includes(this.props.slug)}render(){const{slug:e,OriginalComponent:t}=this.props;if(this.state.exceptionCaught){const e=(0,l.get)(this.state,"error.stack");return(0,c.createElement)(u.Fragment,null,(0,c.createElement)(t,{...this.props}),(0,c.createElement)(Zs,null,(0,g.sprintf)(/* translators: %s expands to Yoast SEO. */ (0,g.__)("An error occurred loading the %s primary taxonomy picker.","wordpress-seo"),"Yoast SEO")),e&&(0,c.createElement)(d.ClipboardButton,{isLarge:!0,text:e},(0,g.__)("Copy error","wordpress-seo")))}return this.taxonomyHasPrimaryTermSupport()?(0,c.createElement)(u.Fragment,null,(0,c.createElement)(t,{...this.props}),(0,c.createElement)(Ws,{taxonomy:Hs[e]})):(0,c.createElement)(t,{...this.props})}}Gs.propTypes={OriginalComponent:f().func.isRequired,slug:f().string.isRequired};const Js=Gs;let Xs=null;const en=()=>{if(null===Xs){const e=(0,p.dispatch)("yoast-seo/editor").runAnalysis;Xs=window.YoastSEO.app&&window.YoastSEO.app.pluggable?window.YoastSEO.app.pluggable:new It(e)}return Xs},tn=(e,t,s)=>en().loaded?en()._applyModifications(e,t,s):t;function sn(){const{getAnalysisData:e,getEditorDataTitle:t,getIsFrontPage:s}=(0,p.select)("yoast-seo/editor");let n=e();n={...n,textTitle:t(),isFrontPage:s()};const i=function(e){return e.title=tn("data_page_title",e.title),e.title=tn("title",e.title),e.description=tn("data_meta_desc",e.description),e.text=tn("content",e.text),e}(n);return(0,h.applyFilters)("yoast.analysis.data",i)}(0,l.debounce)((async function(e,t){const{text:s,...n}=t,i=new De.Paper(s,n);try{const t=await e.analyze(i),{seo:s,readability:n,inclusiveLanguage:r}=t.result;if(s){const e=s[""];e.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(i,e.marks)})),e.results=Jt(e.results),(0,p.dispatch)("yoast-seo/editor").setSeoResultsForKeyword(i.getKeyword(),e.results),(0,p.dispatch)("yoast-seo/editor").setOverallSeoScore(e.score,i.getKeyword())}n&&(n.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(i,e.marks)})),n.results=Jt(n.results),(0,p.dispatch)("yoast-seo/editor").setReadabilityResults(n.results),(0,p.dispatch)("yoast-seo/editor").setOverallReadabilityScore(n.score)),r&&(r.results.forEach((e=>{e.getMarker=()=>()=>window.YoastSEO.analysis.applyMarks(i,e.marks)})),r.results=Jt(r.results),(0,p.dispatch)("yoast-seo/editor").setInclusiveLanguageResults(r.results),(0,p.dispatch)("yoast-seo/editor").setOverallInclusiveLanguageScore(r.score)),(0,h.doAction)("yoast.analysis.run",t,{paper:i})}catch(e){}}),500);const nn=()=>{const{getContentLocale:e}=(0,p.select)("yoast-seo/editor"),t=((...e)=>()=>e.map((e=>e())))(e,sn),s=(()=>{const{setEstimatedReadingTime:e,setFleschReadingEase:t,setTextLength:s}=(0,p.dispatch)("yoast-seo/editor"),n=(0,l.get)(window,"YoastSEO.analysis.worker.runResearch",l.noop);return()=>{const i=De.Paper.parse(sn());n("readingTime",i).then((t=>e(t.result))),n("getFleschReadingScore",i).then((e=>{e.result&&t(e.result)})),n("wordCountInText",i).then((e=>s(e.result)))}})();return setTimeout(s,1500),((e,t)=>{let s=e();return()=>{const n=e();(0,l.isEqual)(n,s)||(s=n,t((0,l.clone)(n)))}})(t,s)};window.wpseoPostScraperL10n=window.wpseoScriptData.metabox,window.wpseoShortcodePluginL10n=window.wpseoScriptData.analysis.plugins.shortcodes,window.YoastSEO=window.YoastSEO||{},r()((()=>{var t;(function(e){function t(e){e&&(e.focus(),e.click())}function s(){if(e(".wpseo-meta-section").length>0){const t=e(".wpseo-meta-section-link");e(".wpseo-metabox-menu li").filter((function(){return"#wpseo-meta-section-content"===e(this).find(".wpseo-meta-section-link").attr("href")})).addClass("active").find("[role='tab']").addClass("yoast-active-tab"),e("#wpseo-meta-section-content, .wpseo-meta-section-react").addClass("active"),t.on("click",(function(s){var n=e(this).attr("id"),i=e(this).attr("href"),r=e(i);s.preventDefault(),e(".wpseo-metabox-menu li").removeClass("active").find("[role='tab']").removeClass("yoast-active-tab"),e(".wpseo-meta-section").removeClass("active"),e(".wpseo-meta-section-react.active").removeClass("active"),"#wpseo-meta-section-content"===i&&e(".wpseo-meta-section-react").addClass("active"),r.addClass("active"),e(this).parent("li").addClass("active").find("[role='tab']").addClass("yoast-active-tab");const o=function(e,t={}){return new CustomEvent("YoastSEO:metaTabChange",{detail:t})}(0,{metaTabId:n});window.dispatchEvent(o),this&&(t.attr({"aria-selected":"false",tabIndex:"-1"}),this.removeAttribute("tabindex"),this.setAttribute("aria-selected","true"))}))}}window.wpseoInitTabs=s,window.wpseo_init_tabs=s,e(".wpseo-meta-section").each((function(t,s){e(s).find(".wpseotab:first").addClass("active")})),window.wpseo_init_tabs(),function(){const s=e(".yoast-aria-tabs"),n=s.find("[role='tab']"),i=s.attr("aria-orientation")||"horizontal";n.attr({"aria-selected":!1,tabIndex:"-1"}),n.filter(".yoast-active-tab").removeAttr("tabindex").attr("aria-selected","true"),n.on("keydown",(function(s){-1!==[32,35,36,37,38,39,40].indexOf(s.which)&&("horizontal"===i&&-1!==[38,40].indexOf(s.which)||"vertical"===i&&-1!==[37,39].indexOf(s.which)||function(s,n){const i=s.which,r=n.index(e(s.target));switch(i){case 32:s.preventDefault(),t(n[r]);break;case 35:s.preventDefault(),t(n[n.length-1]);break;case 36:s.preventDefault(),t(n[0]);break;case 37:case 38:s.preventDefault(),t(n[r-1<0?n.length-1:r-1]);break;case 39:case 40:s.preventDefault(),t(n[r+1===n.length?0:r+1])}}(s,n))}))}()})(a()),"undefined"!=typeof wpseoPrimaryCategoryL10n&&function(e){var t,s,n=wpseoPrimaryCategoryL10n.taxonomies;function i(t){return e("#yoast-wpseo-primary-"+t).val()}function r(t,s){e("#yoast-wpseo-primary-"+t).val(s).trigger("change");const n=(0,p.dispatch)("yoast-seo/editor");if(n){const i=parseInt(s,10);n.setPrimaryTaxonomyId(t,i),"category"===t&&n.updateReplacementVariable("primary_category",function(t){const s=e("#category-all").find(`#category-${t} > label`);if(0===s.length)return"";const n=s.clone();return n.children().remove(),n.text().trim()}(i))}}function o(r){var o,a,l;o=e("#"+r+'checklist input[type="checkbox"]:checked');var c=e("#"+r+"checklist li");c.removeClass("wpseo-term-unchecked wpseo-primary-term wpseo-non-primary-term"),e(".wpseo-primary-category-label").remove(),c.addClass("wpseo-term-unchecked"),o.length<=1||o.each((function(o,c){c=e(c),(a=c.closest("li")).removeClass("wpseo-term-unchecked"),1!==e(c).closest("li").children(".wpseo-make-primary-term").length&&function(s,i){var r,o;r=e(i).closest("label"),o=t({taxonomy:n[s],term:r.text()}),r.after(o)}(r,c),c.val()===i(r)?(a.addClass("wpseo-primary-term"),(l=c.closest("label")).find(".wpseo-primary-category-label").remove(),l.append(s({taxonomy:n[r]}))):a.addClass("wpseo-non-primary-term")}))}function a(t){r(t,e("#"+t+'checklist input[type="checkbox"]:checked:first').val()),o(t)}function d(e){""===i(e)&&a(e)}e.fn.initYstSEOPrimaryCategory=function(){return this.each((function(t,s){const n=e("#"+s.name+"div");var l;o(s.name),n.on("click",'input[type="checkbox"]',(l=s.name,function(){!1===e(this).prop("checked")&&e(this).val()===i(l)&&a(l),d(l),o(l)})),n.on("wpListAddEnd","#"+s.name+"checklist",function(e){return function(){d(e),o(e)}}(s.name)),n.on("click",".wpseo-make-primary-term",function(t){return function(s){var n;n=e(s.currentTarget).siblings("label").find("input"),r(t,n.val()),o(t),n.trigger("focus")}}(s.name))}))},t=wp.template("primary-term-ui"),s=wp.template("primary-term-screen-reader"),e(_.values(n)).initYstSEOPrimaryCategory(),Be()&&(0,l.get)(window,"wp.hooks.addFilter",l.noop)("editor.PostTaxonomyType","yoast-seo",(e=>class extends u.Component{render(){return(0,c.createElement)(Js,{OriginalComponent:e,...this.props})}}))}(a());const s=function(){const t=(0,p.registerStore)("yoast-seo/editor",{reducer:(0,p.combineReducers)(he.reducers),selectors:he.selectors,actions:(0,l.pickBy)(he.actions,(e=>"function"==typeof e)),controls:e});return(e=>{e.dispatch(he.actions.setSettings({socialPreviews:{sitewideImage:window.wpseoScriptData.sitewideSocialImage,siteName:window.wpseoScriptData.metabox.site_name,contentImage:window.wpseoScriptData.metabox.first_content_image,twitterCardType:window.wpseoScriptData.metabox.twitterCardType},snippetEditor:{baseUrl:window.wpseoScriptData.metabox.base_url,date:window.wpseoScriptData.metabox.metaDescriptionDate,recommendedReplacementVariables:window.wpseoScriptData.analysis.plugins.replaceVars.recommended_replace_vars,siteIconUrl:window.wpseoScriptData.metabox.siteIconUrl}})),e.dispatch(he.actions.setSEMrushChangeCountry(window.wpseoScriptData.metabox.countryCode)),e.dispatch(he.actions.setSEMrushLoginStatus(window.wpseoScriptData.metabox.SEMrushLoginStatus)),e.dispatch(he.actions.setWincherLoginStatus(window.wpseoScriptData.metabox.wincherLoginStatus,!1)),e.dispatch(he.actions.setWincherWebsiteId(window.wpseoScriptData.metabox.wincherWebsiteId)),e.dispatch(he.actions.setWincherAutomaticKeyphaseTracking(window.wpseoScriptData.metabox.wincherAutoAddKeyphrases)),e.dispatch(he.actions.setDismissedAlerts((0,l.get)(window,"wpseoScriptData.dismissedAlerts",{}))),e.dispatch(he.actions.setCurrentPromotions((0,l.get)(window,"wpseoScriptData.currentPromotions",[]))),e.dispatch(he.actions.setIsPremium(Boolean((0,l.get)(window,"wpseoScriptData.metabox.isPremium",!1)))),e.dispatch(he.actions.setPostId(Number((0,l.get)(window,"wpseoScriptData.postId",null)))),e.dispatch(he.actions.setAdminUrl((0,l.get)(window,"wpseoScriptData.adminUrl",""))),e.dispatch(he.actions.setLinkParams((0,l.get)(window,"wpseoScriptData.linkParams",{}))),e.dispatch(he.actions.setPluginUrl((0,l.get)(window,"wpseoScriptData.pluginUrl",""))),e.dispatch(he.actions.setWistiaEmbedPermissionValue("1"===(0,l.get)(window,"wpseoScriptData.wistiaEmbedPermission",!1)))})(t),t}();window.yoast.initEditorIntegration(s);const n=new window.yoast.EditorData(l.noop,s);n.initialize(window.wpseoScriptData.analysis.plugins.replaceVars.replace_vars,window.wpseoScriptData.analysis.plugins.replaceVars.hidden_replace_vars),Fs(a(),s,n),null!==(t=window.wpseoScriptData)&&void 0!==t&&t.isElementorEditor||function(e){var t,s,n,i=function(e){this._app=e,this.featuredImage=null,this.pluginName="addFeaturedImagePlugin",this.registerPlugin(),this.registerModifications()};function r(){e("#yst_opengraph_image_warning").remove(),s.removeClass("yoast-opengraph-image-notice")}i.prototype.setFeaturedImage=function(e){this.featuredImage=e,this._app.pluginReloaded(this.pluginName)},i.prototype.removeFeaturedImage=function(){this.setFeaturedImage(null)},i.prototype.registerPlugin=function(){this._app.registerPlugin(this.pluginName,{status:"ready"})},i.prototype.registerModifications=function(){this._app.registerModification("content",this.addImageToContent.bind(this),this.pluginName,10)},i.prototype.addImageToContent=function(e){return null!==this.featuredImage&&(e+=this.featuredImage),e};var o=wp.media.featuredImage.frame();if("undefined"==typeof YoastSEO)return;if(t=new i(YoastSEO.app),s=e("#postimagediv"),n=s.find(".hndle"),o.on("select",(function(){var i,a,l;!function(t){var i=t.state().get("selection").first().toJSON();const o=(0,g.__)("SEO issue: The featured image should be at least 200 by 200 pixels to be picked up by Facebook and other social media sites.","wordpress-seo");i.width<200||i.height<200?0===e("#yst_opengraph_image_warning").length&&(e('

    '+o+"

    ").insertAfter(n),s.addClass("yoast-opengraph-image-notice"),Ne()(o,"assertive")):r()}(o),l=(a=o.state().get("selection").first()).get("alt"),i=''+l+'',t.setFeaturedImage(i)})),s.on("click","#remove-post-thumbnail",(function(){t.removeFeaturedImage(),r()})),void 0!==e("#set-post-thumbnail > img").prop("src")&&t.setFeaturedImage(e("#set-post-thumbnail ").html()),!Be())return;let a,l;(0,p.subscribe)((()=>{const e=(0,p.select)("core/editor").getEditedPostAttribute("featured_media");if(function(e){return"number"==typeof e&&e>0}(e)&&(a=(0,p.select)("core").getMedia(e),void 0!==a&&a!==l)){l=a;const e=`${a.alt_text}`;t.setFeaturedImage(e)}}))}(a()),function(e){function t(){e("#copy-home-meta-description").on("click",(function(){e("#open_graph_frontpage_desc").val(e("#meta_description").val())}))}function s(){var t=e("#wpseo-conf");if(t.length){var s=t.attr("action").split("#")[0];t.attr("action",s+window.location.hash)}}function n(){var t=window.location.hash.replace("#top#","");-1!==t.search("#top")&&(t=window.location.hash.replace("#top%23","")),""!==t&&"#"!==t.charAt(0)||(t=e(".wpseotab").attr("id")),e("#"+t).addClass("active"),e("#"+t+"-tab").addClass("nav-tab-active").trigger("click")}function i(t){const s=e("#noindex-author-noposts-wpseo-container");t?s.show():s.hide()}e.fn._wpseoIsInViewport=function(){const t=e(this).offset().top,s=t+e(this).outerHeight(),n=e(window).scrollTop(),i=n+e(window).height();return t>n&&s{e(this).is(":checked")||i(!1)})),r.on("change",(()=>{e(this).is(":checked")||i(!0)})),e("#disable-date input[type='radio']").on("change",(function(){e(this).is(":checked")&&e("#date-archives-titles-metas-content").toggle("off"===e(this).val())})).trigger("change"),e("#disable-attachment input[type='radio']").on("change",(function(){e(this).is(":checked")&&e("#media_settings").toggle("off"===e(this).val())})).trigger("change"),e("#disable-post_format").on("change",(function(){e("#post_format-titles-metas").toggle(e(this).is(":not(:checked)"))})).trigger("change"),e("#wpseo-tabs").find("a").on("click",(function(t){var s,n,i,r=!0;if(s=e(this),n=!!e("#first-time-configuration-tab").filter(".nav-tab-active").length,i=!!s.filter("#first-time-configuration-tab").length,n&&!i&&window.isStepBeingEdited&&(r=confirm((0,g.__)("There are unsaved changes in one or more steps. Leaving means that those changes may not be saved. Are you sure you want to leave?","wordpress-seo"))),r){window.isStepBeingEdited=!1,e("#wpseo-tabs").find("a").removeClass("nav-tab-active"),e(".wpseotab").removeClass("active");var o=e(this).attr("id").replace("-tab",""),a=e("#"+o);a.addClass("active"),e(this).addClass("nav-tab-active"),a.hasClass("nosave")?e("#wpseo-submit-container").hide():e("#wpseo-submit-container").show(),e(window).trigger("yoast-seo-tab-change"),"first-time-configuration"===o?(e(".notice-yoast").slideUp(),e(".yoast_premium_upsell").slideUp(),e("#sidebar-container").hide()):(e(".notice-yoast").slideDown(),e(".yoast_premium_upsell").slideDown(),e("#sidebar-container").show())}else t.preventDefault(),e("#first-time-configuration-tab").trigger("focus")})),e("#yoast-first-time-configuration-notice a").on("click",(function(){e("#first-time-configuration-tab").click()})),e("#company_or_person").on("change",(function(){var t=e(this).val();"company"===t?(e("#knowledge-graph-company").show(),e("#knowledge-graph-person").hide()):"person"===t?(e("#knowledge-graph-company").hide(),e("#knowledge-graph-person").show()):(e("#knowledge-graph-company").hide(),e("#knowledge-graph-person").hide())})).trigger("change"),e(".switch-yoast-seo input").on("keydown",(function(e){"keydown"===e.type&&13===e.which&&e.preventDefault()})),e("body").on("click","button.toggleable-container-trigger",(t=>{const s=e(t.currentTarget),n=s.parent().siblings(".toggleable-container");n.toggleClass("toggleable-container-hidden"),s.attr("aria-expanded",!n.hasClass("toggleable-container-hidden")).find("span").toggleClass("dashicons-arrow-up-alt2 dashicons-arrow-down-alt2")}));const a=e("#opengraph"),c=e("#wpseo-opengraph-settings");a.length&&c.length&&(c.toggle(a[0].checked),a.on("change",(e=>{c.toggle(e.target.checked)}))),t(),n(),function(){if(!e("#enable_xml_sitemap input[type=radio]").length)return;const t=e("#yoast-seo-sitemaps-disabled-warning");e("#enable_xml_sitemap input[type=radio]").on("change",(function(){"off"===this.value?t.show():t.hide()}))}(),function(){const t=e("#wpseo-submit-container-float"),s=e("#wpseo-submit-container-fixed");if(!t.length||!s.length)return;function n(){t._wpseoIsInViewport()?s.hide():s.show()}e(window).on("resize scroll",(0,l.debounce)(n,100)),e(window).on("yoast-seo-tab-change",n);const i=e(".wpseo-message");i.length&&window.setTimeout((()=>{i.fadeOut()}),5e3),n()}()}))}(a()),(()=>{if((0,p.select)("yoast-seo/editor").getPreference("isInsightsEnabled",!1))(0,p.dispatch)("yoast-seo/editor").loadEstimatedReadingTime(),(0,p.subscribe)((0,l.debounce)(nn(),1500,{maxWait:3e3}))})(),window.wpseoScriptData.postType&&!["attachment"].includes(window.wpseoScriptData.postType)&&(()=>{const e=(0,p.select)(ue).getIsPremium(),t=(0,p.select)(ue).getIsWooSeoUpsell(),s=(0,p.select)(ue).getIsWooSeoUpsellTerm(),n=!e||t||s;(0,h.addFilter)("yoast.replacementVariableEditor.additionalButtons","yoast/yoast-seo-premium/AiGenerator",((e,{fieldId:t})=>(n&&e.push((0,c.createElement)(d.Fill,{name:`yoast.replacementVariableEditor.additionalButtons.${t}`},(0,c.createElement)(pe,{fieldId:t}))),e)))})()}))})()})();js/dist/dynamic-blocks.js000064400000002020147206602470011362 0ustar00(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,r=window.wp.blockEditor,s=window.wp.blocks,o=window.wp.serverSideRender;var a=e.n(o);const n=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"version":"22.8","name":"yoast-seo/breadcrumbs","title":"Yoast Breadcrumbs","description":"Adds the Yoast SEO breadcrumbs to your template or content.","category":"yoast-internal-linking-blocks","icon":"admin-links","keywords":["SEO","breadcrumbs","internal linking","site structure"],"textdomain":"wordpress-seo","attributes":{"className":{"type":"string"}},"example":{"attributes":{}}}');(0,s.registerBlockType)(n,{edit:e=>{const s=(0,r.useBlockProps)();return(0,t.createElement)("div",{...s},(0,t.createElement)(a(),{block:"yoast-seo/breadcrumbs",attributes:e.attributes}))},save:()=>null})})();js/dist/indexation.js000064400000016301147206602470010634 0ustar00(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{for(var s in n)e.o(n,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,n=window.wp.element,s=window.jQuery;var r=e.n(s);const i=window.wp.i18n,o=window.yoast.componentsNew,a=window.yoast.styleGuide,d=window.yoast.propTypes;var l=e.n(d);const c=window.yoast.helpers,p=window.yoast.styledComponents;var u=e.n(p);class g extends Error{constructor(e,t,n,s,r){super(e),this.name="RequestError",this.url=t,this.method=n,this.statusCode=s,this.stackTrace=r}}const{stripTagsFromHtmlString:h}=c.strings,m=["a","p"],w=u().div` margin-top: 8px; `,x=u().pre` overflow-x: scroll; max-width: 500px; border: 1px solid; padding: 16px; `;function y({title:e,value:n}){return n?(0,t.createElement)("p",null,(0,t.createElement)("strong",null,e),(0,t.createElement)("br",null),n):null}function E({title:e,value:n}){return n?(0,t.createElement)("details",null,(0,t.createElement)("summary",null,e),(0,t.createElement)(x,null,n)):null}function S({message:e,error:n}){return(0,t.createElement)(o.Alert,{type:"error"},(0,t.createElement)("div",{dangerouslySetInnerHTML:{__html:h(e,m)}}),(0,t.createElement)("details",null,(0,t.createElement)("summary",null,(0,i.__)("Error details","wordpress-seo")),(0,t.createElement)(w,null,(0,t.createElement)(y,{title:(0,i.__)("Request URL","wordpress-seo"),value:n.url}),(0,t.createElement)(y,{title:(0,i.__)("Request method","wordpress-seo"),value:n.method}),(0,t.createElement)(y,{title:(0,i.__)("Status code","wordpress-seo"),value:n.statusCode}),(0,t.createElement)(y,{title:(0,i.__)("Error message","wordpress-seo"),value:n.message}),(0,t.createElement)(E,{title:(0,i.__)("Response","wordpress-seo"),value:n.parseString}),(0,t.createElement)(E,{title:(0,i.__)("Error stack trace","wordpress-seo"),value:n.stackTrace}))))}y.propTypes={title:l().string.isRequired,value:l().any},y.defaultProps={value:""},E.propTypes={title:l().string.isRequired,value:l().string},E.defaultProps={value:""},S.propTypes={message:l().string.isRequired,error:l().oneOfType([l().instanceOf(Error),l().instanceOf(g)]).isRequired};class f extends Error{constructor(e,t){super(e),this.name="ParseError",this.parseString=t}}const _="idle",I="in_progress",A="errored",v="completed";class T extends n.Component{constructor(e){super(e),this.settings=yoastIndexingData,this.state={state:_,processed:0,error:null,amount:parseInt(this.settings.amount,10),firstTime:"1"===this.settings.firstTime},this.startIndexing=this.startIndexing.bind(this),this.stopIndexing=this.stopIndexing.bind(this)}async doIndexingRequest(e,t){const n=await fetch(e,{method:"POST",headers:{"X-WP-Nonce":t}}),s=await n.text();let r;try{r=JSON.parse(s)}catch(e){throw new f("Error parsing the response to JSON.",s)}if(!n.ok){const t=r.data?r.data.stackTrace:"";throw new g(r.message,e,"POST",n.status,t)}return r}async doPreIndexingAction(e){"function"==typeof this.props.preIndexingActions[e]&&await this.props.preIndexingActions[e](this.settings)}async doPostIndexingAction(e,t){"function"==typeof this.props.indexingActions[e]&&await this.props.indexingActions[e](t.objects,this.settings)}async doIndexing(e){let t=this.settings.restApi.root+this.settings.restApi.indexing_endpoints[e];for(;this.isState(I)&&!1!==t;)try{await this.doPreIndexingAction(e);const s=await this.doIndexingRequest(t,this.settings.restApi.nonce);await this.doPostIndexingAction(e,s),(0,n.flushSync)((()=>{this.setState((e=>({processed:e.processed+s.objects.length,firstTime:!1})))})),t=s.next_url}catch(e){(0,n.flushSync)((()=>{this.setState({state:A,error:e,firstTime:!1})}))}}async index(){for(const e of Object.keys(this.settings.restApi.indexing_endpoints))await this.doIndexing(e);this.isState(A)||this.isState(_)||this.completeIndexing()}async startIndexing(){this.setState({processed:0,state:I},this.index)}completeIndexing(){this.setState({state:v})}stopIndexing(){this.setState((e=>({state:_,processed:0,amount:e.amount-e.processed})))}componentDidMount(){var e,t;if(!this.settings.disabled&&(this.props.indexingStateCallback(0===this.state.amount?"completed":this.state.state),"true"===new URLSearchParams(window.location.search).get("start-indexation"))){const n=function(e,t){const n=new URL(e);return n.searchParams.delete("start-indexation"),n.href}(window.location.href);null,e=document.title,t=n,window.history.pushState(null,e,t),this.startIndexing()}}componentDidUpdate(e,t){this.state.state!==t.state&&this.props.indexingStateCallback(this.state.state)}isState(e){return this.state.state===e}renderFirstIndexationNotice(){return(0,t.createElement)(o.Alert,{type:"info"},(0,i.__)("This feature includes and replaces the Text Link Counter and Internal Linking Analysis","wordpress-seo"))}renderStartButton(){return(0,t.createElement)(o.NewButton,{variant:"primary",onClick:this.startIndexing},(0,i.__)("Start SEO data optimization","wordpress-seo"))}renderStopButton(){return(0,t.createElement)(o.NewButton,{variant:"secondary",onClick:this.stopIndexing},(0,i.__)("Stop SEO data optimization","wordpress-seo"))}renderDisabledTool(){return(0,t.createElement)(n.Fragment,null,(0,t.createElement)("p",null,(0,t.createElement)(o.NewButton,{variant:"secondary",disabled:!0},(0,i.__)("Start SEO data optimization","wordpress-seo"))),(0,t.createElement)(o.Alert,{type:"info"},(0,i.__)("SEO data optimization is disabled for non-production environments.","wordpress-seo")))}renderProgressBar(){return(0,t.createElement)(n.Fragment,null,(0,t.createElement)(o.ProgressBar,{style:{height:"16px",margin:"8px 0"},progressColor:a.colors.$color_pink_dark,max:parseInt(this.state.amount,10),value:this.state.processed}),(0,t.createElement)("p",{style:{color:a.colors.$palette_grey_text}},(0,i.__)("Optimizing SEO data... This may take a while.","wordpress-seo")))}renderErrorAlert(){return(0,t.createElement)(S,{message:yoastIndexingData.errorMessage,error:this.state.error})}renderTool(){return(0,t.createElement)(n.Fragment,null,this.isState(I)&&this.renderProgressBar(),this.isState(A)&&this.renderErrorAlert(),this.isState(_)&&this.state.firstTime&&this.renderFirstIndexationNotice(),this.isState(I)?this.renderStopButton():this.renderStartButton())}render(){return this.settings.disabled?this.renderDisabledTool():this.isState(v)||0===this.state.amount?(0,t.createElement)(o.Alert,{type:"success"},(0,i.__)("SEO data optimization complete","wordpress-seo")):this.renderTool()}}T.propTypes={indexingActions:l().object,preIndexingActions:l().object,indexingStateCallback:l().func},T.defaultProps={indexingActions:{},preIndexingActions:{},indexingStateCallback:()=>{}};const b=T;let P;function O(){P||(P=document.getElementById("yoast-seo-indexing-action")),P&&(0,n.render)((0,t.createElement)(b,{preIndexingActions:window.yoast.indexing.preIndexingActions,indexingActions:window.yoast.indexing.indexingActions}),P)}window.yoast=window.yoast||{},window.yoast.indexing=window.yoast.indexing||{},window.yoast.indexing.preIndexingActions={},window.yoast.indexing.indexingActions={},window.yoast.indexing.registerPreIndexingAction=(e,t)=>{window.yoast.indexing.preIndexingActions[e]=t,O()},window.yoast.indexing.registerIndexingAction=(e,t)=>{window.yoast.indexing.indexingActions[e]=t,O()},r()((function(){O()}))})();js/dist/workouts.js000064400000115001147206602470010364 0ustar00(()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var a in o)e.o(o,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:o[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{CLEAR_ACTIVE_WORKOUT:()=>te,CLEAR_INDEXABLES:()=>re,CLEAR_INDEXABLES_IN_STEPS:()=>le,FINISH_STEPS:()=>J,MOVE_INDEXABLES:()=>ae,OPEN_WORKOUT:()=>ee,REGISTER_WORKOUT:()=>H,REVISE_STEP:()=>Q,SET_WORKOUTS:()=>Z,TOGGLE_STEP:()=>oe,TOGGLE_WORKOUT:()=>Y,clearActiveWorkout:()=>de,clearIndexables:()=>he,clearIndexablesInSteps:()=>ke,finishSteps:()=>se,initWorkouts:()=>ue,moveIndexables:()=>we,openWorkout:()=>pe,registerWorkout:()=>ne,reviseStep:()=>ce,toggleStep:()=>me,toggleWorkout:()=>ie});var o={};e.r(o),e.d(o,{getActiveWorkout:()=>Se,getFinishedSteps:()=>Ee,getFinishedWorkouts:()=>ye,getIndexablesByStep:()=>ge,getLoading:()=>ze,getWorkouts:()=>fe});const a=window.React,r=window.wp.data,l=window.wp.components,n=window.wp.domReady;var s=e.n(n);const c=window.wp.apiFetch;var i=e.n(c);const u=window.wp.compose,p=window.lodash,d=window.yoast.propTypes;var m=e.n(d);const w=window.wp.i18n,h=window.wp.element,k=window.yoast.componentsNew;function f(e){return(0,a.createElement)(l.Slot,{name:e.name},(t=>0===t.length?e.children:t))}f.propTypes={name:m().string.isRequired,children:m().oneOfType([m().node,m().arrayOf(m().node)])},f.defaultProps={children:null};const E=window.yoast.helpers;function g({name:e,title:t,subtitle:o,usps:l,id:n,image:s,finishableSteps:c,finishedSteps:i,upsellLink:u,upsellText:p,workout:d,badges:m}){const{openWorkout:f,toggleWorkout:g}=(0,r.useDispatch)("yoast-seo/workouts"),y=(0,r.useSelect)((e=>e("yoast-seo/workouts").getActiveWorkout()),[]),[z,S]=(0,h.useState)(!1),b=d,v=s;(0,h.useEffect)((()=>{c&&i&&i.length===c.length?S(!0):S(!1)}),[i,c]);const M=(0,h.useMemo)((()=>i&&0!==i.length?i.length{f(e),z&&g(e)}),[d,z,f,g]),x=(0,E.makeOutboundLink)(),_=p||(0,w.sprintf)(/* translators: %s : Expands to the add-on name. */ (0,w.__)("Unlock with %s!","wordpress-seo"),"Premium"),A=d?"":" card-disabled";return(0,a.createElement)(h.Fragment,null,!y&&(0,a.createElement)("div",{id:n,className:`card card-small${A}`},(0,a.createElement)("h2",null,t," ",m),(0,a.createElement)("h3",null,o),(0,a.createElement)("div",{className:"workout-card-content-flex"},(0,a.createElement)("ul",{id:`${n}-usp-list`,className:"yoast-list--usp"},l.map(((e,t)=>(0,a.createElement)("li",{id:`${n}-usp-${t}`,key:`${n}-${t}`},e)))),s&&(0,a.createElement)(v,null)),(0,a.createElement)("span",null,d&&(0,a.createElement)(k.NewButton,{id:`${n}-action-button`,className:"yoast-button yoast-button--"+(z?"secondary":"primary"),onClick:B},M),!d&&(0,a.createElement)(x,{id:`${n}-upsell-button`,href:u,className:"yoast-button yoast-button-upsell","data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2"},_,(0,a.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),c&&i&&(0,a.createElement)("div",{className:"workout-card-progress"},(0,a.createElement)(k.ProgressBar,{id:`${n}-progress`,max:c.length,value:i.length}),(0,a.createElement)("label",{htmlFor:`${n}-progress`},(0,a.createElement)("i",null,(0,w.sprintf)( // translators: %1$s: number of finished steps, %2$s: number of finishable steps (0,w.__)("%1$s/%2$s steps completed","wordpress-seo"),i.length,c.length)))))),d&&y===e&&(0,a.createElement)(b,null))}var y;function z(){return z=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.createElement("svg",z({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 296 317"},e),y||(y=a.createElement("g",{fill:"none",transform:"matrix(-1 0 0 1 295.274 .96)"},a.createElement("circle",{cx:131.18,cy:184.261,r:131.18,fill:"#F0ECF0"}),a.createElement("g",{fill:"#EAB881"},a.createElement("path",{d:"M236.42 96.56c-.15-.43-.29-.87-.44-1.3.15.43.29.87.44 1.3zm-31.98 59.96a11 11 0 0 0-2.11.82c.67-.3 1.4-.56 2.11-.82zm-2.11.82a58.65 58.65 0 0 0-6 2.81c2.67-1.11 4.56-2.11 6-2.81z"}),a.createElement("path",{d:"M293.49 164.27c-8.58-10.51-1.05-27.75-34.52-86.31-3-5.22-5.26-14.52-12.85-17.58-9.11-3.67-12.77-9.16-21.89-12.83-6.85-2.76-4-1.36-3.21-.49 1.49 1.67-2-1.31-5.72 7.13-.38.85 2.86 1.63 4 5 .36 1.07.49 1.14 1.23 1.33 4.71 1.2 6.52 6.89 4.2 10.06-.7-1.43.18-6-4.68-6.36 2 1.44 4.06 3.42 4 5.88 9.4 16.64 17.56 14 20 15 12.43 4.92-17.28 64.57 23 86.13-7.34-1.94-14.31-5.46-23.92-1.33 7.28-5.53 2.46-7.57.86-10.89-2.17-2.92-2.29-11.71-2.6-22.62a103.2 103.2 0 0 0 1.09 20.32 54.8 54.8 0 0 0-38-.12c5.19-1.21 15.45 48.34 20.15 53.9 3.8-1.4 23-8.57 35.17-14.11 21.52-9.81 34.94-25.76 35.44-28.31.24-1.47-.85-2.71-1.75-3.8zm-41.62-99.13c.06.1 8.87 19.59.56 1.21-.2-.44-.38-.84-.56-1.21z"}),a.createElement("path",{d:"M215.17 56.04c.46.17 2 1.49-.23-.93-.88 2.39-.6 4.42 2 6.74 1.06-3 0-3.51-1.77-5.81zm-4.33 23.82c.28-.07.36.05-.35-.38l.35.38z"})),a.createElement("path",{fill:"#D38053",d:"M203.74 73.77c0 .4-.33-.06 2.94 2.38l-2.94-2.38zm5.26 4.27c2.3 2 3.13 2.53 2.19 1.77L209 78.04zm6.17-22c.05.06 1.79 2.31 1.83 2.38-.49-1.27-.83-2.01-1.83-2.38zm-.52 11.73c1.38-.08.73 1.34 2.16-.5.52-.67 1.91-3.21.71-2.6.56-2.33-.09-6.71-.19-4.75-.13 2.46-3.7 10.77-8.67 9.87a7.6 7.6 0 0 0 3.25.22c2.74-.39 2.36-.97 2.74-2.24zm-5.99 2.02a6.27 6.27 0 0 1-1.42-.59c.42.309.906.51 1.42.59z"}),a.createElement("path",{fill:"#D38053",d:"M214.2 69.33a4.13 4.13 0 0 1-.85 3.73c3.38-1.27 3.66-3.51 2.48-4.78-1.18-1.27-1.34.03-1.63 1.05zm-32.31 1.85c.11.84 2.61 2.33 3.3 2.78a13.33 13.33 0 0 1-3.3-2.78zm10 4.39c-.21.13-.45.1.31 0-.28-.12-.13-.1-.31 0zm-6.51-1.53a29.79 29.79 0 0 0 4.51 2.28c2.54-1.52.8.82-4.51-2.28z"}),a.createElement("path",{fill:"#EAB881",d:"M202.61 77.13c-.91.35-5.67.26-10.41-1.57-6.74 1-6.41 12.08-1 12.4 8.18.48 10.11 3 13.48 1.92 6.82-2.28 2.4-11.62-2.07-12.75z"}),a.createElement("path",{fill:"#D38053",d:"M217.52 64.67a4.92 4.92 0 0 1 2.54-.48c4.87.36 4 5 4.68 6.36 2.31-3.16.52-8.86-4.2-10.06-2.25-.57.56-2.91-7.86-7.27a10.79 10.79 0 0 1 4.84 11.45zm15.23 112.51c-6.79 1.78-17.9 1.65-21-5.2 3.71 11.1 9 26.86 12.86 37.68 2.88-.89 7.41-1.86 8.89-3.4-3.52-4.16-8.67-10.41-8.74-15.89-.07-5.48 2.92-11.16 7.99-13.19zm-26.31-20.36c-.14.17-.15 0 .53 1.27-.18-.46-.35-.89-.53-1.27z"}),a.createElement("path",{fill:"#D38053",d:"M246.11 86.55c-2.26-3.64-4.21.58 2.23-3.3-10.49 4.56-18.5-2.9-24.34-13.21-.05 1.82-1.23 3.13-2.61 4.36-9.64 8.64-10.89 4.95-12.39 3.64-8-7-3.86-2.44-6.09-1-.71.46 4.08 1 5.31 7.11a5.26 5.26 0 0 1-2.67 5.38c7.41 5.8 14.7 2.46 25.68-4.09 14.67 22.17 7.38 66.27 12.78 73.54 1.6 3.32 6.42 5.36-.86 10.89 9.61-4.13 16.58-.61 23.92 1.33-37.63-20.16-14.29-73.91-20.96-84.65z"}),a.createElement("path",{fill:"#A52A6A",d:"M190.92 211.52a81.3 81.3 0 0 0-9.26-12.14c6.41 7.94 17.18 24.84 9.26 12.14z"}),a.createElement("path",{fill:"#A52A6A",d:"M205.85 156.04c-31.36 13.6-26.45 13.21-42 8.34-18.87-5.91-37.14-.76-32.1-1.07 11.82-.72 29.07 49.31 35.44 66.88l62.17-10.35c.64 7.64-20.9-59.34-23.51-63.8z"}),a.createElement("path",{fill:"#7C2050",d:"M214.23 180.31c-8.73 13.9-32.09 11.23-35.71-4.78 8 32.54 8.23 20.07-9.5 9.69 25.36 25.8 22.47 41.74 28.27 44.5 3.49 1.65 13.65-3.77 26.3-7.69 3.3-1 4.88-1.61 4.76-2.19l-14.12-39.53z"}),a.createElement("path",{fill:"#EAB881",d:"M192.93 72.9a3 3 0 0 1-.92 2.58 25.5 25.5 0 0 0 9.52 1.8c2.47-.02.6.27-8.6-4.38z"}),a.createElement("path",{fill:"#EAB881",d:"M220.06 64.19c-3.36-.25-1 1.37-4.23 4.09 1.18 1.27.9 3.51-2.48 4.78a4.07 4.07 0 0 0 .85-3.73c-2.67 1.26-5.78.74-7-.13 4.38 2.46 8.07-2.64 9.69-7.37-2.58-2.31-2.87-4.34-2-6.74-1.19-1.31-4.4-3.35.19-.49a25 25 0 0 1 2.94-5.18c1.27-1.71 5.22-.83 1.65-3.46-1.76-1.3-8.08-2.63-8.81-2.59a4.11 4.11 0 0 0-3.06 1.53c-4.33-1.59-9.29-1.86-11.78 2-4.24-3.58-9.38 2.15-7.77 6.69 1.44 4-1.86.15-7.06 14.62-1.27 3.54 5.07 7 8.77 7.58 7.7 1.25-18.75-8.93 2.24-.45 3.4 2.66 5.28 1.49 10.44 1.8 1.08-.47 1-1.92 1.05-3.09 0-1.84 6.81 8.52 10.32 5.44 8.71-4.45 13.99-9.58 6.05-15.3z"}),a.createElement("path",{fill:"#EAB881",d:"M192.51 69.95c.38.94.28.45 0-2.57a4.18 4.18 0 0 0 0 2.57z"}),a.createElement("path",{fill:"#D38053",d:"M194.68 57.19a15.87 15.87 0 0 0 .36-1.77c-.14.62-.25 1.18-.36 1.77z"}),a.createElement("path",{fill:"#A52A6A",d:"M59 167.04c-7.75 3.79-5.09 3.25-3.46 3.59a74.937 74.937 0 0 0 3.46-3.59zm69-3.33-.77-.17c.242.112.504.17.77.17z"}),a.createElement("path",{fill:"#A52A6A",d:"M200.06 262.44c1.23-17.17 10-35.47-31-77.22-8.89-9-13.84-13.86-31.69-19.13 6.35 7.45-.5 40.2-3.43 38.36-25.84-16.17-70.31-19.82-79.39-32.84 6.7-6.24-28.46 5.48-39.7 16.24-3.57 3.42-8.13 12.77-12.22 22.43 8.53 42.43 41.23 74.66 42.5 72 3.64-7.7 7.17-15.66 6.64-14.47 11.84 12.23 19.29 19.48 23.78 35.23A131 131 0 0 0 201 295.25c-.06-16.21-1.3-27.79-.94-32.81zm-145.78-.4c.1 0 0-.08-1.06 2.38.36-.79.71-1.59 1.06-2.38z"}),a.createElement("path",{fill:"#7C2050",d:"M53.29 267.84c5.65 7.53 33.06 17 44.3 27a280 280 0 0 1-35.06-36.66 203.23 203.23 0 0 0 49.54 9.79l-47.15-13.12c.667-5.7 1.333-11.393 2-17.08-3.35 4.49-11.74 22.07-13.63 30.07zm125.12-18.17c-12.42-1.14-45.91 6.44-50.79 17 18.32-12.22 51.08-16.81 54.55.56-.17-1.02 12.83-16.03-3.76-17.56z"}),a.createElement("path",{fill:"#EAB881",d:"M124.39 155.75c0 .21.1.43.16.64-.06-.21-.11-.43-.16-.64zm-57.05-39.34c-.59 0-.52-.25 0 1.56 1.53 2.37.74 1.51 0-1.56zm56.8 38.33.12.46-.12-.46zm-69.63 16.87c9.09 13 53.53 16.65 79.39 32.84 2.16 1.35 8.75-21.75 4.69-36.08-1.9-6.72-10.19-4.65-10.62-4.66-1 0-1.46-.64-1.83-1.66-.68-1.91-1.52-5.36-1.48-5.21-1.23 4.07-1.68 6.59-3.49 7.5-6.48 3.24-37.85-9.4-52.25-41 .62 2.53 1.06 5.26-1 3.64 3.8 16.54 5.92 26.64-13.41 44.63z"}),a.createElement("path",{fill:"#D38053",d:"M107.65 148.64c-20.65-5.6-33.72-12.94-37.72-32.87-3.26 1.48-3.22-1.55-1 7.6 14.4 31.56 45.77 44.21 52.25 41 2.15-1.07 3.54-7.31 3.38-8-2.21-8.85 2.2-2.53-16.91-7.73z"}),a.createElement("path",{fill:"#EAB881",d:"M140.75 66.31c-3-9.44-7.65-19.56-11.74-25.21a15.73 15.73 0 0 1-8.82-3.17c-7.48 8.26-15.45 4.83-16.65 0-1.68 5.91-9.62 9-14.83 5.74a6.35 6.35 0 0 0 4.78-2.95 18.42 18.42 0 0 1-15.21-2.12c-6-.8-4.66-.93-1.31 4.28 7.29 11.35 4.24 15-4.14 23.72C62.7 77.12 70.69 82.04 74 85.14c6.7 6.17 1.74 13-5.65 12.35 4.88 8.65 5.25 9.2 5.41 10.7.34 3.25-1 6.28-3.86 7.58 4 19.73 16.77 27.17 37.72 32.87 6.48 1.76 13.43 3.33 20 1.88 6.57-1.45 12.87-6.74 13.24-13.51.22-4.11-1.69-10-1.26-14 .68-6.64 5.94-5 6.24-21a112.12 112.12 0 0 0-5.1-35.45"}),a.createElement("path",{fill:"#D38053",d:"M121.63 67.04c-.14 1.89.33 11.5 1.43 14.94 2.29 7.11 7.13 6.6 10.67 8.13 4.36 1.9 5.64 6.66-1.58 8.75-3.85 1.12-7.92 2.25-11.82 1.33 1.4 1.63 3.81 1.84 6 1.84 14.73 0 15.5-9 13.14-12.25-3.67-5.06-12.38-1.31-15.58-12.81-.81-2.74.11-8.51-2.26-9.93z"}),a.createElement("path",{fill:"#000",d:"M110.39 112.3c-10.66-3-13.86-7.32-14.77-5.86-1.15 1.83 18.2 12.62 29.48 6.84-5.03.06-9.69.44-14.71-.98zM86.23 73.61c1.75 0 7-6 8.82-7.15 3.63-2.2 7.63-1.08 11.78-2-.51-1.34-3.51-5.43-4.18-5.29-3.17.68-9.2.3-9.2.3s-13.18 14.27-7.22 14.14zm39.37-15.85c-5.09.43-3.23 1.61-2.29 5.5a18.92 18.92 0 0 1 17.63 3.35c-5.31-8.47-9.64-9.34-15.34-8.85z"}),a.createElement("path",{fill:"#FFF",d:"M91.39 85.5c4.56 6.52 15.3 4.23 18.45-1.77-.92-5.69-16.99-9.33-18.45 1.77zm9.87 1.69c-6.09 3.06-8.18-7.15-1.85-7.15 4.07 0 5.74 5.19 1.85 7.15zm25.58-4.58c2.38 3.65 14 2.53 14.28-3.35-4.19-9.42-16-4.69-14.28 3.35zm8.47-1.63a3.56 3.56 0 0 1-5.31 1.29c-2.29-1.87-1-6.45 2.58-6a3.57 3.57 0 0 1 2.73 4.71z"}),a.createElement("path",{fill:"#000",d:"M126.72 79.53c1.76-6.07 10.8-8.36 14.4-.27 1.07 2.38.95-6.79-5.3-7.23-3.92-.28-10.17.09-9.49 10a11.4 11.4 0 0 1 .39-2.5zm-27.31.51c-6.34 0-4.24 10.2 1.85 7.15 3.89-1.95 2.23-7.15-1.85-7.15z"}),a.createElement("path",{fill:"#000",d:"M132.6 76.26c-3.61-.44-4.87 4.14-2.58 6a3.4 3.4 0 1 0 2.58-6zm-63.68 47.11c-2.54-10.52-.32-4.66-9.77-9 5.12 9 12.19 18.98 9.77 9zM129 41.1c5.48 7.57 6.11 13.42 5.52 9.56a51.53 51.53 0 0 0-2.44-9.71 16.7 16.7 0 0 1-3.08.15z"}),a.createElement("path",{fill:"#000",d:"M137.16 26.23c3.42-12.58-5.26-13.54-7.57-11.18A10.51 10.51 0 0 0 113.3 5.04c-3.11-5.35-12.48-8.78-24.25 2.14C88-.5 72.44 1.9 70.12 17.68c-5.8 1.09-8.67 4.26-10 6.8-5.74.56-24.3 24.19-25.12 32.06-.51 4.69 2 9.11 3.31 13.65.84 2.89 1.22 6 2.75 8.59 4 6.77 0 3.56 5 2.71 4.44-.75 16.29 5.15 22.4 16 3.66.32 7.38-.9 8.67-5.17 1.72-5.69-6.59-8.6-8.54-13.18-4.08-9.57 10.77-15 12.37-23.84 1-5.78-3.41-11.93-7.06-17.09 1.24 0 2.7.15 4.46.38-.16-.1-.3-.21-.45-.32a17.59 17.59 0 0 0 15.66 2.44 6.35 6.35 0 0 1-4.78 2.95c5.21 3.24 13.15.17 14.83-5.74 1.2 4.84 9.14 8.31 16.65 0a16.12 16.12 0 0 0 18.08.78 11.39 11.39 0 0 1-5.61-4.34c3.19.61 6.37-1.64 7.88-4.5 1.51-2.86 1.74-6.22 1.9-9.46a9.68 9.68 0 0 1-5.36 5.83zm-77.44 3.81-.08-.11.08.11zm-.5-3.51v.09c0-.37.06-.82.09-1.36-.05.48-.07.89-.09 1.24v.03zm14.53 7.72a18.09 18.09 0 0 0 4.06 4 16.75 16.75 0 0 1-4.06-4.03v.03zm-.59-.86.24.35-.24-.35z"}),a.createElement("path",{fill:"#000",d:"M97.49 76.04c-3.73.6-7.38 4.53-6.58 9 1-2.29 1.84-4.94 5.06-6.12 4.28-1.56 11.29-.39 13.75 4.36 1.38 2.65.02-9.24-12.23-7.24z"}),a.createElement("path",{fill:"#EAB881",d:"M73.79 108.19c-.16-1.5-.53-2.05-5.41-10.7-6.11-10.84-17.95-16.75-22.38-16-7.48 1.27-15.82 21.55 15.3 33.82 8.33 3.28 13.12-1.13 12.49-7.12z"}),a.createElement("path",{fill:"#D38053",d:"M96 105.92c2.11-2.9 10.26 2.05 16.39-5.72.79-1 1.41-4 3.31-3.71-5.06-.88-6.61 8.28-14.23 6.32-3.12-.81-9-5.15-10 11.67a58.56 58.56 0 0 1 4.53-8.56zm-33.55-5.55c4.3-10.34-20.92-21.24-19.6-7 .3 3.21 2.29 8.83 5.31 9.81-2.45-5.37.27-12.44 1.57-13.5 2-1.61 4.51.76 7.4 2.9-.13 1.68-2.51 2.46-2.65 4.09-.12 1.31 1.07 2.94 5.05 2a7.72 7.72 0 0 1-2.17 5 5.2 5.2 0 0 0 5.09-3.3zm130.32-29.93a3.7 3.7 0 0 1-.27-3.06c4.45-17.69 1.95-7.91-1.07-3.12-2.38 3.78-3.24 6.3.67 8.22 23 11.28 1.9-.25.67-2.04z"}),a.createElement("path",{fill:"#D38053",d:"M192.25 75.29c-2.41-1-6.47-3.9-6.5-5.61 0-1.15 4.89-8.09 3.9-14.36-1.07 1.71-6.51 12.19-6.39 14.2.23 3.86 9.09 5.81 8.99 5.77zm13.21-25.34c-.16 1.86-6.76 14.12-6.76 18.83.36 1.09 4.49 2.16 4.71 3.29-6.82-5.17 3.5-20.43 2.05-22.12z"})))),b="cornerstone",v="orphaned",M="chooseCornerstones",B="checkLinks",x="addLinks",_="improveRemove",A="update",O="addLinks",F="removed",T="noindexed",W="improved",C="skipped",R={cornerstone:[M,B,x],orphaned:[_,A,O]};function D({workout:e,badges:t,upsellLink:o,upsellText:l}){const n=(0,r.useSelect)((e=>e("yoast-seo/workouts").getFinishedSteps(b))),s=o||"https://yoa.st/workout-cornerstone-upsell";return(0,a.createElement)(g,{id:"cornerstone-workout-card",name:b,title:(0,w.__)("The cornerstone approach","wordpress-seo"),subtitle:(0,w.__)("Rank with articles you want to rank with","wordpress-seo"),usps:[(0,w.__)("Make your important articles rank higher","wordpress-seo"),(0,w.__)("Bring more visitors to your articles","wordpress-seo")],image:S,finishableSteps:R.cornerstone,finishedSteps:n,upsellLink:s,upsellText:l,workout:e,badges:t})}var L;function I(){return I=Object.assign?Object.assign.bind():function(e){for(var t=1;ta.createElement("svg",I({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 299 322"},e),L||(L=a.createElement("g",{fill:"none",transform:"matrix(-1 0 0 1 298.412 0)"},a.createElement("circle",{cx:131.2,cy:190.029,r:131.2,fill:"#F0ECF0"}),a.createElement("path",{fill:"#F9BF8C",d:"M262.5 92.23c-1 1.2-3 2.9-7.5 5a18.4 18.4 0 0 1-10.9 1.6c-.5-1-1-2.2-1.7-3.3l.4-.2.3-.2a14 14 0 0 0 3.3-.2c2.4.2 4.7-.6 6.9-3.2 3.1-3.9 1.7-10.7-1.3-14.6 2.6 2.5 4 5.7 6.4 8.6a231 231 0 0 1 3.3 4c.1.4 1.5 1.8.8 2.5zm-90.9 98.2a17.1 17.1 0 0 1 4 14.3c-11-7.9-22-18.9-31.8-37.8 26.5 1 39.4 8.8 39.5 8.7 43-17.2 51.7 1.5 66.8-6.3 2.3 4.7 5.3 6.3 8.4 9.4-13.5-13.9 5.7-22-5.1-57.7 7.3 0 20.8-4.8 22.9-9.7 14.8 26.3 10.5 39.9 17.8 54.6.6 1.2 2.3 6.7 3.5 8.2 2 2.8 0 7.7-2.7 10.6-29.7 32.8-68.9 33.6-93.5 36.8-6.4-4.6-13.8-8.5-21.5-13.7-1-5.1-1.2-11.2-8.3-17.4z"}),a.createElement("path",{fill:"#DB7A53",d:"M253.4 121.03c10.8 35.8-8.4 43.8 5.1 57.8-3-3.2-6-4.8-8.4-9.5a52.999 52.999 0 0 1-.3-2.2 50.2 50.2 0 0 1-.4-5v-2l.1-3.6.1-1.8.3-3.7.4-3.7.6-5.6a153.4 153.4 0 0 0 .6-9.5v-2a69 69 0 0 0-.3-7.8l-.2-1.6a10.5 10.5 0 0 0 2.4.3v-.1zm-11-25.6 1.7 3.4h-.1c-1.9-.1-2.3-2.3-2.7-2.6l-.1-.2 1.2-.6z"}),a.createElement("path",{fill:"#DB7A53",d:"M219.7 95.53c-.7-1.6-3-3-5.5-3.6.1-.011.2-.011.3 0a8.4 8.4 0 0 0 5.1-1.3l-.3-.2a1.6 1.6 0 0 0 .2 0 3.3 3.3 0 0 0 2.7-.6 34.2 34.2 0 0 0 6.4-4 5 5 0 0 0 2-2.8l.4.3c-.7 6.5 5.4 11.5 12.1 11.9l-.3.1-.4.2-1.2.6c-3.8 1.9-11 5.7-13.6 5.6-2.9 0-6.9-2.2-9.8-3.9 1.4-.5 2.3-1.2 1.9-2.3z"}),a.createElement("path",{fill:"#F9BF8C",d:"M223.7 76.23v.3a3.7 3.7 0 0 1-.2 1.3c-1.3-.7-2.4-1.5-2.6-2.6a3.2 3.2 0 0 1 .3-1.7 7.1 7.1 0 0 1 2.5 2.7z"}),a.createElement("path",{fill:"#F9BF8C",d:"M253.3 91.73c-2.1 2.6-4.5 3.4-6.9 3.2a13 13 0 0 0 5.2-2.3c-6 2.7-10.5 1.1-13.8-1.5a36.9 36.9 0 0 1-4.7-5.3c-1.1-1.6-1.8-2.8-2.1-2.9a3 3 0 0 0 0 .3l-.3-.3a2.4 2.4 0 0 0-.9-2 10.2 10.2 0 0 0-3.2-1.9 5.5 5.5 0 0 1 2.9.6c1.6.9 1 2.1 1.8 3.1a3.3 3.3 0 0 0 .2-3.7c-.8-1.3-4-1.1-6.1-1.3a2.3 2.3 0 0 0 0-.2l.8-1a1.3 1.3 0 0 1-.7-.8c-.8-1.2-2.4-2-4.2-2.6l.1-.2a16.4 16.4 0 0 1 2.2-3.5c.7-.8 5.5-.3 6.1-.6a21 21 0 0 0 2.5.7l16.8 5.1a7.8 7.8 0 0 1 3 2.5c3 3.9 4.4 10.7 1.3 14.6z"}),a.createElement("path",{fill:"#F9BF8C",d:"M228.6 85.73a34.2 34.2 0 0 1-6.4 4 3.3 3.3 0 0 1-2.6.6c1.5-.6 2.1-2.3.7-2.8l-.8-3.8a10 10 0 0 0 2-.7v.1c.5.8.4 4-.4 4.6 1-.2 2.2-3.1 2.5-4a1.3 1.3 0 0 0-.6-1.5 5.2 5.2 0 0 0 .8-.8 6.7 6.7 0 0 0 1.3-2 6.3 6.3 0 0 1 1.5-.4 10.2 10.2 0 0 1 3.2 1.9 2.4 2.4 0 0 1 .9 2 5 5 0 0 1-2.1 2.8zm-5-16.3a16.4 16.4 0 0 0-2.2 3.5l-.1.2a39 39 0 0 0-2.4-.6 9 9 0 0 1 2.3 1 3.2 3.2 0 0 0-.3 1.7c.3 1.1 1.3 2 2.6 2.6a11.3 11.3 0 0 1-.9 1.8 9.3 9.3 0 0 1-2.7 3.3l-.5.3-3.4-15.4-2.1-.3a4.4 4.4 0 0 1 2.7-1.4 35.6 35.6 0 0 1 13 2.7c-.5.3-5.3-.2-6 .6z"}),a.createElement("path",{fill:"#F9BF8C",d:"M219.4 83.23a6 6 0 0 1-2.8.7 7.8 7.8 0 0 1-1.5-.2 4 4 0 0 0 1.5.2 9.8 9.8 0 0 0 3-.2l.7 3.8c1.4.5.8 2.2-.7 2.8h-.1a1.6 1.6 0 0 1-.2 0 39 39 0 0 0-7-3c-.3-3.4-.6-6.7-2-9.7 1.7-2.8 3.2-5.6 1.7-6.6 0 1.3-1.1 3.4-2.4 5.4a13.3 13.3 0 0 0-1.2-1.7 13 13 0 0 0-5.2-3.6c.8-1.7 1.4-3.5 3.7-3.8a24.3 24.3 0 0 1 6.9.2l2.1.3 3.5 15.4z"}),a.createElement("path",{fill:"#DB7A53",d:"M223.7 76.23a5 5 0 0 1 .6 3.4 7 7 0 0 1 .8-.3 6.7 6.7 0 0 1-1.3 2.1 5.2 5.2 0 0 1-.8.8 1.7 1.7 0 0 0-1.2-.2l-.2 1a10 10 0 0 1-2 .7 9.8 9.8 0 0 1-3 .2 6 6 0 0 0 2.8-.7l.5-.3a9.3 9.3 0 0 0 2.7-3.3 11.3 11.3 0 0 0 1-1.9 3.7 3.7 0 0 0 .1-1.3v-.2zm1.6 1.3c.007.1.007.2 0 .3v-.3z"}),a.createElement("path",{fill:"#DB7A53",d:"M223 82.23c.524.3.773.92.6 1.5-.3.9-1.4 3.8-2.5 4 .8-.7 1-3.8.5-4.6v-.1l.3-1a1.7 1.7 0 0 1 1.1.2z"}),a.createElement("path",{fill:"#F9BF8C",d:"M201.4 91.73a3.1 3.1 0 0 0-.8.7c-2-.9-3.9-2.7-5.7-3.4-.5-.1-2.7-.8-2.9-1.4a13.7 13.7 0 0 0 5.2 2 43 43 0 0 0 4.2 2v.1zm.1-2.2h.1a30.3 30.3 0 0 0 5.4.4 30 30 0 0 0 3.6 1.6c-2.6-.3-5.7-1-8-.4l-2.2-1.3a2.7 2.7 0 0 0 1.1-.3zm13 2.5a1.4 1.4 0 0 0-.3 0 10.6 10.6 0 0 0-2-.4h-.4a26.6 26.6 0 0 1-3-1.8l1.7-.1a3.2 3.2 0 0 0 1.3-.4 1.2 1.2 0 0 0 .5-1l6.7 2.7-6.7-3.6a39 39 0 0 1 7 3c.1.2.3.2.4.3a8.4 8.4 0 0 1-5.2 1.3z"}),a.createElement("path",{fill:"#DB7A53",d:"M225 79.33a7 7 0 0 0-.7.3 5 5 0 0 0-.6-3.4 7.1 7.1 0 0 0-2.5-2.7 9 9 0 0 0-2.2-1l2.3.7c1.8.5 3.4 1.3 4.2 2.6a1.3 1.3 0 0 0 .6.6c.2 0-.5.7-.8 1.1v.3c2.2 0 5.4-.1 6.2 1.2a3.3 3.3 0 0 1-.2 3.8c-.8-1-.2-2.3-1.8-3.2a5.5 5.5 0 0 0-3-.6 6.3 6.3 0 0 0-1.4.3h-.1zm6 3.9a3 3 0 0 1 0-.3c.3 0 1 1.3 2 3a23.8 23.8 0 0 0 4.8 5.2c3.3 2.6 7.8 4.2 13.8 1.6a13 13 0 0 1-5.2 2.2 14 14 0 0 1-3.3.2c-6.7-.4-12.8-5.4-12.1-11.9z"}),a.createElement("path",{fill:"#F9BF8C",d:"M208.4 74.73c.478.53.913 1.099 1.3 1.7-1.4 2.2-3 4.3-3.5 5.3s-1.3 2.6-.3 3.6a38.8 38.8 0 0 0 6.4 3 1.2 1.2 0 0 1-.6 1 3.2 3.2 0 0 1-1.2.4l-1.8.1a14.4 14.4 0 0 0-3.6-1.9 13.4 13.4 0 0 1-3-1.2c0-.9-.3-2.4-.5-4 1.6-3 5-8.2 2.7-10.1.9 1.6-1.4 5.5-3 8l-.8-4a3.8 3.8 0 0 0 0-2 3.5 3.5 0 0 1-.2 1c-.4-1.6-.7-2.6-1-2.7-.9-.3-2 .6-3 2 1-2.2 1.5-4.1 4.7-4.1a7.3 7.3 0 0 1 2.2.4 13 13 0 0 1 5.2 3.5zm-6.1 13a39.6 39.6 0 0 1 4.7 2.2 30.3 30.3 0 0 1-5.3-.5 1.7 1.7 0 0 0 .6-1.7z"}),a.createElement("path",{fill:"#F9BF8C",d:"M207 84.53c-.2-1.3 1.6-4.1 3.3-6.9a27 27 0 0 1 2 9.7l-5.3-2.8zm-7.6-11.7c.3 0 .6 1.2 1 2.7-1.2 2.7-5.5 6.5-6.7 8.9a3.4 3.4 0 0 0-.6 2c.2.7 2 2 4.1 3.2a13.7 13.7 0 0 1-5.2-2l-.4-.3a1.7 1.7 0 0 1-.5-.5 1.5 1.5 0 0 1 0-1.2c.5-1.2 2.8-7.5 5.2-10.9 1-1.3 2.1-2.2 3-1.9h.1z"}),a.createElement("path",{fill:"#F9BF8C",d:"M199.4 86.63a5 5 0 0 0 2 .8l.9.3a1.7 1.7 0 0 1-.7 1.7v.1a2.7 2.7 0 0 1-1.2.3c-1.8-1-3.4-2.1-4.1-2.6-.4-.3-.8-.6-.9-1a1.7 1.7 0 0 1 .4-1c1.2-2 4-5.9 4.7-8.7l.7 4-1 1.5c-1 1.5-2.2 3.5-.8 4.6z"}),a.createElement("path",{fill:"#F9BF8C",d:"M201.2 86.03c-.5-.7-.6-.8-.4-1.7a9.9 9.9 0 0 1 .8-1.6l.5 4a3 3 0 0 1-.9-.7z"}),a.createElement("path",{fill:"#DB7A53",d:"M211.8 91.63h-1.2a30 30 0 0 1-3.6-1.7 39.6 39.6 0 0 0-4.7-2.2l-.8-.3a5 5 0 0 1-2-.8c-1.5-1.1-.3-3 .8-4.6l1-1.4c1.6-2.5 4-6.5 3.1-8 2.2 2-1.2 7-2.8 10.1a9.9 9.9 0 0 0-.7 1.6c-.3.9-.2 1 .4 1.7a3 3 0 0 0 .9.7 13.4 13.4 0 0 0 3 1.3 14.4 14.4 0 0 1 3.6 1.9 26.6 26.6 0 0 0 3 1.7z"}),a.createElement("path",{fill:"#DB7A53",d:"M195.8 85.33a1.7 1.7 0 0 0-.4 1c0 .4.5.7.9.9l4 2.6c.8.5 1.6 1 2.4 1.3a4.2 4.2 0 0 0-1.3.6 43 43 0 0 1-4.2-2c-2.1-1.3-4-2.6-4-3.3a3.4 3.4 0 0 1 .5-2c1.2-2.3 5.5-6.1 6.6-8.8a3.5 3.5 0 0 0 .3-1 3.8 3.8 0 0 1 0 2c-.8 2.8-3.6 6.6-4.8 8.7zm11.2-.8 5.3 2.8 6.7 3.7-6.7-2.6a38.8 38.8 0 0 1-6.4-3c-1-1-.4-2.4.3-3.5l3.5-5.4c1.3-2.2 2.4-4 2.4-5.3 1.5 1 0 3.7-1.8 6.5s-3.6 5.6-3.2 7l-.1-.2z"}),a.createElement("path",{fill:"#F9BF8C",d:"M201.4 91.73a4.2 4.2 0 0 1 1.3-.6c2.2-.5 5.3.1 7.9.4l1.2.1h.4a10.6 10.6 0 0 1 2 .3c2.4.6 4.8 2 5.4 3.6.5 1-.5 1.8-1.8 2.2a11.1 11.1 0 0 1-2 .4c-4.2.6-5.5 2-11.5 2.8-2.6.4-4.4-4-4.4-5.9a4.2 4.2 0 0 1 .7-2.6 3.1 3.1 0 0 1 .8-.7z"}),a.createElement("path",{fill:"#A52A6A",d:"M253.4 121.03a10.5 10.5 0 0 1-2.4-.2 5.3 5.3 0 0 1-.7-.2c-2.4-.9-8.6-17.6-9.3-21-.3-1.2-.3-3.5.3-3.4.3.3.8 2.5 2.7 2.5h.1a18.4 18.4 0 0 0 10.9-1.5c4.6-2.1 6.6-3.8 7.6-5 .6-.8-.7-2.2-.9-2.5.4-.4 1.3.1 1.7.3 5.9 2.8 10.2 12.7 13.1 19.4a2.9 2.9 0 0 1-.1 1.9c-2.1 5-15.6 9.8-23 9.8v-.1z"}),a.createElement("path",{fill:"#DB7A53",d:"M171.6 190.43c7 6.2 7.3 12.3 8.3 17.4l-4.4-3a17 17 0 0 0-3.9-14.4z"}),a.createElement("path",{fill:"#009288",d:"m41.3 265.93-.5.2c6.5 8.6 14.1 17.5 21 30.5a28.8 28.8 0 0 1 2.8 7.7c45.714 25.792 102.423 21.736 144-10.3-.8-3.5-1.7-7.1-2.8-11 12.67-7.311 18.506-22.484 14-36.4a43 43 0 0 0-18.4-25.1c-6.4-4.6-13.8-8.5-21.5-13.7l-4.4-3c-10.8-8-22-19-31.7-37.9l-.1-.2a71 71 0 0 0-19.9-2.3c12 5.8 41 37 4.2 43-29 3.1-47.3-27.9-84-28.7a47.8 47.8 0 0 0-13.5 9.4l-1 1a37 37 0 0 1 4.7-2c16.4 1 27 15.3 32.9 30.3 10.3 26.2 6.2 44.7-2.6 50.6-5.3 3.6-13.3 2.7-20-3.7l-1.5.7-1 .6-.7.3z"}),a.createElement("path",{fill:"#F9BF8C",d:"M29.5 189.23a37 37 0 0 1 4.5-2.2c16.4 1 27 15.3 33 30.3 10.3 26.2 6.2 44.7-2.6 50.6-5.3 3.6-13.4 2.7-20-3.7l-1.5.7c6.9-5.7 4.9-6.8 18-4.4-10.8-6.4-16.1-9.1-38.7 6.1a122.2 122.2 0 0 1-21.4-53.5 133 133 0 0 1 28.7-24.1v.2z"}),a.createElement("path",{fill:"#DB7A53",d:"M61 260.63c-13.2-2.4-11.1-1.3-18 4.4l-1 .6-.6.2-.6.3-.5.3-.6.3-1.1.6-.7.3-1 .6-.7.4-1.2.6-.6.3-1.3.7-.6.3-1.3.7-.5.3-1.4.8-.3.1-1.6 1-.6-.9-4.5-5.8c22.6-15.2 27.9-12.4 38.7-6v-.1z"}),a.createElement("path",{fill:"#F9BF8C",d:"M128 207.43c-29.2 3.1-47.5-28.2-84.5-28.7 14.2-5.2 23-11.3 23-27.1 0-8.8-2.7-25.8-3.6-38.2 0 0 57 21.4 57.8 36.1l2 14.3c11.2 4.3 43.3 37.4 5.3 43.6z"}),a.createElement("path",{fill:"#DB7A53",d:"M87.3 151.73a56.8 56.8 0 0 1-17.1-22.8 62.4 62.4 0 0 0 43 22c2.5-.1 5-.2 7.3-.5v.5l.2 1.2c-4.7 11.9-7.3 19.5-33.4-.4z"}),a.createElement("path",{fill:"#216D64",d:"M162 280.43c.5 7.4-16.2 16.2-30.8 17.3-19.8 1.4-54.8-9.2-48-40.7 18.2 35 68.8 31.3 78.8 23.4z"}),a.createElement("path",{fill:"#F9BF8C",d:"M122.5 72.33a9.8 9.8 0 0 0-2.1-.8h2.6l-.5.8zm-9.9.8a4.8 4.8 0 0 0-.6-1.7c7.3 0 4-.6.6 1.7zm12.6 14 .8.8c-.9-1.5-1.5-4.6-2.9-12.6l-.4-.3a16 16 0 0 0 2.5 12.1z"}),a.createElement("path",{fill:"#F9BF8C",d:"M154.7 95.83a44.5 44.5 0 0 0-1.6-8.2c-2-6-4.8-6.6-7.3-9.6a50.6 50.6 0 0 0-1-23.9c0 .1-8.7-35.8-54.2-22a44.6 44.6 0 0 0-10 5.9c-10.6 8.2-7.6 13.4-10 25.4a74.9 74.9 0 0 1-4.4 11.9c-4.8 3.8-7.6 6.5-8.1 9.9 1 4.7 5.4 18.3 5 28.1 6 27.2 36.6 38.3 50 37.6 2.6-.1 5-.2 7.4-.5 6.5-.7 11.9-2.8 17-11.3 6.4-10.8 5.6-16.5 9.4-22.5 2.5-4.1 9-9.7 7.8-20.8zm-42.2-19.5c-1 7.6-2.5 10.5-5.3 11.4a18.3 18.3 0 0 0 1.3-3.3c-4.6 2.5-17 2.8-21.2-3-.9.4-2 .4-4-.6l.2-.1c4.2-.1 2.6-1 4.1-3.8a10.6 10.6 0 0 1 .6-1h17.1a11 11 0 0 1 3.8 6.7 58.3 58.3 0 0 0 1.2-6.8l3-.2-.8.7z"}),a.createElement("path",{fill:"#D86060",d:"M112.6 124.23c-4-2-5.6-6.3-11.6-10.8 10 5.2 19.3 6.3 26.5 3.8-1.7 1.7 1.2 6.3-3.5 8.4-4 1.7-7.3.5-11.4-1.4z"}),a.createElement("path",{fill:"#BC3939",d:"m101 113.43-1.6-.8c7.9-.3 12.9-.7 17.2-.3 2.2.3 2.2 2 3.8 2 1.6 0 2.7-1.6 4.4-1.4 1.2.2 3 1.1 5.6 3a20.3 20.3 0 0 1-2.9 1.2c-7.2 2.6-16.6 1.5-26.5-3.7z"}),a.createElement("path",{fill:"#FFF",d:"m108.5 84.43.2-.5a15.2 15.2 0 0 0-2.3-3.8c-5-5.8-13.6-5.1-16.5-1.6-.9 1.3-1.5 2.4-2.6 3 4.1 5.7 16.6 5.4 21.2 3v-.1zM97 85.63a4.8 4.8 0 1 1 .408-9.592A4.8 4.8 0 0 1 97 85.629z"}),a.createElement("path",{fill:"#000",d:"M89.9 78.53c-.9 1.3-1.5 2.4-2.6 3-1.1.6-2 .2-4-.7l.2-.2c4.2 0 2.6-1 4.1-3.7 2.8-5.2 9-4.8 14.6-3 .1 0 5.9 2.4 6.8 8.7l-.3 1.2a14.4 14.4 0 0 0-2.3-3.7c-5-5.8-13.6-5.1-16.5-1.6z"}),a.createElement("path",{fill:"#FFF",d:"M127.5 83.03h-.1a27 27 0 0 0 11.6.6c2.7-1 4.8-4 5-6.8-1.8-1.2-2.8-4.6-8.2-2.9-5 1.6-7 4.2-8.3 9v.1zm2.8-3.7a4.4 4.4 0 1 1 8.798-.2 4.4 4.4 0 0 1-8.798.2z"}),a.createElement("path",{fill:"#000",d:"M145.1 75.33c0 .5.5.7 1 .9a8 8 0 0 0 1.2.1l.1.2a5 5 0 0 1-1.4.6 2.4 2.4 0 0 1-2-.4c-1.8-1.2-2.8-4.6-8.2-2.8-4.9 1.6-7 4.2-8.3 9h-.2c-1.2-6.7 4-11.3 9-12.5l3.1-.2c2.8.2 5.2 1.8 5.7 5.1z"}),a.createElement("path",{fill:"#B2512B",d:"M106.7 61.53c-4 0-8.2-.4-11.7-.3-3.6.1-8.3 1.7-12.8 4.6 1.9-4 8.5-7.2 12.5-7.7 2.9-.3 6.8-.7 9.7-.2 3.7.7 5.6 3.1 2.3 3.6zm24.7 5.6c2.3-2.6 6.8-6.2 9.4-5.8 3 .4 3.5 1.2 5.4 3.6.056.898.056 1.8 0 2.7H145a7.6 7.6 0 0 0-4.7-2.2c-1.9-.1-7 1.2-8.8 1.7h-.1z"}),a.createElement("circle",{cx:97.1,cy:80.829,r:4.8,fill:"#000",transform:"rotate(-78.1 97.1 80.83)"}),a.createElement("circle",{cx:134.7,cy:79.329,r:4.4,fill:"#000"}),a.createElement("path",{fill:"#DB7A53",d:"M106.3 109.73a40 40 0 0 1-10.3-1.3c-1.9 2-.1 6.6-.7 9.2-1-3.4-4-8-2.2-12.4a28.7 28.7 0 0 0 13.2-1c9-2.8 6.6-6.2 12.6-6.5-5.2 1-4.4 11.4-12.6 12z"}),a.createElement("path",{fill:"#838BC5",d:"M54 29.03c3-3.6 13.5-5.8 20-6-.5 1.3 4.5 2.7 4 4a37.3 37.3 0 0 0 8.4-.2 3.5 3.5 0 0 0 .4 2.7l3.8 2.6a44.6 44.6 0 0 0-10.1 5.9c-10.5 8.2-7.5 13.4-9.9 25.4a74.9 74.9 0 0 1-4.4 11.9l-12.4 7a10.3 10.3 0 0 0-5.3-.7l-.3-.4c-2.2-4-6.8-14.2-7.2-18.8-1.4-11.4 1.2-25 10-32.4a18.5 18.5 0 0 1 3-2 9.8 9.8 0 0 0 .1 1H54zm2.7 55 1.4.7 3.5-1.6a5.5 5.5 0 0 1-2.4 1.9 10.4 10.4 0 0 1-1.2.2l-1.2-1.2h-.1z"}),a.createElement("path",{fill:"#0071BC",d:"M127 22.23c-7.5-4.7-7-2-15.6-4l5.2-.4c-13.3-1-28.6 3.4-30.1 9a37.3 37.3 0 0 1-8.4.2c.5-1.3-4.6-2.6-4-4-6.6.2-17 2.4-20.1 6a9.8 9.8 0 0 1 0-1c0-8.2 10.8-17.8 30.3-15.8 13.4-14.3 42.4-21 61 8.1-13-7.3-16.2-.2-19.3.8 7.8-1.6 27.3 3 28.9 24.3-1.7-7.8-8.4-8.6-13.6-8-1.7-2.3-3.5-4.3-4.9-5.9-4.5-5.2-3.5-5.7-9.4-9.3z"}),a.createElement("path",{fill:"#0071BC",d:"M137.4 46.73c3.4 14.5-3.1 19.3-22.4 18.8 12.5-8.9 11.5-19.3 2-26.1-8.2-6-14 .2-26.4-7.3a46 46 0 0 1-3.8-2.6 3.5 3.5 0 0 1-.3-2.7c1.5-5.6 16.8-10 30-9l-5 .3c8.6 2.2 8-.6 15.5 4 5.9 3.7 4.9 4.2 9.4 9.5 1.4 1.6 3.2 3.5 4.8 5.8 3 4.2 5.5 9.6 3.5 16.7a26 26 0 0 1-2.6 6.2 14.6 14.6 0 0 0-4.7-13.6z"}),a.createElement("path",{fill:"#DB7A53",d:"M126.1 69.33h-.7a14.6 14.6 0 0 1 3.2-1.7 14.8 14.8 0 0 0-2.5 1.7zm-.9 17.8.8.8c1.2 1.8 2.7 1.5 6.3 4.8l.6.2c1.8 1.7 2.8 3.7 2 6.4-.2 3.2-5.3 8.2-12 5.8 5.3-1 6.9-.8 7.6-5.6-.2-6.7-8.3-4-10-16.5a17.3 17.3 0 0 1 .9-8.8 9 9 0 0 1 1.3.8 16 16 0 0 0 2.5 12.1zm-2.1-14.5a6.3 6.3 0 0 0-.6-.3l.5-.9c1 0 .4.2.1 1.2z"}),a.createElement("path",{fill:"#93278F",d:"M56.7 84.03a12.7 12.7 0 0 0-3-1.7l12.4-7 9.2-5.2c-1.3 1.7-1.6 4.2-1.1 7l-12.6 6-3.5 1.7-1.4-.8z"}),a.createElement("path",{fill:"#5D237A",d:"M151 92.03c5.5-1.8 14.3-20.4 5.8-23.5-5.4-2-24.6-.6-29.9.8-29.7-.4-42.2-3.3-49.3-.7a5 5 0 0 0-2.3 1.6c-4.3 5.5 3.1 20.2 8 21.8a46.3 46.3 0 0 0 12.5 1.6c11.6 0 14.8-2.2 16.6-17.3 1-.6 4.4-4.3 9-2a10.6 10.6 0 0 1 1.8 1c2.9 17.6 2.5 11.3 9.1 17.5l.6.1c5.8 1.4 13.9.5 18.1-.9zm-40.5-17.9c-.4 3.6-1.7 13.4-4.8 15.4-4.2 2.8-17 2-21.7.4-4-1.4-11.5-17.2-5.7-19.3 5.6-2 23.8 0 29.6.6 0 .2 2.8.3 2.6 3v-.1zm2.1-1a4.8 4.8 0 0 0-.6-1.8c7.3.2 4-.5.6 1.8zm10.5-.5a10 10 0 0 0-2.7-1.2c4.2.1 3.1-.3 2.7 1.2zm27.2 17.4c-4.7 1.6-16.3 2.5-20.6-.4-1-.7-2.8-5.1-4.5-15.3-.4-2.8 2.6-2.5 2.6-2.8.9-.2 4.3-.7 8.5-1 4.2-.3 15.6-1.2 19.7.2 5.8 2.1-1.6 18-5.7 19.3z"}),a.createElement("path",{fill:"#F9BF8C",d:"M45.5 82.33c-4.2 1.7-4.4 10-3 14.8 2.8 9.2 12 17.6 21.7 16.1 5.2-.7 1.5-5.7-1-16.4l-1-5.6c-3.3-7-9.4-11.7-16.7-8.9zm13.2 13c-.4.4-4.4 3.1-1.2 5 2.2 1.5 4 .5 3.6 2.6-.3 1.4 0 3.3-2 3 2-3-1.1-4-3-2.9s-5.7-5.3.9-8.2c-4-4.8-7.5-12.8-10-.5-3-9.7 3.6-17.3 11.7 1z"}),a.createElement("path",{fill:"#CE6D42",d:"M58.7 95.33c-.4.4-4.4 3.1-1.2 5 2.2 1.5 4 .5 3.6 2.6-.3 1.4 0 3.3-2 3 2-3-1.1-4-3-2.9s-5.7-5.3.9-8.2c-4-4.8-7.5-12.8-10-.5-3-9.7 3.6-17.3 11.7 1z"}))));function N({workout:e,badges:t,upsellLink:o,upsellText:l}){const n=(0,r.useSelect)((e=>e("yoast-seo/workouts").getFinishedSteps(v))),s=o||"https://yoa.st/workout-orphaned-content-upsell";return(0,a.createElement)(g,{id:"orphaned-workout-card",name:v,title:(0,w.__)("Orphaned content","wordpress-seo"),subtitle:(0,w.__)("Clean up your unlinked content to make sure people can find it","wordpress-seo"),usps:[(0,w.__)("Make pages easier for Google and visitors to find","wordpress-seo"),(0,w.__)("Add internal links to your posts and pages","wordpress-seo")],image:P,finishableSteps:R.orphaned,finishedSteps:n,upsellLink:s,upsellText:l,workout:e,badges:t})}N.propTypes={workout:m().func,badges:m().arrayOf(m().element),upsellLink:m().string,upsellText:m().string},N.defaultProps={workout:null,badges:[],upsellLink:null,upsellText:null};const{workouts:j,upsellLink:$,upsellText:q}=window.wpseoWorkoutsData,G={[b]:()=>(0,a.createElement)(D,{badges:[(0,a.createElement)(k.PremiumBadge,{key:"premium-badge-cornerstone-workout"})],upsellLink:$,upsellText:q}),[v]:()=>(0,a.createElement)(N,{badges:[(0,a.createElement)(k.PremiumBadge,{key:"premium-badge-orphaned-workout"})],upsellLink:$,upsellText:q})};function U(e){const{activeWorkout:t,clearActiveWorkout:o,openWorkout:r,workouts:n,loading:s,initWorkouts:c,saveWorkouts:i}=e;(0,h.useEffect)((()=>{if(!0===s)return c(j),void(window.location.hash&&window.location.hash.length>1&&("configuration"===window.location.hash.substring(1)?window.location.href=window.wpseoWorkoutsData.firstTimeConfigurationUrl:r(window.location.hash.substring(1))));i(n)}),[n,s]);const u=(0,h.useMemo)((()=>{const e=Object.keys(n);return(0,p.sortBy)(e.map((e=>({...n[e],id:e}))),"priority").map((e=>{if(G[e.id]){const t=G[e.id];return(0,a.createElement)(f,{key:e.id,name:`${e.id}`},(0,a.createElement)(t,null))}return(0,a.createElement)(l.Slot,{key:e.id,name:`${e.id}`})}))}),[n]);return(0,a.createElement)("div",{className:"wrap"},(0,a.createElement)("h1",{id:"workouts-page-title"},(0,w.__)("SEO workouts","wordpress-seo")),(0,a.createElement)("p",{id:"workouts-page-description"},(0,w.__)("Getting your site in shape and keeping it SEO fit can be hard. We can help you get started! Take these step-by-step workouts, and you’ll be tackling some of the most fundamental SEO challenges!","wordpress-seo")),t&&(0,a.createElement)(k.Button,{id:"yoast-workouts-back-to-workouts-button",onClick:o}, // translators: %1$s translates to a leftward pointing arrow ( ← ) (0,w.sprintf)((0,w.__)("%1$sBack to all workouts","worpdress-seo"),"← ")),(0,a.createElement)("div",{className:t?"":"workflows__index"},u))}U.propTypes={activeWorkout:m().string.isRequired,clearActiveWorkout:m().func.isRequired,openWorkout:m().func.isRequired,workouts:m().object.isRequired,loading:m().bool.isRequired,initWorkouts:m().func.isRequired,saveWorkouts:m().func.isRequired};const K=function(e){const t=(0,p.cloneDeep)(e);return Object.keys(e).forEach((function(o){e[o].indexablesByStep&&Object.keys(e[o].indexablesByStep).forEach((function(e){t[o].indexablesByStep[e]=t[o].indexablesByStep[e].filter((function(e){return!e.purge}))}))})),t};async function V(e){try{const t=await i()({path:"yoast/v1/workouts",method:"POST",data:K(e)});return await t.json}catch(e){return console.error(e.message),!1}}const X=(0,u.compose)([(0,r.withSelect)((e=>{const t=e("yoast-seo/workouts").getWorkouts(),o=e("yoast-seo/workouts").getLoading(),a=e("yoast-seo/workouts").getActiveWorkout(),r=e("yoast-seo/workouts").getFinishedWorkouts(),l=e("yoast-seo/workouts").getIndexablesByStep;return{workouts:t,loading:o,activeWorkout:a,finishedWorkouts:r,isStepFinished:(e,o)=>t[e].finishedSteps.includes(o),getIndexablesByStep:l}})),(0,r.withDispatch)((e=>{const{finishSteps:t,toggleStep:o,toggleWorkout:a,initWorkouts:r,clearActiveWorkout:l,openWorkout:n,moveIndexables:s,clearIndexablesInSteps:c}=e("yoast-seo/workouts");return{finishSteps:t,toggleStep:o,toggleWorkout:a,initWorkouts:r,clearActiveWorkout:l,openWorkout:n,moveIndexables:s,clearIndexablesInSteps:c,saveWorkouts:V}}))])(U),H="REGISTER_WORKOUT",J="FINISH_STEPS",Q="REVISE_STEP",Y="TOGGLE_WORKOUT",Z="SET_WORKOUTS",ee="OPEN_WORKOUT",te="CLEAR_ACTIVE_WORKOUT",oe="TOGGLE_STEP",ae="MOVE_INDEXABLES",re="CLEAR_INDEXABLES",le="CLEAR_INDEXABLES_IN_STEPS",ne=(e,t)=>({type:H,payload:{key:e,priority:t}}),se=(e,t)=>({type:J,workout:e,steps:t}),ce=(e,t)=>({type:Q,workout:e,step:t}),ie=e=>({type:Y,workout:e}),ue=e=>({type:Z,workouts:e}),pe=e=>(window.location.hash=e,{type:ee,workout:e}),de=()=>(window.location.hash="",{type:te}),me=(e,t)=>({type:oe,workout:e,step:t}),we=(e,t,o,a)=>({type:ae,workout:e,indexables:t,fromStep:o,toStep:a}),he=e=>({type:re,workout:e}),ke=(e,t)=>({type:le,workout:e,steps:t}),fe=e=>e.workouts,Ee=(e,t)=>(0,p.get)(e,`workouts.${t}.finishedSteps`,[]),ge=(e,t,o)=>e.workouts[t].indexablesByStep[o],ye=e=>{const t=[];return Object.keys(e.workouts).forEach((function(o){R[o]&&e.workouts[o].finishedSteps.length===R[o].length&&t.push(o)})),t},ze=e=>e.loading,Se=e=>e.activeWorkout,be={loading:!0,activeWorkout:"",workouts:{cornerstone:{priority:50,finishedSteps:[],indexablesByStep:{[x]:[],[B]:[],[M]:[],[W]:[],[C]:[]}},orphaned:{priority:50,finishedSteps:[],indexablesByStep:{[_]:(0,p.get)(window,"wpseoPremiumWorkoutsData.orphaned",[]),[A]:[],[O]:[],[F]:[],[T]:[],[W]:[],[C]:[]}}}},ve=(e=be,t)=>{let o;const a=(0,p.cloneDeep)(e);switch(t.type){case H:return a.workouts[t.payload.key]={finishedSteps:[],indexablesByStep:{},...a.workouts[t.payload.key],priority:t.payload.priority},a;case J:return a.workouts[t.workout].finishedSteps=(0,p.union)(e.workouts[t.workout].finishedSteps,t.steps),a;case Q:return a.workouts[t.workout].finishedSteps=a.workouts[t.workout].finishedSteps.filter((e=>e!==t.step)),a;case oe:return e.workouts[t.workout].finishedSteps.includes(t.step)?(o=e.workouts[t.workout].finishedSteps.indexOf(t.step),o>-1&&(a.workouts[t.workout].finishedSteps=e.workouts[t.workout].finishedSteps.slice(),a.workouts[t.workout].finishedSteps.splice(o,1)),a):(a.workouts[t.workout].finishedSteps=(0,p.union)(e.workouts[t.workout].finishedSteps,[t.step]),a);case Y:if(R[t.workout].length===e.workouts[t.workout].finishedSteps.length){a.workouts[t.workout].finishedSteps=[];for(const e of R[t.workout])be.workouts[t.workout].indexablesByStep&&(a.workouts[t.workout].indexablesByStep[e]=be.workouts[t.workout].indexablesByStep[e])}else a.workouts[t.workout].finishedSteps=R[t.workout];return a;case ee:return a.activeWorkout=t.workout,a;case te:return a.activeWorkout="",a;case Z:return a.workouts=(0,p.merge)(a.workouts,t.workouts),a.loading=!1,a;case ae:return t.indexables.forEach((function(e){if(""!==t.fromStep){const o=a.workouts[t.workout].indexablesByStep[t.fromStep].findIndex((t=>t.id===e.id));a.workouts[t.workout].indexablesByStep[t.fromStep][o].purge=!0,a.workouts[t.workout].indexablesByStep[t.fromStep][o].movedTo=t.toStep}if(""!==t.toStep){const o=a.workouts[t.workout].indexablesByStep[t.toStep].findIndex((t=>t.id===e.id));-1===o?a.workouts[t.workout].indexablesByStep[t.toStep].push(e):(a.workouts[t.workout].indexablesByStep[t.toStep][o].purge=!1,a.workouts[t.workout].indexablesByStep[t.toStep][o].movedTo="")}})),a;case re:return a.workouts[t.workout].indexablesByStep=be.workouts[t.workout].indexablesByStep,a;case le:for(const e of t.steps)a.workouts[t.workout].indexablesByStep[e]=[];return a;default:return e}},Me=window.yoast.styledComponents,Be=window.yoast.externals.contexts,xe=({theme:e,location:t,children:o})=>(0,a.createElement)(Be.LocationProvider,{value:t},(0,a.createElement)(Me.ThemeProvider,{theme:e},o));xe.propTypes={theme:m().object.isRequired,location:m().oneOf(["sidebar","metabox","modal"]).isRequired,children:m().element.isRequired};const _e=xe,Ae=[];let Oe=null;class Fe extends h.Component{constructor(e){super(e),this.state={registeredComponents:[]}}registerComponent(e,t){this.setState({registeredComponents:[...this.state.registeredComponents,{key:e,Component:t}]})}render(){return this.state.registeredComponents.map((({Component:e,key:t})=>(0,a.createElement)(e,{key:t})))}}if(window.wp.data.createReduxStore){const e=(0,r.createReduxStore)("yoast-seo/workouts",{reducer:ve,actions:t,selectors:o});(0,r.register)(e)}else(0,r.registerStore)("yoast-seo/workouts",{reducer:ve,actions:t,selectors:o});window.wpseoWorkoutsData=window.wpseoWorkoutsData||{},window.wpseoWorkoutsData.registerWorkout=function(e,t,o){(0,r.dispatch)("yoast-seo/workouts").registerWorkout(e,t),function(e,t){null===Oe||null===Oe.current?Ae.push({key:e,Component:t}):Oe.current.registerComponent(e,t)}(e,(()=>(0,a.createElement)(l.Fill,{name:`${e}`},(0,a.createElement)(o,null))))},s()((()=>{!function(e,t){const o=(0,p.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1});Oe=(0,h.createRef)();const r={isRtl:o.isRtl};(0,h.render)((0,a.createElement)(_e,{theme:r,location:"sidebar"},(0,a.createElement)(l.SlotFillProvider,null,(0,a.createElement)(h.Fragment,null,t,(0,a.createElement)(Fe,{ref:Oe})))),document.getElementById(e)),Ae.forEach((e=>{Oe.current.registerComponent(e.key,e.Component)}))}("wpseo-workouts-container-free",(0,a.createElement)(X,null))}))})();js/dist/block-editor.js000064400000655373147206602470011072 0ustar00(()=>{var e={6746:(e,t,s)=>{"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(s(9196)),n=i(s(9156)),o=i(s(6743));function i(e){return e&&e.__esModule?e:{default:e}}var l=void 0;function c(e,t){var s,o,i,d,p,u,m,h,g=[],y={};for(u=0;u "+l);if("componentClose"===p.type)throw new Error("Missing opening component token: `"+p.value+"`");if("componentOpen"===p.type){s=t[p.value],i=u;break}g.push(t[p.value])}else g.push(p.value);return s&&(d=function(e,t){var s,r,a=t[e],n=0;for(r=e+1;r{"use strict";function t(e){return e.match(/^\{\{\//)?{type:"componentClose",value:e.replace(/\W/g,"")}:e.match(/\/\}\}$/)?{type:"componentSelfClosing",value:e.replace(/\W/g,"")}:e.match(/^\{\{/)?{type:"componentOpen",value:e.replace(/\W/g,"")}:{type:"string",value:e}}e.exports=function(e){return e.split(/(\{\{\/?\s*\w+\s*\/?\}\})/g).map(t)}},9156:(e,t,s)=>{"use strict";var r=s(9196),a="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,n=s(7942),o=s(9179),i=s(397),l=".",c=":",d="function"==typeof Symbol&&Symbol.iterator,p="@@iterator";function u(e,t){return e&&"object"==typeof e&&null!=e.key?(s=e.key,r={"=":"=0",":":"=2"},"$"+(""+s).replace(/[=:]/g,(function(e){return r[e]}))):t.toString(36);var s,r}function m(e,t,s,r){var n,i=typeof e;if("undefined"!==i&&"boolean"!==i||(e=null),null===e||"string"===i||"number"===i||"object"===i&&e.$$typeof===a)return s(r,e,""===t?l+u(e,0):t),1;var h=0,g=""===t?l:t+c;if(Array.isArray(e))for(var y=0;y{"use strict";function t(e){return function(){return e}}var s=function(){};s.thatReturns=t,s.thatReturnsFalse=t(!1),s.thatReturnsTrue=t(!0),s.thatReturnsNull=t(null),s.thatReturnsThis=function(){return this},s.thatReturnsArgument=function(e){return e},e.exports=s},9179:e=>{"use strict";e.exports=function(e,t,s,r,a,n,o,i){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[s,r,a,n,o,i],d=0;(l=new Error(t.replace(/%s/g,(function(){return c[d++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},397:(e,t,s)=>{"use strict";var r=s(7942);e.exports=r},4530:(e,t)=>{var s;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";e.exports=window.React}},t={};function s(r){var a=t[r];if(void 0!==a)return a.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,s),n.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};s.r(e),s.d(e,{authorFirstName:()=>ai,authorLastName:()=>ni,category:()=>ci,categoryTitle:()=>di,currentDate:()=>oi,currentDay:()=>ii,currentMonth:()=>li,currentYear:()=>pi,date:()=>ui,excerpt:()=>mi,focusKeyphrase:()=>hi,id:()=>gi,modified:()=>yi,name:()=>fi,page:()=>bi,pageNumber:()=>wi,pageTotal:()=>Ei,permalink:()=>vi,postContent:()=>ki,postDay:()=>_i,postMonth:()=>xi,postTypeNamePlural:()=>Ri,postTypeNameSingular:()=>Ti,postYear:()=>Si,primaryCategory:()=>Ci,searchPhrase:()=>Ii,separator:()=>Ai,siteDescription:()=>Pi,siteName:()=>Li,tag:()=>Fi,term404:()=>Oi,termDescription:()=>Mi,termHierarchy:()=>qi,termTitle:()=>Ni,title:()=>Di,userDescription:()=>Bi});var t=s(9196),r=s.n(t);const a=window.wp.blocks,n=window.wp.data,o=window.wp.editPost,i=window.wp.element,l=window.wp.i18n,c=window.wp.plugins,d=window.wp.richText,p=window.yoast.externals.contexts,u=window.yoast.externals.redux,m=window.lodash;function h(){return(0,m.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1})}const g=window.yoast.propTypes;var y=s.n(g);const f=window.yoast.styledComponents;var b=s.n(f);const w=b().svg` width: ${e=>e.size}px; height: ${e=>e.size}px; &&& path { fill: ${e=>e.color}; } &&& circle.yoast-icon-readability-score { fill: ${e=>e.readabilityScoreColor}; display: ${e=>e.isContentAnalysisActive?"inline":"none"}; } &&& circle.yoast-icon-seo-score { fill: ${e=>e.seoScoreColor}; display: ${e=>e.isKeywordAnalysisActive?"inline":"none"}; } `,E=function(e){return(0,t.createElement)(w,{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 646.66 456.27"},(0,t.createElement)("path",{d:"M73,405.26a68.53,68.53,0,0,1-12.82-4c-1-.42-2-.89-3-1.37-1.49-.72-3-1.56-4.77-2.56-1.5-.88-2.71-1.64-3.83-2.39-.9-.61-1.8-1.26-2.68-1.92q-2.64-2-5.08-4.19a68.26,68.26,0,0,1-8.4-9.17c-.92-1.2-1.68-2.25-2.35-3.24q-1.84-2.73-3.44-5.64a68.26,68.26,0,0,1-8.29-32.55V142.13a68.29,68.29,0,0,1,8.29-32.55,58.6,58.6,0,0,1,3.44-5.64,57.53,57.53,0,0,1,4-5.27A69.64,69.64,0,0,1,48.56,85.42,56.06,56.06,0,0,1,54.2,82,67.78,67.78,0,0,1,73,75.09,69.79,69.79,0,0,1,86.75,73.7H256.41L263,55.39H86.75A86.84,86.84,0,0,0,0,142.13V338.22A86.83,86.83,0,0,0,86.75,425H98.07V406.65H86.75A68.31,68.31,0,0,1,73,405.26ZM368.55,60.85l-1.41-.53L360.73,77.5l1.41.53a68.58,68.58,0,0,1,8.66,4,58.65,58.65,0,0,1,5.65,3.43A69.49,69.49,0,0,1,391,98.67c1.4,1.68,2.72,3.46,3.95,5.27s2.39,3.72,3.44,5.64a68.32,68.32,0,0,1,8.29,32.55V406.65H233.55l-.44.76c-3.07,5.37-6.26,10.48-9.49,15.19L222,425H425V142.13A87.19,87.19,0,0,0,368.55,60.85Z",fill:"#000001"}),(0,t.createElement)("path",{d:"M303.66,0l-96.8,268.87-47.58-149H101.1l72.72,186.78a73.61,73.61,0,0,1,0,53.73c-7.07,18.07-19.63,39.63-54.36,46l-1.56.29v49.57l2-.08c29-1.14,51.57-10.72,70.89-30.14,19.69-19.79,36.55-50.52,53-96.68L366.68,0Z",fill:"#000001"}),(0,t.createElement)("circle",{className:"yoast-icon-readability-score",cx:"561.26",cy:"142.43",r:"85.04",fill:"#000001",stroke:"#181716",strokeMiterlimit:"10",strokeWidth:"0.72"}),(0,t.createElement)("circle",{className:"yoast-icon-seo-score",cx:"561.26",cy:"341.96",r:"85.04",fill:"#000001",stroke:"#181716",strokeMiterlimit:"10",strokeWidth:"0.72"}))};E.propTypes={readabilityScoreColor:y().string,isContentAnalysisActive:y().bool,seoScoreColor:y().string,isKeywordAnalysisActive:y().bool,size:y().number,color:y().string},E.defaultProps={readabilityScoreColor:"#000000",isContentAnalysisActive:!1,seoScoreColor:"#000000",isKeywordAnalysisActive:!1,size:20,color:"#000001"};const v=E,k=window.wp.components;function _(e){return void 0===e.length?e:(0,m.flatten)(e).sort(((e,t)=>void 0===e.props.renderPriority?1:e.props.renderPriority-t.props.renderPriority))}const x=({theme:e,location:s,children:r})=>(0,t.createElement)(p.LocationProvider,{value:s},(0,t.createElement)(f.ThemeProvider,{theme:e},r));x.propTypes={theme:y().object.isRequired,location:y().oneOf(["sidebar","metabox","modal"]).isRequired,children:y().element.isRequired};const S=x,R=window.yoast.uiLibrary;const T=window.yoast.componentsNew,C=window.yoast.styleGuide,I=window.yoast.analysis;function A(e){switch(e){case"loading":return{icon:"loading-spinner",color:C.colors.$color_green_medium_light};case"not-set":return{icon:"seo-score-none",color:C.colors.$color_score_icon};case"noindex":return{icon:"seo-score-none",color:C.colors.$color_noindex};case"good":return{icon:"seo-score-good",color:C.colors.$color_green_medium};case"ok":return{icon:"seo-score-ok",color:C.colors.$color_ok};default:return{icon:"seo-score-bad",color:C.colors.$color_red}}}function P({target:e,children:t}){let s=e;return"string"==typeof e&&(s=document.getElementById(e)),s?(0,i.createPortal)(t,s):null}P.propTypes={target:y().oneOfType([y().string,y().object]).isRequired,children:y().node.isRequired};const L=({target:e,scoreIndicator:s})=>(0,t.createElement)(P,{target:e},(0,t.createElement)(T.SvgIcon,{...A(s)}));L.propTypes={target:y().string.isRequired,scoreIndicator:y().string.isRequired};const F=L,O=({handleRefreshClick:e,supportLink:s})=>(0,t.createElement)("div",{className:"yst-flex yst-gap-2"},(0,t.createElement)(R.Button,{onClick:e},(0,l.__)("Refresh this page","wordpress-seo")),(0,t.createElement)(R.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,l.__)("Contact support","wordpress-seo")));O.propTypes={handleRefreshClick:y().func.isRequired,supportLink:y().string.isRequired};const M=({handleRefreshClick:e,supportLink:s})=>(0,t.createElement)("div",{className:"yst-grid yst-grid-cols-1 yst-gap-y-2"},(0,t.createElement)(R.Button,{className:"yst-order-last",onClick:e},(0,l.__)("Refresh this page","wordpress-seo")),(0,t.createElement)(R.Button,{variant:"secondary",as:"a",href:s,target:"_blank",rel:"noopener"},(0,l.__)("Contact support","wordpress-seo")));M.propTypes={handleRefreshClick:y().func.isRequired,supportLink:y().string.isRequired};const q=({error:e,children:s})=>(0,t.createElement)("div",{role:"alert",className:"yst-max-w-screen-sm yst-p-8 yst-space-y-4"},(0,t.createElement)(R.Title,null,(0,l.__)("Something went wrong. An unexpected error occurred.","wordpress-seo")),(0,t.createElement)("p",null,(0,l.__)("We're very sorry, but it seems like the following error has interrupted our application:","wordpress-seo")),(0,t.createElement)(R.Alert,{variant:"error"},(null==e?void 0:e.message)||(0,l.__)("Undefined error message.","wordpress-seo")),(0,t.createElement)("p",null,(0,l.__)("Unfortunately, this means that any unsaved changes in this section will be lost. You can try and refresh this page to resolve the problem. If this error still occurs, please get in touch with our support team, and we'll get you all the help you need!","wordpress-seo")),s);q.propTypes={error:y().object.isRequired,children:y().node},q.VerticalButtons=M,q.HorizontalButtons=O;const N=({error:e})=>{const s=(0,i.useCallback)((()=>{var e,t;return null===(e=window)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.reload()}),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/metabox-error-support")),[]),a=(0,n.useSelect)((e=>e("yoast-seo/editor").getPreference("isRtl",!1)),[]);return(0,i.useEffect)((()=>{document.querySelectorAll('[id^="wpseo-meta-tab-"]').forEach((e=>{!function(e){const t=document.querySelector(`#${e}`);null!==t&&(t.style.opacity="0.5",t.style.pointerEvents="none",t.setAttribute("aria-disabled","true"),t.classList.contains("yoast-active-tab")&&t.classList.remove("yoast-active-tab"))}(e.id)}))}),[]),(0,t.createElement)(R.Root,{context:{isRtl:a}},(0,t.createElement)(q,{error:e},(0,t.createElement)(q.HorizontalButtons,{supportLink:r,handleRefreshClick:s}),(0,t.createElement)(F,{target:"wpseo-seo-score-icon",scoreIndicator:"not-set"}),(0,t.createElement)(F,{target:"wpseo-readability-score-icon",scoreIndicator:"not-set"}),(0,t.createElement)(F,{target:"wpseo-inclusive-language-score-icon",scoreIndicator:"not-set"})))};function D({theme:e}){return(0,t.createElement)(S,{theme:e,location:"metabox"},(0,t.createElement)(R.ErrorBoundary,{FallbackComponent:N},(0,t.createElement)(k.Slot,{name:"YoastMetabox"},(e=>_(e)))))}N.propTypes={error:y().object.isRequired};const B=window.wp.compose,$=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{d:"M2 11a1 1 0 011-1h2a1 1 0 011 1v5a1 1 0 01-1 1H3a1 1 0 01-1-1v-5zM8 7a1 1 0 011-1h2a1 1 0 011 1v9a1 1 0 01-1 1H9a1 1 0 01-1-1V7zM14 4a1 1 0 011-1h2a1 1 0 011 1v12a1 1 0 01-1 1h-2a1 1 0 01-1-1V4z"}))})),U=(e=null)=>(0,t.useMemo)((()=>{const t={role:"img","aria-hidden":"true"};return null!==e&&(t.focusable=e?"true":"false"),t}),[e]);var W=s(4530),K=s.n(W);const H=({className:e,...s})=>(0,t.createElement)("span",{className:K()("yst-grow yst-overflow-hidden yst-overflow-ellipsis yst-whitespace-nowrap yst-font-wp yst-text-[#555] yst-text-base yst-leading-[normal] yst-subpixel-antialiased yst-text-left",e),...s});H.displayName="MetaboxButton.Text",H.propTypes={className:y().string},H.defaultProps={className:""};const V=({className:e,...s})=>(0,t.createElement)("button",{type:"button",className:K()("yst-flex yst-items-center yst-w-full yst-pt-4 yst-pb-4 yst-pr-4 yst-pl-6 yst-space-x-2 yst-border-t yst-border-t-[rgb(0,0,0,0.2)] yst-rounded-none yst-transition-all hover:yst-bg-[#f0f0f0] focus:yst-outline focus:yst-outline-[1px] focus:yst-outline-[color:#0066cd] focus:-yst-outline-offset-1 focus:yst-shadow-[0_0_3px_rgba(8,74,103,0.8)]",e),...s});V.propTypes={className:y().string},V.defaultProps={className:""},V.Text=H;const Y=window.yoast.helpers,j=b().div` min-width: 600px; @media screen and ( max-width: 680px ) { min-width: 0; width: 86vw; } `,z=b().div` @media screen and ( min-width: 600px ) { max-width: 420px; } `,G=(b()(T.Icon)` float: ${(0,Y.getDirectionalStyle)("right","left")}; margin: ${(0,Y.getDirectionalStyle)("0 0 16px 16px","0 16px 16px 0")}; && { width: 150px; height: 150px; @media screen and ( max-width: 680px ) { width: 80px; height: 80px; } } `,"yoast yoast-gutenberg-modal"),Z=e=>{const{title:s,className:r,showYoastIcon:a,additionalClassName:n,...o}=e,i=a?(0,t.createElement)("span",{className:"yoast-icon"}):null;return(0,t.createElement)(k.Modal,{title:s,className:`${r} ${n}`,icon:i,...o},e.children)};Z.propTypes={title:y().string,className:y().string,showYoastIcon:y().bool,children:y().oneOfType([y().node,y().arrayOf(y().node)]),additionalClassName:y().string},Z.defaultProps={title:"Yoast SEO",className:G,showYoastIcon:!0,children:null,additionalClassName:""};const X=Z;var Q,J;function ee(){return ee=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",ee({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 425 456.27"},e),Q||(Q=t.createElement("path",{d:"M73 405.26a66.79 66.79 0 0 1-6.54-1.7 64.75 64.75 0 0 1-6.28-2.31c-1-.42-2-.89-3-1.37-1.49-.72-3-1.56-4.77-2.56-1.5-.88-2.71-1.64-3.83-2.39-.9-.61-1.8-1.26-2.68-1.92a70.154 70.154 0 0 1-5.08-4.19 69.21 69.21 0 0 1-8.4-9.17c-.92-1.2-1.68-2.25-2.35-3.24a70.747 70.747 0 0 1-3.44-5.64 68.29 68.29 0 0 1-8.29-32.55V142.13a68.26 68.26 0 0 1 8.29-32.55c1-1.92 2.21-3.82 3.44-5.64s2.55-3.58 4-5.27a69.26 69.26 0 0 1 14.49-13.25C50.37 84.19 52.27 83 54.2 82A67.59 67.59 0 0 1 73 75.09a68.75 68.75 0 0 1 13.75-1.39h169.66L263 55.39H86.75A86.84 86.84 0 0 0 0 142.13v196.09A86.84 86.84 0 0 0 86.75 425h11.32v-18.35H86.75A68.75 68.75 0 0 1 73 405.26zM368.55 60.85l-1.41-.53-6.41 17.18 1.41.53a68.06 68.06 0 0 1 8.66 4c1.93 1 3.82 2.2 5.65 3.43A69.19 69.19 0 0 1 391 98.67c1.4 1.68 2.72 3.46 3.95 5.27s2.39 3.72 3.44 5.64a68.29 68.29 0 0 1 8.29 32.55v264.52H233.55l-.44.76c-3.07 5.37-6.26 10.48-9.49 15.19L222 425h203V142.13a87.2 87.2 0 0 0-56.45-81.28z"})),J||(J=t.createElement("path",{stroke:"#000",strokeMiterlimit:10,strokeWidth:3.81,d:"M119.8 408.28v46c28.49-1.12 50.73-10.6 69.61-29.58 19.45-19.55 36.17-50 52.61-96L363.94 1.9H305l-98.25 272.89-48.86-153h-54l71.7 184.18a75.67 75.67 0 0 1 0 55.12c-7.3 18.68-20.25 40.66-55.79 47.19z"}))),se=e=>(0,t.createElement)("div",{className:"yoast components-panel__body"},(0,t.createElement)("h2",{className:"components-panel__body-title"},(0,t.createElement)("button",{id:e.id,onClick:e.onClick,className:"components-button components-panel__body-toggle",type:"button"},e.prefixIcon&&(0,t.createElement)("span",{className:"yoast-icon-span",style:{fill:`${e.prefixIcon&&e.prefixIcon.color||""}`}},(0,t.createElement)(T.SvgIcon,{size:e.prefixIcon.size,icon:e.prefixIcon.icon})),(0,t.createElement)("span",{className:"yoast-title-container"},(0,t.createElement)("div",{className:"yoast-title"},e.title),(0,t.createElement)("div",{className:"yoast-subtitle"},e.subTitle)),e.children,e.suffixIcon&&(0,t.createElement)(T.SvgIcon,{size:e.suffixIcon.size,icon:e.suffixIcon.icon}),e.SuffixHeroIcon))),re=se;se.propTypes={onClick:y().func.isRequired,title:y().string.isRequired,id:y().string,subTitle:y().string,suffixIcon:y().object,SuffixHeroIcon:y().object,prefixIcon:y().object,children:y().node},se.defaultProps={id:"",suffixIcon:null,SuffixHeroIcon:null,prefixIcon:null,subTitle:"",children:null};const ae=window.moment;var ne=s.n(ae),oe=s(6746);const ie=(0,Y.makeOutboundLink)(),le=e=>{const s=(0,l.sprintf)(/* translators: %d expands to the amount of allowed keyphrases on a free account, %s expands to a link to Wincher plans. */ (0,l.__)("You've reached the maximum amount of %d keyphrases you can add to your Wincher account. If you wish to add more keyphrases, please %s.","wordpress-seo"),e.limit,"{{updateWincherPlanLink/}}");return(0,t.createElement)(T.Alert,{type:"error"},(0,oe.Z)({mixedString:s,components:{updateWincherPlanLink:(0,t.createElement)(ie,{href:wpseoAdminGlobalL10n["links.wincher.pricing"]},(0,l.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,l.__)("upgrade your %s plan","wordpress-seo"),"Wincher"))}}))};le.propTypes={limit:y().number},le.defaultProps={limit:10};const ce=le,de=()=>(0,t.createElement)(T.Alert,{type:"error"},(0,l.__)("Something went wrong while tracking the ranking position(s) of your page. Please try again later.","wordpress-seo")),pe=window.wp.apiFetch;var ue=s.n(pe);async function me(e,t,s,r=200){try{const a=await e();return!!a&&(a.status===r?t(a):s(a))}catch(e){console.error(e.message)}}async function he(e){try{return await ue()(e)}catch(e){return e.error&&e.status?e:e instanceof Response&&await e.json()}}async function ge(e){return(0,m.isArray)(e)||(e=[e]),await he({path:"yoast/v1/wincher/keyphrases/track",method:"POST",data:{keyphrases:e}})}const ye=b().p` color: ${C.colors.$color_pink_dark}; font-size: 14px; font-weight: 700; margin: 13px 0 10px; `,fe=b()(T.SvgIcon)` margin-right: 5px; vertical-align: middle; `,be=b().button` position: absolute; top: 9px; right: 9px; border: none; background: none; cursor: pointer; `,we=b().p` font-size: 13px; font-weight: 500; margin: 10px 0 13px; `,Ee=b().div` position: relative; background: ${e=>e.isTitleShortened?"#F5F7F7":"transparent"}; border: 1px solid #C7C7C7; border-left: 4px solid${C.colors.$color_pink_dark}; padding: 0 16px; margin-bottom: 1.5em; `,ve=e=>{const[t,s]=(0,i.useState)(null);return(0,i.useEffect)((()=>{e&&!t&&async function(){return await he({path:"yoast/v1/wincher/account/limit",method:"GET"})}().then((e=>s(e)))}),[t]),t};ve.propTypes={limit:y().bool.isRequired};const ke=({limit:e,usage:s,isTitleShortened:r,isFreeAccount:a})=>{const n=(0,l.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,l.__)("Your are tracking %1$s out of %2$s keyphrases included in your free account.","wordpress-seo"),s,e),o=(0,l.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,l.__)("Your are tracking %1$s out of %2$s keyphrases included in your account.","wordpress-seo"),s,e),i=a?n:o,c=(0,l.sprintf)( /* Translators: %1$s expands to the number of used keywords. * %2$s expands to the account keywords limit. */ (0,l.__)("Keyphrases tracked: %1$s/%2$s","wordpress-seo"),s,e),d=r?c:i;return(0,t.createElement)(ye,null,r&&(0,t.createElement)(fe,{icon:"exclamation-triangle",color:C.colors.$color_pink_dark,size:"14px"}),d)};ke.propTypes={limit:y().number.isRequired,usage:y().number.isRequired,isTitleShortened:y().bool,isFreeAccount:y().bool};const _e=(0,Y.makeOutboundLink)(),xe=({discount:e,months:s})=>{const r=(0,t.createElement)(_e,{href:wpseoAdminGlobalL10n["links.wincher.upgrade"],style:{fontWeight:600}},(0,l.sprintf)(/* Translators: %s : Expands to "Wincher". */ (0,l.__)("Click here to upgrade your %s plan","wordpress-seo"),"Wincher"));if(!e||!s)return(0,t.createElement)(we,null,r);const a=100*e,n=(0,l.sprintf)( /* Translators: %1$s expands to upgrade account link. * %2$s expands to the upgrade discount value. * %3$s expands to the upgrade discount duration e.g. 2 months. */ (0,l.__)("%1$s and get an exclusive %2$s discount for %3$s month(s).","wordpress-seo"),"{{wincherAccountUpgradeLink/}}",a+"%",s);return(0,t.createElement)(we,null,(0,oe.Z)({mixedString:n,components:{wincherAccountUpgradeLink:r}}))};xe.propTypes={discount:y().number,months:y().number};const Se=({onClose:e,isTitleShortened:s,trackingInfo:r})=>{const a=(()=>{const[e,t]=(0,i.useState)(null);return(0,i.useEffect)((()=>{e||async function(){return await he({path:"yoast/v1/wincher/account/upgrade-campaign",method:"GET"})}().then((e=>t(e)))}),[e]),e})();if(null===r)return null;const{limit:n,usage:o}=r;if(!(n&&o/n>=.8))return null;const c=Boolean(null==a?void 0:a.discount);return(0,t.createElement)(Ee,{isTitleShortened:s},e&&(0,t.createElement)(be,{type:"button","aria-label":(0,l.__)("Close the upgrade callout","wordpress-seo"),onClick:e},(0,t.createElement)(T.SvgIcon,{icon:"times-circle",color:C.colors.$color_pink_dark,size:"14px"})),(0,t.createElement)(ke,{...r,isTitleShortened:s,isFreeAccount:c}),(0,t.createElement)(xe,{discount:null==a?void 0:a.discount,months:null==a?void 0:a.months}))};Se.propTypes={onClose:y().func,isTitleShortened:y().bool,trackingInfo:y().object};const Re=Se,Te=()=>(0,t.createElement)(T.Alert,{type:"success"},(0,l.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,l.__)("You have successfully connected to %s! You can now track the SEO performance for the keyphrase(s) of this page.","wordpress-seo"),"Wincher")),Ce=()=>(0,t.createElement)(T.Alert,{type:"info"},(0,l.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,l.__)("%s is currently tracking the ranking position(s) of your page. This may take a few minutes. Please wait or check back later.","wordpress-seo"),"Wincher")),Ie=({data:e,mapChartDataToTableData:s,dataTableCaption:r,dataTableHeaderLabels:a,isDataTableVisuallyHidden:n})=>e.length!==a.length?(0,t.createElement)("p",null,(0,l.__)("The number of headers and header labels don't match.","wordpress-seo")):(0,t.createElement)("div",{className:n?"screen-reader-text":null},(0,t.createElement)("table",null,(0,t.createElement)("caption",null,r),(0,t.createElement)("thead",null,(0,t.createElement)("tr",null,a.map(((e,s)=>(0,t.createElement)("th",{key:s},e))))),(0,t.createElement)("tbody",null,(0,t.createElement)("tr",null,e.map(((e,r)=>(0,t.createElement)("td",{key:r},s(e.y))))))));Ie.propTypes={data:y().arrayOf(y().shape({x:y().number,y:y().number})).isRequired,mapChartDataToTableData:y().func,dataTableCaption:y().string.isRequired,dataTableHeaderLabels:y().array.isRequired,isDataTableVisuallyHidden:y().bool},Ie.defaultProps={mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const Ae=Ie,Pe=({data:e,width:s,height:r,fillColor:a,strokeColor:n,strokeWidth:o,className:l,mapChartDataToTableData:c,dataTableCaption:d,dataTableHeaderLabels:p,isDataTableVisuallyHidden:u})=>{const m=Math.max(1,Math.max(...e.map((e=>e.x)))),h=Math.max(1,Math.max(...e.map((e=>e.y)))),g=r-o,y=e.map((e=>`${e.x/m*s},${g-e.y/h*g+o}`)).join(" "),f=`0,${g+o} `+y+` ${s},${g+o}`;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)("svg",{width:s,height:r,viewBox:`0 0 ${s} ${r}`,className:l,role:"img","aria-hidden":"true",focusable:"false"},(0,t.createElement)("polygon",{fill:a,points:f}),(0,t.createElement)("polyline",{fill:"none",stroke:n,strokeWidth:o,strokeLinejoin:"round",strokeLinecap:"round",points:y})),c&&(0,t.createElement)(Ae,{data:e,mapChartDataToTableData:c,dataTableCaption:d,dataTableHeaderLabels:p,isDataTableVisuallyHidden:u}))};Pe.propTypes={data:y().arrayOf(y().shape({x:y().number,y:y().number})).isRequired,width:y().number.isRequired,height:y().number.isRequired,fillColor:y().string,strokeColor:y().string,strokeWidth:y().number,className:y().string,mapChartDataToTableData:y().func,dataTableCaption:y().string.isRequired,dataTableHeaderLabels:y().array.isRequired,isDataTableVisuallyHidden:y().bool},Pe.defaultProps={fillColor:null,strokeColor:"#000000",strokeWidth:1,className:"",mapChartDataToTableData:null,isDataTableVisuallyHidden:!0};const Le=Pe,Fe=()=>(0,t.createElement)("p",{className:"yoast-wincher-seo-performance-modal__loading-message"},(0,l.__)("Tracking the ranking position...","wordpress-seo")," ",(0,t.createElement)(T.SvgIcon,{icon:"loading-spinner"})),Oe=b()(T.SvgIcon)` margin-left: 2px; flex-shrink: 0; rotate: ${e=>e.isImproving?"-90deg":"90deg"}; `,Me=b().span` color: ${e=>e.isImproving?"#69AB56":"#DC3332"}; font-size: 13px; font-weight: 600; line-height: 20px; margin-right: 2px; margin-left: 12px; `,qe=b().td` padding-right: 0 !important; & > div { margin: 0px; } `,Ne=b().td` padding-left: 2px !important; `,De=b().td.attrs({className:"yoast-table--nopadding"})` & > div { justify-content: center; } `,Be=b().div` display: flex; align-items: center; & > a { box-sizing: border-box; } `,$e=b().button` background: none; color: inherit; border: none; padding: 0; font: inherit; cursor: pointer; outline: inherit; display: flex; align-items: center; `,Ue=b().tr` background-color: ${e=>e.isEnabled?"#FFFFFF":"#F9F9F9"} !important; `;function We(e){return Math.round(100*e)}function Ke({chartData:e}){if((0,m.isEmpty)(e)||(0,m.isEmpty)(e.position))return"?";const s=function(e){return Array.from({length:e.position.history.length},((e,t)=>t+1)).map((e=>(0,l.sprintf)((0,l._n)("%d day","%d days",e,"wordpress-seo"),e)))}(e),r=e.position.history.map(((e,t)=>({x:t,y:101-e.value})));return(0,t.createElement)(Le,{width:66,height:24,data:r,strokeWidth:1.8,strokeColor:"#498afc",fillColor:"#ade3fc",mapChartDataToTableData:We,dataTableCaption:(0,l.__)("Keyphrase position in the last 90 days on a scale from 0 to 100.","wordpress-seo"),dataTableHeaderLabels:s})}Ke.propTypes={chartData:y().object},Ke.defaultProps={chartData:{}};const He=({rowData:e})=>{var s;if(null==e||null===(s=e.position)||void 0===s||!s.change)return(0,t.createElement)(Ke,{chartData:e});const r=e.position.change<0;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(Ke,{chartData:e}),(0,t.createElement)(Me,{isImproving:r},Math.abs(e.position.change)),(0,t.createElement)(Oe,{icon:"caret-right",color:r?"#69AB56":"#DC3332",size:"14px",isImproving:r}))};function Ve(e){var s;const{keyphrase:r,rowData:a,onTrackKeyphrase:n,onUntrackKeyphrase:o,isFocusKeyphrase:c,isDisabled:d,isLoading:p,isSelected:u,onSelectKeyphrases:h}=e,g=!(0,m.isEmpty)(a),y=!(0,m.isEmpty)(null==a||null===(s=a.position)||void 0===s?void 0:s.history),f=(0,i.useCallback)((()=>{d||(g?o(r,a.id):n(r))}),[r,n,o,g,a,d]),b=(0,i.useCallback)((()=>{h((e=>u?e.filter((e=>e!==r)):e.concat(r)))}),[h,u,r]);return(0,t.createElement)(Ue,{isEnabled:g},(0,t.createElement)(qe,null,y&&(0,t.createElement)(T.Checkbox,{id:"select-"+r,onChange:b,checked:u,label:""})),(0,t.createElement)(Ne,null,r,c&&(0,t.createElement)("span",null,"*")),function(e){const{rowData:s,websiteId:r,keyphrase:a,onSelectKeyphrases:n}=e,o=(0,i.useCallback)((()=>{n([a])}),[n,a]),c=!(0,m.isEmpty)(s),d=s&&s.updated_at&&ne()(s.updated_at)>=ne()().subtract(7,"days"),p=s?(0,l.sprintf)("https://app.wincher.com/websites/%s/keywords?serp=%s&utm_medium=plugin&utm_source=yoast&referer=yoast&partner=yoast",r,s.id):null;return c?d?(0,t.createElement)(i.Fragment,null,(0,t.createElement)("td",null,(0,t.createElement)(Be,null,function(e){return!e||!e.position||e.position.value>100?"> 100":e.position.value}(s),(0,t.createElement)(T.ButtonStyledLink,{variant:"secondary",href:p,style:{height:28,marginLeft:12},rel:"noopener",target:"_blank"},(0,l.__)("View","wordpress-seo")))),(0,t.createElement)("td",{className:"yoast-table--nopadding"},(0,t.createElement)($e,{type:"button",onClick:o},(0,t.createElement)(He,{rowData:s}))),(0,t.createElement)("td",null,(u=s.updated_at,ne()(u).fromNow()))):(0,t.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,t.createElement)(Fe,null)):(0,t.createElement)("td",{className:"yoast-table--nopadding",colSpan:"3"},(0,t.createElement)("i",null,(0,l.__)("Activate tracking to show the ranking position","wordpress-seo")));var u}(e),(0,t.createElement)(De,null,function({keyphrase:e,isEnabled:s,toggleAction:r,isLoading:a}){return a?(0,t.createElement)(T.SvgIcon,{icon:"loading-spinner"}):(0,t.createElement)(T.Toggle,{id:`toggle-keyphrase-tracking-${e}`,className:"wincher-toggle",isEnabled:s,onSetToggleState:r,showToggleStateLabel:!1})}({keyphrase:r,isEnabled:g,toggleAction:f,isLoading:p})))}He.propTypes={rowData:y().object},Ve.propTypes={rowData:y().object,keyphrase:y().string.isRequired,onTrackKeyphrase:y().func,onUntrackKeyphrase:y().func,isFocusKeyphrase:y().bool,isDisabled:y().bool,isLoading:y().bool,websiteId:y().string,isSelected:y().bool.isRequired,onSelectKeyphrases:y().func.isRequired},Ve.defaultProps={rowData:{},onTrackKeyphrase:()=>{},onUntrackKeyphrase:()=>{},isFocusKeyphrase:!1,isDisabled:!1,isLoading:!1,websiteId:""};const Ye=(0,Y.makeOutboundLink)(),je=b().span` display: block; font-style: italic; @media (min-width: 782px) { display: inline; position: absolute; ${(0,Y.getDirectionalStyle)("right","left")}: 8px; } `,ze=b().div` width: 100%; overflow-y: auto; `,Ge=b().th` pointer-events: ${e=>e.isDisabled?"none":"initial"}; padding-right: 0 !important; & > div { margin: 0px; } `,Ze=b().th` padding-left: 2px !important; `,Xe=e=>{const t=(0,i.useRef)();return(0,i.useEffect)((()=>{t.current=e})),t.current},Qe=(0,m.debounce)((async function(e=null,t=null,s=null,r){return await he({path:"yoast/v1/wincher/keyphrases",method:"POST",data:{keyphrases:e,permalink:s,startAt:t},signal:r})}),500,{leading:!0}),Je=e=>{const{addTrackedKeyphrase:s,isLoggedIn:r,keyphrases:a,permalink:n,removeTrackedKeyphrase:o,setKeyphraseLimitReached:c,setRequestFailed:d,setRequestSucceeded:p,setTrackedKeyphrases:u,setHasTrackedAll:h,trackAll:g,trackedKeyphrases:y,isNewlyAuthenticated:f,websiteId:b,focusKeyphrase:w,newRequest:E,startAt:v,selectedKeyphrases:k,onSelectKeyphrases:_}=e,x=(0,i.useRef)(),S=(0,i.useRef)(),R=(0,i.useRef)(!1),[C,I]=(0,i.useState)([]),A=(0,i.useCallback)((e=>{const t=e.toLowerCase();return y&&!(0,m.isEmpty)(y)&&y.hasOwnProperty(t)?y[t]:null}),[y]),P=(0,i.useMemo)((()=>async()=>{await me((()=>(S.current&&S.current.abort(),S.current="undefined"==typeof AbortController?null:new AbortController,Qe(a,v,n,S.current.signal))),(e=>{p(e),u(e.results)}),(e=>{d(e)}))}),[p,d,u,a,n,v]),L=(0,i.useCallback)((async e=>{const t=(Array.isArray(e)?e:[e]).map((e=>e.toLowerCase()));I((e=>[...e,...t])),await me((()=>ge(t)),(e=>{p(e),s(e.results),P()}),(e=>{400===e.status&&e.limit&&c(e.limit),d(e)}),201),I((e=>(0,m.without)(e,...t)))}),[p,d,c,s,P]),F=(0,i.useCallback)((async(e,t)=>{e=e.toLowerCase(),I((t=>[...t,e])),await me((()=>async function(e){return await he({path:"yoast/v1/wincher/keyphrases/untrack",method:"DELETE",data:{keyphraseID:e}})}(t)),(t=>{p(t),o(e)}),(e=>{d(e)})),I((t=>(0,m.without)(t,e)))}),[p,o,d]),O=(0,i.useCallback)((async e=>{E(),await L(e)}),[E,L]),M=Xe(n),q=Xe(a),N=Xe(v),D=n&&v;(0,i.useEffect)((()=>{r&&D&&(n!==M||(0,m.difference)(a,q).length||v!==N)&&P()}),[r,n,M,a,q,P,D,v,N]),(0,i.useEffect)((()=>{if(r&&g&&null!==y){const e=a.filter((e=>!A(e)));e.length&&L(e),h()}}),[r,g,y,L,h,A,a]),(0,i.useEffect)((()=>{f&&!R.current&&(P(),R.current=!0)}),[f,P]),(0,i.useEffect)((()=>{if(r&&!(0,m.isEmpty)(y))return(0,m.filter)(y,(e=>(0,m.isEmpty)(e.updated_at))).length>0&&(x.current=setInterval((()=>{P()}),1e4)),()=>{clearInterval(x.current)}}),[r,y,P]);const B=r&&null===y,$=(0,i.useMemo)((()=>(0,m.isEmpty)(y)?[]:Object.values(y).filter((e=>{var t;return!(0,m.isEmpty)(null==e||null===(t=e.position)||void 0===t?void 0:t.history)})).map((e=>e.keyword))),[y]),U=(0,i.useMemo)((()=>k.length>0&&$.length>0&&$.every((e=>k.includes(e)))),[k,$]),W=(0,i.useCallback)((()=>{_(U?[]:$)}),[_,U,$]),K=(0,i.useMemo)((()=>(0,m.orderBy)(a,[e=>Object.values(y||{}).map((e=>e.keyword)).includes(e)],["desc"])),[a,y]);return a&&!(0,m.isEmpty)(a)&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ze,null,(0,t.createElement)("table",{className:"yoast yoast-table"},(0,t.createElement)("thead",null,(0,t.createElement)("tr",null,(0,t.createElement)(Ge,{isDisabled:0===$.length},(0,t.createElement)(T.Checkbox,{id:"select-all",onChange:W,checked:U,label:""})),(0,t.createElement)(Ze,{scope:"col",abbr:(0,l.__)("Keyphrase","wordpress-seo")},(0,l.__)("Keyphrase","wordpress-seo")),(0,t.createElement)("th",{scope:"col",abbr:(0,l.__)("Position","wordpress-seo")},(0,l.__)("Position","wordpress-seo")),(0,t.createElement)("th",{scope:"col",abbr:(0,l.__)("Position over time","wordpress-seo")},(0,l.__)("Position over time","wordpress-seo")),(0,t.createElement)("th",{scope:"col",abbr:(0,l.__)("Last updated","wordpress-seo")},(0,l.__)("Last updated","wordpress-seo")),(0,t.createElement)("th",{scope:"col",abbr:(0,l.__)("Tracking","wordpress-seo")},(0,l.__)("Tracking","wordpress-seo")))),(0,t.createElement)("tbody",null,K.map(((e,s)=>(0,t.createElement)(Ve,{key:`trackable-keyphrase-${s}`,keyphrase:e,onTrackKeyphrase:O,onUntrackKeyphrase:F,rowData:A(e),isFocusKeyphrase:e===w.trim().toLowerCase(),websiteId:b,isDisabled:!r,isLoading:B||C.indexOf(e.toLowerCase())>=0,isSelected:k.includes(e),onSelectKeyphrases:_})))))),(0,t.createElement)("p",{style:{marginBottom:0,position:"relative"}},(0,t.createElement)(Ye,{href:wpseoAdminGlobalL10n["links.wincher.login"]},(0,l.sprintf)(/* translators: %s expands to Wincher */ (0,l.__)("Get more insights over at %s","wordpress-seo"),"Wincher")),(0,t.createElement)(je,null,(0,l.__)("* focus keyphrase","wordpress-seo"))))};Je.propTypes={addTrackedKeyphrase:y().func.isRequired,isLoggedIn:y().bool,isNewlyAuthenticated:y().bool,keyphrases:y().array,newRequest:y().func.isRequired,removeTrackedKeyphrase:y().func.isRequired,setRequestFailed:y().func.isRequired,setKeyphraseLimitReached:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setTrackedKeyphrases:y().func.isRequired,setHasTrackedAll:y().func.isRequired,trackAll:y().bool,trackedKeyphrases:y().object,websiteId:y().string,permalink:y().string.isRequired,focusKeyphrase:y().string,startAt:y().string,selectedKeyphrases:y().arrayOf(y().string).isRequired,onSelectKeyphrases:y().func.isRequired},Je.defaultProps={isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],trackAll:!1,websiteId:"",focusKeyphrase:""};const et=Je,tt=(0,B.compose)([(0,n.withSelect)((e=>{const{getWincherWebsiteId:t,getWincherTrackableKeyphrases:s,getWincherLoginStatus:r,getWincherPermalink:a,getFocusKeyphrase:n,isWincherNewlyAuthenticated:o,shouldWincherTrackAll:i}=e("yoast-seo/editor");return{focusKeyphrase:n(),keyphrases:s(),isLoggedIn:r(),trackAll:i(),websiteId:t(),isNewlyAuthenticated:o(),permalink:a()}})),(0,n.withDispatch)((e=>{const{setWincherNewRequest:t,setWincherRequestSucceeded:s,setWincherRequestFailed:r,setWincherSetKeyphraseLimitReached:a,setWincherTrackedKeyphrases:n,setWincherTrackingForKeyphrase:o,setWincherTrackAllKeyphrases:i,unsetWincherTrackingForKeyphrase:l}=e("yoast-seo/editor");return{newRequest:()=>{t()},setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{r(e)},setKeyphraseLimitReached:e=>{a(e)},addTrackedKeyphrase:e=>{o(e)},removeTrackedKeyphrase:e=>{l(e)},setTrackedKeyphrases:e=>{n(e)},setHasTrackedAll:()=>{i(!1)}}}))])(et),st=(0,Y.makeOutboundLink)(),rt=(0,Y.makeOutboundLink)(),at=()=>{const e=(0,l.sprintf)((0,l.__)(/* translators: %1$s expands to a link to Wincher, %2$s expands to a link to the keyphrase tracking article on Yoast.com */ "With %1$s you can track the ranking position of your page in the search results based on your keyphrase(s). %2$s","wordpress-seo"),"{{wincherLink/}}","{{wincherReadMoreLink/}}");return(0,t.createElement)("p",null,(0,oe.Z)({mixedString:e,components:{wincherLink:(0,t.createElement)(st,{href:wpseoAdminGlobalL10n["links.wincher.website"]},"Wincher"),wincherReadMoreLink:(0,t.createElement)(rt,{href:wpseoAdminL10n["shortlinks.wincher.seo_performance"]},(0,l.__)("Read more about keyphrase tracking with Wincher","wordpress-seo"))}}))},nt=()=>(0,t.createElement)(T.Alert,{type:"error"},(0,l.__)("No keyphrase has been set. Please set a keyphrase first.","wordpress-seo")),ot=()=>(0,t.createElement)(T.Alert,{type:"info"},(0,l.sprintf)(/* translators: %s: Expands to "Wincher". */ (0,l.__)("Automatic tracking of keyphrases is enabled. Your keyphrase(s) will automatically be tracked by %s when you publish your post.","wordpress-seo"),"Wincher"));class it{constructor(e,t={},s={}){this.url=e,this.origin=new URL(e).origin,this.eventHandlers=Object.assign({success:{type:"",callback:()=>{}},error:{type:"",callback:()=>{}}},t),this.options=Object.assign({height:570,width:340,title:""},s),this.popup=null,this.createPopup=this.createPopup.bind(this),this.messageHandler=this.messageHandler.bind(this),this.getPopup=this.getPopup.bind(this)}createPopup(){const{height:e,width:t,title:s}=this.options,r=["top="+(window.top.outerHeight/2+window.top.screenY-e/2),"left="+(window.top.outerWidth/2+window.top.screenX-t/2),"width="+t,"height="+e,"resizable=1","scrollbars=1","status=0"];this.popup&&!this.popup.closed||(this.popup=window.open(this.url,s,r.join(","))),this.popup&&this.popup.focus(),window.addEventListener("message",this.messageHandler,!1)}async messageHandler(e){const{data:t,source:s,origin:r}=e;r===this.origin&&this.popup===s&&(t.type===this.eventHandlers.success.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.success.callback(t)),t.type===this.eventHandlers.error.type&&(this.popup.close(),window.removeEventListener("message",this.messageHandler,!1),await this.eventHandlers.error.callback(t)))}getPopup(){return this.popup}isClosed(){return!this.popup||this.popup.closed}focus(){this.isClosed()||this.popup.focus()}}const lt=e=>{const s=(0,l.sprintf)(/* translators: %s expands to a link to open the Wincher login popup. */ (0,l.__)("It seems like something went wrong when retrieving your website's data. Please %s and try again.","wordpress-seo"),"{{reconnectToWincher/}}","Wincher");return(0,t.createElement)(T.Alert,{type:"error",className:e.className},(0,oe.Z)({mixedString:s,components:{reconnectToWincher:(0,t.createElement)("a",{href:"#",onClick:t=>{t.preventDefault(),e.onReconnect()}},(0,l.sprintf)(/* translators: %s : Expands to "Wincher". */ (0,l.__)("reconnect to %s","wordpress-seo"),"Wincher"))}}))};lt.propTypes={onReconnect:y().func.isRequired,className:y().string},lt.defaultProps={className:""};const ct=lt,dt=()=>(0,t.createElement)(T.Alert,{type:"error"},(0,l.__)("Before you can track your SEO performance make sure to set either the post’s title and save it as a draft or manually set the post’s slug.","wordpress-seo")),pt=window.yoast["chart.js"],ut="label";function mt(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function ht(e,t){e.labels=t}function gt(e,t){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ut;const r=[];e.datasets=t.map((t=>{const a=e.datasets.find((e=>e[s]===t[s]));return a&&t.data&&!r.includes(a)?(r.push(a),Object.assign(a,t),a):{...t}}))}function yt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ut;const s={labels:[],datasets:[]};return ht(s,e.labels),gt(s,e.datasets,t),s}function ft(e,s){const{height:r=150,width:a=300,redraw:n=!1,datasetIdKey:o,type:i,data:l,options:c,plugins:d=[],fallbackContent:p,updateMode:u,...m}=e,h=(0,t.useRef)(null),g=(0,t.useRef)(),y=()=>{h.current&&(g.current=new pt.Chart(h.current,{type:i,data:yt(l,o),options:c&&{...c},plugins:d}),mt(s,g.current))},f=()=>{mt(s,null),g.current&&(g.current.destroy(),g.current=null)};return(0,t.useEffect)((()=>{!n&&g.current&&c&&function(e,t){const s=e.options;s&&t&&Object.assign(s,t)}(g.current,c)}),[n,c]),(0,t.useEffect)((()=>{!n&&g.current&&ht(g.current.config.data,l.labels)}),[n,l.labels]),(0,t.useEffect)((()=>{!n&&g.current&&l.datasets&>(g.current.config.data,l.datasets,o)}),[n,l.datasets]),(0,t.useEffect)((()=>{g.current&&(n?(f(),setTimeout(y)):g.current.update(u))}),[n,c,l.labels,l.datasets,u]),(0,t.useEffect)((()=>{g.current&&(f(),setTimeout(y))}),[i]),(0,t.useEffect)((()=>(y(),()=>f())),[]),t.createElement("canvas",Object.assign({ref:h,role:"img",height:r,width:a},m),p)}const bt=(0,t.forwardRef)(ft);function wt(e,s){return pt.Chart.register(s),(0,t.forwardRef)(((s,r)=>t.createElement(bt,Object.assign({},s,{ref:r,type:e}))))}const Et=wt("line",pt.LineController),vt={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};pt._adapters._date.override("function"==typeof ne()?{_id:"moment",formats:function(){return vt},parse:function(e,t){return"string"==typeof e&&"string"==typeof t?e=ne()(e,t):e instanceof ne()||(e=ne()(e)),e.isValid()?e.valueOf():null},format:function(e,t){return ne()(e).format(t)},add:function(e,t,s){return ne()(e).add(t,s).valueOf()},diff:function(e,t,s){return ne()(e).diff(ne()(t),s)},startOf:function(e,t,s){return e=ne()(e),"isoWeek"===t?(s=Math.trunc(Math.min(Math.max(0,s),6)),e.isoWeekday(s).startOf("day").valueOf()):e.startOf(t).valueOf()},endOf:function(e,t){return ne()(e).endOf(t).valueOf()}}:{}),Math.PI,Number.POSITIVE_INFINITY,Math.log10,Math.sign,"undefined"==typeof window||window.requestAnimationFrame,new Map,Object.create(null),Object.create(null),Number.EPSILON;const kt=["top","right","bottom","left"];function _t(e,t,s){const r={};s=s?"-"+s:"";for(let a=0;a<4;a++){const n=kt[a];r[n]=parseFloat(e[t+"-"+n+s])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}!function(){let e=!1;try{const t={get passive(){return e=!0,!1}};window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}}(),pt.Chart.register(pt.CategoryScale,pt.LineController,pt.LineElement,pt.PointElement,pt.LinearScale,pt.TimeScale,pt.Legend,pt.Tooltip);const xt=["#ff983b","#ffa3f7","#3798ff","#ff3b3b","#acce81","#b51751","#3949ab","#26c6da","#ccb800","#de66ff","#4db6ac","#ffab91","#45f5f1","#77f210","#90a4ae","#ffd54f","#006b5e","#8ec7d2","#b1887c","#cc9300"];function St({datasets:e,isChartShown:s,keyphrases:r}){if(!s)return null;const a=(0,i.useMemo)((()=>Object.fromEntries([...r].sort().map(((e,t)=>[e,xt[t%xt.length]])))),[r]),n=e.map((e=>{const t=a[e.label];return{...e,data:e.data.map((({datetime:e,value:t})=>({x:e,y:t}))),lineTension:0,pointRadius:1,pointHoverRadius:4,borderWidth:2,pointHitRadius:6,backgroundColor:t,borderColor:t}})).filter((e=>!1!==e.selected));return(0,t.createElement)(Et,{height:100,data:{datasets:n},options:{plugins:{legend:{display:!0,position:"bottom",labels:{color:"black",usePointStyle:!0,boxHeight:7,boxWidth:7},onClick:m.noop},tooltip:{enabled:!0,callbacks:{title:e=>ne()(e[0].raw.x).utc().format("YYYY-MM-DD")},titleAlign:"center",mode:"xPoint",position:"nearest",usePointStyle:!0,boxHeight:7,boxWidth:7,boxPadding:2}},scales:{x:{bounds:"ticks",type:"time",time:{unit:"day",minUnit:"day"},grid:{display:!1},ticks:{autoSkipPadding:50,maxRotation:0,color:"black"}},y:{bounds:"ticks",offset:!0,reverse:!0,ticks:{precision:0,color:"black"},max:101}}}})}pt.Interaction.modes.xPoint=(e,t,s,r)=>{const a=function(e,t){if("native"in e)return e;const{canvas:s,currentDevicePixelRatio:r}=t,a=(m=s).ownerDocument.defaultView.getComputedStyle(m,null),n="border-box"===a.boxSizing,o=_t(a,"padding"),i=_t(a,"border","width"),{x:l,y:c,box:d}=function(e,t){const s=e.touches,r=s&&s.length?s[0]:e,{offsetX:a,offsetY:n}=r;let o,i,l=!1;if(((e,t,s)=>(e>0||t>0)&&(!s||!s.shadowRoot))(a,n,e.target))o=a,i=n;else{const e=t.getBoundingClientRect();o=r.clientX-e.left,i=r.clientY-e.top,l=!0}return{x:o,y:i,box:l}}(e,s),p=o.left+(d&&i.left),u=o.top+(d&&i.top);var m;let{width:h,height:g}=t;return n&&(h-=o.width+i.width,g-=o.height+i.height),{x:Math.round((l-p)/h*s.width/r),y:Math.round((c-u)/g*s.height/r)}}(t,e);let n=[];if(pt.Interaction.evaluateInteractionItems(e,"x",a,((e,t,s)=>{e.inXRange(a.x,r)&&n.push({element:e,datasetIndex:t,index:s})})),0===n.length)return n;const o=n.reduce(((e,t)=>Math.abs(a.x-e.element.x)e.element.x===o)),n.some((e=>Math.abs(e.element.y-a.y)<10))?n:[]},St.propTypes={datasets:y().arrayOf(y().shape({label:y().string.isRequired,data:y().arrayOf(y().shape({datetime:y().string.isRequired,value:y().number.isRequired})).isRequired,selected:y().bool})).isRequired,isChartShown:y().bool.isRequired,keyphrases:y().array.isRequired};const Rt=({response:e,onLogin:s})=>[401,403,404].includes(e.status)?(0,t.createElement)(ct,{onReconnect:s}):(0,t.createElement)(de,null);Rt.propTypes={response:y().object.isRequired,onLogin:y().func.isRequired};const Tt=({isSuccess:e,response:s,allKeyphrasesMissRanking:r,onLogin:a,keyphraseLimitReached:n,limit:o})=>n?(0,t.createElement)(ce,{limit:o}):(0,m.isEmpty)(s)||e?r?(0,t.createElement)(Ce,null):null:(0,t.createElement)(Rt,{response:s,onLogin:a});Tt.propTypes={isSuccess:y().bool.isRequired,allKeyphrasesMissRanking:y().bool.isRequired,response:y().object,onLogin:y().func.isRequired,keyphraseLimitReached:y().bool.isRequired,limit:y().number.isRequired},Tt.defaultProps={response:{}};let Ct=null;const It=async e=>{if(Ct&&!Ct.isClosed())return void Ct.focus();const{url:t}=await async function(){return await he({path:"yoast/v1/wincher/authorization-url",method:"GET"})}();Ct=new it(t,{success:{type:"wincher:oauth:success",callback:t=>(async(e,t)=>{const{onAuthentication:s,setRequestSucceeded:r,setRequestFailed:a,keyphrases:n,addTrackedKeyphrase:o,setKeyphraseLimitReached:i}=e;await me((()=>async function(e){const{code:t,websiteId:s}=e;return await he({path:"yoast/v1/wincher/authenticate",method:"POST",data:{code:t,websiteId:s}})}(t)),(async e=>{s(!0,!0,t.websiteId.toString()),r(e);const l=(Array.isArray(n)?n:[n]).map((e=>e.toLowerCase()));await me((()=>ge(l)),(e=>{r(e),o(e.results)}),(e=>{400===e.status&&e.limit&&i(e.limit),a(e)}),201);const c=Ct.getPopup();c&&c.close()}),(async e=>a(e)))})(e,t)},error:{type:"wincher:oauth:error",callback:()=>e.onAuthentication(!1,!1)}},{title:"Wincher_login",width:500,height:700}),Ct.createPopup()},At=e=>e.isLoggedIn?null:(0,t.createElement)("p",null,(0,t.createElement)(T.NewButton,{onClick:e.onLogin,variant:"primary"},(0,l.sprintf)(/* translators: %s expands to Wincher */ (0,l.__)("Connect with %s","wordpress-seo"),"Wincher")));At.propTypes={isLoggedIn:y().bool.isRequired,onLogin:y().func.isRequired};const Pt=b().div` p { margin: 1em 0; } `,Lt=b().div` ${e=>e.isDisabled&&"\n\t\topacity: .5;\n\t\tpointer-events: none;\n\t"}; `,Ft=b().div` font-weight: var(--yoast-font-weight-bold); color: var(--yoast-color-label); font-size: var(--yoast-font-size-default); `,Ot=b().div.attrs({className:"yoast-field-group"})` display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; `,Mt=b().div` margin: 8px 0; `,qt=ne().utc().startOf("day"),Nt=[{name:(0,l.__)("Last day","wordpress-seo"),value:ne()(qt).subtract(1,"days").format(),defaultIndex:1},{name:(0,l.__)("Last week","wordpress-seo"),value:ne()(qt).subtract(1,"week").format(),defaultIndex:2},{name:(0,l.__)("Last month","wordpress-seo"),value:ne()(qt).subtract(1,"month").format(),defaultIndex:3},{name:(0,l.__)("Last year","wordpress-seo"),value:ne()(qt).subtract(1,"year").format(),defaultIndex:0}],Dt=e=>{const{onSelect:s,selected:r,options:a,isLoggedIn:n}=e;return n?a.length<1?null:(0,t.createElement)("select",{className:"components-select-control__input",id:"wincher-period-picker",value:(null==r?void 0:r.value)||a[0].value,onChange:s},a.map((e=>(0,t.createElement)("option",{key:e.name,value:e.value},e.name)))):null};Dt.propTypes={onSelect:y().func.isRequired,selected:y().object,options:y().array.isRequired,isLoggedIn:y().bool.isRequired};const Bt=e=>{const{trackedKeyphrases:s,isLoggedIn:r,keyphrases:a,shouldTrackAll:n,permalink:o,historyDaysLimit:c}=e;if(!o&&r)return(0,t.createElement)(dt,null);if(0===a.length)return(0,t.createElement)(nt,null);const d=ne()(qt).subtract(c,"days"),p=Nt.filter((e=>ne()(e.value).isSameOrAfter(d))),u=(0,m.orderBy)(p,(e=>e.defaultIndex),"desc")[0],[h,g]=(0,i.useState)(u),[y,f]=(0,i.useState)([]),b=y.length>0,w=(0,B.usePrevious)(s);(0,i.useEffect)((()=>{if(!(0,m.isEmpty)(s)&&(0,m.difference)(Object.keys(s),Object.keys(w||[])).length){const e=Object.values(s).map((e=>e.keyword));f(e)}}),[s,w]),(0,i.useEffect)((()=>{g(u)}),[null==u?void 0:u.name]);const E=(0,i.useCallback)((e=>{const t=Nt.find((t=>t.value===e.target.value));t&&g(t)}),[g]),v=(0,i.useMemo)((()=>(0,m.isEmpty)(y)||(0,m.isEmpty)(s)?[]:Object.values(s).filter((e=>{var t;return!(null==e||null===(t=e.position)||void 0===t||!t.history)})).map((e=>{var t;return{label:e.keyword,data:e.position.history,selected:y.includes(e.keyword)&&!(0,m.isEmpty)(null===(t=e.position)||void 0===t?void 0:t.history)}}))),[y,s]);return(0,t.createElement)(Lt,{isDisabled:!r},(0,t.createElement)("p",null,(0,l.__)("You can enable / disable tracking the SEO performance for each keyphrase below.","wordpress-seo")),r&&n&&(0,t.createElement)(ot,null),(0,t.createElement)(Ot,null,(0,t.createElement)(Dt,{selected:h,onSelect:E,options:p,isLoggedIn:r})),(0,t.createElement)(Mt,null,(0,t.createElement)(St,{isChartShown:b,datasets:v,keyphrases:a})),(0,t.createElement)(tt,{startAt:null==h?void 0:h.value,selectedKeyphrases:y,onSelectKeyphrases:f,trackedKeyphrases:s}))};function $t(e){const{isNewlyAuthenticated:s,isLoggedIn:r}=e,a=(0,i.useCallback)((()=>{It(e)}),[It,e]),n=ve(r);return(0,t.createElement)(Pt,null,s&&(0,t.createElement)(Te,null),r&&(0,t.createElement)(Re,{trackingInfo:n}),(0,t.createElement)(Ft,null,(0,l.__)("SEO performance","wordpress-seo"),(0,t.createElement)(T.HelpIcon,{linkTo:wpseoAdminL10n["shortlinks.wincher.seo_performance"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about the SEO performance feature.","wordpress-seo")})),(0,t.createElement)(at,null),(0,t.createElement)(At,{isLoggedIn:r,onLogin:a}),(0,t.createElement)(Tt,{...e,onLogin:a}),(0,t.createElement)(Bt,{...e,historyDaysLimit:(null==n?void 0:n.historyDays)||31}))}Bt.propTypes={trackedKeyphrases:y().object,keyphrases:y().array.isRequired,isLoggedIn:y().bool.isRequired,shouldTrackAll:y().bool.isRequired,permalink:y().string.isRequired,historyDaysLimit:y().number},$t.propTypes={trackedKeyphrases:y().object,addTrackedKeyphrase:y().func.isRequired,isLoggedIn:y().bool,isNewlyAuthenticated:y().bool,keyphrases:y().array,response:y().object,shouldTrackAll:y().bool,permalink:y().string,historyDaysLimit:y().number},$t.defaultProps={trackedKeyphrases:null,isLoggedIn:!1,isNewlyAuthenticated:!1,keyphrases:[],response:{},shouldTrackAll:!1,permalink:"",historyDaysLimit:0};const Ut=(0,B.compose)([(0,n.withSelect)((e=>{const{isWincherNewlyAuthenticated:t,getWincherKeyphraseLimitReached:s,getWincherLimit:r,getWincherHistoryDaysLimit:a,getWincherLoginStatus:n,getWincherRequestIsSuccess:o,getWincherRequestResponse:i,getWincherTrackableKeyphrases:l,getWincherTrackedKeyphrases:c,getWincherAllKeyphrasesMissRanking:d,getWincherPermalink:p,shouldWincherAutomaticallyTrackAll:u}=e("yoast-seo/editor");return{keyphrases:l(),trackedKeyphrases:c(),allKeyphrasesMissRanking:d(),isLoggedIn:n(),isNewlyAuthenticated:t(),isSuccess:o(),keyphraseLimitReached:s(),limit:r(),response:i(),shouldTrackAll:u(),permalink:p(),historyDaysLimit:a()}})),(0,n.withDispatch)((e=>{const{setWincherWebsiteId:t,setWincherRequestSucceeded:s,setWincherRequestFailed:r,setWincherTrackingForKeyphrase:a,setWincherSetKeyphraseLimitReached:n,setWincherLoginStatus:o}=e("yoast-seo/editor");return{setRequestSucceeded:e=>{s(e)},setRequestFailed:e=>{r(e)},addTrackedKeyphrase:e=>{a(e)},setKeyphraseLimitReached:e=>{n(e)},onAuthentication:(e,s,r)=>{t(r),o(e,s)}}}))])($t),Wt=b()($)` width: 18px; height: 18px; margin: 3px; `;function Kt(e){const{keyphrases:t,onNoKeyphraseSet:s,onOpen:r,location:a}=e;if(!t.length){let e=document.querySelector("#focus-keyword-input-metabox");return e||(e=document.querySelector("#focus-keyword-input-sidebar")),e.focus(),void s()}r(a)}function Ht(e){const{location:s,whichModalOpen:r,shouldCloseOnClickOutside:a}=e,n=(0,i.useCallback)((()=>{Kt(e)}),[Kt,e]),o=(0,l.__)("Track SEO performance","wordpress-seo"),c=U();return(0,t.createElement)(i.Fragment,null,r===s&&(0,t.createElement)(X,{title:o,onRequestClose:e.onClose,icon:(0,t.createElement)(te,null),additionalClassName:"yoast-wincher-seo-performance-modal yoast-gutenberg-modal__no-padding",shouldCloseOnClickOutside:a},(0,t.createElement)(j,{className:"yoast-gutenberg-modal__content yoast-wincher-seo-performance-modal__content"},(0,t.createElement)(Ut,null))),"sidebar"===s&&(0,t.createElement)(re,{id:`wincher-open-button-${s}`,title:o,SuffixHeroIcon:(0,t.createElement)(Wt,{className:"yst-text-slate-500",...c}),onClick:n}),"metabox"===s&&(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(V,{id:`wincher-open-button-${s}`,onClick:n},(0,t.createElement)(V.Text,null,o),(0,t.createElement)($,{className:"yst-h-5 yst-w-5 yst-text-slate-500",...c}))))}Ht.propTypes={location:y().string,whichModalOpen:y().oneOf(["none","metabox","sidebar","postpublish"]),shouldCloseOnClickOutside:y().bool,keyphrases:y().array.isRequired,onNoKeyphraseSet:y().func.isRequired,onOpen:y().func.isRequired,onClose:y().func.isRequired},Ht.defaultProps={location:"",whichModalOpen:"none",shouldCloseOnClickOutside:!0};const Vt=(0,B.compose)([(0,n.withSelect)((e=>{const{getWincherModalOpen:t,getWincherTrackableKeyphrases:s}=e("yoast-seo/editor");return{keyphrases:s(),whichModalOpen:t()}})),(0,n.withDispatch)((e=>{const{setWincherOpenModal:t,setWincherDismissModal:s,setWincherNoKeyphrase:r}=e("yoast-seo/editor");return{onOpen:e=>{t(e)},onClose:()=>{s()},onNoKeyphraseSet:()=>{r()}}}))])(Ht),Yt=window.yoast.externals.components;function jt(){return(0,B.createHigherOrderComponent)((function(e){return(0,B.pure)((function(t){const s=(0,i.useContext)(p.LocationContext);return(0,i.createElement)(e,{...t,location:s})}))}),"withLocation")}const zt=(0,B.compose)([(0,n.withSelect)((e=>{const{isCornerstoneContent:t}=e("yoast-seo/editor");return{isCornerstone:t(),learnMoreUrl:wpseoAdminL10n["shortlinks.cornerstone_content_info"]}})),(0,n.withDispatch)((e=>{const{toggleCornerstoneContent:t}=e("yoast-seo/editor");return{onChange:t}})),jt()])(Yt.CollapsibleCornerstone),Gt=window.yoast.searchMetadataPreviews,Zt=b()(T.StyledSection)` &${T.StyledSectionBase} { padding: 0; & ${T.StyledHeading} { ${(0,Y.getDirectionalStyle)("padding-left","padding-right")}: 20px; margin-left: ${(0,Y.getDirectionalStyle)("0","20px")}; } } `,Xt=({children:e,title:s,icon:r,hasPaperStyle:a,shoppingData:n})=>(0,t.createElement)(Zt,{headingLevel:3,headingText:s,headingIcon:r,headingIconColor:"#555",hasPaperStyle:a,shoppingData:n},e);Xt.propTypes={children:y().element,title:y().string,icon:y().string,hasPaperStyle:y().bool,shoppingData:y().object},Xt.defaultProps={hasPaperStyle:!0,shoppingData:null};const Qt=Xt,Jt=window.wp.sanitize,es="SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLE";function ts(e,t,s="",r=!1){const a="string"==typeof t?(0,Y.decodeHTML)(t):t;return{type:es,name:e,value:a,label:s,hidden:r}}function ss(e){return e.charAt(0).toUpperCase()+e.slice(1)}const{stripHTMLTags:rs}=Y.strings,as=["slug","content","contentImage","snippetPreviewImageURL"];function ns(e,t="_"){return e.replace(/\s/g,t)}function os(e,t=156){return(e=(e=(0,Jt.stripTags)(e)).trim()).length<=t||(e=e.substring(0,t),/\s/.test(e)&&(e=e.substring(0,e.lastIndexOf(" ")))),e}const is=(0,m.memoize)(((e,t)=>0===e?m.noop:(0,m.debounce)((s=>t(s,e)),500))),ls=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),cs=({link:e,text:s})=>(0,t.createElement)(R.Root,null,(0,t.createElement)("p",null,s),(0,t.createElement)(R.Button,{href:e,as:"a",className:"yst-gap-2 yst-mb-5 yst-mt-2",variant:"upsell",target:"_blank",rel:"noopener"},(0,t.createElement)(ls,{className:"yst-w-4 yst-h-4 yst--ml-1 yst-shrink-0"}),(0,l.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,l.__)("Unlock with %1$s","wordpress-seo"),"Yoast WooCommerce SEO")));cs.propTypes={link:y().string.isRequired,text:y().string.isRequired};const ds=cs,ps=function(e,t){let s=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(s=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[s]&&(e.url=e.url.slice(0,s)+e.url.slice(s+1)),function(e){const t=(0,m.get)(window,["YoastSEO","app","pluggable"],!1);if(!t||!(0,m.get)(window,["YoastSEO","app","pluggable","loaded"],!1))return function(e){const t=(0,m.get)(window,["YoastSEO","wp","replaceVarsPlugin","replaceVariables"],m.identity);return{url:e.url,title:rs(t(e.title)),description:rs(t(e.description)),filteredSEOTitle:e.filteredSEOTitle?rs(t(e.filteredSEOTitle)):""}}(e);const s=t._applyModifications.bind(t);return{url:e.url,title:rs(s("data_page_title",e.title)),description:rs(s("data_meta_desc",e.description)),filteredSEOTitle:e.filteredSEOTitle?rs(s("data_page_title",e.filteredSEOTitle)):""}}(e)},us=(0,B.compose)([(0,n.withSelect)((function(e){const{getBaseUrlFromSettings:t,getDateFromSettings:s,getFocusKeyphrase:r,getRecommendedReplaceVars:a,getReplaceVars:n,getShoppingData:o,getSiteIconUrlFromSettings:i,getSnippetEditorData:l,getSnippetEditorMode:c,getSnippetEditorPreviewImageUrl:d,getSnippetEditorWordsToHighlight:p,isCornerstoneContent:u,getIsTerm:m,getContentLocale:h,getSiteName:g}=e("yoast-seo/editor"),y=n();return y.forEach((e=>{""!==e.value||["title","excerpt","excerpt_only"].includes(e.name)||(e.value="%%"+e.name+"%%")})),{baseUrl:t(),data:l(),date:s(),faviconSrc:i(),keyword:r(),mobileImageSrc:d(),mode:c(),recommendedReplacementVariables:a(),replacementVariables:y,shoppingData:o(),wordsToHighlight:p(),isCornerstone:u(),isTaxonomy:m(),locale:h(),siteName:g()}})),(0,n.withDispatch)((function(e,t,{select:s}){const{updateData:r,switchMode:a,updateAnalysisData:n,findCustomFields:o}=e("yoast-seo/editor"),i=e("core/editor"),l=s("yoast-seo/editor").getPostId();return{onChange:(e,t)=>{switch(e){case"mode":a(t);break;case"slug":r({slug:t}),i&&i.editPost({slug:t});break;default:r({[e]:t})}},onChangeAnalysisData:n,onReplacementVariableSearchChange:is(l,o)}}))])((e=>{const s=(0,n.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/product-google-preview-metabox")),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsWooSeoUpsell()),[]),a=(0,l.__)("Want an enhanced Google preview of how your WooCommerce products look in the search results?","wordpress-seo");return(0,t.createElement)(p.LocationConsumer,null,(n=>(0,t.createElement)(Qt,{icon:"eye",hasPaperStyle:e.hasPaperStyle},(0,t.createElement)(t.Fragment,null,r&&(0,t.createElement)(ds,{link:s,text:a}),(0,t.createElement)(Gt.SnippetEditor,{...e,descriptionPlaceholder:(0,l.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:ps,showCloseButton:!1,idSuffix:n})))))})),ms=(0,n.withSelect)((e=>{const{getWarningMessage:t}=e("yoast-seo/editor");return{message:t()}}))(T.Warning),hs=window.yoast.featureFlag,gs=b()(T.Collapsible)` h2 > button { padding-left: 24px; padding-top: 16px; &:hover { background-color: #f0f0f0; } } div[class^="collapsible_content"] { padding: 24px 0; margin: 0 24px; border-top: 1px solid rgba(0,0,0,0.2); } `,ys=e=>(0,t.createElement)(gs,{hasPadding:!0,hasSeparator:!0,...e}),fs=()=>{const e=(0,n.useSelect)((e=>e("yoast-seo/editor").getEstimatedReadingTime()),[]),s=(0,i.useMemo)((()=>(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-estimated_reading_time","")),[]);return(0,t.createElement)(T.InsightsCard,{amount:e,unit:(0,l._n)("minute","minutes",e,"wordpress-seo"),title:(0,l.__)("Reading time","wordpress-seo"),linkTo:s /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about reading time","wordpress-seo")})},bs=(0,Y.makeOutboundLink)();function ws(e,s,r){const a=function(e){switch(e){case I.DIFFICULTY.FAIRLY_DIFFICULT:case I.DIFFICULTY.DIFFICULT:case I.DIFFICULTY.VERY_DIFFICULT:return(0,l.__)("Try to make shorter sentences, using less difficult words to improve readability","wordpress-seo");case I.DIFFICULTY.NO_DATA:return(0,l.__)("Continue writing to get insight into the readability of your text!","wordpress-seo");default:return(0,l.__)("Good job!","wordpress-seo")}}(s);return(0,t.createElement)("span",null,function(e,t){return-1===e?(0,l.sprintf)((0,l.__)("Your text should be slightly longer to calculate your Flesch reading ease score.","wordpress-seo")):(0,l.sprintf)( /* Translators: %1$s expands to the numeric Flesch reading ease score, %2$s expands to the easiness of reading (e.g. 'easy' or 'very difficult'). */ (0,l.__)("The copy scores %1$s in the test, which is considered %2$s to read.","wordpress-seo"),e,function(e){switch(e){case I.DIFFICULTY.NO_DATA:return(0,l.__)("no data","wordpress-seo");case I.DIFFICULTY.VERY_EASY:return(0,l.__)("very easy","wordpress-seo");case I.DIFFICULTY.EASY:return(0,l.__)("easy","wordpress-seo");case I.DIFFICULTY.FAIRLY_EASY:return(0,l.__)("fairly easy","wordpress-seo");case I.DIFFICULTY.OKAY:return(0,l.__)("okay","wordpress-seo");case I.DIFFICULTY.FAIRLY_DIFFICULT:return(0,l.__)("fairly difficult","wordpress-seo");case I.DIFFICULTY.DIFFICULT:return(0,l.__)("difficult","wordpress-seo");case I.DIFFICULTY.VERY_DIFFICULT:return(0,l.__)("very difficult","wordpress-seo")}}(t))}(e,s)," ",s>=I.DIFFICULTY.FAIRLY_DIFFICULT?(0,t.createElement)(bs,{href:r},a+"."):a)}const Es=()=>{let e=(0,n.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseScore()),[]);const s=(0,i.useMemo)((()=>(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease","")),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").getFleschReadingEaseDifficulty()),[e]),a=(0,i.useMemo)((()=>{const t=(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-flesch_reading_ease_article","");return ws(e,r,t)}),[e,r]);return-1===e&&(e="?"),(0,t.createElement)(T.InsightsCard,{amount:e,unit:(0,l.__)("out of 100","wordpress-seo"),title:(0,l.__)("Flesch reading ease","wordpress-seo"),linkTo:s /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about Flesch reading ease","wordpress-seo"),description:a})};let vs,ks,_s,xs;const Ss=/<(\/)?(\w+)\s*(\/)?>/g;function Rs(e,t,s,r,a){return{element:e,tokenStart:t,tokenLength:s,prevOffset:r,leadingTextStart:a,children:[]}}function Ts(){const e=vs.length-ks;0!==e&&_s.push(vs.substring(ks,ks+e))}function Cs(e){const{element:t,tokenStart:s,tokenLength:r,prevOffset:a,children:n}=e,o=xs[xs.length-1],l=vs.substring(o.prevOffset,s);l&&o.children.push(l),o.children.push((0,i.cloneElement)(t,null,...n)),o.prevOffset=a||s+r}function Is(e){const t=function(){const e=Ss.exec(vs);if(null===e)return["no-more-tokens"];const t=e.index,[s,r,a,n]=e,o=s.length;return n?["self-closed",a,t,o]:r?["closer",a,t,o]:["opener",a,t,o]}(),[s,r,a,n]=t,o=xs.length,l=a>ks?ks:null;if(!e[r])return Ts(),!1;switch(s){case"no-more-tokens":if(0!==o){const{leadingTextStart:e,tokenStart:t}=xs.pop();_s.push(vs.substring(e,e+t))}return Ts(),!1;case"self-closed":return 0===o?(null!==l&&_s.push(vs.substring(l,a)),_s.push(e[r]),ks=a+n,!0):(Cs(Rs(e[r],a,n)),ks=a+n,!0);case"opener":return xs.push(Rs(e[r],a,n,a+n,l)),ks=a+n,!0;case"closer":if(1===o)return function(e){const{element:t,leadingTextStart:s,prevOffset:r,tokenStart:a,children:n}=xs.pop(),o=e?vs.substring(r,e):vs.substring(r);o&&n.push(o),null!==s&&_s.push(vs.substring(s,a)),_s.push((0,i.cloneElement)(t,null,...n))}(a),ks=a+n,!0;const t=xs.pop(),s=vs.substring(t.prevOffset,a);t.children.push(s),t.prevOffset=a+n;const c=Rs(t.element,t.tokenStart,t.tokenLength,a+n);return c.children=t.children,Cs(c),ks=a+n,!0;default:return Ts(),!1}}const As=(e,t)=>{if(vs=e,ks=0,_s=[],xs=[],Ss.lastIndex=0,!(e=>{const t="object"==typeof e,s=t&&Object.values(e);return t&&s.length&&s.every((e=>(0,i.isValidElement)(e)))})(t))throw new TypeError("The conversionMap provided is not valid. It must be an object with values that are WPElements");do{}while(Is(t));return(0,i.createElement)(i.Fragment,null,..._s)},Ps=({data:e,itemScreenReaderText:s,className:r,...a})=>{const n=(0,i.useMemo)((()=>{var t,s;return null!==(t=null===(s=(0,m.maxBy)(e,"number"))||void 0===s?void 0:s.number)&&void 0!==t?t:0}),[e]);return(0,t.createElement)("ul",{className:K()("yoast-data-model",r),...a},e.map((({name:e,number:r})=>(0,t.createElement)("li",{key:`${e}_dataItem`,style:{"--yoast-width":r/n*100+"%"}},e,(0,t.createElement)("span",null,r),s&&(0,t.createElement)("span",{className:"screen-reader-text"},(0,l.sprintf)(s,r))))))};Ps.propTypes={data:y().arrayOf(y().shape({name:y().string.isRequired,number:y().number.isRequired})),itemScreenReaderText:y().string,className:y().string},Ps.defaultProps={data:[],itemScreenReaderText:"",className:""};const Ls=Ps,Fs=window.wp.url,Os=(0,Y.makeOutboundLink)(),Ms=({location:e})=>{const s=(0,n.useSelect)((e=>{var t,s;return null===(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getPreference("isProminentWordsAvailable",!1))||void 0===t||t}),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").getPreference("shouldUpsell",!1)),[]),a=(0,i.useMemo)((()=>(0,m.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${e}-prominent_words`,"")),[e]),o=(0,i.useMemo)((()=>{const e=(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-keyword_research_link","");return As((0,l.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing tags. (0,l.__)("Read our %1$sultimate guide to keyword research%2$s to learn more about keyword research and keyword strategy.","wordpress-seo"),"",""),{a:(0,t.createElement)(Os,{href:e})})}),[]),c=(0,i.useMemo)((()=>As((0,l.sprintf)( // translators: %1$s expands to a starting `b` tag, %1$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,l.__)("With %1$s%3$s%2$s, this section will show you which words occur most often in your text. By checking these prominent words against your intended keyword(s), you'll know how to edit your text to be more focused.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,t.createElement)("b",null)})),[]),d=(0,n.useSelect)((e=>{var t,s;return null!==(t=null===(s=e("yoast-seo-premium/editor"))||void 0===s?void 0:s.getProminentWords())&&void 0!==t?t:[]}),[]),u=(0,i.useMemo)((()=>{const e=(0,l.sprintf)( // translators: %1$s expands to Yoast SEO Premium. (0,l.__)("Get %s to enjoy the benefits of prominent words","wordpress-seo"),"Yoast SEO Premium").split(/\s+/);return e.map(((t,s)=>({name:t,number:e.length-s})))}),[]),h=(0,i.useMemo)((()=>r?u:d.map((({word:e,occurrence:t})=>({name:e,number:t})))),[d,u]);if(!s)return null;const{locationContext:g}=(0,p.useRootContext)();return(0,t.createElement)("div",{className:"yoast-prominent-words"},(0,t.createElement)("div",{className:"yoast-field-group__title"},(0,t.createElement)("b",null,(0,l.__)("Prominent words","wordpress-seo"))),!r&&(0,t.createElement)("p",null,0===h.length?(0,l.__)("Once you add a bit more copy, we'll give you a list of words that occur the most in the content. These give an indication of what your content focuses on.","wordpress-seo"):(0,l.__)("The following words occur the most in the content. These give an indication of what your content focuses on. If the words differ a lot from your topic, you might want to rewrite your content accordingly.","wordpress-seo")),r&&(0,t.createElement)("p",null,c),r&&(0,t.createElement)(Os,{href:(0,Fs.addQueryArgs)(a,{context:g}),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2",className:"yoast-button yoast-button-upsell"},(0,l.sprintf)( // translators: %s expands to `Premium` (part of add-on name). (0,l.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,t.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,t.createElement)("p",null,o),(0,t.createElement)(Ls,{data:h,itemScreenReaderText:/* translators: Hidden accessibility text; %d expands to the number of occurrences. */ (0,l.__)("%d occurrences","wordpress-seo"),"aria-label":(0,l.__)("Prominent words","wordpress-seo"),className:r?"yoast-data-model--upsell":null}))};Ms.propTypes={location:y().string.isRequired};const qs=Ms,Ns=()=>{const e=(0,n.useSelect)((e=>e("yoast-seo/editor").getTextLength()),[]),s=(0,i.useMemo)((()=>(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-word_count","")),[]);let r=(0,l._n)("word","words",e.count,"wordpress-seo"),a=(0,l.__)("Word count","wordpress-seo"),o=(0,l.__)("Learn more about word count","wordpress-seo");return"character"===e.unit&&(r=(0,l._n)("character","characters",e.count,"wordpress-seo"),a=(0,l.__)("Character count","wordpress-seo"), /* translators: Hidden accessibility text. */ o=(0,l.__)("Learn more about character count","wordpress-seo")),(0,t.createElement)(T.InsightsCard,{amount:e.count,unit:r,title:a,linkTo:s,linkText:o})},Ds=(0,Y.makeOutboundLink)(),Bs=({location:e})=>{const s=(0,i.useMemo)((()=>(0,m.get)(window,`wpseoAdminL10n.shortlinks-insights-upsell-${e}-text_formality`,"")),[e]),r=(0,i.useMemo)((()=>As((0,l.sprintf)( // Translators: %1$s expands to a starting `b` tag, %2$s expands to a closing `b` tag and %3$s expands to `Yoast SEO Premium`. (0,l.__)("%1$s%3$s%2$s will help you assess the formality level of your text.","wordpress-seo"),"","","Yoast SEO Premium"),{b:(0,t.createElement)("b",null)})),[]);return(0,t.createElement)(i.Fragment,null,(0,t.createElement)("div",null,(0,t.createElement)("p",null,r),(0,t.createElement)(Ds,{href:s,className:"yoast-button yoast-button-upsell"},(0,l.sprintf)( // Translators: %s expands to `Premium` (part of add-on name). (0,l.__)("Unlock with %s","wordpress-seo"),"Premium"),(0,t.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))))};Bs.propTypes={location:y().string.isRequired};const $s=Bs,Us=({location:e,name:s})=>{const r=(0,n.useSelect)((e=>e("yoast-seo/editor").isFormalitySupported()),[]),a=h().isPremium,o=a?(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_premium",""):(0,m.get)(window,"wpseoAdminL10n.shortlinks-insights-text_formality_info_free",""),i=(0,l.__)("Read more about text formality.","wordpress-seo");return r?(0,t.createElement)("div",{className:"yoast-text-formality"},(0,t.createElement)("div",{className:"yoast-field-group__title"},(0,t.createElement)("b",null,(0,l.__)("Text formality","wordpress-seo")),(0,t.createElement)(T.HelpIcon,{linkTo:o,linkText:i})),a?(0,t.createElement)(k.Slot,{name:s}):(0,t.createElement)($s,{location:e})):null};Us.propTypes={location:y().string.isRequired,name:y().string.isRequired};const Ws=Us,Ks=({location:e})=>{const s=(0,n.useSelect)((e=>e("yoast-seo/editor").isFleschReadingEaseAvailable()),[]);return(0,t.createElement)(ys,{title:(0,l.__)("Insights","wordpress-seo"),id:`yoast-insights-collapsible-${e}`,className:"yoast-insights"},(0,t.createElement)(qs,{location:e}),(0,t.createElement)("div",null,s&&(0,t.createElement)("div",{className:"yoast-insights-row"},(0,t.createElement)(Es,null)),(0,t.createElement)("div",{className:"yoast-insights-row yoast-insights-row--columns"},(0,t.createElement)(fs,null),(0,t.createElement)(Ns,null)),(0,hs.isFeatureEnabled)("TEXT_FORMALITY")&&(0,t.createElement)(Ws,{location:e,name:"YoastTextFormalityMetabox"})))};Ks.propTypes={location:y().string},Ks.defaultProps={location:"metabox"};const Hs=Ks,Vs=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z",clipRule:"evenodd"}))})),Ys=()=>[(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$sAI%2$s: Better SEO titles and meta descriptions, faster.","wordpress-seo"),"",""),(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$sMultiple keywords%2$s: Rank higher for more searches.","wordpress-seo"),"",""),(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$sSuper fast%2$s internal linking suggestions.","wordpress-seo"),"",""),(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$sNo more broken links%2$s: Automatic redirect manager.","wordpress-seo"),"",""),(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$sAppealing social previews%2$s people actually want to click on.","wordpress-seo"),"",""),(0,l.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,l.__)("%1$s24/7 support%2$s: Also on evenings and weekends.","wordpress-seo"),"","")],js=b().div` padding: 25px 32px 32px; color: #303030; `,zs=b().ul` margin: 0; padding: 0; li { list-style-image: var(--yoast-svg-icon-check); margin: 0.5rem 0 0 1.5rem; line-height: 1.4em; &::marker { font-size: 1.5rem; } } `,Gs=b().span` display: block; margin-top: 4px; `,Zs=b().h2` margin-top: 0; margin-bottom: 0.25rem; color: #303030; font-size: 0.8125rem; font-weight: 600; `,Xs=b().p` display: block; margin: 0.25rem 0 1rem 0 !important; max-width: 420px; `,Qs=b().hr` margin-top: 1.5rem; margin-bottom: 1rem; border-top: 0; border-bottom: 1px solid #E2E8F0; `,Js=b().div` text-align: center; `,er=b().a` width: 100%; `,tr=(0,Y.makeOutboundLink)(er);class sr extends i.Component{constructor(e){super(e),this.state={defaultPrice:"99"}}createBenefitsList(e){return e.length>0&&(0,t.createElement)(zs,{role:"list"},e.map(((e,s)=>(0,t.createElement)("li",{key:`upsell-benefit-${s}`},(0,i.createInterpolateElement)(e,{strong:(0,t.createElement)("strong",null)})))))}render(){const e=(0,n.select)("yoast-seo/editor").isPromotionActive("black-friday-2024-promotion"),{defaultPrice:s}=this.state,r=e?"69.30":null,a=r||s;return(0,t.createElement)(i.Fragment,null,e&&(0,t.createElement)("div",{className:"yst-flex yst-items-center yst-text-lg yst-content-between yst-bg-black yst-text-amber-300 yst-h-9 yst-border-amber-300 yst-border-y yst-border-x-0 yst-border-solid yst-px-6"},(0,t.createElement)("div",{className:"yst-mx-auto"},(0,l.__)("30% OFF - BLACK FRIDAY","wordpress-seo"))),(0,t.createElement)(js,null,(0,t.createElement)(Zs,null,this.props.title),(0,t.createElement)(Xs,null,this.props.description),(0,t.createElement)(Js,null,(0,t.createElement)(tr,{...this.props.upsellButton},this.props.upsellButtonText,this.props.upsellButtonHasCaret&&(0,t.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),(0,t.createElement)("div",{className:"yst-text-slate-600 yst-my-4"},r&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-500 yst-line-through"},s)," "),(0,t.createElement)("span",{className:"yst-text-slate-900 yst-text-2xl yst-font-bold"},a)," ",(0,l.__)("$ USD / € EUR / £ GBP per year (ex. VAT)","wordpress-seo")),(0,t.createElement)(Gs,{id:this.props.upsellButton["aria-describedby"]},this.props.upsellButtonLabel)),(0,t.createElement)(Qs,null),(0,t.createElement)(Zs,null,this.props.benefitsTitle),this.createBenefitsList(this.props.benefits)))}}sr.propTypes={title:y().node,benefits:y().array,benefitsTitle:y().node,description:y().node,upsellButton:y().object,upsellButtonText:y().string.isRequired,upsellButtonLabel:y().string,upsellButtonHasCaret:y().bool},sr.defaultProps={title:null,description:null,benefits:[],benefitsTitle:null,upsellButton:{href:"",className:"button button-primary"},upsellButtonLabel:"",upsellButtonHasCaret:!0};const rr=sr,ar=()=>{const[e,,,s,r]=(0,R.useToggleState)(!1),{locationContext:a}=(0,p.useRootContext)(),n=(0,R.useSvgAria)(),o=a.includes("sidebar"),i=a.includes("metabox"),c=wpseoAdminL10n[o?"shortlinks.upsell.sidebar.internal_linking_suggestions":"shortlinks.upsell.metabox.internal_linking_suggestions"];return(0,t.createElement)(t.Fragment,null,e&&(0,t.createElement)(X,{title:(0,l.__)("Get internal linking suggestions","wordpress-seo"),onRequestClose:r,additionalClassName:"",id:"yoast-internal-linking-suggestions-upsell",className:`${G} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,t.createElement)(z,null,(0,t.createElement)(rr,{title:(0,l.__)("Rank higher by connecting your content","wordpress-seo"),description:(0,l.sprintf)(/* translators: %s expands to Yoast SEO Premium. */ (0,l.__)("%s automatically suggests to what content you can link with easy drag-and-drop functionality, which is good for your SEO!","wordpress-seo"),"Yoast SEO Premium"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:Ys(),upsellButtonText:(0,l.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:(0,Fs.addQueryArgs)(c,{context:a}),className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,l.__)("1 year free support and updates included!","wordpress-seo")}))),o&&(0,t.createElement)(re,{id:"yoast-internal-linking-suggestions-sidebar-modal-open-button",title:(0,l.__)("Internal linking suggestions","wordpress-seo"),onClick:s},(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...n})))),i&&(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(V,{id:"yoast-internal-linking-suggestions-metabox-modal-open-button",onClick:s},(0,t.createElement)(V.Text,null,(0,l.__)("Internal linking suggestions","wordpress-seo")),(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...n}),(0,t.createElement)("span",null,"Premium")))))},nr=({children:e})=>(0,t.createElement)("div",null,e);nr.propTypes={renderPriority:y().number.isRequired,children:y().node.isRequired};const or=nr,ir=({noIndex:e,onNoIndexChange:s,editorContext:r,isPrivateBlog:a})=>{const n=(e=>{const t=(0,l.__)("No","wordpress-seo"),s=(0,l.__)("Yes","wordpress-seo"),r=e.noIndex?t:s;return window.wpseoScriptData.isPost?[{name:(0,l.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,l.__)("%s (current default for %s)","wordpress-seo"),r,e.postTypeNamePlural),value:"0"},{name:t,value:"1"},{name:s,value:"2"}]:[{name:(0,l.sprintf)(/* translators: the first %s translates to "yes" or "no", the second %s translates to the content type label in plural form */ (0,l.__)("%s (current default for %s)","wordpress-seo"),r,e.postTypeNamePlural),value:"default"},{name:s,value:"index"},{name:t,value:"noindex"}]})(r);return(0,t.createElement)(p.LocationConsumer,null,(r=>(0,t.createElement)(i.Fragment,null,a&&(0,t.createElement)(T.Alert,{type:"warning"},(0,l.__)("Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.","wordpress-seo")),(0,t.createElement)(T.Select,{label:(0,l.__)("Allow search engines to show this content in search results?","wordpress-seo"),onChange:s,id:(0,Y.join)(["yoast-meta-robots-noindex",r]),options:n,selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.allow_search_engines"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about the no-index setting on our help page.","wordpress-seo")}))))};ir.propTypes={noIndex:y().string.isRequired,onNoIndexChange:y().func.isRequired,editorContext:y().object.isRequired,isPrivateBlog:y().bool},ir.defaultProps={isPrivateBlog:!1};const lr=({noFollow:e,onNoFollowChange:s})=>(0,t.createElement)(p.LocationConsumer,null,(r=>{const a=(0,Y.join)(["yoast-meta-robots-nofollow",r]);return(0,t.createElement)(T.RadioButtonGroup,{id:a,options:[{value:"0",label:"Yes"},{value:"1",label:"No"}],label:(0,l.__)("Should search engines follow links on this content?","wordpress-seo"),groupName:a,onChange:s,selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.follow_links"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about the no-follow setting on our help page.","wordpress-seo")})}));lr.propTypes={noFollow:y().string.isRequired,onNoFollowChange:y().func.isRequired};const cr=({advanced:e,onAdvancedChange:s})=>(0,t.createElement)(p.LocationConsumer,null,(r=>{const a=(0,Y.join)(["yoast-meta-robots-advanced",r]),n=`${a}-input`;return(0,t.createElement)(T.MultiSelect,{label:(0,l.__)("Meta robots advanced","wordpress-seo"),onChange:s,id:a,inputId:n,options:[{name:(0,l.__)("No Image Index","wordpress-seo"),value:"noimageindex"},{name:(0,l.__)("No Archive","wordpress-seo"),value:"noarchive"},{name:(0,l.__)("No Snippet","wordpress-seo"),value:"nosnippet"}],selected:e,linkTo:wpseoAdminL10n["shortlinks.advanced.meta_robots"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about advanced meta robots settings on our help page.","wordpress-seo")})}));cr.propTypes={advanced:y().array.isRequired,onAdvancedChange:y().func.isRequired};const dr=({breadcrumbsTitle:e,onBreadcrumbsTitleChange:s})=>(0,t.createElement)(p.LocationConsumer,null,(r=>(0,t.createElement)(T.TextInput,{label:(0,l.__)("Breadcrumbs Title","wordpress-seo"),id:(0,Y.join)(["yoast-breadcrumbs-title",r]),onChange:s,value:e,linkTo:wpseoAdminL10n["shortlinks.advanced.breadcrumbs_title"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about the breadcrumbs title setting on our help page.","wordpress-seo")})));dr.propTypes={breadcrumbsTitle:y().string.isRequired,onBreadcrumbsTitleChange:y().func.isRequired};const pr=({canonical:e,onCanonicalChange:s})=>(0,t.createElement)(p.LocationConsumer,null,(r=>(0,t.createElement)(T.TextInput,{label:(0,l.__)("Canonical URL","wordpress-seo"),id:(0,Y.join)(["yoast-canonical",r]),onChange:s,value:e,linkTo:"https://yoa.st/canonical-url" /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about canonical URLs on our help page.","wordpress-seo")})));pr.propTypes={canonical:y().string.isRequired,onCanonicalChange:y().func.isRequired};const ur=e=>{const{noIndex:s,noFollow:r,advanced:a,breadcrumbsTitle:n,canonical:o,onNoIndexChange:l,onNoFollowChange:c,onAdvancedChange:d,onBreadcrumbsTitleChange:p,onCanonicalChange:u,onLoad:m,isLoading:h,editorContext:g,isBreadcrumbsDisabled:y,isPrivateBlog:f}=e;(0,i.useEffect)((()=>{setTimeout((()=>{h&&m()}))}));const b={noIndex:s,onNoIndexChange:l,editorContext:g,isPrivateBlog:f},w={noFollow:r,onNoFollowChange:c},E={advanced:a,onAdvancedChange:d},v={breadcrumbsTitle:n,onBreadcrumbsTitleChange:p},k={canonical:o,onCanonicalChange:u};return h?null:(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ir,{...b}),g.isPost&&(0,t.createElement)(lr,{...w}),g.isPost&&(0,t.createElement)(cr,{...E}),!y&&(0,t.createElement)(dr,{...v}),(0,t.createElement)(pr,{...k}))};ur.propTypes={noIndex:y().string.isRequired,canonical:y().string.isRequired,onNoIndexChange:y().func.isRequired,onCanonicalChange:y().func.isRequired,onLoad:y().func.isRequired,isLoading:y().bool.isRequired,editorContext:y().object.isRequired,isBreadcrumbsDisabled:y().bool.isRequired,isPrivateBlog:y().bool,advanced:y().array,onAdvancedChange:y().func,noFollow:y().string,onNoFollowChange:y().func,breadcrumbsTitle:y().string,onBreadcrumbsTitleChange:y().func},ur.defaultProps={advanced:[],onAdvancedChange:()=>{},noFollow:"",onNoFollowChange:()=>{},breadcrumbsTitle:"",onBreadcrumbsTitleChange:()=>{},isPrivateBlog:!1};const mr=ur,hr=(0,B.compose)([(0,n.withSelect)((e=>{const{getNoIndex:t,getNoFollow:s,getAdvanced:r,getBreadcrumbsTitle:a,getCanonical:n,getIsLoading:o,getEditorContext:i,getPreferences:l}=e("yoast-seo/editor"),{isBreadcrumbsDisabled:c,isPrivateBlog:d}=l();return{noIndex:t(),noFollow:s(),advanced:r(),breadcrumbsTitle:a(),canonical:n(),isLoading:o(),editorContext:i(),isBreadcrumbsDisabled:c,isPrivateBlog:d}})),(0,n.withDispatch)((e=>{const{setNoIndex:t,setNoFollow:s,setAdvanced:r,setBreadcrumbsTitle:a,setCanonical:n,loadAdvancedSettingsData:o}=e("yoast-seo/editor");return{onNoIndexChange:t,onNoFollowChange:s,onAdvancedChange:r,onBreadcrumbsTitleChange:a,onCanonicalChange:n,onLoad:o}}))])(mr),gr=b().p` color: #606770; flex-shrink: 0; font-size: 12px; line-height: 16px; overflow: hidden; padding: 0; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; margin: 0; position: ${e=>"landscape"===e.mode?"relative":"static"}; `,yr=e=>{const{siteUrl:s}=e;return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("span",{className:"screen-reader-text"},s),(0,t.createElement)(gr,{"aria-hidden":"true"},(0,t.createElement)("span",null,s)))};yr.propTypes={siteUrl:y().string.isRequired};const fr=yr,br=window.yoast.socialMetadataForms,wr=b().img` && { max-width: ${e=>e.width}px; height: ${e=>e.height}px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: none; } `,Er=b().img` &&{ height: 100%; position: absolute; width: 100%; object-fit: cover; } `,vr=b().div` padding-bottom: ${e=>e.aspectRatio}%; `,kr=e=>{const{imageProps:s,width:r,height:a,imageMode:n}=e;return"landscape"===n?(0,t.createElement)(vr,{aspectRatio:s.aspectRatio},(0,t.createElement)(Er,{src:s.src,alt:s.alt})):(0,t.createElement)(wr,{src:s.src,alt:s.alt,width:r,height:a,imageProperties:s})};function _r(e,t,s){return"landscape"===s?{widthRatio:t.width/e.landscapeWidth,heightRatio:t.height/e.landscapeHeight}:"portrait"===s?{widthRatio:t.width/e.portraitWidth,heightRatio:t.height/e.portraitHeight}:{widthRatio:t.width/e.squareWidth,heightRatio:t.height/e.squareHeight}}function xr(e,t){return t.widthRatio<=t.heightRatio?{width:Math.round(e.width/t.widthRatio),height:Math.round(e.height/t.widthRatio)}:{width:Math.round(e.width/t.heightRatio),height:Math.round(e.height/t.heightRatio)}}async function Sr(e,t,s=!1){const r=await function(e){return new Promise(((t,s)=>{const r=new Image;r.onload=()=>{t({width:r.width,height:r.height})},r.onerror=s,r.src=e}))}(e);let a=s?"landscape":"square";"Facebook"===t&&(a=(0,br.determineFacebookImageMode)(r));const n=function(e){return"Twitter"===e?br.TWITTER_IMAGE_SIZES:br.FACEBOOK_IMAGE_SIZES}(t),o=function(e,t,s){return"square"===s&&t.width===t.height?{width:e.squareWidth,height:e.squareHeight}:xr(t,_r(e,t,s))}(n,r,a);return{mode:a,height:o.height,width:o.width}}async function Rr(e,t,s=!1){try{return{imageProperties:await Sr(e,t,s),status:"loaded"}}catch(e){return{imageProperties:null,status:"errored"}}}kr.propTypes={imageProps:y().shape({src:y().string.isRequired,alt:y().string.isRequired,aspectRatio:y().number.isRequired}).isRequired,width:y().number.isRequired,height:y().number.isRequired,imageMode:y().string},kr.defaultProps={imageMode:"landscape"};const Tr=b().div` position: relative; ${e=>"landscape"===e.mode?`max-width: ${e.dimensions.width}`:`min-width: ${e.dimensions.width}; height: ${e.dimensions.height}`}; overflow: hidden; background-color: ${C.colors.$color_white}; `,Cr=b().div` box-sizing: border-box; max-width: ${br.FACEBOOK_IMAGE_SIZES.landscapeWidth}px; height: ${br.FACEBOOK_IMAGE_SIZES.landscapeHeight}px; background-color: ${C.colors.$color_grey}; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; display: flex; justify-content: center; align-items: center; text-decoration: underline; font-size: 14px; cursor: pointer; `;class Ir extends t.Component{constructor(e){super(e),this.state={imageProperties:null,status:"loading"},this.socialMedium="Facebook",this.handleFacebookImage=this.handleFacebookImage.bind(this),this.setState=this.setState.bind(this)}async handleFacebookImage(){try{const e=await Rr(this.props.src,this.socialMedium);this.setState(e),this.props.onImageLoaded(e.imageProperties.mode||"landscape")}catch(e){this.setState(e),this.props.onImageLoaded("landscape")}}componentDidUpdate(e){e.src!==this.props.src&&this.handleFacebookImage()}componentDidMount(){this.handleFacebookImage()}retrieveContainerDimensions(e){switch(e){case"square":return{height:br.FACEBOOK_IMAGE_SIZES.squareHeight+"px",width:br.FACEBOOK_IMAGE_SIZES.squareWidth+"px"};case"portrait":return{height:br.FACEBOOK_IMAGE_SIZES.portraitHeight+"px",width:br.FACEBOOK_IMAGE_SIZES.portraitWidth+"px"};case"landscape":return{height:br.FACEBOOK_IMAGE_SIZES.landscapeHeight+"px",width:br.FACEBOOK_IMAGE_SIZES.landscapeWidth+"px"}}}render(){const{imageProperties:e,status:s}=this.state;if("loading"===s||""===this.props.src||"errored"===s)return(0,t.createElement)(Cr,{onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,l.__)("Select image","wordpress-seo"));const r=this.retrieveContainerDimensions(e.mode);return(0,t.createElement)(Tr,{mode:e.mode,dimensions:r,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave,onClick:this.props.onImageClick},(0,t.createElement)(kr,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:br.FACEBOOK_IMAGE_SIZES.aspectRatio},width:e.width,height:e.height,imageMode:e.mode}))}}Ir.propTypes={src:y().string,alt:y().string,onImageLoaded:y().func,onImageClick:y().func,onMouseEnter:y().func,onMouseLeave:y().func},Ir.defaultProps={src:"",alt:"",onImageLoaded:m.noop,onImageClick:m.noop,onMouseEnter:m.noop,onMouseLeave:m.noop};const Ar=Ir,Pr=b().span` line-height: ${20}px; min-height : ${20}px; color: #1d2129; font-weight: 600; overflow: hidden; font-size: 16px; margin: 3px 0 0; letter-spacing: normal; white-space: normal; flex-shrink: 0; cursor: pointer; display: -webkit-box; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; `,Lr=b().p` line-height: ${16}px; min-height : ${16}px; color: #606770; font-size: 14px; padding: 0; text-overflow: ellipsis; margin: 3px 0 0 0; display: -webkit-box; cursor: pointer; -webkit-line-clamp: ${e=>e.lineCount}; -webkit-box-orient: vertical; overflow: hidden; @media all and ( max-width: ${e=>e.maxWidth} ) { display: none; } `,Fr=e=>{switch(e){case"landscape":return"527px";case"square":case"portrait":return"369px";default:return"476px"}},Or=b().div` box-sizing: border-box; display: flex; flex-direction: ${e=>"landscape"===e.mode?"column":"row"}; background-color: #f2f3f5; max-width: 527px; `,Mr=b().div` box-sizing: border-box; background-color: #f2f3f5; margin: 0; padding: 10px 12px; position: relative; border-bottom: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-top: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border-right: ${e=>"landscape"===e.mode?"":"1px solid #dddfe2"}; border: ${e=>"landscape"===e.mode?"1px solid #dddfe2":""}; display: flex; flex-direction: column; flex-grow: 1; justify-content: ${e=>"landscape"===e.mode?"flex-start":"center"}; font-size: 12px; overflow: hidden; `;class qr extends t.Component{constructor(e){super(e),this.state={imageMode:null,maxLineCount:0,descriptionLineCount:0},this.facebookTitleRef=r().createRef(),this.onImageLoaded=this.onImageLoaded.bind(this),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}onImageLoaded(e){this.setState({imageMode:e})}getTitleLineCount(){return this.facebookTitleRef.current.offsetHeight/20}maybeSetMaxLineCount(){const{imageMode:e,maxLineCount:t}=this.state,s="landscape"===e?2:5;s!==t&&this.setState({maxLineCount:s})}maybeSetDescriptionLineCount(){const{descriptionLineCount:e,maxLineCount:t,imageMode:s}=this.state,r=this.getTitleLineCount();let a=t-r;"portrait"===s&&(a=5===r?0:4),a!==e&&this.setState({descriptionLineCount:a})}componentDidUpdate(){this.maybeSetMaxLineCount(),this.maybeSetDescriptionLineCount()}render(){const{imageMode:e,maxLineCount:s,descriptionLineCount:r}=this.state;return(0,t.createElement)(Or,{id:"facebookPreview",mode:e},(0,t.createElement)(Ar,{src:this.props.imageUrl||this.props.imageFallbackUrl,alt:this.props.alt,onImageLoaded:this.onImageLoaded,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,t.createElement)(Mr,{mode:e},(0,t.createElement)(fr,{siteUrl:this.props.siteUrl,mode:e}),(0,t.createElement)(Pr,{ref:this.facebookTitleRef,onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle,lineCount:s},this.props.title),r>0&&(0,t.createElement)(Lr,{maxWidth:Fr(e),onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription,lineCount:r},this.props.description)))}}qr.propTypes={siteUrl:y().string.isRequired,title:y().string.isRequired,description:y().string,imageUrl:y().string,imageFallbackUrl:y().string,alt:y().string,onSelect:y().func,onImageClick:y().func,onMouseHover:y().func},qr.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{}};const Nr=qr,Dr=b().div` text-transform: lowercase; color: rgb(83, 100, 113); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; fill: currentcolor; display: flex; flex-direction: row; align-items: flex-end; `,Br=e=>(0,t.createElement)(Dr,null,(0,t.createElement)("span",null,e.siteUrl));Br.propTypes={siteUrl:y().string.isRequired};const $r=Br,Ur=(e,t=!0)=>e?`\n\t\t\tmax-width: ${br.TWITTER_IMAGE_SIZES.landscapeWidth}px;\n\t\t\t${t?"border-bottom: 1px solid #E1E8ED;":""}\n\t\t\tborder-radius: 14px 14px 0 0;\n\t\t\t`:`\n\t\twidth: ${br.TWITTER_IMAGE_SIZES.squareWidth}px;\n\t\t${t?"border-right: 1px solid #E1E8ED;":""}\n\t\tborder-radius: 14px 0 0 14px;\n\t\t`,Wr=b().div` position: relative; box-sizing: content-box; overflow: hidden; background-color: #e1e8ed; flex-shrink: 0; ${e=>Ur(e.isLarge)} `,Kr=b().div` display: flex; justify-content: center; align-items: center; box-sizing: border-box; max-width: 100%; margin: 0; padding: 1em; text-align: center; font-size: 1rem; ${e=>Ur(e.isLarge,!1)} `,Hr=b()(Kr)` ${e=>e.isLarge&&`height: ${br.TWITTER_IMAGE_SIZES.landscapeHeight}px;`} border-top-left-radius: 14px; ${e=>e.isLarge?"border-top-right-radius":"border-bottom-left-radius"}: 14px; border-style: dashed; border-width: 1px; // We're not using standard colors to increase contrast for accessibility. color: #006DAC; // We're not using standard colors to increase contrast for accessibility. background-color: #f1f1f1; text-decoration: underline; font-size: 14px; cursor: pointer; `;class Vr extends r().Component{constructor(e){super(e),this.state={status:"loading"},this.socialMedium="Twitter",this.handleTwitterImage=this.handleTwitterImage.bind(this),this.setState=this.setState.bind(this)}async handleTwitterImage(){if(null===this.props.src)return;const e=await Rr(this.props.src,this.socialMedium,this.props.isLarge);this.setState(e)}componentDidUpdate(e){e.src!==this.props.src&&this.handleTwitterImage()}componentDidMount(){this.handleTwitterImage()}render(){const{status:e,imageProperties:s}=this.state;return"loading"===e||""===this.props.src||"errored"===e?(0,t.createElement)(Hr,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,l.__)("Select image","wordpress-seo")):(0,t.createElement)(Wr,{isLarge:this.props.isLarge,onClick:this.props.onImageClick,onMouseEnter:this.props.onMouseEnter,onMouseLeave:this.props.onMouseLeave},(0,t.createElement)(kr,{imageProps:{src:this.props.src,alt:this.props.alt,aspectRatio:br.TWITTER_IMAGE_SIZES.aspectRatio},width:s.width,height:s.height,imageMode:s.mode}))}}Vr.propTypes={isLarge:y().bool.isRequired,src:y().string,alt:y().string,onImageClick:y().func,onMouseEnter:y().func,onMouseLeave:y().func},Vr.defaultProps={src:"",alt:"",onMouseEnter:m.noop,onImageClick:m.noop,onMouseLeave:m.noop};const Yr=b().div` display: flex; flex-direction: column; padding: 12px; justify-content: center; margin: 0; box-sizing: border-box; flex: auto; min-width: 0px; gap:2px; > * { line-height:20px; min-height:20px; font-size:15px; } `,jr=e=>(0,t.createElement)(Yr,null,e.children);jr.propTypes={children:y().array.isRequired};const zr=jr,Gr=b().p` white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(15, 20, 25); cursor: pointer; `,Zr=b().p` max-height: 55px; overflow: hidden; text-overflow: ellipsis; margin: 0; color: rgb(83, 100, 113); display: -webkit-box; cursor: pointer; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @media all and ( max-width: ${br.TWITTER_IMAGE_SIZES.landscapeWidth}px ) { display: none; } `,Xr=b().div` font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif; font-size: 15px; font-weight: 400; line-height: 20px; max-width: 507px; border: 1px solid #E1E8ED; box-sizing: border-box; border-radius: 14px; color: #292F33; background: #FFFFFF; text-overflow: ellipsis; display: flex; &:hover { background: #f5f8fa; border: 1px solid rgba(136,153,166,.5); } `,Qr=b()(Xr)` flex-direction: column; max-height: 370px; `,Jr=b()(Xr)` flex-direction: row; height: 125px; `;class ea extends t.Component{constructor(e){super(e),this.onImageEnter=this.props.onMouseHover.bind(this,"image"),this.onTitleEnter=this.props.onMouseHover.bind(this,"title"),this.onDescriptionEnter=this.props.onMouseHover.bind(this,"description"),this.onLeave=this.props.onMouseHover.bind(this,""),this.onSelectTitle=this.props.onSelect.bind(this,"title"),this.onSelectDescription=this.props.onSelect.bind(this,"description")}render(){const{isLarge:e,imageUrl:s,imageFallbackUrl:r,alt:a,title:n,description:o,siteUrl:i}=this.props,l=e?Qr:Jr;return(0,t.createElement)(l,{id:"twitterPreview"},(0,t.createElement)(Vr,{src:s||r,alt:a,isLarge:e,onImageClick:this.props.onImageClick,onMouseEnter:this.onImageEnter,onMouseLeave:this.onLeave}),(0,t.createElement)(zr,null,(0,t.createElement)($r,{siteUrl:i}),(0,t.createElement)(Gr,{onMouseEnter:this.onTitleEnter,onMouseLeave:this.onLeave,onClick:this.onSelectTitle},n),(0,t.createElement)(Zr,{onMouseEnter:this.onDescriptionEnter,onMouseLeave:this.onLeave,onClick:this.onSelectDescription},o)))}}ea.propTypes={siteUrl:y().string.isRequired,title:y().string.isRequired,description:y().string,isLarge:y().bool,imageUrl:y().string,imageFallbackUrl:y().string,alt:y().string,onSelect:y().func,onImageClick:y().func,onMouseHover:y().func},ea.defaultProps={description:"",alt:"",imageUrl:"",imageFallbackUrl:"",onSelect:()=>{},onImageClick:()=>{},onMouseHover:()=>{},isLarge:!0};const ta=ea,sa=window.yoast.replacementVariableEditor;class ra extends t.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.SocialPreview="Social"===e.socialMediumName?Nr:ta,this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:e,onTitleChange:s,onSelectImageClick:a,onRemoveImageClick:n,socialMediumName:o,imageWarnings:i,siteUrl:l,description:c,descriptionInputPlaceholder:d,descriptionPreviewFallback:p,imageUrl:u,imageFallbackUrl:m,alt:h,title:g,titleInputPlaceholder:y,titlePreviewFallback:f,replacementVariables:b,recommendedReplacementVariables:w,applyReplacementVariables:E,onReplacementVariableSearchChange:v,isPremium:k,isLarge:_,socialPreviewLabel:x,idSuffix:S,activeMetaTabId:R}=this.props,C=E({title:g||f,description:c||p});return(0,t.createElement)(r().Fragment,null,x&&(0,t.createElement)(T.SimulatedLabel,null,x),(0,t.createElement)(this.SocialPreview,{onMouseHover:this.setHoveredField,onSelect:this.setActiveField,onImageClick:a,siteUrl:l,title:C.title,description:C.description,imageUrl:u,imageFallbackUrl:m,alt:h,isLarge:_,activeMetaTabId:R}),(0,t.createElement)(br.SocialMetadataPreviewForm,{onDescriptionChange:e,socialMediumName:o,title:g,titleInputPlaceholder:y,onRemoveImageClick:n,imageSelected:!!u,imageUrl:u,onTitleChange:s,onSelectImageClick:a,description:c,descriptionInputPlaceholder:d,imageWarnings:i,replacementVariables:b,recommendedReplacementVariables:w,onReplacementVariableSearchChange:v,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:k,setEditorRef:this.setEditorRef,idSuffix:S}))}}ra.propTypes={title:y().string.isRequired,onTitleChange:y().func.isRequired,description:y().string.isRequired,onDescriptionChange:y().func.isRequired,imageUrl:y().string.isRequired,imageFallbackUrl:y().string.isRequired,onSelectImageClick:y().func.isRequired,onRemoveImageClick:y().func.isRequired,socialMediumName:y().string.isRequired,alt:y().string,isPremium:y().bool,imageWarnings:y().array,isLarge:y().bool,siteUrl:y().string,descriptionInputPlaceholder:y().string,titleInputPlaceholder:y().string,descriptionPreviewFallback:y().string,titlePreviewFallback:y().string,replacementVariables:sa.replacementVariablesShape,recommendedReplacementVariables:sa.recommendedReplacementVariablesShape,applyReplacementVariables:y().func,onReplacementVariableSearchChange:y().func,socialPreviewLabel:y().string,idSuffix:y().string,activeMetaTabId:y().string},ra.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,isLarge:!0,siteUrl:"",descriptionInputPlaceholder:"",titleInputPlaceholder:"",descriptionPreviewFallback:"",titlePreviewFallback:"",alt:"",applyReplacementVariables:e=>e,onReplacementVariableSearchChange:null,socialPreviewLabel:"",idSuffix:"",activeMetaTabId:""};const aa={},na=(e,t,{log:s=console.warn}={})=>{aa[e]||(aa[e]=!0,s(t))},oa=(e,t=m.noop)=>{const s={};for(const r in e)Object.hasOwn(e,r)&&Object.defineProperty(s,r,{set:s=>{e[r]=s,t("set",r,s)},get:()=>(t("get",r),e[r])});return s};oa({squareWidth:125,squareHeight:125,landscapeWidth:506,landscapeHeight:265,aspectRatio:50.2},((e,t)=>na(`@yoast/social-metadata-previews/TWITTER_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "TWITTER_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`))),oa({squareWidth:158,squareHeight:158,landscapeWidth:527,landscapeHeight:273,portraitWidth:158,portraitHeight:237,aspectRatio:52.2,largeThreshold:{width:446,height:233}},((e,t)=>na(`@yoast/social-metadata-previews/FACEBOOK_IMAGE_SIZES/${e}/${t}`,`[@yoast/social-metadata-previews] "FACEBOOK_IMAGE_SIZES.${t}" is deprecated and will be removed in the future, please use this from @yoast/social-metadata-forms instead.`)));const ia=b().div` max-width: calc(527px + 1.5rem); `,la=e=>{const s="X"===e.socialMediumName?(0,l.__)("X share preview","wordpress-seo"):(0,l.__)("Social share preview","wordpress-seo"),{locationContext:r}=(0,R.useRootContext)();return(0,t.createElement)(R.Root,null,(0,t.createElement)(ia,null,(0,t.createElement)(R.FeatureUpsell,{shouldUpsell:!0,variant:"card",cardLink:(0,Fs.addQueryArgs)(wpseoAdminL10n["shortlinks.upsell.social_preview."+e.socialMediumName.toLowerCase()],{context:r}),cardText:(0,l.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,l.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),"data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2"},(0,t.createElement)("div",{className:"yst-grayscale yst-opacity-50"},(0,t.createElement)(R.Label,null,s),(0,t.createElement)(Nr,{title:"",description:"",siteUrl:"",imageUrl:"",imageFallbackUrl:"",alt:"",onSelect:m.noop,onImageClick:m.noop,onMouseHover:m.noop})))))};la.propTypes={socialMediumName:y().oneOf(["Social","Twitter","X"]).isRequired};const ca=la;class da extends i.Component{constructor(e){super(e),this.state={activeField:"",hoveredField:""},this.setHoveredField=this.setHoveredField.bind(this),this.setActiveField=this.setActiveField.bind(this),this.setEditorRef=this.setEditorRef.bind(this),this.setEditorFocus=this.setEditorFocus.bind(this)}setHoveredField(e){e!==this.state.hoveredField&&this.setState({hoveredField:e})}setActiveField(e){e!==this.state.activeField&&this.setState({activeField:e},(()=>this.setEditorFocus(e)))}setEditorFocus(e){switch(e){case"title":this.titleEditorRef.focus();break;case"description":this.descriptionEditorRef.focus()}}setEditorRef(e,t){switch(e){case"title":this.titleEditorRef=t;break;case"description":this.descriptionEditorRef=t}}render(){const{onDescriptionChange:e,onTitleChange:s,onSelectImageClick:r,onRemoveImageClick:a,socialMediumName:n,imageWarnings:o,description:l,descriptionInputPlaceholder:c,imageUrl:d,alt:p,title:u,titleInputPlaceholder:m,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,isPremium:f,location:b}=this.props;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ca,{socialMediumName:n}),(0,t.createElement)(br.SocialMetadataPreviewForm,{onDescriptionChange:e,socialMediumName:n,title:u,titleInputPlaceholder:m,onRemoveImageClick:a,imageSelected:!!d,imageUrl:d,imageAltText:p,onTitleChange:s,onSelectImageClick:r,description:l,descriptionInputPlaceholder:c,imageWarnings:o,replacementVariables:h,recommendedReplacementVariables:g,onReplacementVariableSearchChange:y,onMouseHover:this.setHoveredField,hoveredField:this.state.hoveredField,onSelect:this.setActiveField,activeField:this.state.activeField,isPremium:f,setEditorRef:this.setEditorRef,idSuffix:b}))}}da.propTypes={title:y().string.isRequired,onTitleChange:y().func.isRequired,description:y().string.isRequired,onDescriptionChange:y().func.isRequired,imageUrl:y().string.isRequired,onSelectImageClick:y().func.isRequired,onRemoveImageClick:y().func.isRequired,socialMediumName:y().string.isRequired,isPremium:y().bool,imageWarnings:y().array,descriptionInputPlaceholder:y().string,titleInputPlaceholder:y().string,replacementVariables:sa.replacementVariablesShape,recommendedReplacementVariables:sa.recommendedReplacementVariablesShape,onReplacementVariableSearchChange:y().func,location:y().string,alt:y().string},da.defaultProps={imageWarnings:[],recommendedReplacementVariables:[],replacementVariables:[],isPremium:!1,descriptionInputPlaceholder:"",titleInputPlaceholder:"",onReplacementVariableSearchChange:null,location:"",alt:""};const pa=da,ua=e=>{const[s,r]=(0,i.useState)(""),a=(0,i.useCallback)((e=>{r(e.detail.metaTabId)}),[r]);(0,i.useEffect)((()=>(setTimeout(e.onLoad),window.addEventListener("YoastSEO:metaTabChange",a),()=>{window.removeEventListener("YoastSEO:metaTabChange",a)})),[]);const n=(0,i.useMemo)((()=>({...e,activeMetaTabId:s})),[e,s]);return e.isPremium?(0,t.createElement)(k.Slot,{name:`YoastFacebookPremium${e.location.charAt(0).toUpperCase()+e.location.slice(1)}`,fillProps:n}):(0,t.createElement)(pa,{...n})};ua.propTypes={isPremium:y().bool.isRequired,onLoad:y().func.isRequired,location:y().string.isRequired};const ma=ua;function ha(e){(function(e){const t=window.wp.media();return t.on("select",(()=>{const s=t.state().get("selection").first();var r;e({type:(r=s.attributes).subtype,width:r.width,height:r.height,url:r.url,id:r.id,sizes:r.sizes,alt:r.alt||r.title||r.name})})),t})(e).open()}const ga=()=>{ha((e=>(0,n.dispatch)("yoast-seo/editor").setFacebookPreviewImage((e=>{const{width:t,height:s}=e,r=(0,br.determineFacebookImageMode)({width:t,height:s}),a=br.FACEBOOK_IMAGE_SIZES[r+"Width"],n=br.FACEBOOK_IMAGE_SIZES[r+"Height"],o=Object.values(e.sizes).find((e=>e.width>=a&&e.height>=n));return{url:o?o.url:e.url,id:e.id,warnings:(0,Y.validateFacebookImage)(e),alt:e.alt||""}})(e))))},ya=(0,B.compose)([(0,n.withSelect)((e=>{const{getFacebookDescription:t,getDescription:s,getFacebookTitle:r,getSeoTitle:a,getFacebookImageUrl:n,getImageFallback:o,getFacebookWarnings:i,getRecommendedReplaceVars:l,getReplaceVars:c,getSiteUrl:d,getSeoTitleTemplate:p,getSeoTitleTemplateNoFallback:u,getSocialTitleTemplate:m,getSeoDescriptionTemplate:g,getSocialDescriptionTemplate:y,getReplacedExcerpt:f,getFacebookAltText:b}=e("yoast-seo/editor");return{imageUrl:n(),imageFallbackUrl:o(),recommendedReplacementVariables:l(),replacementVariables:c(),description:t(),descriptionPreviewFallback:y()||s()||g()||f()||"",title:r(),titlePreviewFallback:m()||a()||u()||p()||"",imageWarnings:i(),siteUrl:d(),isPremium:!!h().isPremium,titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"Social",alt:b()}})),(0,n.withDispatch)(((e,t,{select:s})=>{const{setFacebookPreviewTitle:r,setFacebookPreviewDescription:a,clearFacebookPreviewImage:n,loadFacebookPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:ga,onRemoveImageClick:n,onDescriptionChange:a,onTitleChange:r,onLoad:o,onReplacementVariableSearchChange:is(l,i)}})),jt()])(ma),fa=e=>((0,i.useEffect)((()=>{setTimeout(e.onLoad)}),[]),e.isPremium?(0,t.createElement)(k.Slot,{name:`YoastTwitterPremium${e.location.charAt(0).toUpperCase()+e.location.slice(1)}`,fillProps:e}):(0,t.createElement)(pa,{...e}));fa.propTypes={isPremium:y().bool.isRequired,onLoad:y().func.isRequired,location:y().string.isRequired};const ba=fa,wa=()=>{ha((e=>(0,n.dispatch)("yoast-seo/editor").setTwitterPreviewImage((e=>{const t="summary"!==(0,m.get)(window,"wpseoScriptData.metabox.twitterCardType")?"landscape":"square",s=br.TWITTER_IMAGE_SIZES[t+"Width"],r=br.TWITTER_IMAGE_SIZES[t+"Height"],a=Object.values(e.sizes).find((e=>e.width>=s&&e.height>=r));return{url:a?a.url:e.url,id:e.id,warnings:(0,Y.validateTwitterImage)(e),alt:e.alt||""}})(e))))},Ea=(0,B.compose)([(0,n.withSelect)((e=>{const{getTwitterDescription:t,getTwitterTitle:s,getTwitterImageUrl:r,getFacebookImageUrl:a,getFacebookTitle:n,getFacebookDescription:o,getDescription:i,getSeoTitle:l,getTwitterWarnings:c,getTwitterImageType:d,getImageFallback:p,getRecommendedReplaceVars:u,getReplaceVars:m,getSiteUrl:g,getSeoTitleTemplate:y,getSeoTitleTemplateNoFallback:f,getSocialTitleTemplate:b,getSeoDescriptionTemplate:w,getSocialDescriptionTemplate:E,getReplacedExcerpt:v,getTwitterAltText:k}=e("yoast-seo/editor");return{imageUrl:r(),imageFallbackUrl:a()||p(),recommendedReplacementVariables:u(),replacementVariables:m(),description:t(),descriptionPreviewFallback:E()||o()||i()||w()||v()||"",title:s(),titlePreviewFallback:b()||n()||l()||f()||y()||"",imageWarnings:c(),siteUrl:g(),isPremium:!!h().isPremium,isLarge:"summary"!==d(),titleInputPlaceholder:"",descriptionInputPlaceholder:"",socialMediumName:"X",alt:k()}})),(0,n.withDispatch)(((e,t,{select:s})=>{const{setTwitterPreviewTitle:r,setTwitterPreviewDescription:a,clearTwitterPreviewImage:n,loadTwitterPreviewData:o,findCustomFields:i}=e("yoast-seo/editor"),l=s("yoast-seo/editor").getPostId();return{onSelectImageClick:wa,onRemoveImageClick:n,onDescriptionChange:a,onTitleChange:r,onLoad:o,onReplacementVariableSearchChange:is(l,i)}})),jt()])(ba),va=b().legend` margin: 16px 0; padding: 0; color: ${C.colors.$color_headings}; font-size: 12px; font-weight: 300; `,ka=b().legend` margin: 0 0 16px; padding: 0; color: ${C.colors.$color_headings}; font-size: 12px; font-weight: 300; `,_a=b().div` padding: 16px; `,xa=({useOpenGraphData:e,useTwitterData:s})=>(0,t.createElement)(i.Fragment,null,s&&e&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ys,{hasSeparator:!1 /* translators: Social media appearance refers to a preview of how a page will be represented on social media. */,title:(0,l.__)("Social media appearance","wordpress-seo"),initialIsOpen:!0},(0,t.createElement)(ka,null,(0,l.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,t.createElement)(ya,null),(0,t.createElement)(va,null,(0,l.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below. If you leave these settings untouched, the 'Social media appearance' settings mentioned above will also be applied for sharing on X.","wordpress-seo"))),(0,t.createElement)(ys,{title:(0,l.__)("X appearance","wordpress-seo"),hasSeparator:!0,initialIsOpen:!1},(0,t.createElement)(Ea,null))),e&&!s&&(0,t.createElement)(_a,null,(0,t.createElement)(ka,null,(0,l.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,t.createElement)(ya,null)),!e&&s&&(0,t.createElement)(_a,null,(0,t.createElement)(ka,null,(0,l.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below.","wordpress-seo")),(0,t.createElement)(Ea,null)));xa.propTypes={useOpenGraphData:y().bool.isRequired,useTwitterData:y().bool.isRequired};const Sa=xa,Ra=(0,n.withSelect)((e=>{const{getPreferences:t}=e("yoast-seo/editor"),{useOpenGraphData:s,useTwitterData:r}=t();return{useOpenGraphData:s,useTwitterData:r}}))(Sa);function Ta({target:e}){return(0,t.createElement)(P,{target:e},(0,t.createElement)(Ra,null))}Ta.propTypes={target:y().string.isRequired};const Ca=(0,Y.makeOutboundLink)(),Ia=b().div` padding: 16px; `,Aa="yoast-seo/editor";function Pa({location:e,show:s}){return s?(0,t.createElement)(T.Alert,{type:"info"},(0,l.sprintf)(/* translators: %s Expands to "Yoast News SEO" */ (0,l.__)("Are you working on a news article? %s helps you optimize your site for Google News.","wordpress-seo"),"Yoast News SEO")+" ",(0,t.createElement)(Ca,{href:window.wpseoAdminL10n[`shortlinks.upsell.${e}.news`]},(0,l.sprintf)(/* translators: %s: Expands to "Yoast News SEO". */ (0,l.__)("Buy %s now!","wordpress-seo"),"Yoast News SEO"))):null}Pa.propTypes={show:y().bool.isRequired,location:y().string.isRequired};const La=(e,t,s)=>{const r=(0,n.useSelect)((e=>e(Aa).getIsProduct()),[]),a=(0,n.useSelect)((e=>e(Aa).getIsWooSeoActive()),[]),o=r&&a?{name:(0,l.__)("Item Page","wordpress-seo"),value:"ItemPage"}:e.find((e=>e.value===t));return[{name:(0,l.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s expands to the current site wide default. */ (0,l.__)("Default for %1$s (%2$s)","wordpress-seo"),s,o?o.name:""),value:""},...e]},Fa=e=>(0,l.sprintf)(/* translators: %1$s expands to the plural name of the current post type, %2$s and %3$s expand to a link to the Settings page */ (0,l.__)("You can change the default type for %1$s under Content types in the %2$sSettings%3$s.","wordpress-seo"),e,"{{link}}","{{/link}}");y().string.isRequired,y().string.isRequired,y().string.isRequired;const Oa=e=>{const s=La(e.pageTypeOptions,e.defaultPageType,e.postTypeName),r=La(e.articleTypeOptions,e.defaultArticleType,e.postTypeName),a=(0,n.useSelect)((e=>e(Aa).selectLink("https://yoa.st/product-schema-metabox")),[]),o=(0,n.useSelect)((e=>e(Aa).getIsWooSeoUpsell()),[]),[c,d]=(0,i.useState)(e.schemaArticleTypeSelected),p=(0,l.__)("Want your products stand out in search results with rich results like price, reviews and more?","wordpress-seo"),u=(0,n.useSelect)((e=>e(Aa).getIsProduct()),[]),m=(0,n.useSelect)((e=>e(Aa).getIsWooSeoActive()),[]),h=(0,n.useSelect)((e=>e(Aa).selectAdminLink("?page=wpseo_page_settings")),[]),g=u&&m,y=(0,i.useCallback)(((e,t)=>{d(t)}),[c]);return(0,i.useEffect)((()=>{y(null,e.schemaArticleTypeSelected)}),[e.schemaArticleTypeSelected]),(0,t.createElement)(i.Fragment,null,(0,t.createElement)(T.FieldGroup,{label:(0,l.__)("What type of page or content is this?","wordpress-seo"),linkTo:e.additionalHelpTextLink /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about page or content types","wordpress-seo")}),o&&(0,t.createElement)(ds,{link:a,text:p}),(0,t.createElement)(T.Select,{id:(0,Y.join)(["yoast-schema-page-type",e.location]),options:s,label:(0,l.__)("Page type","wordpress-seo"),onChange:e.schemaPageTypeChange,selected:g?"ItemPage":e.schemaPageTypeSelected,disabled:g}),e.showArticleTypeInput&&(0,t.createElement)(T.Select,{id:(0,Y.join)(["yoast-schema-article-type",e.location]),options:r,label:(0,l.__)("Article type","wordpress-seo"),onChange:e.schemaArticleTypeChange,selected:e.schemaArticleTypeSelected,onOptionFocus:y}),(0,t.createElement)(Pa,{location:e.location,show:!e.isNewsEnabled&&(w=c,E=e.defaultArticleType,"NewsArticle"===w||""===w&&"NewsArticle"===E)}),e.displayFooter&&!g&&(0,t.createElement)("p",null,(f=e.postTypeName,b=h,(0,oe.Z)({mixedString:Fa(f),components:{link:(0,t.createElement)("a",{href:b,target:"_blank",rel:"noreferrer"})}}))),g&&(0,t.createElement)("p",null,(0,l.sprintf)(/* translators: %1$s expands to Yoast WooCommerce SEO. */ (0,l.__)("You have %1$s activated on your site, automatically setting the Page type for your products to 'Item Page'. As a result, the Page type selection is disabled.","wordpress-seo"),"Yoast WooCommerce SEO")));var f,b,w,E},Ma=y().arrayOf(y().shape({name:y().string,value:y().string}));Oa.propTypes={schemaPageTypeChange:y().func,schemaPageTypeSelected:y().string,pageTypeOptions:Ma.isRequired,schemaArticleTypeChange:y().func,schemaArticleTypeSelected:y().string,articleTypeOptions:Ma.isRequired,showArticleTypeInput:y().bool.isRequired,additionalHelpTextLink:y().string.isRequired,helpTextLink:y().string.isRequired,helpTextTitle:y().string.isRequired,helpTextDescription:y().string.isRequired,postTypeName:y().string.isRequired,displayFooter:y().bool,defaultPageType:y().string.isRequired,defaultArticleType:y().string.isRequired,location:y().string.isRequired,isNewsEnabled:y().bool},Oa.defaultProps={schemaPageTypeChange:()=>{},schemaPageTypeSelected:null,schemaArticleTypeChange:()=>{},schemaArticleTypeSelected:null,displayFooter:!1,isNewsEnabled:!1};const qa=e=>e.isMetabox?(0,i.createPortal)((0,t.createElement)(Ia,null,(0,t.createElement)(Oa,{...e})),document.getElementById("wpseo-meta-section-schema")):(0,t.createElement)(Oa,{...e});qa.propTypes={showArticleTypeInput:y().bool,articleTypeLabel:y().string,additionalHelpTextLink:y().string,pageTypeLabel:y().string.isRequired,helpTextLink:y().string.isRequired,helpTextTitle:y().string.isRequired,helpTextDescription:y().string.isRequired,isMetabox:y().bool.isRequired,postTypeName:y().string.isRequired,displayFooter:y().bool,loadSchemaArticleData:y().func.isRequired,loadSchemaPageData:y().func.isRequired,location:y().string.isRequired},qa.defaultProps={showArticleTypeInput:!1,articleTypeLabel:"",additionalHelpTextLink:"",displayFooter:!1};const Na=qa;class Da{static get articleTypeInput(){return document.getElementById("yoast_wpseo_schema_article_type")}static get defaultArticleType(){return Da.articleTypeInput.getAttribute("data-default")}static get articleType(){return Da.articleTypeInput.value}static set articleType(e){Da.articleTypeInput.value=e}static get pageTypeInput(){return document.getElementById("yoast_wpseo_schema_page_type")}static get defaultPageType(){return Da.pageTypeInput.getAttribute("data-default")}static get pageType(){return Da.pageTypeInput.value}static set pageType(e){Da.pageTypeInput.value=e}}const Ba=e=>{const s=null!==Da.articleTypeInput;(0,i.useEffect)((()=>{e.loadSchemaPageData(),s&&e.loadSchemaArticleData()}),[]);const{pageTypeOptions:r,articleTypeOptions:a}=window.wpseoScriptData.metabox.schema,n={articleTypeLabel:(0,l.__)("Article type","wordpress-seo"),pageTypeLabel:(0,l.__)("Page type","wordpress-seo"),postTypeName:window.wpseoAdminL10n.postTypeNamePlural,helpTextTitle:(0,l.__)("Yoast SEO automatically describes your pages using schema.org","wordpress-seo"),helpTextDescription:(0,l.__)("This helps search engines understand your website and your content. You can change some of your settings for this page below.","wordpress-seo"),showArticleTypeInput:s,pageTypeOptions:r,articleTypeOptions:a},o={...e,...n,...(c=e.location,"metabox"===c?{helpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.metabox.schema.page_type"],isMetabox:!0}:{helpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.explanation"],additionalHelpTextLink:wpseoAdminL10n["shortlinks.sidebar.schema.page_type"],isMetabox:!1})};var c;return(0,t.createElement)(Na,{...o})};Ba.propTypes={displayFooter:y().bool.isRequired,schemaPageTypeSelected:y().string.isRequired,schemaArticleTypeSelected:y().string.isRequired,defaultArticleType:y().string.isRequired,defaultPageType:y().string.isRequired,loadSchemaPageData:y().func.isRequired,loadSchemaArticleData:y().func.isRequired,schemaPageTypeChange:y().func.isRequired,schemaArticleTypeChange:y().func.isRequired,location:y().string.isRequired};const $a=(0,B.compose)([(0,n.withSelect)((e=>{const{getPreferences:t,getPageType:s,getDefaultPageType:r,getArticleType:a,getDefaultArticleType:n}=e("yoast-seo/editor"),{displaySchemaSettingsFooter:o,isNewsEnabled:i}=t();return{displayFooter:o,isNewsEnabled:i,schemaPageTypeSelected:s(),schemaArticleTypeSelected:a(),defaultArticleType:n(),defaultPageType:r()}})),(0,n.withDispatch)((e=>{const{setPageType:t,setArticleType:s,getSchemaPageData:r,getSchemaArticleData:a}=e("yoast-seo/editor");return{loadSchemaPageData:r,loadSchemaArticleData:a,schemaPageTypeChange:t,schemaArticleTypeChange:s}})),jt()])(Ba),Ua=window.yoast.relatedKeyphraseSuggestions,Wa=()=>(0,t.createElement)("p",{className:"yoast-related-keyphrases-modal__loading-message"},(0,l.sprintf)(/* translators: %1$s expands to "Yoast SEO", %2$s expands to "Semrush". */ (0,l.__)("Please wait while %1$s connects to %2$s to get related keyphrases...","wordpress-seo"),"Yoast SEO","Semrush")," ",(0,t.createElement)(T.SvgIcon,{icon:"loading-spinner"})),Ka=(0,Y.makeOutboundLink)(),Ha=()=>(0,t.createElement)(i.Fragment,null,(0,t.createElement)("p",null,(0,l.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,l.__)("You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.","wordpress-seo"),"Semrush")),(0,t.createElement)(Ka,{href:window.wpseoAdminL10n["shortlinks.semrush.prices"],className:"yoast-button-upsell"},(0,l.sprintf)(/* translators: %s : Expands to "Semrush". */ (0,l.__)("Upgrade your %s plan","wordpress-seo"),"Semrush"),(0,t.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"}))),Va="yoast-semrush-country-selector",Ya=[{value:"us",name:"United States - US"},{value:"uk",name:"United Kingdom - UK"},{value:"ca",name:"Canada - CA"},{value:"ru",name:"Russia - RU"},{value:"de",name:"Germany - DE"},{value:"fr",name:"France - FR"},{value:"es",name:"Spain - ES"},{value:"it",name:"Italy - IT"},{value:"br",name:"Brazil - BR"},{value:"au",name:"Australia - AU"},{value:"ar",name:"Argentina - AR"},{value:"be",name:"Belgium - BE"},{value:"ch",name:"Switzerland - CH"},{value:"dk",name:"Denmark - DK"},{value:"fi",name:"Finland - FI"},{value:"hk",name:"Hong Kong - HK"},{value:"ie",name:"Ireland - IE"},{value:"il",name:"Israel - IL"},{value:"mx",name:"Mexico - MX"},{value:"nl",name:"Netherlands - NL"},{value:"no",name:"Norway - NO"},{value:"pl",name:"Poland - PL"},{value:"se",name:"Sweden - SE"},{value:"sg",name:"Singapore - SG"},{value:"tr",name:"Turkey - TR"},{value:"jp",name:"Japan - JP"},{value:"in",name:"India - IN"},{value:"hu",name:"Hungary - HU"},{value:"af",name:"Afghanistan - AF"},{value:"al",name:"Albania - AL"},{value:"dz",name:"Algeria - DZ"},{value:"ao",name:"Angola - AO"},{value:"am",name:"Armenia - AM"},{value:"at",name:"Austria - AT"},{value:"az",name:"Azerbaijan - AZ"},{value:"bh",name:"Bahrain - BH"},{value:"bd",name:"Bangladesh - BD"},{value:"by",name:"Belarus - BY"},{value:"bz",name:"Belize - BZ"},{value:"bo",name:"Bolivia - BO"},{value:"ba",name:"Bosnia and Herzegovina - BA"},{value:"bw",name:"Botswana - BW"},{value:"bn",name:"Brunei - BN"},{value:"bg",name:"Bulgaria - BG"},{value:"cv",name:"Cabo Verde - CV"},{value:"kh",name:"Cambodia - KH"},{value:"cm",name:"Cameroon - CM"},{value:"cl",name:"Chile - CL"},{value:"co",name:"Colombia - CO"},{value:"cr",name:"Costa Rica - CR"},{value:"hr",name:"Croatia - HR"},{value:"cy",name:"Cyprus - CY"},{value:"cz",name:"Czech Republic - CZ"},{value:"cd",name:"Congo - CD"},{value:"do",name:"Dominican Republic - DO"},{value:"ec",name:"Ecuador - EC"},{value:"eg",name:"Egypt - EG"},{value:"sv",name:"El Salvador - SV"},{value:"ee",name:"Estonia - EE"},{value:"et",name:"Ethiopia - ET"},{value:"ge",name:"Georgia - GE"},{value:"gh",name:"Ghana - GH"},{value:"gr",name:"Greece - GR"},{value:"gt",name:"Guatemala - GT"},{value:"gy",name:"Guyana - GY"},{value:"ht",name:"Haiti - HT"},{value:"hn",name:"Honduras - HN"},{value:"is",name:"Iceland - IS"},{value:"id",name:"Indonesia - ID"},{value:"jm",name:"Jamaica - JM"},{value:"jo",name:"Jordan - JO"},{value:"kz",name:"Kazakhstan - KZ"},{value:"kw",name:"Kuwait - KW"},{value:"lv",name:"Latvia - LV"},{value:"lb",name:"Lebanon - LB"},{value:"lt",name:"Lithuania - LT"},{value:"lu",name:"Luxembourg - LU"},{value:"mg",name:"Madagascar - MG"},{value:"my",name:"Malaysia - MY"},{value:"mt",name:"Malta - MT"},{value:"mu",name:"Mauritius - MU"},{value:"md",name:"Moldova - MD"},{value:"mn",name:"Mongolia - MN"},{value:"me",name:"Montenegro - ME"},{value:"ma",name:"Morocco - MA"},{value:"mz",name:"Mozambique - MZ"},{value:"na",name:"Namibia - NA"},{value:"np",name:"Nepal - NP"},{value:"nz",name:"New Zealand - NZ"},{value:"ni",name:"Nicaragua - NI"},{value:"ng",name:"Nigeria - NG"},{value:"om",name:"Oman - OM"},{value:"py",name:"Paraguay - PY"},{value:"pe",name:"Peru - PE"},{value:"ph",name:"Philippines - PH"},{value:"pt",name:"Portugal - PT"},{value:"ro",name:"Romania - RO"},{value:"sa",name:"Saudi Arabia - SA"},{value:"sn",name:"Senegal - SN"},{value:"rs",name:"Serbia - RS"},{value:"sk",name:"Slovakia - SK"},{value:"si",name:"Slovenia - SI"},{value:"za",name:"South Africa - ZA"},{value:"kr",name:"South Korea - KR"},{value:"lk",name:"Sri Lanka - LK"},{value:"th",name:"Thailand - TH"},{value:"bs",name:"Bahamas - BS"},{value:"tt",name:"Trinidad and Tobago - TT"},{value:"tn",name:"Tunisia - TN"},{value:"ua",name:"Ukraine - UA"},{value:"ae",name:"United Arab Emirates - AE"},{value:"uy",name:"Uruguay - UY"},{value:"ve",name:"Venezuela - VE"},{value:"vn",name:"Vietnam - VN"},{value:"zm",name:"Zambia - ZM"},{value:"zw",name:"Zimbabwe - ZW"},{value:"ly",name:"Libya - LY"}];class ja extends i.Component{constructor(e){super(e),this.relatedKeyphrasesRequest=this.relatedKeyphrasesRequest.bind(this),this.onChangeHandler=this.onChangeHandler.bind(this)}componentDidMount(){this.props.response&&this.props.keyphrase===this.props.lastRequestKeyphrase||this.relatedKeyphrasesRequest()}storeCountryCode(e){ue()({path:"yoast/v1/semrush/country_code",method:"POST",data:{country_code:e}})}async relatedKeyphrasesRequest(){const{keyphrase:e,countryCode:t,newRequest:s}=this.props;s(t,e),this.storeCountryCode(t);const r=await this.doRequest(e,t);200!==r.status?this.handleFailedResponse(r):this.handleSuccessResponse(r)}handleSuccessResponse(e){const{setNoResultsFound:t,setRequestSucceeded:s}=this.props;0!==e.results.rows.length?s(e):t()}handleFailedResponse(e){const{setRequestLimitReached:t,setRequestFailed:s}=this.props;"error"in e&&(e.error.includes("TOTAL LIMIT EXCEEDED")?t():s(e))}async doRequest(e,t){return await ue()({path:(0,Fs.addQueryArgs)("/yoast/v1/semrush/related_keyphrases",{keyphrase:e,country_code:t})})}onChangeHandler(e){this.props.setCountry(e)}render(){return(0,t.createElement)("div",{id:Va},(0,t.createElement)(T.SingleSelect,{id:Va+"-select",label:(0,l.__)("Show results for:","wordpress-seo"),name:"semrush-country-code",options:Ya,selected:this.props.countryCode,onChange:this.onChangeHandler,wrapperClassName:"yoast-field-group yoast-field-group--inline"}),(0,t.createElement)(T.NewButton,{id:Va+"-button",variant:"secondary",onClick:this.relatedKeyphrasesRequest},(0,l.__)("Select country","wordpress-seo")))}}ja.propTypes={keyphrase:y().string,countryCode:y().string,response:y().object,lastRequestKeyphrase:y().string,setCountry:y().func.isRequired,newRequest:y().func.isRequired,setNoResultsFound:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setRequestLimitReached:y().func.isRequired,setRequestFailed:y().func.isRequired},ja.defaultProps={keyphrase:"",countryCode:"us",response:{},lastRequestKeyphrase:""};const za=ja,Ga=(0,Y.makeOutboundLink)(),Za=()=>(0,t.createElement)(T.Alert,{type:"info"},(0,l.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,l.__)("You’ll reach more people with multiple keyphrases! Want to quickly add these related keyphrases to the %s analyses for even better content optimization?","wordpress-seo"),"Yoast SEO")+" ",(0,t.createElement)(Ga,{href:window.wpseoAdminL10n["shortlinks.semrush.premium_landing_page"]},(0,l.sprintf)(/* translators: %s: Expands to "Yoast SEO Premium". */ (0,l.__)("Explore %s!","wordpress-seo"),"Yoast SEO Premium"))),Xa=()=>(0,t.createElement)(T.Alert,{type:"error"},(0,l.__)("We've encountered a problem trying to get related keyphrases. Please try again later.","wordpress-seo")),Qa=()=>(0,t.createElement)(T.Alert,{type:"warning"},(0,l.sprintf)(/* translators: %s: Expands to "Yoast SEO". */ (0,l.__)("You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.","wordpress-seo"),"Yoast SEO"));function Ja(e){var s,r,a;const{response:n,lastRequestKeyphrase:o,keyphrase:c,newRequest:d,setCountry:p,renderAction:u,countryCode:g,requestLimitReached:y,setRequestFailed:f,setNoResultsFound:b,relatedKeyphrases:w,setRequestSucceeded:E,setRequestLimitReached:v,isPending:k,isRtl:_}=e,x=h().isPremium,S=(0,Y.makeOutboundLink)(),T="https://www.semrush.com/analytics/keywordoverview/?q="+encodeURIComponent(c)+"&db="+encodeURIComponent(g);return(0,t.createElement)(i.Fragment,null,!y&&(0,t.createElement)(i.Fragment,null,!x&&(0,t.createElement)(Za,null),x&&function(e){return e&&e.length>=4}(w)&&(0,t.createElement)(Qa,null),(0,t.createElement)(za,{countryCode:g,setCountry:p,newRequest:d,keyphrase:c,setRequestFailed:f,setNoResultsFound:b,setRequestSucceeded:E,setRequestLimitReached:v,response:n,lastRequestKeyphrase:o})),function(e){const{isPending:s,requestLimitReached:r,isSuccess:a,response:n,requestHasData:o}=e;return s?(0,t.createElement)(Wa,null):r?(0,t.createElement)(Ha,null):!a&&function(e){return!(0,m.isEmpty)(e)&&"error"in e}(n)?(0,t.createElement)(Xa,null):o?void 0:(0,t.createElement)("p",null,(0,l.__)("Sorry, there's no data available for that keyphrase/country combination.","wordpress-seo"))}(e),(0,t.createElement)(R.Root,{context:{isRtl:_}},(0,t.createElement)(Ua.KeyphrasesTable,{relatedKeyphrases:w,columnNames:null==n||null===(s=n.results)||void 0===s?void 0:s.columnNames,data:null==n||null===(r=n.results)||void 0===r?void 0:r.rows,isPending:k,renderButton:u}),(null==n||null===(a=n.results)||void 0===a?void 0:a.rows)&&(0,t.createElement)("p",{className:"yst-mb-0 yst-mt-2"},(0,t.createElement)(S,{href:T},(0,l.sprintf)(/* translators: %s expands to Semrush */ (0,l.__)("Get more insights at %s","wordpress-seo"),"Semrush")))))}Ja.propTypes={keyphrase:y().string,relatedKeyphrases:y().array,renderAction:y().func,requestLimitReached:y().bool,countryCode:y().string.isRequired,setCountry:y().func.isRequired,newRequest:y().func.isRequired,setRequestSucceeded:y().func.isRequired,setRequestLimitReached:y().func.isRequired,setRequestFailed:y().func.isRequired,setNoResultsFound:y().func.isRequired,response:y().object,lastRequestKeyphrase:y().string,isRtl:y().bool,isPending:y().bool},Ja.defaultProps={keyphrase:"",relatedKeyphrases:[],renderAction:null,requestLimitReached:!1,response:{},lastRequestKeyphrase:"",isRtl:!1,isPending:!1};const en=(0,B.compose)([(0,n.withSelect)((e=>{const{getFocusKeyphrase:t,getSEMrushSelectedCountry:s,getSEMrushRequestLimitReached:r,getSEMrushRequestResponse:a,getSEMrushRequestIsSuccess:n,getSEMrushIsRequestPending:o,getSEMrushRequestHasData:i,getSEMrushRequestKeyphrase:l,getPreference:c}=e("yoast-seo/editor");return{keyphrase:t(),countryCode:s(),requestLimitReached:r(),response:a(),isSuccess:n(),isPending:o(),requestHasData:i(),lastRequestKeyphrase:l(),isRtl:c("isRtl",!1)}})),(0,n.withDispatch)((e=>{const{setSEMrushChangeCountry:t,setSEMrushNewRequest:s,setSEMrushRequestSucceeded:r,setSEMrushRequestFailed:a,setSEMrushSetRequestLimitReached:n,setSEMrushNoResultsFound:o}=e("yoast-seo/editor");return{setCountry:e=>{t(e)},newRequest:(e,t)=>{s(e,t)},setRequestSucceeded:e=>{r(e)},setRequestFailed:e=>{a(e)},setRequestLimitReached:()=>{n()},setNoResultsFound:()=>{o()}}}))])(Ja),tn=(0,l.__)("Check your text on even more SEO criteria and get an enhanced keyphrase analysis, making it easier to optimize your content.","wordpress-seo"),sn=e=>{const{locationContext:s}=(0,p.useRootContext)(),r=(0,Fs.addQueryArgs)(wpseoAdminL10n[e.buyLink],{context:s});return(0,t.createElement)(rr,{title:(0,l.__)("Get more help with writing content that ranks","wordpress-seo"),description:e.description,benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:Ys(),upsellButtonText:(0,l.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:r,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,l.__)("1 year of premium support and updates included!","wordpress-seo")})};sn.propTypes={buyLink:y().string.isRequired,description:y().string},sn.defaultProps={description:tn};const rn=sn,an=({location:e})=>{const[s,r]=(0,i.useState)(!1),a=(0,i.useCallback)((()=>r(!1)),[]),n=(0,i.useCallback)((()=>r(!0)),[]),o=(0,R.useSvgAria)();return(0,t.createElement)(i.Fragment,null,s&&(0,t.createElement)(X,{title:(0,l.__)("Unlock Premium SEO analysis","wordpress-seo"),onRequestClose:a,additionalClassName:"",className:`${G} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,id:"yoast-premium-seo-analysis-modal",shouldCloseOnClickOutside:!0},(0,t.createElement)(z,null,(0,t.createElement)(rn,{buyLink:`shortlinks.upsell.${e}.premium_seo_analysis_button`}))),"sidebar"===e&&(0,t.createElement)(re,{id:"yoast-premium-seo-analysis-modal-open-button",title:(0,l.__)("Premium SEO analysis","wordpress-seo"),prefixIcon:{icon:"seo-score-none",color:C.colors.$color_grey},onClick:n},(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...o})))),"metabox"===e&&(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(V,{id:"yoast-premium-seo-analysis-metabox-modal-open-button",onClick:n},(0,t.createElement)(T.SvgIcon,{icon:"seo-score-none",color:C.colors.$color_grey}),(0,t.createElement)(V.Text,null,(0,l.__)("Premium SEO analysis","wordpress-seo")),(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...o}),(0,t.createElement)("span",null,"Premium")))))};an.propTypes={location:y().string},an.defaultProps={location:"sidebar"};const nn=an,on=e=>(0,t.createElement)(rr,{title:(0,l.__)("Reach a wider audience","wordpress-seo"),description:(0,l.__)("Get help optimizing for up to 5 related keyphrases. This helps you reach a wider audience and get more traffic.","wordpress-seo"),benefitsTitle:/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.sprintf)("%s also gives you:","Yoast SEO Premium"),benefits:Ys(),upsellButtonText:(0,l.sprintf)(/* translators: %s expands to 'Yoast SEO Premium'. */ (0,l.__)("Unlock with %s","wordpress-seo"),"Yoast SEO Premium"),upsellButton:{href:e.buyLink,className:"yoast-button-upsell",rel:null,"data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2","data-action":"load-nfd-ctb"},upsellButtonLabel:(0,l.__)("1 year free support and updates included!","wordpress-seo")});on.propTypes={buyLink:y().string.isRequired};const ln=on,cn=()=>{const[e,,,s,r]=(0,R.useToggleState)(!1),a=(0,i.useContext)(p.LocationContext),{locationContext:n}=(0,p.useRootContext)(),o=(0,R.useSvgAria)(),c=wpseoAdminL10n["sidebar"===a.toLowerCase()?"shortlinks.upsell.sidebar.additional_button":"shortlinks.upsell.metabox.additional_button"];return(0,t.createElement)(t.Fragment,null,e&&(0,t.createElement)(X,{title:(0,l.__)("Add related keyphrases","wordpress-seo"),onRequestClose:r,additionalClassName:"",id:"yoast-additional-keyphrases-modal",className:`${G} yoast-gutenberg-modal__box yoast-gutenberg-modal__no-padding`,shouldCloseOnClickOutside:!0},(0,t.createElement)(z,null,(0,t.createElement)(ln,{buyLink:(0,Fs.addQueryArgs)(c,{context:n})}))),"sidebar"===a&&(0,t.createElement)(re,{id:"yoast-additional-keyphrase-modal-open-button",title:(0,l.__)("Add related keyphrase","wordpress-seo"),prefixIcon:{icon:"plus",color:C.colors.$color_grey_medium_dark},onClick:s},(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-shrink-0",...o})))),"metabox"===a&&(0,t.createElement)("div",{className:"yst-root"},(0,t.createElement)(V,{id:"yoast-additional-keyphrase-metabox-modal-open-button",onClick:s},(0,t.createElement)(T.SvgIcon,{icon:"plus",color:C.colors.$color_grey_medium_dark}),(0,t.createElement)(V.Text,null,(0,l.__)("Add related keyphrase","wordpress-seo")),(0,t.createElement)(R.Badge,{size:"small",variant:"upsell"},(0,t.createElement)(Vs,{className:"yst-w-2.5 yst-h-2.5 yst-mr-1 yst-shrink-0",...o}),(0,t.createElement)("span",null,"Premium")))))};var dn,pn,un,mn,hn,gn,yn,fn,bn,wn,En,vn,kn,xn,Sn,Rn,Tn,Cn,In,An,Pn,Ln,Fn,On,Mn,qn,Nn,Dn,Bn,$n,Un,Wn,Kn,Hn,Vn,Yn,jn,zn,Gn,Zn,Xn,Qn,Jn,eo,to,so,ro;function ao(){return ao=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",ao({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 448 360"},e),dn||(dn=t.createElement("circle",{cx:226,cy:211,r:149,fill:"#f0ecf0"})),pn||(pn=t.createElement("path",{fill:"#fbd2a6",d:"M173.53 189.38s-35.47-5.3-41.78-11c-9.39-24.93-29.61-48-35.47-66.21-.71-2.24 3.72-11.39 3.53-15.41s-5.34-11.64-5.23-14-.09-15.27-.09-15.27l-4.75-.72s-5.13 6.07-3.56 9.87c-1.73-4.19 4.3 7.93.5 9.35 0 0-6-5.94-11.76-8.27s-19.57-3.65-19.57-3.65L43.19 73l-4.42.6L31 69.7l-2.85 5.12 7.53 5.29L40.86 92l17.19 10.2 10.2 10.56 9.86 3.56s26.49 79.67 45 92c17 11.33 37.23 15.92 37.23 15.92z"})),un||(un=t.createElement("path",{fill:"#a4286a",d:"M270.52 345.13c2.76-14.59 15.94-35.73 30.24-54.58 16.22-21.39 14-79.66-33.19-91.46-17.3-4.32-52.25-1-59.85-3.41C186.54 189 170 187 168 190.17c-5 10.51-7.73 27.81-5.51 36.26 1.18 4.73 3.54 5.91 20.49 13.4-5.12 15-16.35 26.3-22.86 37s7.88 27.2 7.1 33.51c-.48 3.8-4.26 21.13-7.18 34.25a149.47 149.47 0 0 0 110.3 8.66 25.66 25.66 0 0 1 .18-8.12z"})),mn||(mn=t.createElement("path",{fill:"#9a5815",d:"M206.76 66.43c-5 14.4-1.42 25.67-3.93 40.74-10 60.34-24.08 43.92-31.44 93.6 7.24-14.19 14.32-15.82 20.63-23.11-.83 3.09-10.25 13.75-8.05 34.81 9.85-8.51 6.35-8.75 11.86-8.54.36 3.25 3.53 3.22-3.59 10.53 2.52.69 17.42-14.32 20.16-12.66s0 5.72-6 7.76c2.15 2.2 30.47-3.87 43.81-14.71 4.93-4 10-13.16 13.38-18.2 7.17-10.62 12.38-24.77 17.71-36.6 8.94-19.87 15.09-39.34 16.11-61.31.53-10.44-3.41-18.44-4.41-28.86-2.57-27.8-67.63-37.26-86.24 16.55z"})),hn||(hn=t.createElement("path",{fill:"#efb17c",d:"M277.74 179.06c.62-.79 1.24-1.59 1.84-2.39-.85 2.59-1.52 3.73-1.84 2.39z"})),gn||(gn=t.createElement("path",{fill:"#fbd2a6",d:"M216.1 206.72c3.69-5.42 8.28-3.35 15.57-8.28 3.76-3.06 1.57-9.46 1.77-11.82 18.25 4.56 37.38-1.18 49.07-16 .62 5.16-2.77 22.27-.2 27 4.73 8.67 13.4 18.92 13.4 18.92-35.47-2.76-63.45 39-89.86 44.54 5.52-28.74-2.36-35.84 10.25-54.36z"})),yn||(yn=t.createElement("path",{fill:"#f6b488",d:"m235.21 167.9 53.21-25.23s-3.65 24-6.5 32.72c-64.05 62.66-46.47-7.33-46.71-7.49z"})),fn||(fn=t.createElement("path",{fill:"#fbd2a6",d:"M226.86 50.64C215 59.31 206.37 93.21 204 95.57c-19.46 19.47-3.59 41.39-3.94 51.24-.2 5.52-4.14 25.42 5.72 29.36 22.22 8.89 60-3.48 67.19-12.61 13.28-16.75 40.89-94.78 17.74-108.19-7.92-4.58-42.78-20.18-63.85-4.73z"})),bn||(bn=t.createElement("path",{fill:"#e5766c",d:"M243.69 143.66c-10.7-6.16-8.56-6.73-19.76-12.71-3.86-2.07-3.94.64-6.32 0-2.91-.79-1.39-2.74-5.37-3.48-6.52-1.21-3.67 3.63-3.15 6 1.32 6.15-8.17 17.3 3.26 21.42 12.65 4.55 21.38-9.41 31.34-11.23z"})),wn||(wn=t.createElement("path",{fill:"#fff",d:"M240.68 143.9c-11.49-5.53-11.65-8.17-24.64-11.69-8.6-2.32-5.53 1-5.69 4.42-.2 4.16-1.26 9.87 4.9 12.66 9 4.09 18.16-6.02 25.43-5.39zm.7-40.9c-.16 1.26-.06 4.9 5.46 8.25 11.43-4.73 16.36-2.56 17-3.33 1.48-1.76-2-8.87-7.88-9.85-5.58-.94-14.14 1.24-14.58 4.93z"})),En||(En=t.createElement("path",{fill:"#000001",d:"M263.53 108.19c-4.32-4.33-6.85-6.24-12.26-8.21-2.77-1-6.18.18-8.65 1.67a3.65 3.65 0 0 0-1.24 1.23h-.12a3.73 3.73 0 0 1 1-1.52 12.53 12.53 0 0 1 11.93-3c4.73 1 9.43 4.63 9.42 9.82z"})),vn||(vn=t.createElement("circle",{cx:254.13,cy:104.05,r:4.19,fill:"#000001"})),kn||(kn=t.createElement("path",{fill:"#fff",d:"M225.26 99.22c-.29 1-6.6 3.45-10.92 1.48-1.15-3.24-5-6.43-5.25-6.71-.5-2.86 5.55-8 10.06-6.3a10.21 10.21 0 0 1 6.11 11.53z"})),xn||(xn=t.createElement("path",{fill:"#000001",d:"M209.29 94.21c-.19-2.34 1.84-4.1 3.65-5.2 7-3.87 13.18 3 12.43 10h-.12c-.14-4-2.38-8.44-6.47-9.11a3.19 3.19 0 0 0-2.42.31c-1.37.85-2.38 2-3.89 2.56-1 .45-1.92.42-3 1.4h-.22z"})),Sn||(Sn=t.createElement("circle",{cx:219.55,cy:95.28,r:4,fill:"#000001"})),Rn||(Rn=t.createElement("path",{fill:"#efb17c",d:"M218.66 120.27a27.32 27.32 0 0 0 4.54 3.45c-2.29-.72-4.28-.69-6.32-2.27-2.53-2-3.39-5.16-.73-7.72 10.24-9.82 12.56-13.82 14.77-24.42-1 12.37-6 17.77-10.63 23.18-2.53 2.97-4.68 5.06-1.63 7.78z"})),Tn||(Tn=t.createElement("path",{fill:"#a57c52",d:"M231.22 69.91c-.67-3.41-8.78-2.83-11.06-1.93-3.48 1.39-6.08 5.22-7.13 8.53 2.9-4.3 6.74-8.12 12.46-6 1.16.42 3.18 2.35 4.48 1.85s1.03-2.2 1.25-2.45zm32.16 8.56c-2.75-1.66-12.24-5.08-12.18.82 2.56.24 5-.19 7.64.95 11.22 4.76 12.77 17.61 12.85 17.86.2-.53.1 1.26.23.7-.02.2.95-12.12-8.54-20.33z"})),Cn||(Cn=t.createElement("path",{fill:"#fbd2a6",d:"M53.43 250.73c6.29 0-.6-.17 7.34 0 1.89.05-2.38-.7 0-.69 4.54-4.2 12.48-.74 20.6-2.45 4.55.35 3.93 1.35 5.59 4.19 4.89 8.38 4.78 14.21 14 19.56 16.42 8.38 66 12.92 88.49 18.86 5.52.83 42.64-20.15 61-23.75 6.51 10.74 11.46 28.68 8.39 34.93-6.54 13.3-57.07 25.4-75.91 25.15C156.47 326.18 94 294 92.2 293c-.94-.57.7-.7-7.68 0s-10.15.72-17.47-1.4c-3-.87-4.61-1.33-6.33-3.54-2 .22-3.39.2-4.78-1-3.15-2.74-4.84-6.61-2.73-10.06h-.12c-3.35-2.48-6.54-7.69-3.08-11.72 1-1.18 6.06-1.94 7.77-2.28-1.58-.29-6.37.19-7.49-.72-3.06-2.5-4.96-11.55 3.14-11.55z"})),In||(In=t.createElement("path",{fill:"#a4286a",d:"M303.22 237.52c-9.87-11.88-41.59 8.19-47.8 12.34s-14.89 17.95-14.89 17.95c6 9.43 8.36 31 5.65 46.34l30.51-3s18-15.62 22.59-28.7 6.3-42.54 6.3-42.54"})),An||(An=t.createElement("path",{fill:"#cb9833",d:"M278.63 31.67c-6.08 0-22.91 4.07-22.93 12.91 0 11 47.9 38.38 16.14 85.85 10.21-.79 10.79-8.12 14.92-14.93-3.66 77-49.38 93.58-40.51 142.25 7.68-25.81 20.3-11.62 38.13-33.84 3.45 4.88 9 18.28-9.46 33.78 50-31.26 57.31-56.6 51.92-95C319.93 113.53 348.7 42 278.63 31.67z"})),Pn||(Pn=t.createElement("path",{fill:"#fbd2a6",d:"M283.64 126.83c-2.42 9.67-8 15.76-1.48 16.46A21.26 21.26 0 0 0 302 132.6c5.17-8.52 3.93-16.44-2.46-18s-13.48 2.56-15.9 12.23z"})),Ln||(Ln=t.createElement("path",{fill:"#efb17c",d:"M38 73.45c1.92 2 4.25 9.21 6.32 10.91 2.25 1.85 5.71 2.12 8.1 4.45 3.66-2 6-8.72 10-9.31-2.59 1.31-4.42 3.5-6.93 4.88-1.42.8-3 1.31-4.38 2.25-2.16-1.46-4.27-1.77-6.26-3.38-2.52-2.02-5.31-8-6.85-9.8z"})),Fn||(Fn=t.createElement("path",{fill:"#efb17c",d:"M39 74.4c4.83 1.1 12.52 6.44 15.89 10-3.22-1.34-14.73-6.15-15.89-10zm.62-1.5c6.71-.79 18 1.54 23.29 5.9-3.85-.2-5.42-1.48-9-2.94-4.08-1.69-8.83-2.03-14.29-2.96zm46.43 14.58c-3.72-1.32-10.52-1.13-13.22 3.52 2-1.16 1.84-2.11 4.18-1.72-3.81-4.15 8.16-.74 11.6-.24m-2.78 13.15c.56-3.29-8-7.81-10.58-9.17-6.25-3.29-12.16 1.36-19.33-4.53 5.94 6.1 14.23 2.5 19.55 5.76 3.06 1.88 8.65 6.09 9.35 9.38-.23-.4 1.29-1.44 1.01-1.44z"})),On||(On=t.createElement("circle",{cx:38.13,cy:30.03,r:3.14,fill:"#b89ac8"})),Mn||(Mn=t.createElement("circle",{cx:60.26,cy:39.96,r:3.14,fill:"#e31e0c"})),qn||(qn=t.createElement("circle",{cx:50.29,cy:25.63,r:3.14,fill:"#3baa45"})),Nn||(Nn=t.createElement("circle",{cx:22.19,cy:19.21,r:3.14,fill:"#2ca9e1"})),Dn||(Dn=t.createElement("circle",{cx:22.19,cy:30.03,r:3.14,fill:"#e31e0c"})),Bn||(Bn=t.createElement("circle",{cx:26.86,cy:8.28,r:3.14,fill:"#3baa45"})),$n||($n=t.createElement("circle",{cx:49.32,cy:39.99,r:3.14,fill:"#e31e0c"})),Un||(Un=t.createElement("circle",{cx:63.86,cy:59.52,r:3.14,fill:"#f8ad39"})),Wn||(Wn=t.createElement("circle",{cx:50.88,cy:50.72,r:3.14,fill:"#3baa45"})),Kn||(Kn=t.createElement("circle",{cx:63.47,cy:76.17,r:3.14,fill:"#e31e0c"})),Hn||(Hn=t.createElement("circle",{cx:38.34,cy:14.83,r:3.14,fill:"#2ca9e1"})),Vn||(Vn=t.createElement("circle",{cx:44.44,cy:5.92,r:3.14,fill:"#f8ad39"})),Yn||(Yn=t.createElement("circle",{cx:57.42,cy:10.24,r:3.14,fill:"#e31e0c"})),jn||(jn=t.createElement("circle",{cx:66.81,cy:12.4,r:3.14,fill:"#2ca9e1"})),zn||(zn=t.createElement("circle",{cx:77.95,cy:5.14,r:3.14,fill:"#b89ac8"})),Gn||(Gn=t.createElement("circle",{cx:77.95,cy:30.34,r:3.14,fill:"#e31e0c"})),Zn||(Zn=t.createElement("circle",{cx:80.97,cy:16.55,r:3.14,fill:"#f8ad39"})),Xn||(Xn=t.createElement("circle",{cx:62.96,cy:27.27,r:3.14,fill:"#3baa45"})),Qn||(Qn=t.createElement("circle",{cx:75.36,cy:48.67,r:3.14,fill:"#2ca9e1"})),Jn||(Jn=t.createElement("circle",{cx:76.11,cy:65.31,r:3.14,fill:"#3baa45"})),eo||(eo=t.createElement("path",{fill:"#71b026",d:"M78.58 178.43C54.36 167.26 32 198.93 5 198.93c19.56 20.49 63.53 1.52 69 15.5 1.48-14.01 4.11-30.9 4.58-36z"})),to||(to=t.createElement("path",{fill:"#074a67",d:"M67.75 251.08c0-4.65 10.13-72.65 10.13-72.65h2.8l-9.09 72.3z"})),so||(so=t.createElement("ellipse",{cx:255.38,cy:103.18,fill:"#fff",rx:1.84,ry:1.77})),ro||(ro=t.createElement("ellipse",{cx:221.24,cy:94.75,fill:"#fff",rx:1.84,ry:1.77}))),oo=(0,B.compose)([(0,n.withSelect)(((e,t)=>{const{isAlertDismissed:s}=e(t.store||"yoast-seo/editor");return{isAlertDismissed:s(t.alertKey)}})),(0,n.withDispatch)(((e,t)=>{const{dismissAlert:s}=e(t.store||"yoast-seo/editor");return{onDismissed:()=>s(t.alertKey)}}))]),io=({children:e,id:s,hasIcon:r=!0,title:a,image:n=null,isAlertDismissed:o,onDismissed:i})=>o?null:(0,t.createElement)("div",{id:s,className:"notice-yoast yoast is-dismissible yoast-webinar-dashboard yoast-general-page-notices"},(0,t.createElement)("div",{className:"notice-yoast__container"},(0,t.createElement)("div",null,(0,t.createElement)("div",{className:"notice-yoast__header"},r&&(0,t.createElement)("span",{className:"yoast-icon"}),(0,t.createElement)("h2",{className:"notice-yoast__header-heading yoast-notice-migrated-header"},a)),(0,t.createElement)("div",{className:"notice-yoast-content"},(0,t.createElement)("p",null,e))),n&&(0,t.createElement)(n,{height:"60"})),(0,t.createElement)("button",{type:"button",className:"notice-dismiss",onClick:i},(0,t.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,l.__)("Dismiss this notice.","wordpress-seo"))));io.propTypes={children:y().node.isRequired,id:y().string.isRequired,hasIcon:y().bool,title:y().any.isRequired,image:y().elementType,isAlertDismissed:y().bool.isRequired,onDismissed:y().func.isRequired};const lo=oo(io),co=({store:e="yoast-seo/editor",image:s=null,title:r,promoId:a,alertKey:o,children:i,...l})=>(0,n.select)(e).isPromotionActive(a)&&(0,t.createElement)(lo,{alertKey:o,store:e,id:o,title:r,image:s,...l},i);co.propTypes={store:y().string,image:y().elementType,title:y().any.isRequired,promoId:y().string.isRequired,alertKey:y().string.isRequired,children:y().node};const po=({store:e="yoast-seo/editor",location:s="sidebar",...r})=>{const a=(0,n.useSelect)((t=>t(e).getIsPremium()),[e]),o=(0,n.useSelect)((t=>t(e).selectLinkParams()),[e]),c="sidebar"===s?(0,l.sprintf)(/* translators: %1$s expands to Yoast SEO Premium */ (0,l.__)("Now with 30%% OFF: %1$s","wordpress-seo"),"Yoast SEO Premium"):(0,i.createInterpolateElement)((0,l.sprintf)(/* translators: %1$s expands to Yoast SEO Premium, %2$s expands to a link on yoast.com, %3$s expands to the anchor end tag. */ (0,l.__)("Now with 30%% OFF: %1$s %2$sBuy now!%3$s","wordpress-seo"),"Yoast SEO Premium","",""),{a:(0,t.createElement)("a",{href:(0,Fs.addQueryArgs)("https://yoa.st/black-friday-sale",o),target:"_blank",rel:"noreferrer"})});return a?null:(0,t.createElement)(co,{id:`black-friday-2024-promotion-${s}`,promoId:"black-friday-2024-promotion",alertKey:"black-friday-2024-promotion",store:e,title:c,...r},(0,t.createElement)("span",{className:"yoast-bf-sale-badge"},(0,l.__)("BLACK FRIDAY SALE","wordpress-seo")," "),"sidebar"===s&&(0,t.createElement)("a",{className:"yst-block yst--mb-[1em]",href:(0,Fs.addQueryArgs)("https://yoa.st/black-friday-sale",o),target:"_blank",rel:"noreferrer"},(0,l.__)("Buy now!","wordpress-seo")))};po.propTypes={store:y().string,location:y().oneOf(["sidebar","metabox"])};const uo=e=>s=>!(()=>{var e,t;const s=(0,n.select)("yoast-seo/editor").getIsPremium(),r=(0,n.select)("yoast-seo/editor").getWarningMessage();return(s&&null!==(e=null===(t=(0,n.select)("yoast-seo-premium/editor"))||void 0===t?void 0:t.getMetaboxWarning())&&void 0!==e?e:[]).length>0||r.length>0})()&&(0,t.createElement)(e,{...s}),mo=uo((()=>{const e=(0,n.useSelect)((e=>e("yoast-seo/editor").selectLinkParams()),[]),s=(0,l.sprintf)(/* translators: %1$s expands to 'WooCommerce'. */ (0,l.__)("Is your %1$s store ready for Black Friday?","wordpress-seo"),"WooCommerce");return(0,t.createElement)(co,{id:"black-friday-2023-product-editor-checklist",alertKey:"black-friday-2023-product-editor-checklist",promoId:"black-friday-2023-checklist",store:"yoast-seo/editor",title:s,image:no},(0,i.createInterpolateElement)((0,l.sprintf)(/* translators: %1$s expands to a 'strong' start tag, %2$s to a 'strong' end tag. */ (0,l.__)("The Yoast %1$sultimate Black Friday checklist%2$s helps you prepare in time, so you can boost your results during this sale.","wordpress-seo"),"",""),{strong:(0,t.createElement)("strong",null)})," ",(0,t.createElement)("a",{href:(0,Fs.addQueryArgs)("https://yoa.st/black-friday-checklist",e),target:"_blank",rel:"noreferrer"},(0,l.__)("Get the checklist and start optimizing now!","wordpress-seo")))})),ho=uo(po);function go({settings:e}){const s=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsTerm()),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsProduct()),[]),a=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsWooCommerceActive()),[]),o=r&&a;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(k.Fill,{name:"YoastMetabox"},(0,t.createElement)(or,{key:"warning",renderPriority:1},(0,t.createElement)(ms,null)),(0,t.createElement)(or,{key:"time-constrained-notification",renderPriority:2},o&&(0,t.createElement)(mo,null),(0,t.createElement)(ho,{image:null,hasIcon:!1,location:"metabox"})),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"keyword-input",renderPriority:8},(0,t.createElement)(Yt.KeywordInput,{isSEMrushIntegrationActive:e.isSEMrushIntegrationActive}),!window.wpseoScriptData.metabox.isPremium&&(0,t.createElement)(k.Fill,{name:"YoastRelatedKeyphrases"},(0,t.createElement)(en,null))),(0,t.createElement)(or,{key:"search-appearance",renderPriority:9},(0,t.createElement)(ys,{id:"yoast-snippet-editor-metabox",title:(0,l.__)("Search appearance","wordpress-seo"),initialIsOpen:!0},(0,t.createElement)(us,{hasPaperStyle:!1}))),e.isContentAnalysisActive&&(0,t.createElement)(or,{key:"readability-analysis",renderPriority:10},(0,t.createElement)(Yt.ReadabilityAnalysis,{shouldUpsell:e.shouldUpsell})),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"seo-analysis",renderPriority:20},(0,t.createElement)(i.Fragment,null,(0,t.createElement)(Yt.SeoAnalysis,{shouldUpsell:e.shouldUpsell,shouldUpsellWordFormRecognition:e.isWordFormRecognitionActive}),e.shouldUpsell&&(0,t.createElement)(nn,{location:"metabox"}))),e.isInclusiveLanguageAnalysisActive&&(0,t.createElement)(or,{key:"inclusive-language-analysis",renderPriority:21},(0,t.createElement)(Yt.InclusiveLanguageAnalysis,null)),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"additional-keywords-upsell",renderPriority:22},e.shouldUpsell&&(0,t.createElement)(cn,null)),e.isKeywordAnalysisActive&&e.isWincherIntegrationActive&&(0,t.createElement)(or,{key:"wincher-seo-performance",renderPriority:23},(0,t.createElement)(Vt,{location:"metabox"})),e.shouldUpsell&&!s&&(0,t.createElement)(or,{key:"internal-linking-suggestions-upsell",renderPriority:25},(0,t.createElement)(ar,null)),e.isCornerstoneActive&&(0,t.createElement)(or,{key:"cornerstone",renderPriority:30},(0,t.createElement)(zt,null)),e.displayAdvancedTab&&(0,t.createElement)(or,{key:"advanced",renderPriority:40},(0,t.createElement)(ys,{id:"collapsible-advanced-settings",title:(0,l.__)("Advanced","wordpress-seo")},(0,t.createElement)(hr,null))),e.displaySchemaSettings&&(0,t.createElement)(or,{key:"schema",renderPriority:50},(0,t.createElement)($a,null)),(0,t.createElement)(or,{key:"social",renderPriority:-1},(0,t.createElement)(Ta,{target:"wpseo-section-social"})),e.isInsightsEnabled&&(0,t.createElement)(or,{key:"insights",renderPriority:52},(0,t.createElement)(Hs,{location:"metabox"}))))}go.propTypes={settings:y().object.isRequired};const yo=(0,B.compose)([(0,n.withSelect)(((e,t)=>{const{getPreferences:s}=e("yoast-seo/editor");return{settings:s(),store:t.store}}))])(go);function fo({target:e,store:s,theme:r}){return(0,t.createElement)(P,{target:e},(0,t.createElement)(D,{store:s,theme:r}),(0,t.createElement)(yo,{store:s,theme:r}))}fo.propTypes={target:y().string.isRequired,store:y().object,theme:y().object};const bo=({error:e})=>{const s=(0,i.useCallback)((()=>{var e,t;return null===(e=window)||void 0===e||null===(t=e.location)||void 0===t?void 0:t.reload()}),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").selectLink("https://yoa.st/sidebar-error-support")),[]),a=(0,n.useSelect)((e=>e("yoast-seo/editor").getPreference("isRtl",!1)),[]);return(0,t.createElement)(R.Root,{context:{isRtl:a}},(0,t.createElement)(q,{error:e},(0,t.createElement)(q.VerticalButtons,{supportLink:r,handleRefreshClick:s})))};function wo({theme:e}){return(0,t.createElement)(S,{theme:e,location:"sidebar"},(0,t.createElement)(R.ErrorBoundary,{FallbackComponent:bo},(0,t.createElement)(k.Slot,{name:"YoastSidebar"},(e=>_(e)))))}function Eo({score:e,label:s,scoreValue:r}){return(0,t.createElement)("div",{className:"yoast-analysis-check"},(0,t.createElement)(T.SvgIcon,{...A(e)}),(0,t.createElement)("span",null," ",s," ",r&&(0,t.createElement)("strong",null,r)))}function vo({checklist:e,onClick:s}){const r=e.every((e=>"good"===e.score));return(0,t.createElement)(i.Fragment,null,e.map((e=>(0,t.createElement)(Eo,{key:e.label,...e}))),(0,t.createElement)("br",null),!r&&(0,t.createElement)(T.Button,{onClick:s},(0,l.__)("Improve your post with Yoast SEO","wordpress-seo")))}function ko(e){return(0,m.isNil)(e)||(e/=10),function(e){switch(e){case"feedback":return{className:"na",screenReaderText:(0,l.__)("Not available","wordpress-seo"),screenReaderReadabilityText:(0,l.__)("Not available","wordpress-seo"),screenReaderInclusiveLanguageText:(0,l.__)("Not available","wordpress-seo")};case"bad":return{className:"bad",screenReaderText:(0,l.__)("Needs improvement","wordpress-seo"),screenReaderReadabilityText:(0,l.__)("Needs improvement","wordpress-seo"),screenReaderInclusiveLanguageText:(0,l.__)("Needs improvement","wordpress-seo")};case"ok":return{className:"ok",screenReaderText:(0,l.__)("OK SEO score","wordpress-seo"),screenReaderReadabilityText:(0,l.__)("OK","wordpress-seo"),screenReaderInclusiveLanguageText:(0,l.__)("Potentially non-inclusive","wordpress-seo")};case"good":return{className:"good",screenReaderText:(0,l.__)("Good SEO score","wordpress-seo"),screenReaderReadabilityText:(0,l.__)("Good","wordpress-seo"),screenReaderInclusiveLanguageText:(0,l.__)("Good","wordpress-seo")};default:return{className:"loading",screenReaderText:"",screenReaderReadabilityText:"",screenReaderInclusiveLanguageText:""}}}(I.interpreters.scoreToRating(e))}function _o(e,t){const{isKeywordAnalysisActive:s}=t.getPreferences();if(s){const s=ko(t.getReadabilityResults().overallScore);e.push({label:(0,l.__)("Readability analysis:","wordpress-seo"),score:s.className,scoreValue:s.screenReaderReadabilityText})}}function xo(e,t){const{isContentAnalysisActive:s}=t.getPreferences();if(s){const s=ko(t.getResultsForFocusKeyword().overallScore),r=h().isPremium;e.push({label:r?(0,l.__)("Premium SEO analysis:","wordpress-seo"):(0,l.__)("SEO analysis:","wordpress-seo"),score:s.className,scoreValue:s.screenReaderReadabilityText})}}function So(e,t){const{isInclusiveLanguageAnalysisActive:s}=t.getPreferences();if(s){const s=ko(t.getInclusiveLanguageResults().overallScore);e.push({label:(0,l.__)("Inclusive language:","wordpress-seo"),score:s.className,scoreValue:s.screenReaderInclusiveLanguageText})}}bo.propTypes={error:y().object.isRequired},Eo.propTypes={score:g.string.isRequired,label:g.string.isRequired,scoreValue:g.string},Eo.defaultProps={scoreValue:""},vo.propTypes={checklist:y().array.isRequired,onClick:y().func.isRequired};const Ro=(0,B.compose)([(0,n.withSelect)((function(e){const t=e("yoast-seo/editor"),s=[];return xo(s,t),_o(s,t),So(s,t),s.push(...Object.values(t.getChecklistItems())),{checklist:s}})),(0,n.withDispatch)((function(e){const{openGeneralSidebar:t}=e("core/edit-post");return{onClick:()=>{t("yoast-seo/seo-sidebar")}}}))])(vo),To=(0,B.compose)([(0,n.withSelect)((e=>{const t=e("yoast-seo/editor"),s=ko(t.getResultsForFocusKeyword().overallScore),r=ko(t.getReadabilityResults().overallScore),{isKeywordAnalysisActive:a,isContentAnalysisActive:n}=t.getPreferences();let o,i;switch(r.className){case"good":o=C.colors.$color_good;break;case"ok":o=C.colors.$color_ok;break;default:o=C.colors.$color_bad}switch(s.className){case"good":i=C.colors.$color_good;break;case"ok":i=C.colors.$color_ok;break;default:i=C.colors.$color_bad}return{readabilityScoreColor:o,seoScoreColor:i,isKeywordAnalysisActive:a,isContentAnalysisActive:n}}))])(v);var Co;function Io(){return Io=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Io({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1600 1600"},e),Co||(Co=t.createElement("g",{fill:"none",fillRule:"evenodd"},t.createElement("path",{fill:"#1877f2",d:"M1600 800a800 800 0 1 0-925 790v-559H472V800h203V624c0-201 119-311 302-311 88 0 179 15 179 15v197h-101c-99 0-130 62-130 125v150h222l-36 231H925v559a800 800 0 0 0 675-790"}),t.createElement("path",{fill:"#fff",d:"M1147 800H925V650c0-63 31-125 130-125h101V328s-91-15-179-15c-183 0-302 110-302 311v176H472v231h203v559a806 806 0 0 0 250 0v-559h186z"}))));var Po;function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Lo({xmlns:"http://www.w3.org/2000/svg",fill:"current",viewBox:"0 0 1200 1227"},e),Po||(Po=t.createElement("path",{d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})));function Oo({permalink:e}){const s=encodeURI(e);return(0,t.createElement)(i.Fragment,null,(0,t.createElement)("div",null,(0,l.__)("Share your post!","wordpress-seo")),(0,t.createElement)("ul",{className:"yoast-seo-social-share-buttons"},(0,t.createElement)("li",null,(0,t.createElement)("a",{href:"https://www.facebook.com/sharer/sharer.php?u="+s,target:"_blank",rel:"noopener noreferrer"},(0,t.createElement)(Ao,null),(0,l.__)("Facebook","wordpress-seo"),(0,t.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,l.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,t.createElement)("li",null,(0,t.createElement)("a",{href:"https://twitter.com/share?url="+s,target:"_blank",rel:"noopener noreferrer",className:"x-share"},(0,t.createElement)(Fo,null),(0,l.__)("X","wordpress-seo"),(0,t.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,l.__)("(Opens in a new browser tab)","wordpress-seo"))))))}Oo.propTypes={permalink:y().string.isRequired};const Mo=(0,B.compose)([(0,n.withSelect)((e=>({permalink:e("core/editor").getPermalink()})))])(Oo);function qo({checklist:e,onClick:s}){let r;return r=e.every((e=>"good"===e.score))?(0,l.__)("We've analyzed your post. Everything looks good. Well done!","wordpress-seo"):(0,l.__)("We've analyzed your post. There is still room for improvement!","wordpress-seo"),(0,t.createElement)(i.Fragment,null,(0,t.createElement)("p",null,r),(0,t.createElement)(vo,{checklist:e,onClick:s}))}qo.propTypes={checklist:y().array.isRequired,onClick:y().func.isRequired};const No=(0,B.compose)([(0,n.withSelect)((function(e){const t=e("yoast-seo/editor"),s=[];return function(e,t){t.getFocusKeyphrase()||e.push({label:(0,l.__)("No focus keyword was entered","wordpress-seo"),score:"bad"})}(s,t),xo(s,t),_o(s,t),So(s,t),s.push(...Object.values(t.getChecklistItems())),{checklist:s}})),(0,n.withDispatch)((function(e){const{closePublishSidebar:t,openGeneralSidebar:s}=e("core/edit-post");return{onClick:()=>{t(),s("yoast-seo/seo-sidebar")}}}))])(qo),Do="trustpilot-review-notification",Bo="yoast-seo/editor",$o=()=>{const e=(0,n.useSelect)((e=>e(Bo).getIsPremium()),[]),t=(0,n.useSelect)((e=>e(Bo).isAlertDismissed(Do)),[]),{overallScore:s}=(0,n.useSelect)((e=>e(Bo).getResultsForFocusKeyword()),[]),{dismissAlert:r}=(0,n.useDispatch)(Bo),a=(0,i.useCallback)((()=>r(Do)),[r]),[o,l]=(0,i.useState)(!1);return(0,i.useEffect)((()=>{var e;"good"===(null===(e=ko(s))||void 0===e?void 0:e.className)&&l(!0)}),[s]),{shouldShow:!e&&!t&&o,dismiss:a}},Uo=(0,Y.makeOutboundLink)(),Wo=()=>{const{shouldShow:e,dismiss:s}=$o(),{locationContext:r}=(0,p.useRootContext)(),a=(0,n.useSelect)((e=>e(Bo).selectLink("https://yoa.st/trustpilot-review",{context:r})),[r]);return(0,t.createElement)(io,{alertKey:Do,store:Bo,id:Do,title:(0,l.__)("Show Yoast SEO some love!","wordpress-seo"),hasIcon:!1,isAlertDismissed:!e,onDismissed:s},(0,l.__)("Happy with the plugin?","wordpress-seo")," ",(0,t.createElement)(Uo,{href:a,rel:"noopener noreferrer"},(0,l.__)("Leave a quick review","wordpress-seo")),".")},Ko=({store:e="yoast-seo/editor",image:s=no,url:r,...a})=>(0,n.useSelect)((t=>t(e).getIsPremium()))?null:(0,t.createElement)(lo,{alertKey:"webinar-promo-notification",store:e,id:"webinar-promo-notification",title:(0,l.__)("Join our FREE webinar for SEO success","wordpress-seo"),image:s,url:r,...a},(0,l.__)("Feeling lost when it comes to optimizing your site for the search engines? Join our FREE webinar to gain the confidence that you need in order to start optimizing like a pro! You'll obtain the knowledge and tools to start effectively implementing SEO.","wordpress-seo")," ",(0,t.createElement)("a",{href:r,target:"_blank",rel:"noreferrer"},(0,l.__)("Sign up today!","wordpress-seo")));Ko.propTypes={store:y().string,image:y().elementType,url:y().string.isRequired};const Ho=Ko,Vo=(e="yoast-seo/editor")=>{const t=(0,n.select)(e).isPromotionActive("black-friday-2024-promotion"),s=(0,n.select)(e).isAlertDismissed("black-friday-2024-promotion");return t?s:((e="yoast-seo/editor")=>{const t=(0,n.select)(e).isPromotionActive("black-friday-2023-checklist"),s=(0,n.select)(e).isAlertDismissed("black-friday-2023-sidebar-checklist");return!t||s})(e)},Yo=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{d:"M11 3a1 1 0 10-2 0v1a1 1 0 102 0V3zM15.657 5.757a1 1 0 00-1.414-1.414l-.707.707a1 1 0 001.414 1.414l.707-.707zM18 10a1 1 0 01-1 1h-1a1 1 0 110-2h1a1 1 0 011 1zM5.05 6.464A1 1 0 106.464 5.05l-.707-.707a1 1 0 00-1.414 1.414l.707.707zM5 10a1 1 0 01-1 1H3a1 1 0 110-2h1a1 1 0 011 1zM8 16v-1h4v1a2 2 0 11-4 0zM12 14c.015-.34.208-.646.477-.859a4 4 0 10-4.954 0c.27.213.462.519.476.859h4.002z"}))})),jo=({id:e,postTypeName:s,children:r,title:a,isOpen:n,close:o,open:c,shouldCloseOnClickOutside:d,showChangesWarning:u,SuffixHeroIcon:m})=>(0,t.createElement)(i.Fragment,null,n&&(0,t.createElement)(p.LocationProvider,{value:"modal"},(0,t.createElement)(X,{title:a,onRequestClose:o,additionalClassName:"yoast-collapsible-modal yoast-post-settings-modal",id:"id",shouldCloseOnClickOutside:d},(0,t.createElement)("div",{className:"yoast-content-container"},(0,t.createElement)("div",{className:"yoast-modal-content"},r)),(0,t.createElement)("div",{className:"yoast-notice-container"},(0,t.createElement)("hr",null),(0,t.createElement)("div",{className:"yoast-button-container"},u&&(0,t.createElement)("p",null,/* Translators: %s translates to the Post Label in singular form */ (0,l.sprintf)((0,l.__)("Make sure to save your %s for changes to take effect","wordpress-seo"),s)),(0,t.createElement)("button",{className:"yoast-button yoast-button--primary yoast-button--post-settings-modal",type:"button",onClick:o},/* Translators: %s translates to the Post Label in singular form */ (0,l.sprintf)((0,l.__)("Return to your %s","wordpress-seo"),s)))))),(0,t.createElement)(re,{id:e+"-open-button",title:a,SuffixHeroIcon:m,suffixIcon:m?null:{size:"20px",icon:"pencil-square"},onClick:c}));jo.propTypes={id:y().string.isRequired,postTypeName:y().string.isRequired,children:y().oneOfType([y().node,y().arrayOf(y().node)]).isRequired,title:y().string.isRequired,isOpen:y().bool.isRequired,open:y().func.isRequired,close:y().func.isRequired,shouldCloseOnClickOutside:y().bool,showChangesWarning:y().bool,SuffixHeroIcon:y().object},jo.defaultProps={shouldCloseOnClickOutside:!0,showChangesWarning:!0};const zo=jo,Go=(0,B.compose)([(0,n.withSelect)(((e,t)=>{const{getPostOrPageString:s,getIsModalOpen:r}=e("yoast-seo/editor");return{postTypeName:s(),isOpen:r(t.id)}})),(0,n.withDispatch)(((e,t)=>{const{openEditorModal:s,closeEditorModal:r}=e("yoast-seo/editor");return{open:()=>s(t.id),close:r}}))])(zo),Zo=b()(Yo)` width: 18px; height: 18px; margin: 3px; `,Xo=({location:e})=>{const s=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsElementorEditor()),[]),r=(0,n.useSelect)((e=>e("yoast-seo/editor").isFleschReadingEaseAvailable()),[]),a=U();return(0,t.createElement)(Go,{title:(0,l.__)("Insights","wordpress-seo"),id:`yoast-insights-modal-${e}`,shouldCloseOnClickOutside:!s,showChangesWarning:!1,SuffixHeroIcon:(0,t.createElement)(Zo,{className:"yst-text-slate-500",...a})},(0,t.createElement)("div",{className:"yoast-insights yoast-modal-content--columns"},(0,t.createElement)(qs,{location:e}),(0,t.createElement)("div",null,r&&(0,t.createElement)("div",{className:"yoast-insights-row"},(0,t.createElement)(Es,null)),(0,t.createElement)("div",{className:"yoast-insights-row yoast-insights-row--columns"},(0,t.createElement)(fs,null),(0,t.createElement)(Ns,null)),(0,hs.isFeatureEnabled)("TEXT_FORMALITY")&&(0,t.createElement)(Ws,{location:e,name:"YoastTextFormalityMetabox"}))))};Xo.propTypes={location:y().string},Xo.defaultProps={location:"sidebar"};const Qo=Xo,Jo=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z",clipRule:"evenodd"}))}));class ei{constructor(e){this.refresh=e,this.loaded=!1,this.preloadThreshold=3e3,this.plugins={},this.modifications={},this._registerPlugin=this._registerPlugin.bind(this),this._ready=this._ready.bind(this),this._reloaded=this._reloaded.bind(this),this._registerModification=this._registerModification.bind(this),this._registerAssessment=this._registerAssessment.bind(this),this._applyModifications=this._applyModifications.bind(this),setTimeout(this._pollLoadingPlugins.bind(this),1500)}_registerPlugin(e,t){return(0,m.isString)(e)?(0,m.isUndefined)(t)||(0,m.isObject)(t)?!1===this._validateUniqueness(e)?(console.error("Failed to register plugin. Plugin with name "+e+" already exists"),!1):(this.plugins[e]=t,!0):(console.error("Failed to register plugin "+e+". Expected parameters `options` to be a object."),!1):(console.error("Failed to register plugin. Expected parameter `pluginName` to be a string."),!1)}_ready(e){return(0,m.isString)(e)?(0,m.isUndefined)(this.plugins[e])?(console.error("Failed to modify status for plugin "+e+". The plugin was not properly registered."),!1):(this.plugins[e].status="ready",!0):(console.error("Failed to modify status for plugin "+e+". Expected parameter `pluginName` to be a string."),!1)}_reloaded(e){return(0,m.isString)(e)?(0,m.isUndefined)(this.plugins[e])?(console.error("Failed to reload Content Analysis for plugin "+e+". The plugin was not properly registered."),!1):(this.refresh(),!0):(console.error("Failed to reload Content Analysis for "+e+". Expected parameter `pluginName` to be a string."),!1)}_registerModification(e,t,s,r){if(!(0,m.isString)(e))return console.error("Failed to register modification for plugin "+s+". Expected parameter `modification` to be a string."),!1;if(!(0,m.isFunction)(t))return console.error("Failed to register modification for plugin "+s+". Expected parameter `callable` to be a function."),!1;if(!(0,m.isString)(s))return console.error("Failed to register modification for plugin "+s+". Expected parameter `pluginName` to be a string."),!1;if(!1===this._validateOrigin(s))return console.error("Failed to register modification for plugin "+s+". The integration has not finished loading yet."),!1;const a={callable:t,origin:s,priority:(0,m.isNumber)(r)?r:10};return(0,m.isUndefined)(this.modifications[e])&&(this.modifications[e]=[]),this.modifications[e].push(a),!0}_registerAssessment(e,t,s,r){return(0,m.isString)(t)?(0,m.isObject)(s)?(0,m.isString)(r)?(t=r+"-"+t,e.addAssessment(t,s),!0):(console.error("Failed to register assessment for plugin "+r+". Expected parameter `pluginName` to be a string."),!1):(console.error("Failed to register assessment for plugin "+r+". Expected parameter `assessment` to be a function."),!1):(console.error("Failed to register test for plugin "+r+". Expected parameter `name` to be a string."),!1)}_applyModifications(e,t,s){let r=this.modifications[e];return!(0,m.isArray)(r)||r.length<1||(r=this._stripIllegalModifications(r),r.sort(((e,t)=>e.priority-t.priority)),(0,m.forEach)(r,(function(r){const a=r.callable(t,s);typeof a==typeof t?t=a:console.error("Modification with name "+e+" performed by plugin with name "+r.origin+" was ignored because the data that was returned by it was of a different type than the data we had passed it.")}))),t}_pollLoadingPlugins(e){e=(0,m.isUndefined)(e)?0:e,!0===this._allReady()?(this.loaded=!0,this.refresh()):e>=this.preloadThreshold?(this._pollTimeExceeded(),this.loaded=!0,this.refresh()):(e+=50,setTimeout(this._pollLoadingPlugins.bind(this,e),50))}_allReady(){return(0,m.reduce)(this.plugins,(function(e,t){return e&&"ready"===t.status}),!0)}_pollTimeExceeded(){(0,m.forEach)(this.plugins,(function(e,t){(0,m.isUndefined)(e.options)||"ready"===e.options.status||(console.error("Error: Plugin "+t+". did not finish loading in time."),delete this.plugins[t])}))}_stripIllegalModifications(e){return(0,m.forEach)(e,((t,s)=>{!1===this._validateOrigin(t.origin)&&delete e[s]})),e}_validateOrigin(e){return"ready"===this.plugins[e].status}_validateUniqueness(e){return(0,m.isUndefined)(this.plugins[e])}}let ti=null;const si=()=>{if(null===ti){const e=(0,n.dispatch)("yoast-seo/editor").runAnalysis;ti=window.YoastSEO.app&&window.YoastSEO.app.pluggable?window.YoastSEO.app.pluggable:new ei(e)}return ti},ri=(e,t,s)=>si().loaded?si()._applyModifications(e,t,s):t,ai={name:"author_first_name",label:"Author first name",placeholder:"%%author_first_name%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.author_first_name","")},regexp:new RegExp("%%author_first_name%%","g")},ni={name:"author_last_name",label:"Author last name",placeholder:"%%author_last_name%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.author_last_name","")},regexp:new RegExp("%%author_last_name%%","g")},oi={name:"currentdate",label:"Current date",placeholder:"%%currentdate%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentdate","")},regexp:new RegExp("%%currentdate%%","g")},ii={name:"currentday",label:"Current day",placeholder:"%%currentday%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentday","")},regexp:new RegExp("%%currentday%%","g")},li={name:"currentmonth",label:"Current month",placeholder:"%%currentmonth%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentmonth","")},regexp:new RegExp("%%currentmonth%%","g")},ci={name:"category",label:"Category",placeholder:"%%category%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.category","")},regexp:new RegExp("%%category%%","g")},di={name:"category_title",label:"Category Title",placeholder:"%%category_title%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.category_title","")},regexp:new RegExp("%%category_title%%","g")},pi={name:"currentyear",label:"Current year",placeholder:"%%currentyear%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.currentyear","")},regexp:new RegExp("%%currentyear%%","g")},ui={name:"date",label:"Date",placeholder:"%%date%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.date","")},regexp:new RegExp("%%date%%","g")},mi={name:"excerpt",label:"Excerpt",placeholder:"%%excerpt%%",aliases:[{name:"excerpt_only",label:"Excerpt only",placeholder:"%%excerpt_only%%"}],getReplacement:function(){return(0,n.select)("yoast-seo/editor").getEditorDataExcerptWithFallback()},regexp:new RegExp("%%excerpt%%|%%excerpt_only%%","g")},hi={name:"focuskw",label:"Focus keyphrase",placeholder:"%%focuskw%%",aliases:[],getReplacement:function(){return(0,n.select)("yoast-seo/editor").getFocusKeyphrase()},regexp:new RegExp("%%focuskw%%|%%keyword%%","g")},gi={name:"id",label:"ID",placeholder:"%%id%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.id","")},regexp:new RegExp("%%id%%","g")},yi={name:"modified",label:"Modified",placeholder:"%%modified%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.modified","")},regexp:new RegExp("%%modified%%","g")},fi={name:"name",label:"Name",placeholder:"%%name%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.name","")},regexp:new RegExp("%%name%%","g")},bi={name:"page",label:"Page",placeholder:"%%page%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.page","")},regexp:new RegExp("%%page%%","g")},wi={name:"pagenumber",label:"Pagenumber",placeholder:"%%pagenumber%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pagenumber","")},regexp:new RegExp("%%pagenumber%%","g")},Ei={name:"pagetotal",label:"Pagetotal",placeholder:"%%pagetotal%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pagetotal","")},regexp:new RegExp("%%pagetotal%%","g")},vi={name:"permalink",label:"Permalink",placeholder:"%%permalink%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.permalink","")},regexp:new RegExp("%%permalink%%","g")},ki={name:"post_content",label:"Post Content",placeholder:"%%post_content%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_content","")},regexp:new RegExp("%%post_content%%","g")},_i={name:"post_day",label:"Post Day",placeholder:"%%post_day%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_day","")},regexp:new RegExp("%%post_day%%","g")},xi={name:"post_month",label:"Post Month",placeholder:"%%post_month%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_month","")},regexp:new RegExp("%%post_month%%","g")},Si={name:"post_year",label:"Post Year",placeholder:"%%post_year%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.post_year","")},regexp:new RegExp("%%post_year%%","g")},Ri={name:"pt_plural",label:"Post type (plural)",placeholder:"%%pt_plural%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pt_plural","")},regexp:new RegExp("%%pt_plural%%","g")},Ti={name:"pt_single",label:"Post type (singular)",placeholder:"%%pt_single%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.pt_single","")},regexp:new RegExp("%%pt_single%%","g")},Ci={name:"primary_category",label:"Primary category",placeholder:"%%primary_category%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.primary_category","")},regexp:new RegExp("%%primary_category%%","g")},Ii={name:"searchphrase",label:"Search phrase",placeholder:"%%searchphrase%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.searchphrase","")},regexp:new RegExp("%%searchphrase%%","g")},Ai={name:"sep",label:"Separator",placeholder:"%%sep%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sep","")},regexp:new RegExp("%%sep%%(\\s*%%sep%%)*","g")},Pi={name:"sitedesc",label:"Tagline",placeholder:"%%sitedesc%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sitedesc","")},regexp:new RegExp("%%sitedesc%%","g")},Li={name:"sitename",label:"Site title",placeholder:"%%sitename%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.sitename","")},regexp:new RegExp("%%sitename%%","g")},Fi={name:"tag",label:"Tag",placeholder:"%%tag%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.tag","")},regexp:new RegExp("%%tag%%","g")},Oi={name:"term404",label:"Term404",placeholder:"%%term404%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term404","")},regexp:new RegExp("%%term404%%","g")},Mi={name:"term_description",label:"Term description",placeholder:"%%term_description%%",aliases:[{name:"tag_description",label:"Tag description",placeholder:"%%tag_description%%"},{name:"category_description",label:"Category description",placeholder:"%%category_description%%"}],getReplacement:function(){return(0,m.get)(window,"YoastSEO.app.rawData.text","")},regexp:new RegExp("%%term_description%%|%%tag_description%%|%%category_description%%","g")},qi={name:"term_hierarchy",label:"Term hierarchy",placeholder:"%%term_hierarchy%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term_hierarchy","")},regexp:new RegExp("%%term_hierarchy%%","g")},Ni={name:"term_title",label:"Term title",placeholder:"%%term_title%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.term_title","")},regexp:new RegExp("%%term_title%%","g")},Di={name:"title",label:"Title",placeholder:"%%title%%",aliases:[],getReplacement:function(){return(0,n.select)("yoast-seo/editor").getEditorDataTitle()},regexp:new RegExp("%%title%%","g")},Bi={name:"user_description",label:"User description",placeholder:"%%user_description%%",aliases:[],getReplacement:function(){return(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.replace_vars.user_description","")},regexp:new RegExp("%%user_description%%","g")};var $i={source:"wpseoScriptData.analysis.plugins.replaceVars",scope:[],aliases:[]},Ui=function(e,t,s){this.placeholder=e,this.replacement=t,this.options=(0,m.defaults)(s,$i)};Ui.prototype.getPlaceholder=function(e){return(e=e||!1)&&this.hasAlias()?this.placeholder+"|"+this.getAliases().join("|"):this.placeholder},Ui.prototype.setSource=function(e){this.options.source=e},Ui.prototype.hasScope=function(){return!(0,m.isEmpty)(this.options.scope)},Ui.prototype.addScope=function(e){this.hasScope()||(this.options.scope=[]),this.options.scope.push(e)},Ui.prototype.inScope=function(e){return!this.hasScope()||(0,m.indexOf)(this.options.scope,e)>-1},Ui.prototype.hasAlias=function(){return!(0,m.isEmpty)(this.options.aliases)},Ui.prototype.addAlias=function(e){this.hasAlias()||(this.options.aliases=[]),this.options.aliases.push(e)},Ui.prototype.getAliases=function(){return this.options.aliases};let Wi=null,Ki=null;const Hi=()=>{if(null===Ki){Ki=[];const t=(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.hidden_replace_vars",[]);(null===Wi&&(Wi=((e="")=>{switch(""===e&&(e=(0,m.get)(window,"wpseoScriptData.analysis.plugins.replaceVars.scope","")),e){case"post":case"page":return["authorFirstName","authorLastName","category","categoryTitle","currentDate","currentDay","currentMonth","currentYear","date","excerpt","id","focusKeyphrase","modified","name","page","primaryCategory","pageNumber","pageTotal","permalink","postContent","postDay","postMonth","postYear","postTypeNamePlural","postTypeNameSingular","searchPhrase","separator","siteDescription","siteName","tag","title","userDescription"]}return[]})().map((t=>null==e?void 0:e[t])).filter(Boolean)),Wi).forEach((e=>{const s=t.includes(e.name);Ki.push({name:e.name,label:e.label,value:e.placeholder,hidden:s}),e.aliases.forEach((e=>{Ki.push({name:e.name,label:e.label,value:e.placeholder,hidden:s})}))}))}return Ki},{stripHTMLTags:Vi}=Y.strings,Yi=(e,t)=>{const s=(0,n.select)("yoast-seo/editor").getSnippetEditorTemplates();""===e.title&&(e.title=s.title),""===e.description&&(e.description=s.description);let r=0;return t.shortenedBaseUrl&&"string"==typeof t.shortenedBaseUrl&&(r=t.shortenedBaseUrl.length),e.url=e.url.replace(/\s+/g,"-"),"-"===e.url[e.url.length-1]&&(e.url=e.url.slice(0,-1)),"-"===e.url[r]&&(e.url=e.url.slice(0,r)+e.url.slice(r+1)),{url:e.url,title:Vi(ri("data_page_title",e.title)),description:Vi(ri("data_meta_desc",e.description)),filteredSEOTitle:Vi(ri("data_page_title",e.filteredSEOTitle))}},ji=({isLoading:e,onLoad:s,location:r,...a})=>((0,i.useEffect)((()=>{setTimeout((()=>{e&&s()}))})),e?null:(0,t.createElement)(Qt,{icon:"eye",hasPaperStyle:a.hasPaperStyle},(0,t.createElement)(Gt.SnippetEditor,{...a,descriptionPlaceholder:(0,l.__)("Please provide a meta description by editing the snippet below.","wordpress-seo"),mapEditorDataToPreview:Yi,showCloseButton:!1,idSuffix:r})));ji.propTypes={isLoading:y().bool.isRequired,onLoad:y().func.isRequired,hasPaperStyle:y().bool.isRequired,location:y().string.isRequired};const zi=(0,B.compose)([(0,n.withSelect)((e=>{const{getBaseUrlFromSettings:t,getDateFromSettings:s,getEditorDataImageUrl:r,getFocusKeyphrase:a,getRecommendedReplaceVars:n,getSiteIconUrlFromSettings:o,getSnippetEditorData:i,getSnippetEditorIsLoading:l,getSnippetEditorMode:c,getSnippetEditorWordsToHighlight:d,isCornerstoneContent:p,getContentLocale:u,getSiteName:m}=e("yoast-seo/editor");return{baseUrl:t(),data:i(),date:s(),faviconSrc:o(),isLoading:l(),keyword:a(),mobileImageSrc:r(),mode:c(),recommendedReplacementVariables:n(),replacementVariables:Hi(),wordsToHighlight:d(),isCornerstone:p(),locale:u(),siteName:m()}})),(0,n.withDispatch)((e=>{const{updateData:t,switchMode:s,updateAnalysisData:r,loadSnippetEditorData:a}=e("yoast-seo/editor");return{onChange:(e,r)=>{switch(e){case"mode":s(r);break;case"slug":t({slug:r});break;default:t({[e]:r})}},onChangeAnalysisData:r,onLoad:a}})),jt()])(ji),Gi=b()(Jo)` width: 18px; height: 18px; margin: 3px; `,Zi=()=>{const e=U(),s=(0,n.useSelect)((e=>e("yoast-seo/editor").getIsElementorEditor()),[]);return(0,t.createElement)(Go,{title:(0,l.__)("Search appearance","wordpress-seo"),id:"yoast-search-appearance-modal",shouldCloseOnClickOutside:!1,SuffixHeroIcon:(0,t.createElement)(Gi,{className:"yst-text-slate-500",...e})},!0===s&&(0,t.createElement)(zi,{showCloseButton:!1,hasPaperStyle:!1}),!1===s&&(0,t.createElement)(us,{showCloseButton:!1,hasPaperStyle:!1}))},Xi=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{d:"M15 8a3 3 0 10-2.977-2.63l-4.94 2.47a3 3 0 100 4.319l4.94 2.47a3 3 0 10.895-1.789l-4.94-2.47a3.027 3.027 0 000-.74l4.94-2.47C13.456 7.68 14.19 8 15 8z"}))})),Qi=b()(T.Collapsible)` h2 > button { padding-left: 0; padding-top: 16px; &:hover { background-color: #f0f0f0; } } div[class^="collapsible_content"] { padding: 24px 0; margin: 0 24px; border-top: 1px solid rgba(0,0,0,0.2); } `,Ji=e=>(0,t.createElement)(Qi,{hasPadding:!1,hasSeparator:!0,...e}),el=b()(Xi)` width: 18px; height: 18px; margin: 3px; `,tl=e=>{const{useOpenGraphData:s,useTwitterData:r}=e;if(!s&&!r)return;const a=U();return(0,t.createElement)(Go /* translators: Social media appearance refers to a preview of how a page will be represented on social media. */,{title:(0,l.__)("Social media appearance","wordpress-seo"),id:"yoast-social-appearance-modal",shouldCloseOnClickOutside:!1,SuffixHeroIcon:(0,t.createElement)(el,{className:"yst-text-slate-500",...a})},s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ka,null,(0,l.__)("Determine how your post should look on social media like Facebook, X, Instagram, WhatsApp, Threads, LinkedIn, Slack, and more.","wordpress-seo")),(0,t.createElement)(ya,null),r&&(0,t.createElement)(va,null,(0,l.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below. If you leave these settings untouched, the 'Social media appearance' settings mentioned above will also be applied for sharing on X.","wordpress-seo"))),s&&r&&(0,t.createElement)(Ji,{title:(0,l.__)("X appearance","wordpress-seo"),hasSeparator:!0,initialIsOpen:!1},(0,t.createElement)(Ea,null)),!s&&r&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ka,null,(0,l.__)("To customize the appearance of your post specifically for X, please fill out the 'X appearance' settings below.","wordpress-seo")),(0,t.createElement)(Ea,null)))};tl.propTypes={useOpenGraphData:y().bool.isRequired,useTwitterData:y().bool.isRequired};const sl=tl,rl=e=>{const[s,r]=(0,i.useState)(!1),{prefixIcon:a}=e;return(0,t.createElement)("div",{className:"yoast components-panel__body "+(s?"is-opened":"")},(0,t.createElement)("h2",{className:"components-panel__body-title"},(0,t.createElement)("button",{onClick:function(){r(!s)},className:"components-button components-panel__body-toggle",type:"button",id:e.buttonId},(0,t.createElement)("span",{className:"yoast-icon-span",style:{fill:`${a&&a.color||""}`}},a&&(0,t.createElement)(T.SvgIcon,{icon:a.icon,color:a.color,size:a.size})),(0,t.createElement)("span",{className:"yoast-title-container"},(0,t.createElement)("div",{className:"yoast-title"},e.title),(0,t.createElement)("div",{className:"yoast-subtitle"},e.subTitle)),e.hasBetaBadgeLabel&&(0,t.createElement)(T.BetaBadge,null),(0,t.createElement)("span",{className:"yoast-chevron","aria-hidden":"true"}))),s&&e.children)},al=rl;function nl({settings:e}){const s=(({webinarIntroUrl:e})=>{const{shouldShow:s}=$o(),r=(e=>{for(const t of e)if(null!=t&&t.getIsEligible())return t;return null})([{getIsEligible:()=>s,component:Wo},{getIsEligible:Vo,component:()=>(0,t.createElement)(Ho,{hasIcon:!1,image:null,url:e})},{getIsEligible:()=>!0,component:()=>(0,t.createElement)(po,{hasIcon:!1})}]);return(null==r?void 0:r.component)||null})({webinarIntroUrl:(0,m.get)(window,"wpseoScriptData.webinarIntroBlockEditorUrl","https://yoa.st/webinar-intro-block-editor")});return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(k.Fill,{name:"YoastSidebar"},(0,t.createElement)(or,{key:"warning",renderPriority:1},(0,t.createElement)(ms,null),(0,t.createElement)("div",{style:{margin:"0 16px"}},s&&(0,t.createElement)(s,null))),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"keyword-input",renderPriority:8},(0,t.createElement)(Yt.KeywordInput,{isSEMrushIntegrationActive:e.isSEMrushIntegrationActive})),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"seo",renderPriority:10},(0,t.createElement)(i.Fragment,null,(0,t.createElement)(Yt.SeoAnalysis,{shouldUpsell:e.shouldUpsell,shouldUpsellWordFormRecognition:e.isWordFormRecognitionActive}),e.shouldUpsell&&(0,t.createElement)(nn,{location:"sidebar"}))),e.isContentAnalysisActive&&(0,t.createElement)(or,{key:"readability",renderPriority:20},(0,t.createElement)(Yt.ReadabilityAnalysis,{shouldUpsell:e.shouldUpsell})),e.isInclusiveLanguageAnalysisActive&&(0,t.createElement)(or,{key:"inclusive-language-analysis",renderPriority:21},(0,t.createElement)(Yt.InclusiveLanguageAnalysis,null)),e.isKeywordAnalysisActive&&(0,t.createElement)(or,{key:"additional-keywords-upsell",renderPriority:22},e.shouldUpsell&&(0,t.createElement)(cn,null)),e.isKeywordAnalysisActive&&e.isWincherIntegrationActive&&(0,t.createElement)(or,{renderPriority:23},(0,t.createElement)(Vt,{location:"sidebar"})),e.shouldUpsell&&(0,t.createElement)(or,{key:"internal-linking-suggestions-upsell",renderPriority:25},(0,t.createElement)(ar,null)),(0,t.createElement)(or,{key:"search-appearance",renderPriority:26},(0,t.createElement)(Zi,null)),(e.useOpenGraphData||e.useTwitterData)&&(0,t.createElement)(or,{key:"social-appearance",renderPriority:27},(0,t.createElement)(sl,{useOpenGraphData:e.useOpenGraphData,useTwitterData:e.useTwitterData})),e.displaySchemaSettings&&(0,t.createElement)(or,{key:"schema",renderPriority:28},(0,t.createElement)(al,{title:(0,l.__)("Schema","wordpress-seo")},(0,t.createElement)($a,null))),e.displayAdvancedTab&&(0,t.createElement)(or,{key:"advanced",renderPriority:29},(0,t.createElement)(al,{title:(0,l.__)("Advanced","wordpress-seo")},(0,t.createElement)(hr,null))),e.isCornerstoneActive&&(0,t.createElement)(or,{key:"cornerstone",renderPriority:30},(0,t.createElement)(zt,null)),e.isInsightsEnabled&&(0,t.createElement)(or,{renderPriority:32},(0,t.createElement)(Qo,{location:"sidebar"}))))}rl.propTypes={title:y().string.isRequired,children:y().oneOfType([y().node,y().arrayOf(y().node)]).isRequired,prefixIcon:y().object,subTitle:y().string,hasBetaBadgeLabel:y().bool,buttonId:y().string},rl.defaultProps={prefixIcon:null,subTitle:"",hasBetaBadgeLabel:!1,buttonId:null},nl.propTypes={settings:y().object.isRequired};const ol=(0,n.withSelect)(((e,t)=>{const{getPreferences:s}=e("yoast-seo/editor");return{settings:s(),store:t.store}}))(nl);function il(e){const{hasTrackedKeyphrases:s,trackAll:r}=e;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(T.FieldGroup,{label:(0,l.__)("SEO performance","wordpress-seo"),linkTo:wpseoAdminL10n["shortlinks.wincher.seo_performance"] /* translators: Hidden accessibility text. */,linkText:(0,l.__)("Learn more about the SEO performance feature.","wordpress-seo"),wrapperClassName:"yoast-field-group yoast-wincher-post-publish"}),(0,t.createElement)(at,null),s&&(0,t.createElement)("p",null,(0,l.__)("Tracking has already been enabled for one or more keyphrases of this page. Clicking the button below will enable tracking for all of its keyphrases.","wordpress-seo")),(0,t.createElement)("div",{className:"yoast"},(0,t.createElement)(T.NewButton,{variant:"secondary",small:!0,onClick:r},(0,l.__)("Track all keyphrases on this page","wordpress-seo"))),(0,t.createElement)(Vt,{location:"postpublish"}))}il.propTypes={trackAll:y().func,hasTrackedKeyphrases:y().bool},il.defaultProps={trackAll:()=>{},hasTrackedKeyphrases:!1};const ll=(0,B.compose)([(0,n.withSelect)((e=>{const{getWincherTrackedKeyphrases:t,hasWincherTrackedKeyphrases:s}=e("yoast-seo/editor");return{trackedKeyphrases:t(),hasTrackedKeyphrases:s()}})),(0,n.withDispatch)((e=>{const{setWincherOpenModal:t,setWincherTrackAllKeyphrases:s}=e("yoast-seo/editor");return{trackAll:()=>{s(!0),t("postpublish")}}}))])(il);window.wp.annotations;const cl=/(<([a-z]|\/)[^<>]+>)/gi,{htmlEntitiesRegex:dl}=I.helpers.htmlEntities,pl=e=>{let t=0;return(0,m.forEachRight)(e,(e=>{const[s]=e;let r=s.length;/^<\/?br/.test(s)&&(r-=1),t+=r})),t},ul="",ml="",hl='';function gl(e,t,s,r,a){const n=r.clientId,o=(0,d.create)({html:e,multilineTag:s.multilineTag,multilineWrapperTag:s.multilineWrapperTag}).text;return(0,m.flatMap)(a,(s=>{let a;return a=s.hasBlockPosition&&s.hasBlockPosition()?function(e,t,s,r,a){if(t===e.getBlockClientId()){let t=e.getBlockPositionStart(),n=e.getBlockPositionEnd();if(e.isMarkForFirstBlockSection()){const e=((e,t,s)=>{const r="yoast/faq-block"===s?'':'';return{blockStartOffset:e-=r.length,blockEndOffset:t-=r.length}})(t,n,s);t=e.blockStartOffset,n=e.blockEndOffset}if(r.slice(t,n)===a.slice(t,n))return[{startOffset:t,endOffset:n}];const o=((e,t,s)=>{const r=s.slice(0,e),a=s.slice(0,t),n=((e,t,s,r)=>{const a=[...e.matchAll(cl)];s-=pl(a);const n=[...t.matchAll(cl)];return{blockStartOffset:s,blockEndOffset:r-=pl(n)}})(r,a,e,t),o=((e,t,s,r)=>{let a=[...e.matchAll(dl)];return(0,m.forEachRight)(a,(e=>{const[,t]=e;s-=t.length})),a=[...t.matchAll(dl)],(0,m.forEachRight)(a,(e=>{const[,t]=e;r-=t.length})),{blockStartOffset:s,blockEndOffset:r}})(r,a,e=n.blockStartOffset,t=n.blockEndOffset);return{blockStartOffset:e=o.blockStartOffset,blockEndOffset:t=o.blockEndOffset}})(t,n,r);return[{startOffset:o.blockStartOffset,endOffset:o.blockEndOffset}]}return[]}(s,n,r.name,e,o):function(e,t){const s=t.getOriginal().replace(/(<([^>]+)>)/gi,""),r=t.getMarked().replace(/(<(?!\/?yoastmark)[^>]+>)/gi,""),a=function(e,t,s=!0){const r=[];if(0===e.length)return r;let a,n=0;for(s||(t=t.toLowerCase(),e=e.toLowerCase());(a=e.indexOf(t,n))>-1;)r.push(a),n=a+t.length;return r}(e,s);if(0===a.length)return[];const n=function(e){let t=e.indexOf(ul);const s=t>=0;s||(t=e.indexOf(hl));let r=null;const a=[];for(;t>=0;){if(r=(e=s?e.replace(ul,""):e.replace(hl,"")).indexOf(ml),r{a.forEach((r=>{const a=r+e.startOffset;let n=r+e.endOffset;0===e.startOffset&&e.endOffset===t.getOriginal().length&&(n=r+s.length),o.push({startOffset:a,endOffset:n})}))})),o}(o,s),a?a.map((e=>({...e,block:n,richTextIdentifier:t}))):[]}))}const yl=e=>e[0].toUpperCase()+e.slice(1),fl=(e,t,s,r,a)=>(e=e.map((e=>{const n=`${e.id}-${a[0]}`,o=`${e.id}-${a[1]}`,i=yl(a[0]),l=yl(a[1]),c=e[`json${i}`],d=e[`json${l}`],{marksForFirstSection:p,marksForSecondSection:u}=((e,t)=>({marksForFirstSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&e.isMarkForFirstBlockSection():e)),marksForSecondSection:e.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?e.getBlockAttributeId()===t.id&&!e.isMarkForFirstBlockSection():e))}))(t,e),m=gl(c,n,s,r,p),h=gl(d,o,s,r,u);return m.concat(h)})),(0,m.flattenDeep)(e)),bl="yoast";let wl=[];const El={"core/paragraph":[{key:"content"}],"core/list":[{key:"values",multilineTag:"li",multilineWrapperTag:["ul","ol"]}],"core/list-item":[{key:"content"}],"core/heading":[{key:"content"}],"core/audio":[{key:"caption"}],"core/embed":[{key:"caption"}],"core/gallery":[{key:"caption"}],"core/image":[{key:"caption"}],"core/table":[{key:"caption"}],"core/video":[{key:"caption"}],"yoast/faq-block":[{key:"questions"}],"yoast/how-to-block":[{key:"steps"},{key:"jsonDescription"}]};function vl(){const e=wl.shift();e&&((0,n.dispatch)("core/annotations").__experimentalAddAnnotation(e),kl())}function kl(){(0,m.isFunction)(window.requestIdleCallback)?window.requestIdleCallback(vl,{timeout:1e3}):setTimeout(vl,150)}function _l(){const e=(0,n.select)("core/block-editor").getSelectedBlock(),t=(0,n.select)("yoast-seo/editor").getActiveMarker();if(!e||!t)return;var s;s=e.clientId,(0,n.select)("core/annotations").__experimentalGetAnnotations().filter((e=>e.blockClientId===s&&e.source===bl)).forEach((e=>{(0,n.dispatch)("core/annotations").__experimentalRemoveAnnotation(e.id)}));const r=(0,n.select)("yoast-seo/editor").getResultById(t);if(void 0===r)return;const a=r.marks;var o;o=((e,t)=>{return(0,m.flatMap)((s=e.name,El.hasOwnProperty(s)?El[s]:[]),(s=>"yoast/faq-block"===e.name?((e,t,s)=>{const r=t.attributes[e.key];return 0===r.length?[]:fl(r,s,e,t,["question","answer"])})(s,e,t):"yoast/how-to-block"===e.name?((e,t,s)=>{const r=t.attributes[e.key];if(r&&0===r.length)return[];const a=[];return"steps"===e.key&&a.push(fl(r,s,e,t,["name","text"])),"jsonDescription"===e.key&&(s=s.filter((e=>e.hasBlockPosition&&e.hasBlockPosition()?!e.getBlockAttributeId():e)),a.push(gl(r,"description",e,t,s))),(0,m.flattenDeep)(a)})(s,e,t):function(e,t,s){const r=e.key,a=((e,t)=>{const s=e.attributes[t];return"string"==typeof s?s:(s||"").toString()})(t,r);return gl(a,r,e,t,s)}(s,e,t)));var s})(e,a),wl=o.map((e=>({blockClientId:e.block,source:bl,richTextIdentifier:e.richTextIdentifier,range:{start:e.startOffset,end:e.endOffset}}))),kl()}const xl=window.wp.htmlEntities,Sl=(0,Y.makeOutboundLink)(b().a` display: inline-block; position: relative; outline: none; text-decoration: none; border-radius: 100%; width: 24px; height: 24px; margin: -4px 0; vertical-align: middle; color: ${C.colors.$color_help_text}; &:hover, &:focus { color: ${C.colors.$color_snippet_focus}; } // Overwrite the default blue active color for links. &:active { color: ${C.colors.$color_help_text}; } &::before { position: absolute; top: 0; left: 0; padding: 2px; content: "\f223"; } `);function Rl({isActive:e,activeAttributes:s,addingLink:r,value:a,onChange:n,speak:o,stopAddingLink:c,contentRef:p}){const u=(0,i.useMemo)(m.uniqueId,[r]),[h,g]=(0,i.useState)(),y=(0,d.useAnchor)({editableContentElement:p.current,settings:{...Al,isActive:e}}),f={url:s.url,type:s.type,id:s.id,opensInNewTab:"_blank"===s.target,noFollow:s.rel&&s.rel.split(" ").includes("nofollow"),sponsored:s.rel&&s.rel.split(" ").includes("sponsored"),...h},b=e=>f.url===e.url&&f.opensInNewTab!==e.opensInNewTab||f.noFollow!==e.noFollow||f.sponsored!==e.sponsored,w=e=>{if("number"==typeof e||"string"==typeof e)return String(e)},E=(0,i.useCallback)((t=>{t={...h,...t};const s=b(f);if((e=>b(e)&&!0===e.sponsored&&!0!==f.Sponsored)(t)&&(t.noFollow=!0),(e=>b(e)&&!1===e.noFollow&&!1!==f.noFollow)(t)&&(t.sponsored=!1),(e=>b(e)&&!e.url)(t))return void g(t);const r=(0,Fs.prependHTTP)(t.url),i=function({url:e,opensInNewWindow:t,noFollow:s,sponsored:r}){const a={type:"core/link",attributes:{url:e}};let n=[];return t&&(a.attributes.target="_blank",n.push("noreferrer noopener")),r&&(n.push("sponsored"),n.push("nofollow")),s&&n.push("nofollow"),n.length>0&&(n=(0,m.uniq)(n),a.attributes.rel=n.join(" ")),a}({url:r,type:t.type,id:w(t.id),opensInNewWindow:t.opensInNewTab,noFollow:t.noFollow,sponsored:t.sponsored});if((0,d.isCollapsed)(a)&&!e){const e=((e,t)=>e.title?e.title:t)(t,r),s=(0,d.applyFormat)((0,d.create)({text:e}),i,0,e.length);n((0,d.insert)(a,s))}else{const e=(0,d.applyFormat)(a,i);e.start=e.end,e.activeFormats=[],n(e)}s||c(),(t=>{!function(e){if(!e)return!1;const t=e.trim();if(!t)return!1;if(/^\S+:/.test(t)){const e=(0,Fs.getProtocol)(t);if(!(0,Fs.isValidProtocol)(e))return!1;if((0,m.startsWith)(e,"http")&&!/^https?:\/\/[^\/\s]/i.test(t))return!1;const s=(0,Fs.getAuthority)(t);if(!(0,Fs.isValidAuthority)(s))return!1;const r=(0,Fs.getPath)(t);if(r&&!(0,Fs.isValidPath)(r))return!1;const a=(0,Fs.getQueryString)(t);if(a&&!(0,Fs.isValidQueryString)(a))return!1;const n=(0,Fs.getFragment)(t);if(n&&!(0,Fs.isValidFragment)(n))return!1}return!((0,m.startsWith)(t,"#")&&!(0,Fs.isValidFragment)(t))}(t)?o((0,l.__)("Warning: the link has been inserted but may have errors. Please test it.","wordpress-seo"),"assertive"):o(e?(0,l.__)("Link edited.","wordpress-seo"):(0,l.__)("Link inserted.","wordpress-seo"),"assertive")})(r)}),[]),v=(0,t.createElement)(Sl,{href:window.wpseoAdminL10n["shortlinks.nofollow_sponsored"],className:"dashicons"},(0,t.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,l.__)("Learn more about marking a link as nofollow or sponsored.","wordpress-seo"))),_=As((0,l.sprintf)((0,l.__)("Search engines should ignore this link (mark as %1$snofollow%2$s)%3$s","wordpress-seo"),"","",""),{code:(0,t.createElement)("code",null),helplink:v}),x=As((0,l.sprintf)((0,l.__)("This is a sponsored link or advert (mark as %1$ssponsored%2$s)%3$s","wordpress-seo"),"","",""),{code:(0,t.createElement)("code",null),helplink:v}),S=[{id:"opensInNewTab",title:(0,l.__)("Open in new tab","wordpress-seo")},{id:"noFollow",title:_},{id:"sponsored",title:x}],{__experimentalLinkControl:R}=window.wp.blockEditor;return(0,t.createElement)(k.Popover,{key:u,anchor:y,focusOnMount:!!r&&"firstElement",onClose:c,position:"bottom center",placement:"bottom",shift:!0},(0,t.createElement)(R,{value:f,onChange:E,forceIsEditingLink:r,settings:S}))}Rl.propTypes={isActive:y().bool,activeAttributes:y().object,addingLink:y().bool,value:y().object,onChange:y().func,speak:y().func.isRequired,stopAddingLink:y().func.isRequired,contentRef:y().object};const Tl=(0,k.withSpokenMessages)(Rl),Cl="core/link",Il=(0,l.__)("Link","wordpress-seo"),Al={name:Cl,title:Il,tagName:"a",className:null,attributes:{url:"href",target:"target",rel:"rel"},replaces:"core/link",__unstablePasteRule(e,{html:t,plainText:s}){if((0,d.isCollapsed)(e))return e;const r=(t||s).replace(/<[^>]+>/g,"").trim();return(0,Fs.isURL)(r)?(window.console.log("Created link:\n\n",r),(0,d.applyFormat)(e,{type:Cl,attributes:{url:(0,xl.decodeEntities)(r)}})):e},edit:(0,k.withSpokenMessages)(class extends i.Component{constructor(){super(...arguments),this.addLink=this.addLink.bind(this),this.stopAddingLink=this.stopAddingLink.bind(this),this.onRemoveFormat=this.onRemoveFormat.bind(this),this.state={addingLink:!1}}addLink(){const{value:e,onChange:t}=this.props,s=(0,d.getTextContent)((0,d.slice)(e));s&&(0,Fs.isURL)(s)?t((0,d.applyFormat)(e,{type:Cl,attributes:{url:s}})):s&&(0,Fs.isEmail)(s)?t((0,d.applyFormat)(e,{type:Cl,attributes:{url:`mailto:${s}`}})):this.setState({addingLink:!0})}stopAddingLink(){this.setState({addingLink:!1}),this.props.onFocus()}onRemoveFormat(){const{value:e,onChange:t,speak:s}=this.props;t((0,d.removeFormat)(e,Cl)),s((0,l.__)("Link removed.","wordpress-seo"),"assertive")}render(){const{isActive:e,activeAttributes:s,value:r,onChange:a}=this.props,{RichTextToolbarButton:n,RichTextShortcut:o}=window.wp.blockEditor;return(0,t.createElement)(i.Fragment,null,(0,t.createElement)(o,{type:"primary",character:"k",onUse:this.addLink}),(0,t.createElement)(o,{type:"primaryShift",character:"k",onUse:this.onRemoveFormat}),e&&(0,t.createElement)(n,{name:"link",icon:"editor-unlink",title:(0,l.__)("Unlink","wordpress-seo"),onClick:this.onRemoveFormat,isActive:e,shortcutType:"primaryShift",shortcutCharacter:"k"}),!e&&(0,t.createElement)(n,{name:"link",icon:"admin-links",title:Il,onClick:this.addLink,isActive:e,shortcutType:"primary",shortcutCharacter:"k"}),(this.state.addingLink||e)&&(0,t.createElement)(Tl,{addingLink:this.state.addingLink,stopAddingLink:this.stopAddingLink,isActive:e,activeAttributes:s,value:r,onChange:a,contentRef:this.props.contentRef}))}})};function Pl(){const e=h();return(0,m.get)(e,"contentLocale","en_US")}const{updateReplacementVariable:Ll,updateData:Fl,hideReplacementVariables:Ol,setContentImage:Ml,updateSettings:ql,setEditorDataContent:Nl,setEditorDataTitle:Dl,setEditorDataExcerpt:Bl,setEditorDataImageUrl:$l,setEditorDataSlug:Ul}=u.actions,Wl=s.g.jQuery;window.yoast=window.yoast||{},window.yoast.initEditorIntegration=function(e){(function(e){const s=h(),r=s.isPremium?"Yoast SEO Premium":"Yoast SEO",d=(0,t.createElement)(v,null);(0,a.updateCategory)("yoast-structured-data-blocks",{icon:d}),(0,a.updateCategory)("yoast-internal-linking-blocks",{icon:d});const u={isRtl:s.isRtl},m=e.getState().preferences,g=m.isKeywordAnalysisActive||m.isContentAnalysisActive,y=m.isKeywordAnalysisActive&&m.isWincherIntegrationActive;!function(){var e,t,s;const r="yoast-seo/document-panel";var a,o,i,l;Boolean(null===(e=(0,n.dispatch)("core/editor"))||void 0===e?void 0:e.toggleEditorPanelOpened)?((null===(t=(0,n.select)("core/preferences"))||void 0===t?void 0:t.get("core","openPanels"))||(null===(s=(0,n.select)("core/preferences"))||void 0===s?void 0:s.get("core/edit-post","openPanels"))).includes(r)||null===(a=(0,n.dispatch)("core/editor"))||void 0===a||a.toggleEditorPanelOpened(r):null!==(o=(0,n.select)("core/preferences"))&&void 0!==o&&null!==(i=o.get("core/edit-post","openPanels"))&&void 0!==i&&i.includes(r)||null===(l=(0,n.dispatch)("core/edit-post"))||void 0===l||l.toggleEditorPanelOpened(r)}();const f={locationContext:"block-sidebar"},b={locationContext:"block-metabox"};(0,c.registerPlugin)("yoast-seo",{render:()=>(0,t.createElement)(i.Fragment,null,(0,t.createElement)(o.PluginSidebarMoreMenuItem,{target:"seo-sidebar",icon:(0,t.createElement)(To,null)},r),(0,t.createElement)(o.PluginSidebar,{name:"seo-sidebar",title:r},(0,t.createElement)(p.Root,{context:f},(0,t.createElement)(wo,{store:e,theme:u}))),(0,t.createElement)(i.Fragment,null,(0,t.createElement)(ol,{store:e,theme:u}),(0,t.createElement)(p.Root,{context:b},(0,t.createElement)(fo,{target:"wpseo-metabox-root",store:e,theme:u}))),g&&(0,t.createElement)(o.PluginPrePublishPanel,{className:"yoast-seo-sidebar-panel",title:(0,l.__)("Yoast SEO","wordpress-seo"),initialOpen:!0,icon:(0,t.createElement)(i.Fragment,null)},(0,t.createElement)(No,null)),(0,t.createElement)(o.PluginPostPublishPanel,{className:"yoast-seo-sidebar-panel",title:(0,l.__)("Yoast SEO","wordpress-seo"),initialOpen:!0,icon:(0,t.createElement)(i.Fragment,null)},(0,t.createElement)(Mo,null),y&&(0,t.createElement)(ll,null)),g&&(0,t.createElement)(o.PluginDocumentSettingPanel,{name:"document-panel",className:"yoast-seo-sidebar-panel",title:(0,l.__)("Yoast SEO","wordpress-seo"),icon:(0,t.createElement)(i.Fragment,null)},(0,t.createElement)(Ro,null))),icon:(0,t.createElement)(To,null)})})(e),function(){if("function"==typeof(0,m.get)(window,"wp.blockEditor.__experimentalLinkControl")){const e=(0,n.select)("core/rich-text").getFormatType("core/unknown");void 0!==e&&(0,n.dispatch)("core/rich-text").removeFormatTypes("core/unknown"),[Al].forEach((({name:e,replaces:t,...s})=>{t&&(0,n.dispatch)("core/rich-text").removeFormatTypes(t),e&&(0,d.registerFormatType)(e,s)})),void 0!==e&&(0,d.registerFormatType)("core/unknown",e)}else console.warn((0,l.__)("Marking links with nofollow/sponsored has been disabled for WordPress installs < 5.4.","wordpress-seo")+" "+(0,l.sprintf)( // translators: %1$s expands to Yoast SEO. (0,l.__)("Please upgrade your WordPress version or install the Gutenberg plugin to get this %1$s feature.","wordpress-seo"),"Yoast SEO"))}(),function(e){(0,n.select)("core/block-editor")&&(0,m.isFunction)((0,n.select)("core/block-editor").getBlocks)&&(0,n.select)("core/annotations")&&(0,m.isFunction)((0,n.dispatch)("core/annotations").__experimentalAddAnnotation)&&e.dispatch(u.actions.setMarkerStatus("enabled"))}(e)},window.yoast.EditorData=class{constructor(e,t){this._refresh=e,this._store=t,this._data={},this.getPostAttribute=this.getPostAttribute.bind(this),this.refreshYoastSEO=this.refreshYoastSEO.bind(this)}initialize(e,t=[]){var s,r;this._data=this.getInitialData(e),s=this._data,r=this._store,(0,m.forEach)(s,((e,t)=>{as.includes(t)||r.dispatch(ts(t,e))})),this._store.dispatch(Ol(t)),this.subscribeToGutenberg(),this.subscribeToYoastSEO()}getInitialData(e){const t=this.collectGutenbergData();return e=function(e,t){if(!e.custom_taxonomies)return e;const s={};return(0,m.forEach)(e.custom_taxonomies,((e,t)=>{const{name:r,label:a,descriptionName:n,descriptionLabel:o}=function(e){const t=ns(e);return{name:"ct_"+t,label:ss(e+" (custom taxonomy)"),descriptionName:"ct_desc_"+t,descriptionLabel:ss(e+" description (custom taxonomy)")}}(t),i="string"==typeof e.name?(0,Y.decodeHTML)(e.name):e.name,l="string"==typeof e.description?(0,Y.decodeHTML)(e.description):e.description;s[r]={value:i,label:a},s[n]={value:l,label:o}})),t.dispatch(function(e){return{type:"SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLES_BATCH",updatedVariables:e}}(s)),(0,m.omit)({...e},"custom_taxonomies")}(e=function(e,t){return e.custom_fields?((0,m.forEach)(e.custom_fields,((e,s)=>{const{name:r,label:a}=function(e){return{name:"cf_"+ns(e),label:ss(e+" (custom field)")}}(s);t.dispatch(ts(r,e,a))})),(0,m.omit)({...e},"custom_fields")):e}(e,this._store),this._store),{...e,...t}}setRefresh(e){this._refresh=e}isShallowEqual(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const s in e)if(e.hasOwnProperty(s)&&(!(s in t)||e[s]!==t[s]))return!1;return!0}getMediaById(e){return this._coreDataSelect||(this._coreDataSelect=(0,n.select)("core")),this._coreDataSelect.getMedia(e)}getPostAttribute(e){return this._coreEditorSelect||(this._coreEditorSelect=(0,n.select)("core/editor")),this._coreEditorSelect.getEditedPostAttribute(e)}getSlug(){if("auto-draft"===this.getPostAttribute("status"))return"";let e=this.getPostAttribute("generated_slug")||"";"auto-draft"===e&&(e="");const t=this.getPostAttribute("slug")||e;try{return decodeURI(t)}catch(e){return t}}getPostBaseUrl(){const e=(0,n.select)("core/editor").getPermalinkParts();if(null===e||null==e||!e.prefix)return window.wpseoScriptData.metabox.base_url;let t=e.prefix;if((0,n.select)("core/editor").isEditedPostNew())try{const e=new URL(t);t=e.origin+e.pathname}catch(e){}return t.endsWith("/")||(t+="/"),t}collectGutenbergData(){let e=(0,n.select)("core/editor").getEditedPostContent();const t=(0,n.select)("core/block-editor").getBlocks();1===t.length&&"core/freeform"===t[0].name&&(e=(0,a.getBlockContent)(t[0]));const s=this.calculateContentImage(e),r=this.getPostAttribute("excerpt")||"";return{content:e,title:this.getPostAttribute("title")||"",slug:this.getSlug(),excerpt:r||os(e,"ja"===Pl()?80:156),excerpt_only:r,snippetPreviewImageURL:this.getFeaturedImage()||s,contentImage:s,baseUrl:this.getPostBaseUrl()}}getFeaturedImage(){const e=this.getPostAttribute("featured_media");if(e){const t=this.getMediaById(e);if(t)return t.source_url}return null}calculateContentImage(e){const t=I.languageProcessing.imageInText(e);if(0===t.length)return"";const s=Wl.parseHTML(t.join(""));for(const e of s)if(e.src)return e.src;return""}handleEditorChange(e){this._data.content!==e.content&&this._store.dispatch(Nl(e.content)),this._data.title!==e.title&&(this._store.dispatch(Dl(e.title)),this._store.dispatch(Ll("title",e.title))),this._data.excerpt!==e.excerpt&&(this._store.dispatch(Bl(e.excerpt)),this._store.dispatch(Ll("excerpt",e.excerpt)),this._store.dispatch(Ll("excerpt_only",e.excerpt_only))),this._data.slug!==e.slug&&(this._store.dispatch(Ul(e.slug)),this._store.dispatch(Fl({slug:e.slug}))),this._data.snippetPreviewImageURL!==e.snippetPreviewImageURL&&(this._store.dispatch($l(e.snippetPreviewImageURL)),this._store.dispatch(Fl({snippetPreviewImageURL:e.snippetPreviewImageURL}))),this._data.contentImage!==e.contentImage&&this._store.dispatch(Ml(e.contentImage)),this._data.baseUrl!==e.baseUrl&&this._store.dispatch(ql({baseUrl:e.baseUrl}))}reapplyMarkers(){const{getActiveMarker:e,getMarkerPauseStatus:t}=(0,n.select)("yoast-seo/editor"),s=e(),r=t();s&&!r&&_l()}refreshYoastSEO(){const e=this.collectGutenbergData();!this.isShallowEqual(this._data,e)&&(this.handleEditorChange(e),this._data=e,this._refresh())}areNewAnalysisResultsAvailable(){const e=(0,n.select)("yoast-seo/editor"),t=e.getReadabilityResults(),s=e.getResultsForFocusKeyword();return(this._previousReadabilityResults!==t||this._previousSeoResults!==s)&&(this._previousReadabilityResults=t,this._previousSeoResults=s,!0)}onNewAnalysisResultsAvailable(){this.reapplyMarkers()}subscribeToGutenberg(){this.subscriber=(0,m.debounce)(this.refreshYoastSEO,500),(0,n.subscribe)(this.subscriber)}subscribeToYoastSEO(){this.yoastSubscriber=()=>{this.areNewAnalysisResultsAvailable()&&this.onNewAnalysisResultsAvailable()},(0,n.subscribe)(this.yoastSubscriber)}getData(){return this._data}}})()})();js/dist/api-client.js000064400000001103147206602470010511 0ustar00!function(t,e){window.wpseoApi={get:function(t,e,n,o){this.request("GET",t,e,n,o)},post:function(t,e,n,o){this.request("POST",t,e,n,o)},put:function(t,e,n,o){this.request("PUT",t,e,n,o)},patch:function(t,e,n,o){this.request("PATCH",t,e,n,o)},delete:function(t,e,n,o){this.request("DELETE",t,e,n,o)},request:function(n,o,i,u,s){"function"==typeof i&&void 0===s&&(s=u,u=i,i={}),"POST"!==n&&"GET"!==n&&(i._method=n,n="POST"),t.ajax({url:e.root+"yoast/v1/"+o,method:n,beforeSend:function(t){t.setRequestHeader("X-WP-Nonce",e.nonce)},data:i}).done(u).fail(s)}}}(jQuery,wpApiSettings);js/dist/addon-installation.js000064400000010052147206602470012253 0ustar00(()=>{"use strict";var e={n:n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},d:(n,t)=>{for(var o in t)e.o(t,o)&&!e.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:t[o]})},o:(e,n)=>Object.prototype.hasOwnProperty.call(e,n)};const n=window.React,t=window.wp.element,o=window.yoast.propTypes;var a=e.n(o);const s=window.yoast.componentsNew,l=window.wp.i18n,i=window.yoast.styledComponents;var r=e.n(i);const d=window.wp.components,c=e=>{const{title:t,className:o,showYoastIcon:a,additionalClassName:s,...l}=e,i=a?(0,n.createElement)("span",{className:"yoast-icon"}):null;return(0,n.createElement)(d.Modal,{title:t,className:`${o} ${s}`,icon:i,...l},e.children)};c.propTypes={title:a().string,className:a().string,showYoastIcon:a().bool,children:a().oneOfType([a().node,a().arrayOf(a().node)]),additionalClassName:a().string},c.defaultProps={title:"Yoast SEO",className:"yoast yoast-gutenberg-modal",showYoastIcon:!0,children:null,additionalClassName:""};const p=c;var m,w;function u(){return u=Object.assign?Object.assign.bind():function(e){for(var n=1;nn.createElement("svg",u({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 425 456.27"},e),m||(m=n.createElement("path",{d:"M73 405.26a66.79 66.79 0 0 1-6.54-1.7 64.75 64.75 0 0 1-6.28-2.31c-1-.42-2-.89-3-1.37-1.49-.72-3-1.56-4.77-2.56-1.5-.88-2.71-1.64-3.83-2.39-.9-.61-1.8-1.26-2.68-1.92a70.154 70.154 0 0 1-5.08-4.19 69.21 69.21 0 0 1-8.4-9.17c-.92-1.2-1.68-2.25-2.35-3.24a70.747 70.747 0 0 1-3.44-5.64 68.29 68.29 0 0 1-8.29-32.55V142.13a68.26 68.26 0 0 1 8.29-32.55c1-1.92 2.21-3.82 3.44-5.64s2.55-3.58 4-5.27a69.26 69.26 0 0 1 14.49-13.25C50.37 84.19 52.27 83 54.2 82A67.59 67.59 0 0 1 73 75.09a68.75 68.75 0 0 1 13.75-1.39h169.66L263 55.39H86.75A86.84 86.84 0 0 0 0 142.13v196.09A86.84 86.84 0 0 0 86.75 425h11.32v-18.35H86.75A68.75 68.75 0 0 1 73 405.26zM368.55 60.85l-1.41-.53-6.41 17.18 1.41.53a68.06 68.06 0 0 1 8.66 4c1.93 1 3.82 2.2 5.65 3.43A69.19 69.19 0 0 1 391 98.67c1.4 1.68 2.72 3.46 3.95 5.27s2.39 3.72 3.44 5.64a68.29 68.29 0 0 1 8.29 32.55v264.52H233.55l-.44.76c-3.07 5.37-6.26 10.48-9.49 15.19L222 425h203V142.13a87.2 87.2 0 0 0-56.45-81.28z"})),w||(w=n.createElement("path",{stroke:"#000",strokeMiterlimit:10,strokeWidth:3.81,d:"M119.8 408.28v46c28.49-1.12 50.73-10.6 69.61-29.58 19.45-19.55 36.17-50 52.61-96L363.94 1.9H305l-98.25 272.89-48.86-153h-54l71.7 184.18a75.67 75.67 0 0 1 0 55.12c-7.3 18.68-20.25 40.66-55.79 47.19z"}))),y=r().div` display: flex; justify-content: flex-end; gap: 8px; `,f=e=>{const[o,a]=(0,t.useState)(!0);function i(){a(!1)}const r=(0,l.sprintf)(/* translators: %s expands to Yoast */ (0,l.__)("%s SEO installation","wordpress-seo"),"Yoast");let d,c=(0,l.__)("the following addons","wordpress-seo");return 1===e.addons.length&&(c=e.addons[0]),1!==e.addons.length&&(d=(0,n.createElement)("ul",{className:"ul-disc"},e.addons.map(((e,t)=>(0,n.createElement)("li",{key:"addon-"+t},e))))),o?(0,n.createElement)(p,{title:r,onRequestClose:i,icon:(0,n.createElement)(h,null),isDismissible:!1},(0,n.createElement)("p",null,(0,l.sprintf)(/* translators: %s expands to Yoast SEO Premium */ (0,l.__)("Please confirm below that you would like to install %s on this site.","wordpress-seo"),c)),d,(0,n.createElement)(y,null,(0,n.createElement)(s.Button,{onClick:i,id:"close-addon-installation-dialog"},(0,l.__)("Cancel","wordpress-seo")),(0,n.createElement)(s.Button,{onClick:function(){window.location.href="admin.php?page=wpseo_licenses&action=install&nonce="+e.nonce},id:"continue-addon-installation-dialog",className:"yoast-button--primary"},(0,l.__)("Install and activate","wordpress-seo")))):null};f.propTypes={nonce:a().string.isRequired,addons:a().array},f.defaultProps={addons:[]};const g=f,v=document.createElement("div");v.setAttribute("id","wpseo-app-element"),document.getElementById("extensions").append(v),(0,t.render)((0,n.createElement)(g,{nonce:wpseoAddonInstallationL10n.nonce,addons:wpseoAddonInstallationL10n.addons}),v)})();js/dist/bulk-editor.js000064400000005003147206602470010710 0ustar00(()=>{"use strict";var e={n:n=>{var s=n&&n.__esModule?()=>n.default:()=>n;return e.d(s,{a:s}),s},d:(n,s)=>{for(var t in s)e.o(s,t)&&!e.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:s[t]})},o:(e,n)=>Object.prototype.hasOwnProperty.call(e,n)};const n=window.jQuery;var s,t=e.n(n);s=function(e){var n=e.find("[class^=wpseo-new]").first().attr("class"),s="#"+n+"-",i=s.replace("new","existing"),a=e.find("th[id^=col_existing_yoast]").first().text().replace("Existing ",""),o=n.replace("-new-","_save_"),l="wpseo_save_all_"+e.attr("class").split("wpseo_bulk_")[1],r=o.replace("wpseo_save_",""),c={newClass:"."+n,newId:s,existingId:i},d={submit_new:function(e){d.submitNew(e)},submitNew:function(e){var n,s=c.newId+e,i=c.existingId+e;n="select-one"===t()(c.newId+e).prop("type")?t()(s).find(":selected").text():t()(s).val();var l=t()(i).html();if(n===l)t()(s).val("");else{if(""===n&&!window.confirm("Are you sure you want to remove the existing "+a+"?"))return void t()(s).val("");var r={action:o,_ajax_nonce:wpseoBulkEditorNonce,wpseo_post_id:e,new_value:n,existing_value:l};t().post(ajaxurl,r,d.handleResponse)}},submit_all:function(e){d.submitAll(e)},submitAll:function(e){e.preventDefault();var n={action:l,_ajax_nonce:wpseoBulkEditorNonce,send:!1,items:{},existingItems:{}};t()(c.newClass).each((function(){var e=t()(this).data("id"),s=t()(this).val(),i=t()(c.existingId+e).html();""!==s&&(s===i?t()(c.newId+e).val(""):(n.send=!0,n.items[e]=s,n.existingItems[e]=i))})),n.send&&t().post(ajaxurl,n,d.handleResponses)},handle_response:function(e,n){d.handleResponse(e,n)},handleResponse:function(e,n){if("success"===n){var s=e;if("string"==typeof s&&(s=JSON.parse(s)),s instanceof Array)t().each(s,(function(){d.handleResponse(this,n)}));else if("success"===s.status){var i=s["new_"+r];t()(c.existingId+s.post_id).text(i.replace(/\\(?!\\)/g,"")),t()(c.newId+s.post_id).val("")}}},handle_responses:function(e,n){d.handleResponses(e,n)},handleResponses:function(e,n){var s=t().parseJSON(e);t().each(s,(function(){d.handleResponse(this,n)}))},set_events:function(){d.setEvents()},setEvents:function(){e.find(".wpseo-save").click((function(e){var n=t()(this).data("id");e.preventDefault(),d.submitNew(n,this)})),e.find(".wpseo-save-all").click(d.submitAll),e.find(c.newClass).keydown((function(e){if(13===e.which){e.preventDefault();var n=t()(this).data("id");d.submitNew(n,this)}}))}};return d},window.bulk_editor=s,window.bulkEditor=s,t()(document).ready((function(){t()('table[class*="wpseo_bulk"]').each((function(e,n){var i=t()(n);s(i).setEvents()}))}))})();js/dist/admin-modules.js000064400000072400147206602470011232 0ustar00(()=>{"use strict";var e={n:t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a}),a},d:(t,a)=>{for(var l in a)e.o(a,l)&&!e.o(t,l)&&Object.defineProperty(t,l,{enumerable:!0,get:a[l]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,a=window.yoast.propTypes;var l=e.n(a);const c=window.wp.i18n,r=window.wp.data,n=window.wp.element,s=window.yoast.componentsNew,i=window.yoast.helpers;function o({name:e,title:a,subtitle:l,usps:o,id:m,image:p,finishableSteps:d,finishedSteps:u,upsellLink:h,upsellText:f,workout:z,badges:E}){const{openWorkout:w,toggleWorkout:M}=(0,r.useDispatch)("yoast-seo/workouts"),g=(0,r.useSelect)((e=>e("yoast-seo/workouts").getActiveWorkout()),[]),[k,F]=(0,n.useState)(!1),y=z,v=p;(0,n.useEffect)((()=>{d&&u&&u.length===d.length?F(!0):F(!1)}),[u,d]);const b=(0,n.useMemo)((()=>u&&0!==u.length?u.length{w(e),k&&M(e)}),[z,k,w,M]),A=(0,i.makeOutboundLink)(),C=f||(0,c.sprintf)(/* translators: %s : Expands to the add-on name. */ (0,c.__)("Unlock with %s!","wordpress-seo"),"Premium"),_=z?"":" card-disabled";return(0,t.createElement)(n.Fragment,null,!g&&(0,t.createElement)("div",{id:m,className:`card card-small${_}`},(0,t.createElement)("h2",null,a," ",E),(0,t.createElement)("h3",null,l),(0,t.createElement)("div",{className:"workout-card-content-flex"},(0,t.createElement)("ul",{id:`${m}-usp-list`,className:"yoast-list--usp"},o.map(((e,a)=>(0,t.createElement)("li",{id:`${m}-usp-${a}`,key:`${m}-${a}`},e)))),p&&(0,t.createElement)(v,null)),(0,t.createElement)("span",null,z&&(0,t.createElement)(s.NewButton,{id:`${m}-action-button`,className:"yoast-button yoast-button--"+(k?"secondary":"primary"),onClick:B},b),!z&&(0,t.createElement)(A,{id:`${m}-upsell-button`,href:h,className:"yoast-button yoast-button-upsell","data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2"},C,(0,t.createElement)("span",{"aria-hidden":"true",className:"yoast-button-upsell__caret"})),d&&u&&(0,t.createElement)("div",{className:"workout-card-progress"},(0,t.createElement)(s.ProgressBar,{id:`${m}-progress`,max:d.length,value:u.length}),(0,t.createElement)("label",{htmlFor:`${m}-progress`},(0,t.createElement)("i",null,(0,c.sprintf)( // translators: %1$s: number of finished steps, %2$s: number of finishable steps (0,c.__)("%1$s/%2$s steps completed","wordpress-seo"),u.length,d.length)))))),z&&g===e&&(0,t.createElement)(y,null))}var m;function p(){return p=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",p({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 296 317"},e),m||(m=t.createElement("g",{fill:"none",transform:"matrix(-1 0 0 1 295.274 .96)"},t.createElement("circle",{cx:131.18,cy:184.261,r:131.18,fill:"#F0ECF0"}),t.createElement("g",{fill:"#EAB881"},t.createElement("path",{d:"M236.42 96.56c-.15-.43-.29-.87-.44-1.3.15.43.29.87.44 1.3zm-31.98 59.96a11 11 0 0 0-2.11.82c.67-.3 1.4-.56 2.11-.82zm-2.11.82a58.65 58.65 0 0 0-6 2.81c2.67-1.11 4.56-2.11 6-2.81z"}),t.createElement("path",{d:"M293.49 164.27c-8.58-10.51-1.05-27.75-34.52-86.31-3-5.22-5.26-14.52-12.85-17.58-9.11-3.67-12.77-9.16-21.89-12.83-6.85-2.76-4-1.36-3.21-.49 1.49 1.67-2-1.31-5.72 7.13-.38.85 2.86 1.63 4 5 .36 1.07.49 1.14 1.23 1.33 4.71 1.2 6.52 6.89 4.2 10.06-.7-1.43.18-6-4.68-6.36 2 1.44 4.06 3.42 4 5.88 9.4 16.64 17.56 14 20 15 12.43 4.92-17.28 64.57 23 86.13-7.34-1.94-14.31-5.46-23.92-1.33 7.28-5.53 2.46-7.57.86-10.89-2.17-2.92-2.29-11.71-2.6-22.62a103.2 103.2 0 0 0 1.09 20.32 54.8 54.8 0 0 0-38-.12c5.19-1.21 15.45 48.34 20.15 53.9 3.8-1.4 23-8.57 35.17-14.11 21.52-9.81 34.94-25.76 35.44-28.31.24-1.47-.85-2.71-1.75-3.8zm-41.62-99.13c.06.1 8.87 19.59.56 1.21-.2-.44-.38-.84-.56-1.21z"}),t.createElement("path",{d:"M215.17 56.04c.46.17 2 1.49-.23-.93-.88 2.39-.6 4.42 2 6.74 1.06-3 0-3.51-1.77-5.81zm-4.33 23.82c.28-.07.36.05-.35-.38l.35.38z"})),t.createElement("path",{fill:"#D38053",d:"M203.74 73.77c0 .4-.33-.06 2.94 2.38l-2.94-2.38zm5.26 4.27c2.3 2 3.13 2.53 2.19 1.77L209 78.04zm6.17-22c.05.06 1.79 2.31 1.83 2.38-.49-1.27-.83-2.01-1.83-2.38zm-.52 11.73c1.38-.08.73 1.34 2.16-.5.52-.67 1.91-3.21.71-2.6.56-2.33-.09-6.71-.19-4.75-.13 2.46-3.7 10.77-8.67 9.87a7.6 7.6 0 0 0 3.25.22c2.74-.39 2.36-.97 2.74-2.24zm-5.99 2.02a6.27 6.27 0 0 1-1.42-.59c.42.309.906.51 1.42.59z"}),t.createElement("path",{fill:"#D38053",d:"M214.2 69.33a4.13 4.13 0 0 1-.85 3.73c3.38-1.27 3.66-3.51 2.48-4.78-1.18-1.27-1.34.03-1.63 1.05zm-32.31 1.85c.11.84 2.61 2.33 3.3 2.78a13.33 13.33 0 0 1-3.3-2.78zm10 4.39c-.21.13-.45.1.31 0-.28-.12-.13-.1-.31 0zm-6.51-1.53a29.79 29.79 0 0 0 4.51 2.28c2.54-1.52.8.82-4.51-2.28z"}),t.createElement("path",{fill:"#EAB881",d:"M202.61 77.13c-.91.35-5.67.26-10.41-1.57-6.74 1-6.41 12.08-1 12.4 8.18.48 10.11 3 13.48 1.92 6.82-2.28 2.4-11.62-2.07-12.75z"}),t.createElement("path",{fill:"#D38053",d:"M217.52 64.67a4.92 4.92 0 0 1 2.54-.48c4.87.36 4 5 4.68 6.36 2.31-3.16.52-8.86-4.2-10.06-2.25-.57.56-2.91-7.86-7.27a10.79 10.79 0 0 1 4.84 11.45zm15.23 112.51c-6.79 1.78-17.9 1.65-21-5.2 3.71 11.1 9 26.86 12.86 37.68 2.88-.89 7.41-1.86 8.89-3.4-3.52-4.16-8.67-10.41-8.74-15.89-.07-5.48 2.92-11.16 7.99-13.19zm-26.31-20.36c-.14.17-.15 0 .53 1.27-.18-.46-.35-.89-.53-1.27z"}),t.createElement("path",{fill:"#D38053",d:"M246.11 86.55c-2.26-3.64-4.21.58 2.23-3.3-10.49 4.56-18.5-2.9-24.34-13.21-.05 1.82-1.23 3.13-2.61 4.36-9.64 8.64-10.89 4.95-12.39 3.64-8-7-3.86-2.44-6.09-1-.71.46 4.08 1 5.31 7.11a5.26 5.26 0 0 1-2.67 5.38c7.41 5.8 14.7 2.46 25.68-4.09 14.67 22.17 7.38 66.27 12.78 73.54 1.6 3.32 6.42 5.36-.86 10.89 9.61-4.13 16.58-.61 23.92 1.33-37.63-20.16-14.29-73.91-20.96-84.65z"}),t.createElement("path",{fill:"#A52A6A",d:"M190.92 211.52a81.3 81.3 0 0 0-9.26-12.14c6.41 7.94 17.18 24.84 9.26 12.14z"}),t.createElement("path",{fill:"#A52A6A",d:"M205.85 156.04c-31.36 13.6-26.45 13.21-42 8.34-18.87-5.91-37.14-.76-32.1-1.07 11.82-.72 29.07 49.31 35.44 66.88l62.17-10.35c.64 7.64-20.9-59.34-23.51-63.8z"}),t.createElement("path",{fill:"#7C2050",d:"M214.23 180.31c-8.73 13.9-32.09 11.23-35.71-4.78 8 32.54 8.23 20.07-9.5 9.69 25.36 25.8 22.47 41.74 28.27 44.5 3.49 1.65 13.65-3.77 26.3-7.69 3.3-1 4.88-1.61 4.76-2.19l-14.12-39.53z"}),t.createElement("path",{fill:"#EAB881",d:"M192.93 72.9a3 3 0 0 1-.92 2.58 25.5 25.5 0 0 0 9.52 1.8c2.47-.02.6.27-8.6-4.38z"}),t.createElement("path",{fill:"#EAB881",d:"M220.06 64.19c-3.36-.25-1 1.37-4.23 4.09 1.18 1.27.9 3.51-2.48 4.78a4.07 4.07 0 0 0 .85-3.73c-2.67 1.26-5.78.74-7-.13 4.38 2.46 8.07-2.64 9.69-7.37-2.58-2.31-2.87-4.34-2-6.74-1.19-1.31-4.4-3.35.19-.49a25 25 0 0 1 2.94-5.18c1.27-1.71 5.22-.83 1.65-3.46-1.76-1.3-8.08-2.63-8.81-2.59a4.11 4.11 0 0 0-3.06 1.53c-4.33-1.59-9.29-1.86-11.78 2-4.24-3.58-9.38 2.15-7.77 6.69 1.44 4-1.86.15-7.06 14.62-1.27 3.54 5.07 7 8.77 7.58 7.7 1.25-18.75-8.93 2.24-.45 3.4 2.66 5.28 1.49 10.44 1.8 1.08-.47 1-1.92 1.05-3.09 0-1.84 6.81 8.52 10.32 5.44 8.71-4.45 13.99-9.58 6.05-15.3z"}),t.createElement("path",{fill:"#EAB881",d:"M192.51 69.95c.38.94.28.45 0-2.57a4.18 4.18 0 0 0 0 2.57z"}),t.createElement("path",{fill:"#D38053",d:"M194.68 57.19a15.87 15.87 0 0 0 .36-1.77c-.14.62-.25 1.18-.36 1.77z"}),t.createElement("path",{fill:"#A52A6A",d:"M59 167.04c-7.75 3.79-5.09 3.25-3.46 3.59a74.937 74.937 0 0 0 3.46-3.59zm69-3.33-.77-.17c.242.112.504.17.77.17z"}),t.createElement("path",{fill:"#A52A6A",d:"M200.06 262.44c1.23-17.17 10-35.47-31-77.22-8.89-9-13.84-13.86-31.69-19.13 6.35 7.45-.5 40.2-3.43 38.36-25.84-16.17-70.31-19.82-79.39-32.84 6.7-6.24-28.46 5.48-39.7 16.24-3.57 3.42-8.13 12.77-12.22 22.43 8.53 42.43 41.23 74.66 42.5 72 3.64-7.7 7.17-15.66 6.64-14.47 11.84 12.23 19.29 19.48 23.78 35.23A131 131 0 0 0 201 295.25c-.06-16.21-1.3-27.79-.94-32.81zm-145.78-.4c.1 0 0-.08-1.06 2.38.36-.79.71-1.59 1.06-2.38z"}),t.createElement("path",{fill:"#7C2050",d:"M53.29 267.84c5.65 7.53 33.06 17 44.3 27a280 280 0 0 1-35.06-36.66 203.23 203.23 0 0 0 49.54 9.79l-47.15-13.12c.667-5.7 1.333-11.393 2-17.08-3.35 4.49-11.74 22.07-13.63 30.07zm125.12-18.17c-12.42-1.14-45.91 6.44-50.79 17 18.32-12.22 51.08-16.81 54.55.56-.17-1.02 12.83-16.03-3.76-17.56z"}),t.createElement("path",{fill:"#EAB881",d:"M124.39 155.75c0 .21.1.43.16.64-.06-.21-.11-.43-.16-.64zm-57.05-39.34c-.59 0-.52-.25 0 1.56 1.53 2.37.74 1.51 0-1.56zm56.8 38.33.12.46-.12-.46zm-69.63 16.87c9.09 13 53.53 16.65 79.39 32.84 2.16 1.35 8.75-21.75 4.69-36.08-1.9-6.72-10.19-4.65-10.62-4.66-1 0-1.46-.64-1.83-1.66-.68-1.91-1.52-5.36-1.48-5.21-1.23 4.07-1.68 6.59-3.49 7.5-6.48 3.24-37.85-9.4-52.25-41 .62 2.53 1.06 5.26-1 3.64 3.8 16.54 5.92 26.64-13.41 44.63z"}),t.createElement("path",{fill:"#D38053",d:"M107.65 148.64c-20.65-5.6-33.72-12.94-37.72-32.87-3.26 1.48-3.22-1.55-1 7.6 14.4 31.56 45.77 44.21 52.25 41 2.15-1.07 3.54-7.31 3.38-8-2.21-8.85 2.2-2.53-16.91-7.73z"}),t.createElement("path",{fill:"#EAB881",d:"M140.75 66.31c-3-9.44-7.65-19.56-11.74-25.21a15.73 15.73 0 0 1-8.82-3.17c-7.48 8.26-15.45 4.83-16.65 0-1.68 5.91-9.62 9-14.83 5.74a6.35 6.35 0 0 0 4.78-2.95 18.42 18.42 0 0 1-15.21-2.12c-6-.8-4.66-.93-1.31 4.28 7.29 11.35 4.24 15-4.14 23.72C62.7 77.12 70.69 82.04 74 85.14c6.7 6.17 1.74 13-5.65 12.35 4.88 8.65 5.25 9.2 5.41 10.7.34 3.25-1 6.28-3.86 7.58 4 19.73 16.77 27.17 37.72 32.87 6.48 1.76 13.43 3.33 20 1.88 6.57-1.45 12.87-6.74 13.24-13.51.22-4.11-1.69-10-1.26-14 .68-6.64 5.94-5 6.24-21a112.12 112.12 0 0 0-5.1-35.45"}),t.createElement("path",{fill:"#D38053",d:"M121.63 67.04c-.14 1.89.33 11.5 1.43 14.94 2.29 7.11 7.13 6.6 10.67 8.13 4.36 1.9 5.64 6.66-1.58 8.75-3.85 1.12-7.92 2.25-11.82 1.33 1.4 1.63 3.81 1.84 6 1.84 14.73 0 15.5-9 13.14-12.25-3.67-5.06-12.38-1.31-15.58-12.81-.81-2.74.11-8.51-2.26-9.93z"}),t.createElement("path",{fill:"#000",d:"M110.39 112.3c-10.66-3-13.86-7.32-14.77-5.86-1.15 1.83 18.2 12.62 29.48 6.84-5.03.06-9.69.44-14.71-.98zM86.23 73.61c1.75 0 7-6 8.82-7.15 3.63-2.2 7.63-1.08 11.78-2-.51-1.34-3.51-5.43-4.18-5.29-3.17.68-9.2.3-9.2.3s-13.18 14.27-7.22 14.14zm39.37-15.85c-5.09.43-3.23 1.61-2.29 5.5a18.92 18.92 0 0 1 17.63 3.35c-5.31-8.47-9.64-9.34-15.34-8.85z"}),t.createElement("path",{fill:"#FFF",d:"M91.39 85.5c4.56 6.52 15.3 4.23 18.45-1.77-.92-5.69-16.99-9.33-18.45 1.77zm9.87 1.69c-6.09 3.06-8.18-7.15-1.85-7.15 4.07 0 5.74 5.19 1.85 7.15zm25.58-4.58c2.38 3.65 14 2.53 14.28-3.35-4.19-9.42-16-4.69-14.28 3.35zm8.47-1.63a3.56 3.56 0 0 1-5.31 1.29c-2.29-1.87-1-6.45 2.58-6a3.57 3.57 0 0 1 2.73 4.71z"}),t.createElement("path",{fill:"#000",d:"M126.72 79.53c1.76-6.07 10.8-8.36 14.4-.27 1.07 2.38.95-6.79-5.3-7.23-3.92-.28-10.17.09-9.49 10a11.4 11.4 0 0 1 .39-2.5zm-27.31.51c-6.34 0-4.24 10.2 1.85 7.15 3.89-1.95 2.23-7.15-1.85-7.15z"}),t.createElement("path",{fill:"#000",d:"M132.6 76.26c-3.61-.44-4.87 4.14-2.58 6a3.4 3.4 0 1 0 2.58-6zm-63.68 47.11c-2.54-10.52-.32-4.66-9.77-9 5.12 9 12.19 18.98 9.77 9zM129 41.1c5.48 7.57 6.11 13.42 5.52 9.56a51.53 51.53 0 0 0-2.44-9.71 16.7 16.7 0 0 1-3.08.15z"}),t.createElement("path",{fill:"#000",d:"M137.16 26.23c3.42-12.58-5.26-13.54-7.57-11.18A10.51 10.51 0 0 0 113.3 5.04c-3.11-5.35-12.48-8.78-24.25 2.14C88-.5 72.44 1.9 70.12 17.68c-5.8 1.09-8.67 4.26-10 6.8-5.74.56-24.3 24.19-25.12 32.06-.51 4.69 2 9.11 3.31 13.65.84 2.89 1.22 6 2.75 8.59 4 6.77 0 3.56 5 2.71 4.44-.75 16.29 5.15 22.4 16 3.66.32 7.38-.9 8.67-5.17 1.72-5.69-6.59-8.6-8.54-13.18-4.08-9.57 10.77-15 12.37-23.84 1-5.78-3.41-11.93-7.06-17.09 1.24 0 2.7.15 4.46.38-.16-.1-.3-.21-.45-.32a17.59 17.59 0 0 0 15.66 2.44 6.35 6.35 0 0 1-4.78 2.95c5.21 3.24 13.15.17 14.83-5.74 1.2 4.84 9.14 8.31 16.65 0a16.12 16.12 0 0 0 18.08.78 11.39 11.39 0 0 1-5.61-4.34c3.19.61 6.37-1.64 7.88-4.5 1.51-2.86 1.74-6.22 1.9-9.46a9.68 9.68 0 0 1-5.36 5.83zm-77.44 3.81-.08-.11.08.11zm-.5-3.51v.09c0-.37.06-.82.09-1.36-.05.48-.07.89-.09 1.24v.03zm14.53 7.72a18.09 18.09 0 0 0 4.06 4 16.75 16.75 0 0 1-4.06-4.03v.03zm-.59-.86.24.35-.24-.35z"}),t.createElement("path",{fill:"#000",d:"M97.49 76.04c-3.73.6-7.38 4.53-6.58 9 1-2.29 1.84-4.94 5.06-6.12 4.28-1.56 11.29-.39 13.75 4.36 1.38 2.65.02-9.24-12.23-7.24z"}),t.createElement("path",{fill:"#EAB881",d:"M73.79 108.19c-.16-1.5-.53-2.05-5.41-10.7-6.11-10.84-17.95-16.75-22.38-16-7.48 1.27-15.82 21.55 15.3 33.82 8.33 3.28 13.12-1.13 12.49-7.12z"}),t.createElement("path",{fill:"#D38053",d:"M96 105.92c2.11-2.9 10.26 2.05 16.39-5.72.79-1 1.41-4 3.31-3.71-5.06-.88-6.61 8.28-14.23 6.32-3.12-.81-9-5.15-10 11.67a58.56 58.56 0 0 1 4.53-8.56zm-33.55-5.55c4.3-10.34-20.92-21.24-19.6-7 .3 3.21 2.29 8.83 5.31 9.81-2.45-5.37.27-12.44 1.57-13.5 2-1.61 4.51.76 7.4 2.9-.13 1.68-2.51 2.46-2.65 4.09-.12 1.31 1.07 2.94 5.05 2a7.72 7.72 0 0 1-2.17 5 5.2 5.2 0 0 0 5.09-3.3zm130.32-29.93a3.7 3.7 0 0 1-.27-3.06c4.45-17.69 1.95-7.91-1.07-3.12-2.38 3.78-3.24 6.3.67 8.22 23 11.28 1.9-.25.67-2.04z"}),t.createElement("path",{fill:"#D38053",d:"M192.25 75.29c-2.41-1-6.47-3.9-6.5-5.61 0-1.15 4.89-8.09 3.9-14.36-1.07 1.71-6.51 12.19-6.39 14.2.23 3.86 9.09 5.81 8.99 5.77zm13.21-25.34c-.16 1.86-6.76 14.12-6.76 18.83.36 1.09 4.49 2.16 4.71 3.29-6.82-5.17 3.5-20.43 2.05-22.12z"})))),u="cornerstone",h="orphaned",f={cornerstone:["chooseCornerstones","checkLinks","addLinks"],orphaned:["improveRemove","update","addLinks"]};function z({workout:e,badges:a,upsellLink:l,upsellText:n}){const s=(0,r.useSelect)((e=>e("yoast-seo/workouts").getFinishedSteps(u))),i=l||"https://yoa.st/workout-cornerstone-upsell";return(0,t.createElement)(o,{id:"cornerstone-workout-card",name:u,title:(0,c.__)("The cornerstone approach","wordpress-seo"),subtitle:(0,c.__)("Rank with articles you want to rank with","wordpress-seo"),usps:[(0,c.__)("Make your important articles rank higher","wordpress-seo"),(0,c.__)("Bring more visitors to your articles","wordpress-seo")],image:d,finishableSteps:f.cornerstone,finishedSteps:s,upsellLink:i,upsellText:n,workout:e,badges:a})}var E;function w(){return w=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",w({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 299 322"},e),E||(E=t.createElement("g",{fill:"none",transform:"matrix(-1 0 0 1 298.412 0)"},t.createElement("circle",{cx:131.2,cy:190.029,r:131.2,fill:"#F0ECF0"}),t.createElement("path",{fill:"#F9BF8C",d:"M262.5 92.23c-1 1.2-3 2.9-7.5 5a18.4 18.4 0 0 1-10.9 1.6c-.5-1-1-2.2-1.7-3.3l.4-.2.3-.2a14 14 0 0 0 3.3-.2c2.4.2 4.7-.6 6.9-3.2 3.1-3.9 1.7-10.7-1.3-14.6 2.6 2.5 4 5.7 6.4 8.6a231 231 0 0 1 3.3 4c.1.4 1.5 1.8.8 2.5zm-90.9 98.2a17.1 17.1 0 0 1 4 14.3c-11-7.9-22-18.9-31.8-37.8 26.5 1 39.4 8.8 39.5 8.7 43-17.2 51.7 1.5 66.8-6.3 2.3 4.7 5.3 6.3 8.4 9.4-13.5-13.9 5.7-22-5.1-57.7 7.3 0 20.8-4.8 22.9-9.7 14.8 26.3 10.5 39.9 17.8 54.6.6 1.2 2.3 6.7 3.5 8.2 2 2.8 0 7.7-2.7 10.6-29.7 32.8-68.9 33.6-93.5 36.8-6.4-4.6-13.8-8.5-21.5-13.7-1-5.1-1.2-11.2-8.3-17.4z"}),t.createElement("path",{fill:"#DB7A53",d:"M253.4 121.03c10.8 35.8-8.4 43.8 5.1 57.8-3-3.2-6-4.8-8.4-9.5a52.999 52.999 0 0 1-.3-2.2 50.2 50.2 0 0 1-.4-5v-2l.1-3.6.1-1.8.3-3.7.4-3.7.6-5.6a153.4 153.4 0 0 0 .6-9.5v-2a69 69 0 0 0-.3-7.8l-.2-1.6a10.5 10.5 0 0 0 2.4.3v-.1zm-11-25.6 1.7 3.4h-.1c-1.9-.1-2.3-2.3-2.7-2.6l-.1-.2 1.2-.6z"}),t.createElement("path",{fill:"#DB7A53",d:"M219.7 95.53c-.7-1.6-3-3-5.5-3.6.1-.011.2-.011.3 0a8.4 8.4 0 0 0 5.1-1.3l-.3-.2a1.6 1.6 0 0 0 .2 0 3.3 3.3 0 0 0 2.7-.6 34.2 34.2 0 0 0 6.4-4 5 5 0 0 0 2-2.8l.4.3c-.7 6.5 5.4 11.5 12.1 11.9l-.3.1-.4.2-1.2.6c-3.8 1.9-11 5.7-13.6 5.6-2.9 0-6.9-2.2-9.8-3.9 1.4-.5 2.3-1.2 1.9-2.3z"}),t.createElement("path",{fill:"#F9BF8C",d:"M223.7 76.23v.3a3.7 3.7 0 0 1-.2 1.3c-1.3-.7-2.4-1.5-2.6-2.6a3.2 3.2 0 0 1 .3-1.7 7.1 7.1 0 0 1 2.5 2.7z"}),t.createElement("path",{fill:"#F9BF8C",d:"M253.3 91.73c-2.1 2.6-4.5 3.4-6.9 3.2a13 13 0 0 0 5.2-2.3c-6 2.7-10.5 1.1-13.8-1.5a36.9 36.9 0 0 1-4.7-5.3c-1.1-1.6-1.8-2.8-2.1-2.9a3 3 0 0 0 0 .3l-.3-.3a2.4 2.4 0 0 0-.9-2 10.2 10.2 0 0 0-3.2-1.9 5.5 5.5 0 0 1 2.9.6c1.6.9 1 2.1 1.8 3.1a3.3 3.3 0 0 0 .2-3.7c-.8-1.3-4-1.1-6.1-1.3a2.3 2.3 0 0 0 0-.2l.8-1a1.3 1.3 0 0 1-.7-.8c-.8-1.2-2.4-2-4.2-2.6l.1-.2a16.4 16.4 0 0 1 2.2-3.5c.7-.8 5.5-.3 6.1-.6a21 21 0 0 0 2.5.7l16.8 5.1a7.8 7.8 0 0 1 3 2.5c3 3.9 4.4 10.7 1.3 14.6z"}),t.createElement("path",{fill:"#F9BF8C",d:"M228.6 85.73a34.2 34.2 0 0 1-6.4 4 3.3 3.3 0 0 1-2.6.6c1.5-.6 2.1-2.3.7-2.8l-.8-3.8a10 10 0 0 0 2-.7v.1c.5.8.4 4-.4 4.6 1-.2 2.2-3.1 2.5-4a1.3 1.3 0 0 0-.6-1.5 5.2 5.2 0 0 0 .8-.8 6.7 6.7 0 0 0 1.3-2 6.3 6.3 0 0 1 1.5-.4 10.2 10.2 0 0 1 3.2 1.9 2.4 2.4 0 0 1 .9 2 5 5 0 0 1-2.1 2.8zm-5-16.3a16.4 16.4 0 0 0-2.2 3.5l-.1.2a39 39 0 0 0-2.4-.6 9 9 0 0 1 2.3 1 3.2 3.2 0 0 0-.3 1.7c.3 1.1 1.3 2 2.6 2.6a11.3 11.3 0 0 1-.9 1.8 9.3 9.3 0 0 1-2.7 3.3l-.5.3-3.4-15.4-2.1-.3a4.4 4.4 0 0 1 2.7-1.4 35.6 35.6 0 0 1 13 2.7c-.5.3-5.3-.2-6 .6z"}),t.createElement("path",{fill:"#F9BF8C",d:"M219.4 83.23a6 6 0 0 1-2.8.7 7.8 7.8 0 0 1-1.5-.2 4 4 0 0 0 1.5.2 9.8 9.8 0 0 0 3-.2l.7 3.8c1.4.5.8 2.2-.7 2.8h-.1a1.6 1.6 0 0 1-.2 0 39 39 0 0 0-7-3c-.3-3.4-.6-6.7-2-9.7 1.7-2.8 3.2-5.6 1.7-6.6 0 1.3-1.1 3.4-2.4 5.4a13.3 13.3 0 0 0-1.2-1.7 13 13 0 0 0-5.2-3.6c.8-1.7 1.4-3.5 3.7-3.8a24.3 24.3 0 0 1 6.9.2l2.1.3 3.5 15.4z"}),t.createElement("path",{fill:"#DB7A53",d:"M223.7 76.23a5 5 0 0 1 .6 3.4 7 7 0 0 1 .8-.3 6.7 6.7 0 0 1-1.3 2.1 5.2 5.2 0 0 1-.8.8 1.7 1.7 0 0 0-1.2-.2l-.2 1a10 10 0 0 1-2 .7 9.8 9.8 0 0 1-3 .2 6 6 0 0 0 2.8-.7l.5-.3a9.3 9.3 0 0 0 2.7-3.3 11.3 11.3 0 0 0 1-1.9 3.7 3.7 0 0 0 .1-1.3v-.2zm1.6 1.3c.007.1.007.2 0 .3v-.3z"}),t.createElement("path",{fill:"#DB7A53",d:"M223 82.23c.524.3.773.92.6 1.5-.3.9-1.4 3.8-2.5 4 .8-.7 1-3.8.5-4.6v-.1l.3-1a1.7 1.7 0 0 1 1.1.2z"}),t.createElement("path",{fill:"#F9BF8C",d:"M201.4 91.73a3.1 3.1 0 0 0-.8.7c-2-.9-3.9-2.7-5.7-3.4-.5-.1-2.7-.8-2.9-1.4a13.7 13.7 0 0 0 5.2 2 43 43 0 0 0 4.2 2v.1zm.1-2.2h.1a30.3 30.3 0 0 0 5.4.4 30 30 0 0 0 3.6 1.6c-2.6-.3-5.7-1-8-.4l-2.2-1.3a2.7 2.7 0 0 0 1.1-.3zm13 2.5a1.4 1.4 0 0 0-.3 0 10.6 10.6 0 0 0-2-.4h-.4a26.6 26.6 0 0 1-3-1.8l1.7-.1a3.2 3.2 0 0 0 1.3-.4 1.2 1.2 0 0 0 .5-1l6.7 2.7-6.7-3.6a39 39 0 0 1 7 3c.1.2.3.2.4.3a8.4 8.4 0 0 1-5.2 1.3z"}),t.createElement("path",{fill:"#DB7A53",d:"M225 79.33a7 7 0 0 0-.7.3 5 5 0 0 0-.6-3.4 7.1 7.1 0 0 0-2.5-2.7 9 9 0 0 0-2.2-1l2.3.7c1.8.5 3.4 1.3 4.2 2.6a1.3 1.3 0 0 0 .6.6c.2 0-.5.7-.8 1.1v.3c2.2 0 5.4-.1 6.2 1.2a3.3 3.3 0 0 1-.2 3.8c-.8-1-.2-2.3-1.8-3.2a5.5 5.5 0 0 0-3-.6 6.3 6.3 0 0 0-1.4.3h-.1zm6 3.9a3 3 0 0 1 0-.3c.3 0 1 1.3 2 3a23.8 23.8 0 0 0 4.8 5.2c3.3 2.6 7.8 4.2 13.8 1.6a13 13 0 0 1-5.2 2.2 14 14 0 0 1-3.3.2c-6.7-.4-12.8-5.4-12.1-11.9z"}),t.createElement("path",{fill:"#F9BF8C",d:"M208.4 74.73c.478.53.913 1.099 1.3 1.7-1.4 2.2-3 4.3-3.5 5.3s-1.3 2.6-.3 3.6a38.8 38.8 0 0 0 6.4 3 1.2 1.2 0 0 1-.6 1 3.2 3.2 0 0 1-1.2.4l-1.8.1a14.4 14.4 0 0 0-3.6-1.9 13.4 13.4 0 0 1-3-1.2c0-.9-.3-2.4-.5-4 1.6-3 5-8.2 2.7-10.1.9 1.6-1.4 5.5-3 8l-.8-4a3.8 3.8 0 0 0 0-2 3.5 3.5 0 0 1-.2 1c-.4-1.6-.7-2.6-1-2.7-.9-.3-2 .6-3 2 1-2.2 1.5-4.1 4.7-4.1a7.3 7.3 0 0 1 2.2.4 13 13 0 0 1 5.2 3.5zm-6.1 13a39.6 39.6 0 0 1 4.7 2.2 30.3 30.3 0 0 1-5.3-.5 1.7 1.7 0 0 0 .6-1.7z"}),t.createElement("path",{fill:"#F9BF8C",d:"M207 84.53c-.2-1.3 1.6-4.1 3.3-6.9a27 27 0 0 1 2 9.7l-5.3-2.8zm-7.6-11.7c.3 0 .6 1.2 1 2.7-1.2 2.7-5.5 6.5-6.7 8.9a3.4 3.4 0 0 0-.6 2c.2.7 2 2 4.1 3.2a13.7 13.7 0 0 1-5.2-2l-.4-.3a1.7 1.7 0 0 1-.5-.5 1.5 1.5 0 0 1 0-1.2c.5-1.2 2.8-7.5 5.2-10.9 1-1.3 2.1-2.2 3-1.9h.1z"}),t.createElement("path",{fill:"#F9BF8C",d:"M199.4 86.63a5 5 0 0 0 2 .8l.9.3a1.7 1.7 0 0 1-.7 1.7v.1a2.7 2.7 0 0 1-1.2.3c-1.8-1-3.4-2.1-4.1-2.6-.4-.3-.8-.6-.9-1a1.7 1.7 0 0 1 .4-1c1.2-2 4-5.9 4.7-8.7l.7 4-1 1.5c-1 1.5-2.2 3.5-.8 4.6z"}),t.createElement("path",{fill:"#F9BF8C",d:"M201.2 86.03c-.5-.7-.6-.8-.4-1.7a9.9 9.9 0 0 1 .8-1.6l.5 4a3 3 0 0 1-.9-.7z"}),t.createElement("path",{fill:"#DB7A53",d:"M211.8 91.63h-1.2a30 30 0 0 1-3.6-1.7 39.6 39.6 0 0 0-4.7-2.2l-.8-.3a5 5 0 0 1-2-.8c-1.5-1.1-.3-3 .8-4.6l1-1.4c1.6-2.5 4-6.5 3.1-8 2.2 2-1.2 7-2.8 10.1a9.9 9.9 0 0 0-.7 1.6c-.3.9-.2 1 .4 1.7a3 3 0 0 0 .9.7 13.4 13.4 0 0 0 3 1.3 14.4 14.4 0 0 1 3.6 1.9 26.6 26.6 0 0 0 3 1.7z"}),t.createElement("path",{fill:"#DB7A53",d:"M195.8 85.33a1.7 1.7 0 0 0-.4 1c0 .4.5.7.9.9l4 2.6c.8.5 1.6 1 2.4 1.3a4.2 4.2 0 0 0-1.3.6 43 43 0 0 1-4.2-2c-2.1-1.3-4-2.6-4-3.3a3.4 3.4 0 0 1 .5-2c1.2-2.3 5.5-6.1 6.6-8.8a3.5 3.5 0 0 0 .3-1 3.8 3.8 0 0 1 0 2c-.8 2.8-3.6 6.6-4.8 8.7zm11.2-.8 5.3 2.8 6.7 3.7-6.7-2.6a38.8 38.8 0 0 1-6.4-3c-1-1-.4-2.4.3-3.5l3.5-5.4c1.3-2.2 2.4-4 2.4-5.3 1.5 1 0 3.7-1.8 6.5s-3.6 5.6-3.2 7l-.1-.2z"}),t.createElement("path",{fill:"#F9BF8C",d:"M201.4 91.73a4.2 4.2 0 0 1 1.3-.6c2.2-.5 5.3.1 7.9.4l1.2.1h.4a10.6 10.6 0 0 1 2 .3c2.4.6 4.8 2 5.4 3.6.5 1-.5 1.8-1.8 2.2a11.1 11.1 0 0 1-2 .4c-4.2.6-5.5 2-11.5 2.8-2.6.4-4.4-4-4.4-5.9a4.2 4.2 0 0 1 .7-2.6 3.1 3.1 0 0 1 .8-.7z"}),t.createElement("path",{fill:"#A52A6A",d:"M253.4 121.03a10.5 10.5 0 0 1-2.4-.2 5.3 5.3 0 0 1-.7-.2c-2.4-.9-8.6-17.6-9.3-21-.3-1.2-.3-3.5.3-3.4.3.3.8 2.5 2.7 2.5h.1a18.4 18.4 0 0 0 10.9-1.5c4.6-2.1 6.6-3.8 7.6-5 .6-.8-.7-2.2-.9-2.5.4-.4 1.3.1 1.7.3 5.9 2.8 10.2 12.7 13.1 19.4a2.9 2.9 0 0 1-.1 1.9c-2.1 5-15.6 9.8-23 9.8v-.1z"}),t.createElement("path",{fill:"#DB7A53",d:"M171.6 190.43c7 6.2 7.3 12.3 8.3 17.4l-4.4-3a17 17 0 0 0-3.9-14.4z"}),t.createElement("path",{fill:"#009288",d:"m41.3 265.93-.5.2c6.5 8.6 14.1 17.5 21 30.5a28.8 28.8 0 0 1 2.8 7.7c45.714 25.792 102.423 21.736 144-10.3-.8-3.5-1.7-7.1-2.8-11 12.67-7.311 18.506-22.484 14-36.4a43 43 0 0 0-18.4-25.1c-6.4-4.6-13.8-8.5-21.5-13.7l-4.4-3c-10.8-8-22-19-31.7-37.9l-.1-.2a71 71 0 0 0-19.9-2.3c12 5.8 41 37 4.2 43-29 3.1-47.3-27.9-84-28.7a47.8 47.8 0 0 0-13.5 9.4l-1 1a37 37 0 0 1 4.7-2c16.4 1 27 15.3 32.9 30.3 10.3 26.2 6.2 44.7-2.6 50.6-5.3 3.6-13.3 2.7-20-3.7l-1.5.7-1 .6-.7.3z"}),t.createElement("path",{fill:"#F9BF8C",d:"M29.5 189.23a37 37 0 0 1 4.5-2.2c16.4 1 27 15.3 33 30.3 10.3 26.2 6.2 44.7-2.6 50.6-5.3 3.6-13.4 2.7-20-3.7l-1.5.7c6.9-5.7 4.9-6.8 18-4.4-10.8-6.4-16.1-9.1-38.7 6.1a122.2 122.2 0 0 1-21.4-53.5 133 133 0 0 1 28.7-24.1v.2z"}),t.createElement("path",{fill:"#DB7A53",d:"M61 260.63c-13.2-2.4-11.1-1.3-18 4.4l-1 .6-.6.2-.6.3-.5.3-.6.3-1.1.6-.7.3-1 .6-.7.4-1.2.6-.6.3-1.3.7-.6.3-1.3.7-.5.3-1.4.8-.3.1-1.6 1-.6-.9-4.5-5.8c22.6-15.2 27.9-12.4 38.7-6v-.1z"}),t.createElement("path",{fill:"#F9BF8C",d:"M128 207.43c-29.2 3.1-47.5-28.2-84.5-28.7 14.2-5.2 23-11.3 23-27.1 0-8.8-2.7-25.8-3.6-38.2 0 0 57 21.4 57.8 36.1l2 14.3c11.2 4.3 43.3 37.4 5.3 43.6z"}),t.createElement("path",{fill:"#DB7A53",d:"M87.3 151.73a56.8 56.8 0 0 1-17.1-22.8 62.4 62.4 0 0 0 43 22c2.5-.1 5-.2 7.3-.5v.5l.2 1.2c-4.7 11.9-7.3 19.5-33.4-.4z"}),t.createElement("path",{fill:"#216D64",d:"M162 280.43c.5 7.4-16.2 16.2-30.8 17.3-19.8 1.4-54.8-9.2-48-40.7 18.2 35 68.8 31.3 78.8 23.4z"}),t.createElement("path",{fill:"#F9BF8C",d:"M122.5 72.33a9.8 9.8 0 0 0-2.1-.8h2.6l-.5.8zm-9.9.8a4.8 4.8 0 0 0-.6-1.7c7.3 0 4-.6.6 1.7zm12.6 14 .8.8c-.9-1.5-1.5-4.6-2.9-12.6l-.4-.3a16 16 0 0 0 2.5 12.1z"}),t.createElement("path",{fill:"#F9BF8C",d:"M154.7 95.83a44.5 44.5 0 0 0-1.6-8.2c-2-6-4.8-6.6-7.3-9.6a50.6 50.6 0 0 0-1-23.9c0 .1-8.7-35.8-54.2-22a44.6 44.6 0 0 0-10 5.9c-10.6 8.2-7.6 13.4-10 25.4a74.9 74.9 0 0 1-4.4 11.9c-4.8 3.8-7.6 6.5-8.1 9.9 1 4.7 5.4 18.3 5 28.1 6 27.2 36.6 38.3 50 37.6 2.6-.1 5-.2 7.4-.5 6.5-.7 11.9-2.8 17-11.3 6.4-10.8 5.6-16.5 9.4-22.5 2.5-4.1 9-9.7 7.8-20.8zm-42.2-19.5c-1 7.6-2.5 10.5-5.3 11.4a18.3 18.3 0 0 0 1.3-3.3c-4.6 2.5-17 2.8-21.2-3-.9.4-2 .4-4-.6l.2-.1c4.2-.1 2.6-1 4.1-3.8a10.6 10.6 0 0 1 .6-1h17.1a11 11 0 0 1 3.8 6.7 58.3 58.3 0 0 0 1.2-6.8l3-.2-.8.7z"}),t.createElement("path",{fill:"#D86060",d:"M112.6 124.23c-4-2-5.6-6.3-11.6-10.8 10 5.2 19.3 6.3 26.5 3.8-1.7 1.7 1.2 6.3-3.5 8.4-4 1.7-7.3.5-11.4-1.4z"}),t.createElement("path",{fill:"#BC3939",d:"m101 113.43-1.6-.8c7.9-.3 12.9-.7 17.2-.3 2.2.3 2.2 2 3.8 2 1.6 0 2.7-1.6 4.4-1.4 1.2.2 3 1.1 5.6 3a20.3 20.3 0 0 1-2.9 1.2c-7.2 2.6-16.6 1.5-26.5-3.7z"}),t.createElement("path",{fill:"#FFF",d:"m108.5 84.43.2-.5a15.2 15.2 0 0 0-2.3-3.8c-5-5.8-13.6-5.1-16.5-1.6-.9 1.3-1.5 2.4-2.6 3 4.1 5.7 16.6 5.4 21.2 3v-.1zM97 85.63a4.8 4.8 0 1 1 .408-9.592A4.8 4.8 0 0 1 97 85.629z"}),t.createElement("path",{fill:"#000",d:"M89.9 78.53c-.9 1.3-1.5 2.4-2.6 3-1.1.6-2 .2-4-.7l.2-.2c4.2 0 2.6-1 4.1-3.7 2.8-5.2 9-4.8 14.6-3 .1 0 5.9 2.4 6.8 8.7l-.3 1.2a14.4 14.4 0 0 0-2.3-3.7c-5-5.8-13.6-5.1-16.5-1.6z"}),t.createElement("path",{fill:"#FFF",d:"M127.5 83.03h-.1a27 27 0 0 0 11.6.6c2.7-1 4.8-4 5-6.8-1.8-1.2-2.8-4.6-8.2-2.9-5 1.6-7 4.2-8.3 9v.1zm2.8-3.7a4.4 4.4 0 1 1 8.798-.2 4.4 4.4 0 0 1-8.798.2z"}),t.createElement("path",{fill:"#000",d:"M145.1 75.33c0 .5.5.7 1 .9a8 8 0 0 0 1.2.1l.1.2a5 5 0 0 1-1.4.6 2.4 2.4 0 0 1-2-.4c-1.8-1.2-2.8-4.6-8.2-2.8-4.9 1.6-7 4.2-8.3 9h-.2c-1.2-6.7 4-11.3 9-12.5l3.1-.2c2.8.2 5.2 1.8 5.7 5.1z"}),t.createElement("path",{fill:"#B2512B",d:"M106.7 61.53c-4 0-8.2-.4-11.7-.3-3.6.1-8.3 1.7-12.8 4.6 1.9-4 8.5-7.2 12.5-7.7 2.9-.3 6.8-.7 9.7-.2 3.7.7 5.6 3.1 2.3 3.6zm24.7 5.6c2.3-2.6 6.8-6.2 9.4-5.8 3 .4 3.5 1.2 5.4 3.6.056.898.056 1.8 0 2.7H145a7.6 7.6 0 0 0-4.7-2.2c-1.9-.1-7 1.2-8.8 1.7h-.1z"}),t.createElement("circle",{cx:97.1,cy:80.829,r:4.8,fill:"#000",transform:"rotate(-78.1 97.1 80.83)"}),t.createElement("circle",{cx:134.7,cy:79.329,r:4.4,fill:"#000"}),t.createElement("path",{fill:"#DB7A53",d:"M106.3 109.73a40 40 0 0 1-10.3-1.3c-1.9 2-.1 6.6-.7 9.2-1-3.4-4-8-2.2-12.4a28.7 28.7 0 0 0 13.2-1c9-2.8 6.6-6.2 12.6-6.5-5.2 1-4.4 11.4-12.6 12z"}),t.createElement("path",{fill:"#838BC5",d:"M54 29.03c3-3.6 13.5-5.8 20-6-.5 1.3 4.5 2.7 4 4a37.3 37.3 0 0 0 8.4-.2 3.5 3.5 0 0 0 .4 2.7l3.8 2.6a44.6 44.6 0 0 0-10.1 5.9c-10.5 8.2-7.5 13.4-9.9 25.4a74.9 74.9 0 0 1-4.4 11.9l-12.4 7a10.3 10.3 0 0 0-5.3-.7l-.3-.4c-2.2-4-6.8-14.2-7.2-18.8-1.4-11.4 1.2-25 10-32.4a18.5 18.5 0 0 1 3-2 9.8 9.8 0 0 0 .1 1H54zm2.7 55 1.4.7 3.5-1.6a5.5 5.5 0 0 1-2.4 1.9 10.4 10.4 0 0 1-1.2.2l-1.2-1.2h-.1z"}),t.createElement("path",{fill:"#0071BC",d:"M127 22.23c-7.5-4.7-7-2-15.6-4l5.2-.4c-13.3-1-28.6 3.4-30.1 9a37.3 37.3 0 0 1-8.4.2c.5-1.3-4.6-2.6-4-4-6.6.2-17 2.4-20.1 6a9.8 9.8 0 0 1 0-1c0-8.2 10.8-17.8 30.3-15.8 13.4-14.3 42.4-21 61 8.1-13-7.3-16.2-.2-19.3.8 7.8-1.6 27.3 3 28.9 24.3-1.7-7.8-8.4-8.6-13.6-8-1.7-2.3-3.5-4.3-4.9-5.9-4.5-5.2-3.5-5.7-9.4-9.3z"}),t.createElement("path",{fill:"#0071BC",d:"M137.4 46.73c3.4 14.5-3.1 19.3-22.4 18.8 12.5-8.9 11.5-19.3 2-26.1-8.2-6-14 .2-26.4-7.3a46 46 0 0 1-3.8-2.6 3.5 3.5 0 0 1-.3-2.7c1.5-5.6 16.8-10 30-9l-5 .3c8.6 2.2 8-.6 15.5 4 5.9 3.7 4.9 4.2 9.4 9.5 1.4 1.6 3.2 3.5 4.8 5.8 3 4.2 5.5 9.6 3.5 16.7a26 26 0 0 1-2.6 6.2 14.6 14.6 0 0 0-4.7-13.6z"}),t.createElement("path",{fill:"#DB7A53",d:"M126.1 69.33h-.7a14.6 14.6 0 0 1 3.2-1.7 14.8 14.8 0 0 0-2.5 1.7zm-.9 17.8.8.8c1.2 1.8 2.7 1.5 6.3 4.8l.6.2c1.8 1.7 2.8 3.7 2 6.4-.2 3.2-5.3 8.2-12 5.8 5.3-1 6.9-.8 7.6-5.6-.2-6.7-8.3-4-10-16.5a17.3 17.3 0 0 1 .9-8.8 9 9 0 0 1 1.3.8 16 16 0 0 0 2.5 12.1zm-2.1-14.5a6.3 6.3 0 0 0-.6-.3l.5-.9c1 0 .4.2.1 1.2z"}),t.createElement("path",{fill:"#93278F",d:"M56.7 84.03a12.7 12.7 0 0 0-3-1.7l12.4-7 9.2-5.2c-1.3 1.7-1.6 4.2-1.1 7l-12.6 6-3.5 1.7-1.4-.8z"}),t.createElement("path",{fill:"#5D237A",d:"M151 92.03c5.5-1.8 14.3-20.4 5.8-23.5-5.4-2-24.6-.6-29.9.8-29.7-.4-42.2-3.3-49.3-.7a5 5 0 0 0-2.3 1.6c-4.3 5.5 3.1 20.2 8 21.8a46.3 46.3 0 0 0 12.5 1.6c11.6 0 14.8-2.2 16.6-17.3 1-.6 4.4-4.3 9-2a10.6 10.6 0 0 1 1.8 1c2.9 17.6 2.5 11.3 9.1 17.5l.6.1c5.8 1.4 13.9.5 18.1-.9zm-40.5-17.9c-.4 3.6-1.7 13.4-4.8 15.4-4.2 2.8-17 2-21.7.4-4-1.4-11.5-17.2-5.7-19.3 5.6-2 23.8 0 29.6.6 0 .2 2.8.3 2.6 3v-.1zm2.1-1a4.8 4.8 0 0 0-.6-1.8c7.3.2 4-.5.6 1.8zm10.5-.5a10 10 0 0 0-2.7-1.2c4.2.1 3.1-.3 2.7 1.2zm27.2 17.4c-4.7 1.6-16.3 2.5-20.6-.4-1-.7-2.8-5.1-4.5-15.3-.4-2.8 2.6-2.5 2.6-2.8.9-.2 4.3-.7 8.5-1 4.2-.3 15.6-1.2 19.7.2 5.8 2.1-1.6 18-5.7 19.3z"}),t.createElement("path",{fill:"#F9BF8C",d:"M45.5 82.33c-4.2 1.7-4.4 10-3 14.8 2.8 9.2 12 17.6 21.7 16.1 5.2-.7 1.5-5.7-1-16.4l-1-5.6c-3.3-7-9.4-11.7-16.7-8.9zm13.2 13c-.4.4-4.4 3.1-1.2 5 2.2 1.5 4 .5 3.6 2.6-.3 1.4 0 3.3-2 3 2-3-1.1-4-3-2.9s-5.7-5.3.9-8.2c-4-4.8-7.5-12.8-10-.5-3-9.7 3.6-17.3 11.7 1z"}),t.createElement("path",{fill:"#CE6D42",d:"M58.7 95.33c-.4.4-4.4 3.1-1.2 5 2.2 1.5 4 .5 3.6 2.6-.3 1.4 0 3.3-2 3 2-3-1.1-4-3-2.9s-5.7-5.3.9-8.2c-4-4.8-7.5-12.8-10-.5-3-9.7 3.6-17.3 11.7 1z"}))));function g({workout:e,badges:a,upsellLink:l,upsellText:n}){const s=(0,r.useSelect)((e=>e("yoast-seo/workouts").getFinishedSteps(h))),i=l||"https://yoa.st/workout-orphaned-content-upsell";return(0,t.createElement)(o,{id:"orphaned-workout-card",name:h,title:(0,c.__)("Orphaned content","wordpress-seo"),subtitle:(0,c.__)("Clean up your unlinked content to make sure people can find it","wordpress-seo"),usps:[(0,c.__)("Make pages easier for Google and visitors to find","wordpress-seo"),(0,c.__)("Add internal links to your posts and pages","wordpress-seo")],image:M,finishableSteps:f.orphaned,finishedSteps:s,upsellLink:i,upsellText:n,workout:e,badges:a})}g.propTypes={workout:l().func,badges:l().arrayOf(l().element),upsellLink:l().string,upsellText:l().string},g.defaultProps={workout:null,badges:[],upsellLink:null,upsellText:null},window.yoast=window.yoast||{},window.yoast.adminModules={components:{workouts:{CornerstoneWorkoutCard:z,OrphanedWorkoutCard:g}}}})();js/dist/first-time-configuration.js000064400000453026147206602470013433 0ustar00(()=>{var e={4184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=Object.assign||function(e){for(var t=1;t1?t-1:0),r=1;re.height),u(m,this.animationStateClasses.animatingToHeightZero,0===w.height),u(m,this.animationStateClasses.animatingToHeightAuto,"auto"===w.height),u(m,this.animationStateClasses.animatingToHeightSpecific,w.height>0),m)),_=this.getStaticStateClasses(w.height);this.setState({animationStateClasses:S,height:E,overflow:"hidden",shouldUseTransitions:!x}),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),x?(w.shouldUseTransitions=!0,f(this.animationFrameIDs),this.animationFrameIDs=(n=function(){a.setState(w),b(p,{newHeight:w.height})},(r=[])[0]=requestAnimationFrame((function(){r[1]=requestAnimationFrame((function(){n()}))})),r),this.animationClassesTimeoutID=setTimeout((function(){a.setState({animationStateClasses:_,shouldUseTransitions:!1}),a.hideContent(w.height),b(d,{newHeight:w.height})}),v)):(b(p,{newHeight:E}),this.timeoutID=setTimeout((function(){w.animationStateClasses=_,w.shouldUseTransitions=!1,a.setState(w),"auto"!==c&&a.hideContent(E),b(d,{newHeight:E})}),v))}}},{key:"componentWillUnmount",value:function(){f(this.animationFrameIDs),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),this.timeoutID=null,this.animationClassesTimeoutID=null,this.animationStateClasses=null}},{key:"showContent",value:function(e){0===e&&(this.contentElement.style.display="")}},{key:"hideContent",value:function(e){0===e&&(this.contentElement.style.display="none")}},{key:"getStaticStateClasses",value:function(e){var t;return(0,l.default)((u(t={},this.animationStateClasses.static,!0),u(t,this.animationStateClasses.staticHeightZero,0===e),u(t,this.animationStateClasses.staticHeightSpecific,e>0),u(t,this.animationStateClasses.staticHeightAuto,"auto"===e),t))}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.animateOpacity,s=n.applyInlineTransitions,i=n.children,c=n.className,d=n.contentClassName,f=n.delay,y=n.duration,h=n.easing,b=n.id,g=n.style,v=this.state,E=v.height,w=v.overflow,x=v.animationStateClasses,S=v.shouldUseTransitions,_=a({},g,{height:E,overflow:w||g.overflow});S&&s&&(_.transition="height "+y+"ms "+h+" "+f+"ms",g.transition&&(_.transition=g.transition+", "+_.transition),_.WebkitTransition=_.transition);var O={};r&&(O.transition="opacity "+y+"ms "+h+" "+f+"ms",O.WebkitTransition=O.transition,0===E&&(O.opacity=0));var R=(0,l.default)((u(e={},x,!0),u(e,c,c),e)),C=void 0!==this.props["aria-hidden"]?this.props["aria-hidden"]:0===E;return o.default.createElement("div",a({},m.apply(void 0,[this.props].concat(p)),{"aria-hidden":C,className:R,id:b,style:_}),o.default.createElement("div",{className:d,style:O,ref:function(e){return t.contentElement=e}},i))}}]),t}(o.default.Component);g.propTypes={"aria-hidden":i.default.bool,animateOpacity:i.default.bool,animationStateClasses:i.default.object,applyInlineTransitions:i.default.bool,children:i.default.any.isRequired,className:i.default.string,contentClassName:i.default.string,delay:i.default.number,duration:i.default.number,easing:i.default.string,height:function(e,t,n){var a=e[t];return"number"==typeof a&&a>=0||h(a)||"auto"===a?null:new TypeError('value "'+a+'" of type "'+(void 0===a?"undefined":r(a))+'" is invalid type for '+t+" in "+n+'. It needs to be a positive number, string "auto" or percentage string (e.g. "15%").')},id:i.default.string,onAnimationEnd:i.default.func,onAnimationStart:i.default.func,style:i.default.object},g.defaultProps={animateOpacity:!1,animationStateClasses:d,applyInlineTransitions:!0,duration:250,delay:0,easing:"ease",style:{}},t.Z=g},4530:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";e.exports=window.React},5890:e=>{"use strict";e.exports=window.yoast.propTypes}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(9196);const t=window.wp.domReady;var r=n.n(t);const a=window.wp.element,s=window.yoast.uiLibrary,o=window.lodash,i=window.wp.i18n,l=window.wp.apiFetch;var c=n.n(l);const u=window.wp.data,d="@yoast/general";var p=n(4530),m=n.n(p);(0,i.__)("E.g. https://www.facebook.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.instagram.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.linkedin.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.myspace.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.pinterest.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.soundcloud.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.tumblr.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.twitter.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.youtube.com/yoast","wordpress-seo"),(0,i.__)("E.g. https://www.wikipedia.com/yoast","wordpress-seo");const f=e=>`error-${e}`,y=(e,{isVisible:t})=>t?{"aria-invalid":!0,"aria-describedby":f(e)}:{};function h({active:e,selected:t}){return m()("yst-relative yst-cursor-default yst-select-none yst-py-2 yst-pl-3 yst-pr-9 yst-my-0",t&&"yst-bg-primary-500 yst-text-white",e&&!t&&"yst-bg-primary-200 yst-text-slate-700",!e&&!t&&"yst-text-slate-700")}function b(e,t){const n=function(e,t){return e.includes(t)?[...e]:[...e,t]}(e.editedSteps,t);return{...e,editedSteps:n}}function g(e,t){let n=(0,o.cloneDeep)(e);switch(t.type){case"SET_COMPANY_OR_PERSON":return n=b(n,2),n.companyOrPerson=t.payload,n.companyOrPersonLabel=n.companyOrPersonOptions.filter((e=>e.value===t.payload)).pop().label,n;case"CHANGE_COMPANY_NAME":return n=b(n,2),n.companyName=t.payload,n;case"SET_COMPANY_LOGO":return n=b(n,2),n.companyLogo=t.payload.url,n.companyLogoId=t.payload.id,n;case"REMOVE_COMPANY_LOGO":return n=b(n,2),n.companyLogo="",n.companyLogoId="",n;case"CHANGE_WEBSITE_NAME":return n=b(n,2),n.websiteName=t.payload,n;case"SET_PERSON_LOGO":return n=b(n,2),n.personLogo=t.payload.url,n.personLogoId=t.payload.id,n;case"REMOVE_PERSON_LOGO":return n=b(n,2),n.personLogo="",n.personLogoId="",n;case"SET_PERSON":return n=b(n,2),n.personId=t.payload.value,n.personName=t.payload.label,n;case"SET_CAN_EDIT_USER":return n=b(n,2),n.canEditUser=!0===t.payload?1:0,n;case"CHANGE_SOCIAL_PROFILE":return n=b(n,3),n.socialProfiles[t.payload.socialMedium]=t.payload.value,n.errorFields=n.errorFields.filter((e=>"facebookUrl"===t.payload.socialMedium?"facebook_site"!==e:"twitterUsername"!==t.payload.socialMedium||"twitter_site"!==e)),n;case"CHANGE_OTHERS_SOCIAL_PROFILE":return n=b(n,3),n.socialProfiles.otherSocialUrls[t.payload.index]=t.payload.value,n.errorFields=n.errorFields.filter((e=>e!==`other_social_urls-${t.payload.index}`)),n;case"ADD_OTHERS_SOCIAL_PROFILE":return n=b(n,3),n.socialProfiles.otherSocialUrls=[...n.socialProfiles.otherSocialUrls,t.payload.value],n;case"REMOVE_OTHERS_SOCIAL_PROFILE":return n=b(n,3),n.socialProfiles.otherSocialUrls.splice(t.payload.index,1),n.errorFields=(r=n.errorFields,a=t.payload.index,r.map((e=>{const t=parseInt(e.replace("other_social_urls-",""),10);return t===a?"remove":t>a?"other_social_urls-"+(t-1):e})).filter((e=>"remove"!==e))),n;case"SET_ERROR_FIELDS":return n.errorFields=t.payload,n;case"SET_STEP_ERROR":return n.stepErrors[t.payload.step]=t.payload.message,n;case"REMOVE_STEP_ERROR":return n.stepErrors=(0,o.pickBy)(n.stepErrors,((e,n)=>n!==t.payload)),n;case"SET_TRACKING":return n=b(n,4),n.tracking=t.payload,n;default:return n}var r,a}var v=n(5890),E=n.n(v);const w=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"}))})),x=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",clipRule:"evenodd"}))})),S=({items:t,onAddProfile:n,onRemoveProfile:r,onChangeProfile:o,errorFields:l,fieldType:c,addButtonChildren:u})=>{const d=(0,a.useCallback)((e=>{r(parseInt(e.currentTarget.dataset.index,10))}),[r]);return(0,e.createElement)("div",null,t.map(((t,n)=>(0,e.createElement)("div",{key:`url-${n}`},(0,e.createElement)("div",{className:"yst-w-full yst-flex yst-items-start yst-mt-4"},(0,e.createElement)(c,{className:"yst-grow",label:(0,i.__)("Other social profile","wordpress-seo"),id:`social-input-other-url-${n}`,value:t,socialMedium:"other",index:n,onChange:o,placeholder:(0,i.__)("E.g. https://social-platform.com/yoast","wordpress-seo"),feedback:{type:"error",isVisible:l.includes("other_social_urls-"+n),message:[(0,i.__)("Could not save this value. Please check the URL.","wordpress-seo")]}}),(0,e.createElement)("button",{type:"button",className:"yst-mt-[27.5px] yst-ml-2 yst-p-3 yst-text-slate-500 yst-rounded-md hover:yst-text-primary-500 focus:yst-text-primary-500 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-primary-500 yst-no-underline;",id:`remove-profile-${n}`,"data-index":n,onClick:d},(0,e.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,i.__)("Delete item","wordpress-seo")),(0,e.createElement)(w,{className:"yst-w-5 yst-h-5"})))))),(0,e.createElement)(s.Button,{id:"add-profile",variant:"secondary",className:"yst-items-center yst-mt-8",onClick:n,"data-hiive-event-name":"clicked_add_profile"},(0,e.createElement)(x,{className:"yst-w-5 yst-h-5 yst-mr-1 yst-text-slate-400"}),u))};S.propTypes={fieldType:E().elementType.isRequired,items:E().array.isRequired,onAddProfile:E().func.isRequired,onRemoveProfile:E().func.isRequired,onChangeProfile:E().func.isRequired,errorFields:E().array,addButtonChildren:E().node},S.defaultProps={errorFields:[],addButtonChildren:(0,i.__)("Add another profile","wordpress-seo")};const _=S,O=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}))})),R=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}))})),C=({texts:t,id:n,as:r,...s})=>{const i=(0,a.useMemo)((()=>(0,o.last)(t)),[t]);return(0,e.createElement)(r,{id:n,...s},t.map(((t,r)=>(0,e.createElement)(a.Fragment,{key:`${n}-text-${r}`},t,i!==t&&(0,e.createElement)("br",null)))))};C.defaultProps={as:"p"},C.propTypes={texts:E().arrayOf(E().string).isRequired,id:E().string.isRequired,as:E().oneOfType([E().string,E().elementType])};const k=C;function T({hasError:t,hasSuccess:n}){return t?(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-3"},(0,e.createElement)(O,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-red-500"})):n?(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-3"},(0,e.createElement)(R,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-emerald-600"})):null}function P({className:t,id:n,label:r,description:s,value:o,onChange:i,placeholder:l,feedback:c,type:u,...d}){const p=u||"text",f=(0,a.useMemo)((()=>c.isVisible&&"error"===c.type),[c.isVisible,c.type]),h=(0,a.useMemo)((()=>c.isVisible&&"success"===c.type),[c.isVisible,c.type]);return(0,e.createElement)("div",{className:t},r&&(0,e.createElement)("label",{className:"yst-block yst-mb-2 yst-font-medium yst-text-slate-700",htmlFor:n},r),(0,e.createElement)("div",{className:"yst-relative"},(0,e.createElement)("input",{id:n,type:p,value:o,className:m()("yst-block yst-w-full yst-h-[45px] yst-input focus:yst-ring-1",{"yst-border-red-300 yst-text-red-900 focus:yst-ring-red-500 focus:yst-border-red-500":f,"yst-border-emerald-600 yst-text-slate-700 focus:yst-ring-emerald-600 focus:yst-border-emerald-600":h,"yst-text-slate-700 yst-border-slate-300 focus:yst-ring-primary-500 focus:yst-border-primary-500":!f&&!h}),onChange:i,placeholder:l,...y(n,c),...d}),(0,e.createElement)(T,{hasError:f,hasSuccess:h})),c.isVisible&&(0,e.createElement)(k,{id:`${f?"error-":"success-"}${n}`,className:m()("yst-mt-2 yst-text-sm",{"yst-text-red-600":f,"yst-text-emerald-600":h}),texts:c.message}),s)}function N({id:t,onChange:n,socialMedium:r,isDisabled:s,...o}){const i=(0,a.useCallback)((e=>{n(e.target.value,"other"===r?o.index:r)}),[r,o.index]);return(0,e.createElement)(P,{onChange:i,disabled:s,id:t,...o})}function I({socialProfiles:t,errorFields:n,dispatch:r}){const s=(0,a.useCallback)(((e,t)=>{r({type:"CHANGE_SOCIAL_PROFILE",payload:{socialMedium:t,value:e}})}),[]),o=(0,a.useCallback)(((e,t)=>{r({type:"CHANGE_OTHERS_SOCIAL_PROFILE",payload:{index:t,value:e}})}),[]),i=(0,a.useCallback)((()=>{r({type:"ADD_OTHERS_SOCIAL_PROFILE",payload:{value:""}})}),[]),l=(0,a.useCallback)((e=>{r({type:"REMOVE_OTHERS_SOCIAL_PROFILE",payload:{index:e}})}),[]);return(0,e.createElement)(M,{socialProfiles:t,onChangeHandler:s,onChangeOthersHandler:o,onAddProfileHandler:i,onRemoveProfileHandler:l,errorFields:n})}function M({socialProfiles:t,onChangeHandler:n,onChangeOthersHandler:r,onAddProfileHandler:a,onRemoveProfileHandler:s,errorFields:o}){return(0,e.createElement)("div",{id:"social-input-section"},(0,e.createElement)(N,{className:"yst-mt-4",label:(0,i.__)("Facebook","wordpress-seo"),id:"social-input-facebook-url",value:t.facebookUrl,socialMedium:"facebookUrl",onChange:n,placeholder:(0,i.__)("E.g. https://facebook.com/yoast","wordpress-seo"),feedback:{message:[(0,i.__)("Could not save this value. Please check the URL.","wordpress-seo")],isVisible:o.includes("facebook_site"),type:"error"}}),(0,e.createElement)(N,{className:"yst-mt-4",label:(0,i.__)("X","wordpress-seo"),id:"social-input-twitter-url",value:t.twitterUsername,socialMedium:"twitterUsername",onChange:n,placeholder:(0,i.__)("E.g. https://x.com/yoast","wordpress-seo"),feedback:{message:[(0,i.__)("Could not save this value. Please check the URL or username.","wordpress-seo")],isVisible:o.includes("twitter_site"),type:"error"}}),(0,e.createElement)(_,{items:t.otherSocialUrls,onAddProfile:a,onRemoveProfile:s,onChangeProfile:r,errorFields:o,fieldType:N}))}T.propTypes={hasError:v.PropTypes.bool,hasSuccess:v.PropTypes.bool},T.defaultProps={hasError:!1,hasSuccess:!1},P.propTypes={className:v.PropTypes.string,id:v.PropTypes.string.isRequired,label:v.PropTypes.string,description:v.PropTypes.node,value:v.PropTypes.string,onChange:v.PropTypes.func.isRequired,placeholder:v.PropTypes.string,feedback:v.PropTypes.shape({type:v.PropTypes.string,message:v.PropTypes.array,isVisible:v.PropTypes.bool}),type:v.PropTypes.string},P.defaultProps={value:"",className:"",label:"",description:null,placeholder:"",feedback:{message:[],isVisible:!1},type:"text"},N.propTypes={id:E().string.isRequired,onChange:E().func.isRequired,socialMedium:E().string,isDisabled:E().bool},N.defaultProps={socialMedium:"",isDisabled:!1},I.propTypes={socialProfiles:E().object.isRequired,dispatch:E().func.isRequired,errorFields:E().array},I.defaultProps={errorFields:[]},M.propTypes={socialProfiles:E().object.isRequired,onChangeHandler:E().func.isRequired,onChangeOthersHandler:E().func.isRequired,onAddProfileHandler:E().func.isRequired,onRemoveProfileHandler:E().func.isRequired,errorFields:E().array.isRequired};const L=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}))})),F=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}))})),A=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}))}));var D=n(8133);function z({type:t,children:n,className:r}){let a,s;switch(t){case"info":a=(0,e.createElement)(L,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-blue-500"}),s="yst-bg-blue-100 yst-text-blue-800";break;case"warning":a=(0,e.createElement)(F,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-yellow-500"}),s="yst-bg-yellow-100 yst-text-yellow-800";break;case"error":a=(0,e.createElement)(A,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-red-500"}),s="yst-bg-red-100 yst-text-red-800";break;case"success":a=(0,e.createElement)(R,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-emerald-600"}),s="yst-bg-green-100 yst-text-green-800"}return(0,e.createElement)("div",{className:m()("yst-flex yst-p-4 yst-rounded-md",s,r)},a,(0,e.createElement)("div",{className:"yst-flex-1 yst-ml-3 yst-text-sm"},n))}function q({id:t,isVisible:n,expandDuration:r,type:s,children:o,className:i}){const[l,c]=(0,a.useState)(n?"yst-opacity-100":"yst-opacity-0"),u=(0,a.useCallback)((()=>{c("yst-opacity-100")}),[]);return(0,e.createElement)(D.Z,{id:t,height:n?"auto":0,easing:"linear",duration:r,onAnimationEnd:u},(0,e.createElement)(z,{type:s,className:m()("yst-transition-opacity yst-duration-300 yst-mt-4",l,i)},o))}function j({state:t,dispatch:n,setErrorFields:r}){const s=(0,i.__)("If you select a Person to represent this site, we will use the social profiles from the selected user's profile page.","wordpress-seo"),o=(0,a.createInterpolateElement)((0,i.sprintf)( // translators: %1$s is replaced by the selected person's username. (0,i.__)("You have selected the user %1$s as the person this site represents.","wordpress-seo"),`${t.personName}`),{b:(0,e.createElement)("b",null)}),l=(0,a.createInterpolateElement)((0,i.sprintf)( // translators: %1$s and %2$s is replaced by a link to the selected person's profile page. (0,i.__)("You can %1$supdate or add social profiles to this user profile%2$s.","wordpress-seo"),"",""),{a:(0,e.createElement)("a",{id:"yoast-configuration-person-social-profiles-user-link",href:window.wpseoScriptData.userEditUrl.replace("{user_id}",t.personId),target:"_blank",rel:"noopener noreferrer","data-hiive-event-name":"clicked_update_or_add_profile | social profiles"})}),c=(0,i.__)("You're not allowed to edit the social profiles of this user. Please ask this user or an admin to do this.","wordpress-seo");return["company","emptyChoice"].includes(t.companyOrPerson)?(0,e.createElement)(a.Fragment,null,(0,e.createElement)("p",null,(0,i.__)("Fantastic work! Add your organization's social media accounts below. This allows us to fine-tune the metadata for these platforms.","wordpress-seo")),(0,e.createElement)(I,{socialProfiles:t.socialProfiles,dispatch:n,errorFields:t.errorFields,setErrorFields:r})):0===t.personId?(0,e.createElement)(a.Fragment,null,(0,e.createElement)("p",null,s),(0,e.createElement)(z,{type:"info",className:"yst-mt-5"}, // translators: please note that "Site representation" here refers to the name of a step in the first-time configuration, so this occurrence needs to be translated in the same manner as that step's heading. (0,i.__)("Please select a user in the Site representation step.","wordpress-seo"))):(0,e.createElement)(a.Fragment,null,(0,e.createElement)("p",null,o," ",t.canEditUser?l:c))}z.propTypes={type:E().oneOf(["info","warning","error","success"]),children:E().oneOfType([E().arrayOf(E().node),E().node]).isRequired,className:E().string},z.defaultProps={type:"info",className:""},q.propTypes={id:E().string.isRequired,isVisible:E().bool.isRequired,type:E().oneOf(["info","warning","error","success"]),children:E().oneOfType([E().arrayOf(E().node),E().node]).isRequired,expandDuration:E().number,className:E().string},q.defaultProps={expandDuration:400,type:"info",className:""},j.propTypes={state:E().object.isRequired,dispatch:E().func.isRequired,setErrorFields:E().func.isRequired};const U={slideDuration:500,fadeDuration:200,delayBeforeOpening:900,delayBeforeFadingIn:1400,delayBeforeClosing:200},$={fadeDuration:"yst-duration-200",slideDuration:"yst-duration-500",delayBeforeOpening:"yst-delay-[900ms]",delayUntilStepFaded:"yst-delay-200"},H=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"}))})),{slideDuration:V,delayUntilStepFaded:B}=$,Z=`yst-transition-opacity ${V} yst-absolute yst-inset-0 yst-border-2 yst-flex yst-items-center yst-justify-center yst-rounded-full`;function G(e){return`${Z} ${e?"yst-opacity-100":`${B} yst-opacity-0`}`}function W({isVisible:t}){return(0,e.createElement)("span",{className:`yst-bg-white yst-border-primary-500 ${G(t)}`},(0,e.createElement)("span",{className:"yst-h-2.5 yst-w-2.5 yst-rounded-full yst-bg-primary-500"}))}function Y({isVisible:t}){return(0,e.createElement)("span",{className:`yst-bg-primary-500 yst-border-primary-500 ${G(t)}`},(0,e.createElement)(H,{className:"yst-w-5 yst-h-5 yst-text-white","aria-hidden":"true"}))}function Q({isVisible:t}){return(0,e.createElement)("span",{className:`yst-bg-white yst-border-slate-300 ${G(t)}`},(0,e.createElement)("span",{className:"yst-h-2.5 yst-w-2.5 yst-rounded-full yst-bg-transparent"}))}function K({activationDelay:t,deactivationDelay:n,isFinished:r}){const{activeStepIndex:s,stepIndex:o,lastStepIndex:i}=le(),l=o===i,c=s===o,[u,d]=(0,a.useState)((()=>!!c&&!l));return(0,a.useEffect)((()=>{if(c){const e=setTimeout((()=>{d(!0)}),t);return()=>clearTimeout(e)}const e=setTimeout((()=>{d(!1)}),n);return()=>clearTimeout(e)}),[c,l,t,n]),(0,e.createElement)("span",{className:"yst-relative yst-z-10 yst-w-8 yst-h-8 yst-rounded-full"},(0,e.createElement)(Q,{isVisible:!0}),(0,e.createElement)(Y,{isVisible:r}),(0,e.createElement)(W,{isVisible:u&&!l}))}function J(e,t,n){return t&&!n?"yst-text-primary-500":e?"yst-text-slate-900":"yst-text-slate-600"}function X({name:t,description:n,isFinished:r,children:s}){const{stepIndex:o,activeStepIndex:i,lastStepIndex:l}=le(),c=i===o,u=l===o,[d,p]=(0,a.useState)(J(r,c,u));return(0,a.useEffect)((()=>{if(c){const e=J(r,c,u),t=setTimeout((()=>p(e)),U.delayBeforeOpening);return()=>clearTimeout(t)}const e=J(r,c,u);p(e)}),[i,r,u,J]),(0,e.createElement)("div",{className:"yst-relative yst-flex yst-items-center yst-group","aria-current":c?"step":null},(0,e.createElement)("span",{className:"yst-flex yst-items-center","aria-hidden":c?"true":null},(0,e.createElement)(K,{activationDelay:U.delayBeforeOpening,deactivationDelay:0,isFinished:r})),(0,e.createElement)("span",{className:"yst-ml-4 yst-min-w-0 yst-flex yst-flex-col"},(0,e.createElement)("span",{className:`yst-transition-colors yst-duration-500 yst-text-xs yst-font-[650] yst-tracking-wide yst-uppercase ${d}`},t),n&&(0,e.createElement)("span",{className:"yst-text-sm yst-text-slate-600"},n)),s)}W.propTypes={isVisible:E().bool},W.defaultProps={isVisible:!0},Y.propTypes={isVisible:E().bool},Y.defaultProps={isVisible:!0},Q.propTypes={isVisible:E().bool},Q.defaultProps={isVisible:!0},K.propTypes={isFinished:E().bool.isRequired,activationDelay:E().number,deactivationDelay:E().number},K.defaultProps={activationDelay:0,deactivationDelay:0},X.propTypes={name:E().string.isRequired,isFinished:E().bool.isRequired,description:E().string,children:E().node},X.defaultProps={description:"",children:[]};const{slideDuration:ee,delayBeforeOpening:te,delayBeforeFadingIn:ne,delayBeforeClosing:re}=U,{fadeDuration:ae,delayUntilStepFaded:se,slideDuration:oe}=$,ie=(0,a.createContext)();function le(){const e=(0,a.useContext)(ie);if(!e)throw new Error("Stepper compound components cannot be rendered outside the Stepper component");return e}function ce({beforeGo:t,children:n,destination:r,...o}){const{stepIndex:i,setActiveStepIndex:l,lastStepIndex:c}=le(),u=(0,a.useCallback)((()=>{l("string"==typeof r?"last"===r?c:0:i+r)}),[i,c,l,r]),d=(0,a.useCallback)((async()=>{let e=!0;t&&(e=!1,e=await t()),e&&u()}),[u,t]);return(0,e.createElement)(s.Button,{onClick:d,...o},n)}function ue({children:t,...n}){const{stepIndex:r,setActiveStepIndex:o}=le(),i=(0,a.useCallback)((()=>{o(r)}),[o,r]);return(0,e.createElement)(s.Button,{onClick:i,variant:"secondary",size:"small",...n},t)}function de({children:t}){const{lastStepIndex:n,stepIndex:r,activeStepIndex:s}=le();return(0,e.createElement)(a.Fragment,null,r!==n&&(0,e.createElement)(a.Fragment,null,(0,e.createElement)("div",{className:"yst--ml-px yst-absolute yst-left-4 yst-w-0.5 yst-h-full yst-bg-slate-300 yst--bottom-6","aria-hidden":"true"}),(0,e.createElement)("div",{className:`yst-h-12 yst-transition-transform ${se} yst-ease-linear ${oe} ${r{s?(i("auto"),setTimeout((()=>c(!1)),ne)):(c(!0),i(0))}),[s]),(0,e.createElement)(a.Fragment,null,(0,e.createElement)(D.Z,{id:`content-${r}`,delay:0===o?re:te,height:o,easing:"ease-in-out",duration:ee},(0,e.createElement)("div",{className:`yst-transition-opacity ${ae} yst-relative yst-ml-12 yst-mt-4 yst-pb-1 ${l?"yst-opacity-0 yst-pointer-events-none":"yst-opacity-100"}`},t)))}function fe({children:t,setActiveStepIndex:n,activeStepIndex:r,isStepperFinished:a}){return(0,e.createElement)("ol",null,t.map(((s,o)=>(0,e.createElement)("li",{key:`${s.props.name}-${o}`,className:(o===t.length-1?"":"yst-pb-8")+" yst-mb-0 yst-relative yst-max-w-none"},(0,e.createElement)(ie.Provider,{value:{stepIndex:o,activeStepIndex:r,setActiveStepIndex:n,lastStepIndex:t.length-1,isStepperFinished:a}},s)))))}ce.propTypes={beforeGo:E().func,children:E().node,destination:E().oneOfType([E().number,E().oneOf(["first","last"])])},ce.defaultProps={beforeGo:null,children:(0,e.createElement)(a.Fragment,null,(0,i.__)("Continue","wordpress-seo")),destination:1},ue.propTypes={children:E().node},ue.defaultProps={children:(0,e.createElement)(a.Fragment,null,(0,i.__)("Edit","wordpress-seo"))},de.propTypes={children:E().node.isRequired},pe.propTypes={id:E().string.isRequired,message:E().string.isRequired,className:E().string},pe.defaultProps={className:""},me.propTypes={children:E().node.isRequired},fe.propTypes={setActiveStepIndex:E().func.isRequired,activeStepIndex:E().number.isRequired,isStepperFinished:E().bool,children:E().node.isRequired},fe.defaultProps={isStepperFinished:!1},de.Content=me,de.Error=pe,de.Header=X,de.GoButton=ce,de.EditButton=ue;const ye={optimizeSeoData:"optimizeSeoData",siteRepresentation:"siteRepresentation",socialProfiles:"socialProfiles",personalPreferences:"personalPreferences"},he={[ye.optimizeSeoData]:"data optimization",[ye.siteRepresentation]:"site representation",[ye.socialProfiles]:"social profiles",[ye.personalPreferences]:"personal preferences"};function be({stepId:t,beforeGo:n,children:r,additionalClasses:a,...s}){return(0,e.createElement)(de.GoButton,{id:`button-${t}-continue`,variant:"primary",className:a,destination:1,beforeGo:n,"data-hiive-event-name":`clicked_continue | ${he[t]}`,...s},r)}function ge({stepId:t,beforeGo:n,isVisible:r,children:a,additionalClasses:s,...o}){const i=`yst-transition-opacity ${$.slideDuration} yst-ease-out ${r?"yst-opacity-100":`${$.delayBeforeOpening} yst-opacity-0 yst-pointer-events-none yst-hidden`}`;return(0,e.createElement)(de.GoButton,{id:`button-${t}-edit`,variant:"secondary",size:"small",className:m()(i,s),destination:0,beforeGo:n,"data-hiive-event-name":`clicked_edit | ${he[t]}`,...o},a)}function ve({stepId:t,beforeGo:n,children:r,additionalClasses:a,...s}){return(0,e.createElement)(de.GoButton,{id:`button-${t}-back`,variant:"secondary",className:a,destination:-1,beforeGo:n,"data-hiive-event-name":`clicked_go_back | ${he[t]}`,...s},r)}function Ee({stepId:t,beforeContinue:n,continueLabel:r,beforeBack:a,backLabel:s}){return(0,e.createElement)("div",{className:"yst-mt-12"},(0,e.createElement)(be,{stepId:t,beforeGo:n},r),(0,e.createElement)(ve,{stepId:t,additionalClasses:"yst-ml-3",beforeGo:a},s))}function we({stepId:t,stepperFinishedOnce:n,saveFunction:r,setEditState:s}){const o=(0,a.useCallback)((async()=>{const e=await r();return s(!e),e}),[r]);return n?(0,e.createElement)(de.GoButton,{id:`button-${t}-go`,variant:"primary",className:"yst-mt-12",destination:"last",beforeGo:o,"data-hiive-event-name":`clicked_save_changes | ${he[t]}`},(0,i.__)("Save changes","wordpress-seo")):(0,e.createElement)(Ee,{stepId:t,beforeContinue:r,continueLabel:(0,i.__)("Save and continue","wordpress-seo")})}var xe,Se,_e,Oe,Re,Ce,ke,Te,Pe,Ne,Ie,Me,Le,Fe,Ae,De,ze,qe,je,Ue,$e,He,Ve,Be,Ze,Ge,We,Ye,Qe,Ke,Je,Xe,et,tt,nt,rt,at,st,ot,it,lt,ct,ut,dt,pt,mt,ft,yt,ht,bt,gt;function vt(){return vt=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",vt({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 262.37 284.15"},t),xe||(xe=e.createElement("path",{fill:"#f0ecf0",d:"M262.37 153A131.19 131.19 0 1 0 54.71 259.56a28.08 28.08 0 0 1 1.91-7.37c2-4.92-12.06-11.1-7.52-26.48 3.49-11.81 30.9-25.16 37.1-41.56 2.4-6.32 12-30.34 29.69-35.66 9-2.7 48.29-13.29 60.25-11.07s37.48 11 31.66 41.46c-10.26 53.79-44.8 59.12-46.28 94.64a27.46 27.46 0 0 0 .65 6.94A131.23 131.23 0 0 0 262.37 153Z"})),Se||(Se=e.createElement("path",{fill:"#006531",d:"M161.52 273.52c1.44-35.53 36-40.85 46.28-94.64 5.82-30.51-19.7-39.25-31.66-41.46s-51.23 8.37-60.25 11.07c-17.72 5.32-27.29 29.34-29.69 35.66-6.2 16.4-33.61 29.75-37.1 41.56-4.54 15.38 9.53 21.56 7.52 26.48a28.08 28.08 0 0 0-1.91 7.37 131.71 131.71 0 0 0 12.68 8.05 184.18 184.18 0 0 1 7.18-34.05c-4.12-2.43-8.32-4-19.15-2.33 16.06-23.66 34.79-45.11 64.9-65.12 2.54 22.59 3.65 40.75 14.49 60-14.93-3.2-25.12 0-32 4.77a103.74 103.74 0 0 0-4.6 49.12 132 132 0 0 0 64 .49 27.23 27.23 0 0 1-.69-6.97Z"})),_e||(_e=e.createElement("path",{fill:"#89bc3b",d:"M102.8 230.9c6.89-4.73 17.08-8 32-4.77-10.84-19.27-12-37.43-14.49-60-30.11 20-48.84 41.46-64.9 65.12 10.83-1.66 15-.1 19.15 2.33a184.18 184.18 0 0 0-7.18 34A130.42 130.42 0 0 0 98.21 280a103.65 103.65 0 0 1 4.59-49.1Z"})),Oe||(Oe=e.createElement("path",{fill:"#093f22",d:"M61.29 184.66c-4.39 13.11-15 33.6-14.52 47.42 11.9-18 34.83-42.28 46.73-60.26 2.69-4.08 1.49-10.8-3.21-13.29-3.83-2-8.45-.15-11.7 1.92-8.3 5.28-14.21 14.98-17.3 24.21Zm72.61 58.65 18.32-60.92s.51 11.07 1.1 9.3 16.4-28.8 16.4-28.8l-28.14 81Z"})),Re||(Re=e.createElement("path",{fill:"#006531",d:"M169.31 113.64c.71 13.17 6.24 22.36 5.36 25.68-33.67 6.42-49.16 29.46-54 28.88-6.67-3.85-5.76-14.39-5.54-17.71 3.55-6.65-.12-17.65 1.77-23.89 1.4-4.6 9.38-12.6 18.1-14.53s33.93-5.54 34.31 1.57Z"})),Ce||(Ce=e.createElement("path",{fill:"#b498c6",d:"M122.32 166.11c6.09-9.75 11.1-30.31 14.62-33.9 3.33-3.39 22.1-12 26.12-13.51 1.56-1.22 2-2.55 2.09-6.65l.23-19.82-45.16 16.39 2.53 37.22c.67 5.09.35 10.08-.43 20.27Z"})),ke||(ke=e.createElement("path",{fill:"#8b6c9c",d:"m166.15 92.89-.64 7.17c-.94 12.77-25.4 31.3-38.1 30.12-4.6-.42-5.78-10.38-7.39-15.06l-2.61-9.52Z"})),Te||(Te=e.createElement("path",{fill:"#b498c6",d:"M157.71 192S128 247.74 126 254s-.23 13.67 4.49 15.24 16.51.6 24.27-7.47c5.9-6.14 28.74-39.14 29.45-39.85.06-13.3-7.49-22.14-26.5-29.92Z"})),Pe||(Pe=e.createElement("ellipse",{cx:106.71,cy:192.91,fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,rx:8.8,ry:5.58,transform:"rotate(-19.17 106.716 192.914)"})),Ne||(Ne=e.createElement("path",{fill:"#f19018",d:"M92.72 206.13c4.25-1.18 9.78-1.68 17-1.26-6.39 3.89-15.24 15.48-15.51 17.65a87.16 87.16 0 0 1 11-1.88c-16 10.81-23.79 31.12-22.85 30.75-1.24.41-3.63-21.77 6.06-31.06a32.05 32.05 0 0 0-7.73 1.1c1.68-4.03 6.97-11.62 12.03-15.3Z"})),Ie||(Ie=e.createElement("path",{fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,d:"M92.72 206.13c4.25-1.18 9.78-1.68 17-1.26-6.39 3.89-15.24 15.48-15.51 17.65a87.16 87.16 0 0 1 11-1.88c-16 10.81-23.79 31.12-22.85 30.75-1.24.41-3.63-21.77 6.06-31.06a32.05 32.05 0 0 0-7.73 1.1c1.68-4.03 6.97-11.62 12.03-15.3Z"})),Me||(Me=e.createElement("path",{fill:"#006531",d:"M183.45 223.15c-3.73-9.11-19.27-19.94-31.68-20.38 7.54-16.39 11.46-29.12 19.31-42.24 0 0-5.74-22.74-1-22.2 8.52 1 19-7.56 33.67-4.23 14.25 3.23 20.27 23.26 17 38-4.47 19.9-40.04 54.49-37.3 51.05Z"})),Le||(Le=e.createElement("path",{fill:"#8b6c9c",d:"M80 254.38C77.79 252.17 71.81 244 65.6 244s-33 6.87-33 6.87l-.45 9.3s16.69 1.77 19.94 2.22 16-3.55 16-3.55Z"})),Fe||(Fe=e.createElement("path",{fill:"#8b6c9c",d:"M72.14 260.36c-12.31-.11-23.45 6.28-26.55 5.39-4.1-1.33-4.21.82-6.64.59s-6.7-3.65-6.7-3.65l.12-12.3 39 7.09Z"})),Ae||(Ae=e.createElement("path",{fill:"#8b6c9c",d:"M50.63 262.9c-4.43-2.21-15.73 4.28-17.74 2.71-4.64-3.65-8.27-6.21-9.3-8.42s2.47-5.91 1.59-16.1c-.44-5.07 4.31-5.32 6.09-1.33.93 2.1 1.33 13.51 1.33 13.51l7.63 2.1Z"})),De||(De=e.createElement("path",{fill:"#b498c6",d:"M100.38 163.12c.89 4-22.61 60.35-31.91 76.3S40.9 257.36 40.9 257.36s-14.48-.79-9.17-22.05 24.47-27.82 31.55-37.42 20.27-29 20.27-33.45c0-3.1 15.95-5.31 16.83-1.32Z"})),ze||(ze=e.createElement("path",{fill:"#8b6c9c",d:"M100.48 163.09a3.78 3.78 0 0 1 0 .95 9.1 9.1 0 0 1-.16.91c-.12.6-.29 1.19-.44 1.78-.33 1.17-.69 2.34-1.06 3.5-.76 2.32-1.56 4.62-2.38 6.92Q94 184 91.28 190.83q-5.4 13.59-11.26 27-2.92 6.71-6 13.34A63.91 63.91 0 0 1 66.55 244 35.8 35.8 0 0 1 55 253.26a38.85 38.85 0 0 1-14.07 4.2v-.2a41.07 41.07 0 0 0 6.94-2.09 39.27 39.27 0 0 0 6.44-3.17A35.56 35.56 0 0 0 65 242.71a26.19 26.19 0 0 0 2-2.9c.66-1 1.22-2.05 1.8-3.1q1.74-3.18 3.36-6.44c2.2-4.33 4.31-8.71 6.37-13.12q6.14-13.23 11.79-26.7 2.85-6.72 5.53-13.51c.88-2.27 1.74-4.55 2.56-6.84.4-1.14.79-2.29 1.15-3.46.17-.58.35-1.16.48-1.75a6.54 6.54 0 0 0 .18-.88 3.19 3.19 0 0 0 .06-.87Z"})),qe||(qe=e.createElement("path",{fill:"#8b6c9c",d:"M98.61 166.22s10.4-10 11.73-14c1.78-5.31-.21-15.41 2.56-22.17 1.13-2.77 5-12.4 5.3-13.28s-3.13-2.36-4.76-1.77a17.06 17.06 0 0 0-6.26 5.61c-1.33 2.22-.68 10.15-4.37 11.34s-18.23 10.61-18.38 17.4.44 11.85 14.18 16.87Z"})),je||(je=e.createElement("path",{fill:"#8b6c9c",d:"m100.38 163.12 8.42-13.74-13.74-19s4.35-12 5.09-16.39 3.84-11.14.56-18.17c-2.12-4.55-4.79-5-5.09-2.1s-1.16 13.72-2.62 17.12-8.08 14.62-8.08 14.62l-12.4 14.62Z"})),Ue||(Ue=e.createElement("path",{fill:"#b498c6",d:"M138.58 5.48c-20.7-.38-38 19.23-39.7 21.63-1.34 1.94-5.06 12-6.58 19.34.42-1.33.87-2.62 1.33-3.85 13.19-6.56 37.64-4.79 70.11 2.89 1.75 6.74 1.36 12.38 1.15 20.18 0 0-15.4 8.58-24.28 9.94-7.5 1.16-11.68-1.37-14.5-3.62-4-3.18-7.61-9.22-13.15-9.67-5.81-.47-7.83 9.3-10.72 9-1.73-.18-7.25.7-9.63 2.76a34.28 34.28 0 0 0-.24 9.16c1.25 5.91 5.63 11.61 8.16 14.52s4.19 11.43 8.45 15.76c9.81 9.93 47-6.94 55.48-17.25 3.75-4.53 8.8-28 8.8-28s10.52-10.21 10.46-16.87c-.21-22.82-17.07-45.4-45.14-45.92Z"})),$e||($e=e.createElement("path",{fill:"#fcee21",d:"M92.41 51.14a78.25 78.25 0 0 1 .88-8.53C83.1 69 92.42 74.26 92.61 74.09a39.64 39.64 0 0 1 2.9-8.67s-3.36-7.58-3.1-14.28Z"})),He||(He=e.createElement("path",{fill:"#fbb03b",d:"M102.24 71.33c2.89.29 4.91-9.48 10.72-9 5.54.45 9.14 6.49 13.15 9.67 2.82 2.25 7 4.78 14.5 3.62 8.88-1.36 24.28-9.94 24.28-9.94.21-7.8.6-13.44-1.15-20.18-32.47-7.69-56.92-9.5-70.11-2.9-.89 2-1.63 13.3-1.63 13.3-.3 5 .89 6.64 3.47 9.52a42 42 0 0 0-2.82 8.67c2.35-2.09 7.86-2.94 9.59-2.76Z"})),Ve||(Ve=e.createElement("path",{fill:"#89bc3b",d:"M156 194.13c7.53-.89 21.71 6.87 26.81 12.62 14.42-12.32 25.39-37.37 27.91-45.19 6.64-20.6-11.52-28.35-11.52-28.35l2.44.66s18.38 5.76 14.84 31.9c-1.24 9.13-14.64 33.72-28.8 46.3.89 1.55 2.22 3.32 2.66 4.87l-6.65 6.43c-2.66-8.42-22.81-20.82-31.9-20.6Z"})),Be||(Be=e.createElement("path",{fill:"#b498c6",d:"M86.65 168.87c-.89-1.32-17.89-25.57-18.34-28.67s4.69-7.7 6.13-7c9.64 4.61 24.21 17.67 26 22.1s-.71 11.59-.71 11.59Zm-8.86-38.1s12.14-11.89 15.09-12 10.11 6 13.11 7.91c3.2 2 3.87 7.13 8.23 10.45.44 2.07-2.22 3.42-5.62 2.39s-7.34-6.81-7.34-6.81l-7.12-3.46-8.38 6.88Z"})),Ze||(Ze=e.createElement("path",{fill:"#b498c6",d:"M74.24 133s11.93-9 13.4-9 12.38 7.59 13.42 9.22 1.88 8.59 3.75 14.86c.65 2.17-3.28 5.17-6.53 1.33s-4.77-10.32-4.77-10.32l-7.33-4.61-5.29 3.85Z"})),Ge||(Ge=e.createElement("path",{fill:"#8b6c9c",d:"M84.58 124.87a4.75 4.75 0 0 1 3-1.15 7.83 7.83 0 0 1 3.22.82 21.82 21.82 0 0 1 2.69 1.76c.86.62 1.71 1.25 2.56 1.89a47.7 47.7 0 0 1 4.94 4.14 4.21 4.21 0 0 1 .55.71 5.87 5.87 0 0 1 .36.81c.18.53.33 1.05.46 1.57.26 1 .48 2.08.7 3.12.44 2.07.87 4.14 1.37 6.19.25 1 .53 2 .82 3a2.42 2.42 0 0 1 .12 1 2.36 2.36 0 0 1-.26.93 3.58 3.58 0 0 1-1.21 1.34 4 4 0 0 1-3.47.47 5.93 5.93 0 0 1-2.73-2.06 12.37 12.37 0 0 1-2.52-5.93 36.66 36.66 0 0 0 3.3 5.3 5 5 0 0 0 2.26 1.74 3 3 0 0 0 2.6-.35 1.93 1.93 0 0 0 1-2.16c-.3-1-.58-2.06-.83-3.09-.51-2.07-.94-4.15-1.38-6.22-.22-1-.44-2.07-.69-3.08-.13-.51-.27-1-.43-1.49a2.76 2.76 0 0 0-.7-1.17 49.75 49.75 0 0 0-4.81-4c-.84-.63-1.69-1.26-2.55-1.88s-1.75-1.16-2.57-1.8a6.81 6.81 0 0 0-2.78-1.11 4.77 4.77 0 0 0-3.02.7Z"})),We||(We=e.createElement("path",{fill:"#b498c6",d:"M72.62 133.87s5-4.31 6.43-4.66c2.52-.63 12.51 5.9 13.36 7.77 1.31 2.91 2.2 7.57 3.87 11.4.9 2.06-2.84 2.15-5.49.53s-3.57-6.71-3.57-6.71c-2.51-1.89-4.82-2.52-6.54-3.69-.3 2.47-2.6 5.07-7 8.07Z"})),Ye||(Ye=e.createElement("path",{fill:"#8b6c9c",d:"M79.05 129.21a5.63 5.63 0 0 1 2.7.27c.88.26 1.73.57 2.58.91a28.34 28.34 0 0 1 4.81 2.54c.77.48 1.53 1 2.27 1.52a12.53 12.53 0 0 1 2.14 1.84 2.76 2.76 0 0 1 .45.71c.09.21.17.44.24.66a12.73 12.73 0 0 1 .38 1.34c.21.9.37 1.8.52 2.68a38.28 38.28 0 0 0 1.15 5.2c.13.41.29.82.46 1.22a2.2 2.2 0 0 1 .2.84 1.33 1.33 0 0 1-.37 1 2.48 2.48 0 0 1-1.56.62 6 6 0 0 1-1.47-.08 8.62 8.62 0 0 1-2.69-.94 5.84 5.84 0 0 1-2.1-2 15.27 15.27 0 0 1-2-5.2l.19.31a9.76 9.76 0 0 0-2.57-1.41 12.13 12.13 0 0 1-3-1.25l.74-.19a14 14 0 0 1-2.58 2.75 8.41 8.41 0 0 0-2.18 2.84 8.13 8.13 0 0 1 1.78-3.21 14.17 14.17 0 0 0 2.08-2.85l.23-.52.5.33a5.89 5.89 0 0 0 1.27.66l1.46.5a10.54 10.54 0 0 1 2.83 1.55l.15.11v.2a14.16 14.16 0 0 0 1.83 4.84 4.89 4.89 0 0 0 1.75 1.69 7.75 7.75 0 0 0 2.38.83 5 5 0 0 0 1.22.06 1.54 1.54 0 0 0 .92-.31c.13-.13.14-.32 0-.72s-.35-.86-.49-1.3a36.1 36.1 0 0 1-1.18-5.34c-.15-.88-.31-1.76-.51-2.61a13 13 0 0 0-.35-1.26 3.72 3.72 0 0 0-.49-1 11.48 11.48 0 0 0-1.94-1.67c-.72-.52-1.46-1-2.22-1.48-1.5-1-3.1-1.75-4.62-2.68-.78-.44-1.57-.86-2.38-1.22a5.79 5.79 0 0 0-2.53-.78Z"})),Qe||(Qe=e.createElement("path",{fill:"#006531",d:"M167.62 84.35c22.06 1.45 35.92 5.68 36.5-3.92S197.69 6.63 141.9.54C89-5.24 83.2 37.33 82.73 45s7.68 8.3 7.68 8.3c.22-4 2.07-7.82 3.22-10.71 15.18-4.88 64.17 1.48 67.52 6.22s.8 13 1.47 16.45 9.68 6.8 9.68 6.8Z"})),Ke||(Ke=e.createElement("path",{fill:"#093f22",d:"M202.05 84.6c2.39-1.92-8.89-16.64-20.3-20.87l-6 7.31-.26 12.81c7.99 2.15 22.68 3.88 26.56.75Z"})),Je||(Je=e.createElement("path",{fill:"#b498c6",d:"M180.18 72.06c3.68 2.46 4 8.69 2.45 12.56s-10.89 10.8-13.28 11.15a26.88 26.88 0 0 1-5.15-.2L171 71.7s5.51-2.1 9.18.36Z"})),Xe||(Xe=e.createElement("path",{fill:"#191a1a",d:"M165.72 67.49s-13.58 37.88-20.45 41.87c1 1 7.06-1.52 9-3.51 3.55-2.44 16.85-34.8 16.85-34.8Z"})),et||(et=e.createElement("path",{fill:"#093f22",d:"M136.35 21.41c-1.17-2.11 21.15-11.14 32.7-11.14 2.66 0 10.64 6.2 11.52 9.74-15.29-.23-43.05 3.5-44.22 1.4Zm4.82 11.1c-.92-3 31.73-6.14 43.24-3.93 6.28 1.2 8.82 13.26 4.14 11.81-12.21-3.78-46.78-5.97-47.38-7.88ZM99.94 23c2.07-.89.29-4.14-1.48-10.93a19.93 19.93 0 0 0-7.35 7.62s6.76 4.16 8.83 3.31Zm-5.66 8.72c.18-1.29-5.85-5.57-6.48-4.62a17.56 17.56 0 0 0-2.94 8.78s9.23-2.88 9.42-4.16Z"})),tt||(tt=e.createElement("path",{fill:"#fcee21",d:"M95.9 65.56c4.07.42 7.79 1.24 12.23-1 0 0-4-8.79-8.72-8s-3.51 9-3.51 9Z"})),nt||(nt=e.createElement("path",{fill:"#f15a24",d:"M108.08 64.63c-5.34-9-13.34-9.9-12.12.92-.49.07-1.34-1.88-1.61-2.93-1.29-5.79 4.65-9.51 9.59-5.14 3.17 2.79 4.45 7.01 4.14 7.15Z"})),rt||(rt=e.createElement("path",{fill:"#f15a24",d:"M106.93 52c1.27.52 2.88 4 1.65 3.5A18.34 18.34 0 0 0 92 57.38c.7-5.91 13-6.22 14.93-5.38Z"})),at||(at=e.createElement("path",{fill:"#8b6c9c",d:"M121.12 71.07c.66 1.59 1.38 3.39-.41 4.53s-4.33-2-5.87-1.57-3.88 2.72-5.55 2.41c-3.52-.66-3.15-3.48-3.15-3.48s-1.61 5.55 4 5.62c3.81 0 4.23-2.58 7.44-2.27s3.46 2.53 4.89 1.61c2.88-1.82.31-6.69-1.35-6.85Z"})),st||(st=e.createElement("path",{fill:"#8b6c9c",d:"M106.73 75.68s-2.65.74-1.19 2.49c-3.18 0-3.08-4.59-1.32-6-.75 2.66 2.51 3.51 2.51 3.51Z"})),ot||(ot=e.createElement("ellipse",{cx:98.36,cy:62.94,fill:"#f15a24",rx:3.53,ry:3.42,transform:"rotate(-5.96 98.33 62.903)"})),it||(it=e.createElement("path",{fill:"#8b6c9c",d:"M138.73 83.69c-8.66 7.53-14.4 12.67-22.62 13-9.3.32-7.2-7.2-7.2-7.2s.85-2.54 5.63-2.77 20.66-2.78 24.19-3.03Z"})),lt||(lt=e.createElement("path",{fill:"#4b3f51",d:"M108.91 89.78c.34-.46 1.86-1.93 2.29-1 1.92 3.93 8.45 1.71 28.05-5.2-15 2.26-17.88.24-20.85.48s-3.62 1.67-4.72 1.45-3.43-1.68-4.73-1.1c-3.03 1.27-2.05 3.67-.04 5.37Z"})),ct||(ct=e.createElement("path",{fill:"#8b6c9c",d:"M132.64 76.68c1.08 1.47 9.51 5.88 9.51 5.88a60.71 60.71 0 0 1-2.89 6.3c.41 0 1.39-5-.85-6.64-1.72-1.22-4.64-2.58-5.77-5.54Z"})),ut||(ut=e.createElement("path",{fill:"#b498c6",d:"M65.82 248.62c-4.13-.44-11-7.38-15.72-6.64s-9.53 5.31-9.53 5.31-12.7-4.87-16.84-4-9.45 2.36-10.63 3.54-.59 5.91 2.22 5.76 6.05-1 9.3-.44 8.73 6.36 12.41 8c14.17 6.2 29.24.44 29.24.44s3.73-11.52-.45-11.97Z"})),dt||(dt=e.createElement("path",{fill:"#8b6c9c",d:"M64.15 248c-2.62.11-5-1.72-6.28-2.59-3.86-2.56-4.62-2.62-19.34 1.45-5.79-2.69-4.72-1.58-7.88-2.74a18.46 18.46 0 0 1 8.14 1.76c-.64 0 13-5.16 16.5-3.92s6.23 5.3 8.86 6.04Z"})),pt||(pt=e.createElement("path",{fill:"#093f22",d:"M90.49 53.46a87 87 0 0 1 3.14-10.86c19.79-3.78 64.81 2.3 67.52 6.22s1.23 13.54 1.18 16.09 8.72 6.72 8.72 6.72l4.57-.74s-8.51-2.28-8.66-6.71 1.56-16.78-3.22-18.69c-29.19-11.62-64.36-8.8-72.53-6.65-6.5 1.7-9.09 6.62-7.44 10.27s6.72 4.35 6.72 4.35Zm70 24.59 7.38 2.95-3.99 9.31-7.34-2.07 3.95-10.19z"})),mt||(mt=e.createElement("path",{fill:"#b498c6",d:"M153.33 236.52c-10.63-4-31.44 3.41-44.53 5.89-29.24 5.53-37.33 5.55-44.09 6-5 .33-3.44 8.5-2.43 12.17 34.11 6.21 41.2 8.42 72 8.92 22.36-5.62 29.72-28.99 19.05-32.98Z"})),ft||(ft=e.createElement("path",{fill:"#8b6c9c",d:"M131.58 242.4c.39-2 .09-3.41.48-5.52l2.21-.22a53.48 53.48 0 0 0-2.69 5.74Z"})),yt||(yt=e.createElement("path",{fill:"#fc3",d:"M148.89 45c2 6.65 5.32 17.43 2.44 27.4-2.29 1-10 3.61-12.33 3.39.66-5.76.44-23.11-3.77-32.64 2.31.14 8.22 1.03 13.66 1.85Z"})),ht||(ht=e.createElement("path",{fill:"#fcee21",d:"M145.22 62.31c-3.94 1.59-12.14 3.79-17.43 1.19 0 0-1.22-9.33 5.51-8.76s11.92 7.57 11.92 7.57Z"})),bt||(bt=e.createElement("path",{fill:"#f15a24",d:"M127.69 63.52c-1.85-4-.92-8.41 4.11-9.48 4.24-.75 11.08 1.85 13.5 8.21-.29.22-7.6-8.06-14-6.15-4.44 1.33-3.13 7.35-3.61 7.42Zm-4.81-17.78c-1.23.51.14 4 1.3 4.36s9.23-2.79 12.1-2.41 8.81 4.79 11.58 7c-.44-1.88-7.92-9.3-10.88-9.92s-12.87.45-14.1.97Z"})),gt||(gt=e.createElement("ellipse",{cx:131.8,cy:60.56,fill:"#f15a24",rx:3.76,ry:3.99,transform:"rotate(-5.96 131.772 60.6)"})));function wt(...e){return e.filter(Boolean).join(" ")}function xt(e,t,...n){if(e in t){let r=t[e];return"function"==typeof r?r(...n):r}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,xt),r}var St,_t,Ot=((_t=Ot||{})[_t.None=0]="None",_t[_t.RenderStrategy=1]="RenderStrategy",_t[_t.Static=2]="Static",_t),Rt=((St=Rt||{})[St.Unmount=0]="Unmount",St[St.Hidden=1]="Hidden",St);function Ct({ourProps:e,theirProps:t,slot:n,defaultTag:r,features:a,visible:s=!0,name:o}){let i=Tt(t,e);if(s)return kt(i,n,r,o);let l=null!=a?a:0;if(2&l){let{static:e=!1,...t}=i;if(e)return kt(t,n,r,o)}if(1&l){let{unmount:e=!0,...t}=i;return xt(e?0:1,{0:()=>null,1:()=>kt({...t,hidden:!0,style:{display:"none"}},n,r,o)})}return kt(i,n,r,o)}function kt(t,n={},r,a){var s;let{as:o=r,children:i,refName:l="ref",...c}=It(t,["unmount","static"]),u=void 0!==t.ref?{[l]:t.ref}:{},d="function"==typeof i?i(n):i;c.className&&"function"==typeof c.className&&(c.className=c.className(n));let p={};if(n){let e=!1,t=[];for(let[r,a]of Object.entries(n))"boolean"==typeof a&&(e=!0),!0===a&&t.push(r);e&&(p["data-headlessui-state"]=t.join(" "))}if(o===e.Fragment&&Object.keys(Nt(c)).length>0){if(!(0,e.isValidElement)(d)||Array.isArray(d)&&d.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${a} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(c).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let t=wt(null==(s=d.props)?void 0:s.className,c.className),n=t?{className:t}:{};return(0,e.cloneElement)(d,Object.assign({},Tt(d.props,Nt(It(c,["ref"]))),p,u,function(...e){return{ref:e.every((e=>null==e))?void 0:t=>{for(let n of e)null!=n&&("function"==typeof n?n(t):n.current=t)}}}(d.ref,u.ref),n))}return(0,e.createElement)(o,Object.assign({},It(c,["ref"]),o!==e.Fragment&&u,o!==e.Fragment&&p),d)}function Tt(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},n={};for(let r of e)for(let e in r)e.startsWith("on")&&"function"==typeof r[e]?(null!=n[e]||(n[e]=[]),n[e].push(r[e])):t[e]=r[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map((e=>[e,void 0]))));for(let e in n)Object.assign(t,{[e](t,...r){let a=n[e];for(let e of a){if((t instanceof Event||(null==t?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;e(t,...r)}}});return t}function Pt(t){var n;return Object.assign((0,e.forwardRef)(t),{displayName:null!=(n=t.displayName)?n:t.name})}function Nt(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}function It(e,t=[]){let n=Object.assign({},e);for(let e of t)e in n&&delete n[e];return n}let Mt=(0,e.createContext)(null);Mt.displayName="OpenClosedContext";var Lt=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Lt||{});function Ft(){return(0,e.useContext)(Mt)}function At({value:t,children:n}){return e.createElement(Mt.Provider,{value:t},n)}var Dt=Object.defineProperty,zt=(e,t,n)=>(((e,t,n)=>{t in e?Dt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n})(e,"symbol"!=typeof t?t+"":t,n),n);let qt=new class{constructor(){zt(this,"current",this.detect()),zt(this,"handoffState","pending"),zt(this,"currentId",0)}set(e){this.current!==e&&(this.handoffState="pending",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}handoff(){"pending"===this.handoffState&&(this.handoffState="complete")}get isHandoffComplete(){return"complete"===this.handoffState}},jt=(t,n)=>{qt.isServer?(0,e.useEffect)(t,n):(0,e.useLayoutEffect)(t,n)};function Ut(){let t=(0,e.useRef)(!1);return jt((()=>(t.current=!0,()=>{t.current=!1})),[]),t}function $t(t){let n=(0,e.useRef)(t);return jt((()=>{n.current=t}),[t]),n}function Ht(){let[t,n]=(0,e.useState)(qt.isHandoffComplete);return t&&!1===qt.isHandoffComplete&&n(!1),(0,e.useEffect)((()=>{!0!==t&&n(!0)}),[t]),(0,e.useEffect)((()=>qt.handoff()),[]),t}let Vt=function(t){let n=$t(t);return e.useCallback(((...e)=>n.current(...e)),[n])},Bt=Symbol();function Zt(...t){let n=(0,e.useRef)(t);(0,e.useEffect)((()=>{n.current=t}),[t]);let r=Vt((e=>{for(let t of n.current)null!=t&&("function"==typeof t?t(e):t.current=e)}));return t.every((e=>null==e||(null==e?void 0:e[Bt])))?void 0:r}function Gt(){let e=[],t=[],n={enqueue(e){t.push(e)},addEventListener:(e,t,r,a)=>(e.addEventListener(t,r,a),n.add((()=>e.removeEventListener(t,r,a)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return n.add((()=>cancelAnimationFrame(t)))},nextFrame:(...e)=>n.requestAnimationFrame((()=>n.requestAnimationFrame(...e))),setTimeout(...e){let t=setTimeout(...e);return n.add((()=>clearTimeout(t)))},microTask(...e){let t={current:!0};return function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{t.current&&e[0]()})),n.add((()=>{t.current=!1}))},add:t=>(e.push(t),()=>{let n=e.indexOf(t);if(n>=0){let[t]=e.splice(n,1);t()}}),dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return n}function Wt(e,...t){e&&t.length>0&&e.classList.add(...t)}function Yt(e,...t){e&&t.length>0&&e.classList.remove(...t)}function Qt(){let[t]=(0,e.useState)(Gt);return(0,e.useEffect)((()=>()=>t.dispose()),[t]),t}function Kt({container:e,direction:t,classes:n,onStart:r,onStop:a}){let s=Ut(),o=Qt(),i=$t(t);jt((()=>{let t=Gt();o.add(t.dispose);let l=e.current;if(l&&"idle"!==i.current&&s.current)return t.dispose(),r.current(i.current),t.add(function(e,t,n,r){let a=n?"enter":"leave",s=Gt(),o=void 0!==r?function(e){let t={called:!1};return(...n)=>{if(!t.called)return t.called=!0,e(...n)}}(r):()=>{};"enter"===a&&(e.removeAttribute("hidden"),e.style.display="");let i=xt(a,{enter:()=>t.enter,leave:()=>t.leave}),l=xt(a,{enter:()=>t.enterTo,leave:()=>t.leaveTo}),c=xt(a,{enter:()=>t.enterFrom,leave:()=>t.leaveFrom});return Yt(e,...t.enter,...t.enterTo,...t.enterFrom,...t.leave,...t.leaveFrom,...t.leaveTo,...t.entered),Wt(e,...i,...c),s.nextFrame((()=>{Yt(e,...c),Wt(e,...l),function(e,t){let n=Gt();if(!e)return n.dispose;let{transitionDuration:r,transitionDelay:a}=getComputedStyle(e),[s,o]=[r,a].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));if(s+o!==0){let r=n.addEventListener(e,"transitionend",(e=>{e.target===e.currentTarget&&(t(),r())}))}else t();n.add((()=>t())),n.dispose}(e,(()=>(Yt(e,...i),Wt(e,...t.entered),o())))})),s.dispose}(l,n.current,"enter"===i.current,(()=>{t.dispose(),a.current(i.current)}))),t.dispose}),[t])}function Jt(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let Xt=(0,e.createContext)(null);Xt.displayName="TransitionContext";var en=(e=>(e.Visible="visible",e.Hidden="hidden",e))(en||{});let tn=(0,e.createContext)(null);function nn(e){return"children"in e?nn(e.children):e.current.filter((({el:e})=>null!==e.current)).filter((({state:e})=>"visible"===e)).length>0}function rn(t,n){let r=$t(t),a=(0,e.useRef)([]),s=Ut(),o=Qt(),i=Vt(((e,t=Rt.Hidden)=>{let n=a.current.findIndex((({el:t})=>t===e));-1!==n&&(xt(t,{[Rt.Unmount](){a.current.splice(n,1)},[Rt.Hidden](){a.current[n].state="hidden"}}),o.microTask((()=>{var e;!nn(a)&&s.current&&(null==(e=r.current)||e.call(r))})))})),l=Vt((e=>{let t=a.current.find((({el:t})=>t===e));return t?"visible"!==t.state&&(t.state="visible"):a.current.push({el:e,state:"visible"}),()=>i(e,Rt.Unmount)})),c=(0,e.useRef)([]),u=(0,e.useRef)(Promise.resolve()),d=(0,e.useRef)({enter:[],leave:[],idle:[]}),p=Vt(((e,t,r)=>{c.current.splice(0),n&&(n.chains.current[t]=n.chains.current[t].filter((([t])=>t!==e))),null==n||n.chains.current[t].push([e,new Promise((e=>{c.current.push(e)}))]),null==n||n.chains.current[t].push([e,new Promise((e=>{Promise.all(d.current[t].map((([e,t])=>t))).then((()=>e()))}))]),"enter"===t?u.current=u.current.then((()=>null==n?void 0:n.wait.current)).then((()=>r(t))):r(t)})),m=Vt(((e,t,n)=>{Promise.all(d.current[t].splice(0).map((([e,t])=>t))).then((()=>{var e;null==(e=c.current.shift())||e()})).then((()=>n(t)))}));return(0,e.useMemo)((()=>({children:a,register:l,unregister:i,onStart:p,onStop:m,wait:u,chains:d})),[l,i,a,p,m,d,u])}function an(){}tn.displayName="NestingContext";let sn=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function on(e){var t;let n={};for(let r of sn)n[r]=null!=(t=e[r])?t:an;return n}let ln=Ot.RenderStrategy,cn=Pt((function(t,n){let{beforeEnter:r,afterEnter:a,beforeLeave:s,afterLeave:o,enter:i,enterFrom:l,enterTo:c,entered:u,leave:d,leaveFrom:p,leaveTo:m,...f}=t,y=(0,e.useRef)(null),h=Zt(y,n),b=f.unmount?Rt.Unmount:Rt.Hidden,{show:g,appear:v,initial:E}=function(){let t=(0,e.useContext)(Xt);if(null===t)throw new Error("A is used but it is missing a parent or .");return t}(),[w,x]=(0,e.useState)(g?"visible":"hidden"),S=function(){let t=(0,e.useContext)(tn);if(null===t)throw new Error("A is used but it is missing a parent or .");return t}(),{register:_,unregister:O}=S,R=(0,e.useRef)(null);(0,e.useEffect)((()=>_(y)),[_,y]),(0,e.useEffect)((()=>{if(b===Rt.Hidden&&y.current)return g&&"visible"!==w?void x("visible"):xt(w,{hidden:()=>O(y),visible:()=>_(y)})}),[w,y,_,O,g,b]);let C=$t({enter:Jt(i),enterFrom:Jt(l),enterTo:Jt(c),entered:Jt(u),leave:Jt(d),leaveFrom:Jt(p),leaveTo:Jt(m)}),k=function(t){let n=(0,e.useRef)(on(t));return(0,e.useEffect)((()=>{n.current=on(t)}),[t]),n}({beforeEnter:r,afterEnter:a,beforeLeave:s,afterLeave:o}),T=Ht();(0,e.useEffect)((()=>{if(T&&"visible"===w&&null===y.current)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}),[y,w,T]);let P=E&&!v,N=!T||P||R.current===g?"idle":g?"enter":"leave",I=Vt((e=>xt(e,{enter:()=>k.current.beforeEnter(),leave:()=>k.current.beforeLeave(),idle:()=>{}}))),M=Vt((e=>xt(e,{enter:()=>k.current.afterEnter(),leave:()=>k.current.afterLeave(),idle:()=>{}}))),L=rn((()=>{x("hidden"),O(y)}),S);Kt({container:y,classes:C,direction:N,onStart:$t((e=>{L.onStart(y,e,I)})),onStop:$t((e=>{L.onStop(y,e,M),"leave"===e&&!nn(L)&&(x("hidden"),O(y))}))}),(0,e.useEffect)((()=>{!P||(b===Rt.Hidden?R.current=null:R.current=g)}),[g,P,w]);let F=f,A={ref:h};return v&&g&&qt.isServer&&(F={...F,className:wt(f.className,...C.current.enter,...C.current.enterFrom)}),e.createElement(tn.Provider,{value:L},e.createElement(At,{value:xt(w,{visible:Lt.Open,hidden:Lt.Closed})},Ct({ourProps:A,theirProps:F,defaultTag:"div",features:ln,visible:"visible"===w,name:"Transition.Child"})))})),un=Pt((function(t,n){let{show:r,appear:a=!1,unmount:s,...o}=t,i=(0,e.useRef)(null),l=Zt(i,n);Ht();let c=Ft();if(void 0===r&&null!==c&&(r=xt(c,{[Lt.Open]:!0,[Lt.Closed]:!1})),![!0,!1].includes(r))throw new Error("A is used but it is missing a `show={true | false}` prop.");let[u,d]=(0,e.useState)(r?"visible":"hidden"),p=rn((()=>{d("hidden")})),[m,f]=(0,e.useState)(!0),y=(0,e.useRef)([r]);jt((()=>{!1!==m&&y.current[y.current.length-1]!==r&&(y.current.push(r),f(!1))}),[y,r]);let h=(0,e.useMemo)((()=>({show:r,appear:a,initial:m})),[r,a,m]);(0,e.useEffect)((()=>{if(r)d("visible");else if(nn(p)){let e=i.current;if(!e)return;let t=e.getBoundingClientRect();0===t.x&&0===t.y&&0===t.width&&0===t.height&&d("hidden")}else d("hidden")}),[r,p]);let b={unmount:s};return e.createElement(tn.Provider,{value:p},e.createElement(Xt.Provider,{value:h},Ct({ourProps:{...b,as:e.Fragment,children:e.createElement(cn,{ref:l,...b,...o})},theirProps:{},defaultTag:e.Fragment,features:ln,visible:"visible"===u,name:"Transition"})))})),dn=Pt((function(t,n){let r=null!==(0,e.useContext)(Xt),a=null!==Ft();return e.createElement(e.Fragment,null,!r&&a?e.createElement(un,{ref:n,...t}):e.createElement(cn,{ref:n,...t}))})),pn=Object.assign(un,{Child:dn,Root:un});const mn=window.yoast.helpers;class fn extends Error{constructor(e,t,n,r,a){super(e),this.name="RequestError",this.url=t,this.method=n,this.statusCode=r,this.stackTrace=a}}const{stripTagsFromHtmlString:yn}=mn.strings,hn=["a","p"];function bn({title:t,value:n}){return n?(0,e.createElement)("p",null,(0,e.createElement)("strong",null,t),(0,e.createElement)("br",null),n):null}function gn({title:t,value:n}){return n?(0,e.createElement)("details",null,(0,e.createElement)("summary",null,t),(0,e.createElement)("pre",{className:"yst-overflow-x-scroll yst-max-w-[500px] yst-border-px yst-p-4"},n)):null}function vn({message:t,error:n,className:r}){return(0,e.createElement)(z,{type:"error",className:r},(0,e.createElement)("div",{dangerouslySetInnerHTML:{__html:yn(t,hn)}}),(0,e.createElement)("details",null,(0,e.createElement)("summary",null,(0,i.__)("Error details","wordpress-seo")),(0,e.createElement)("div",{className:"yst-mt-2"},(0,e.createElement)(bn,{title:(0,i.__)("Request URL","wordpress-seo"),value:n.url}),(0,e.createElement)(bn,{title:(0,i.__)("Request method","wordpress-seo"),value:n.method}),(0,e.createElement)(bn,{title:(0,i.__)("Status code","wordpress-seo"),value:n.statusCode}),(0,e.createElement)(bn,{title:(0,i.__)("Error message","wordpress-seo"),value:n.message}),(0,e.createElement)(gn,{title:(0,i.__)("Response","wordpress-seo"),value:n.parseString}),(0,e.createElement)(gn,{title:(0,i.__)("Error stack trace","wordpress-seo"),value:n.stackTrace}))))}bn.propTypes={title:E().string.isRequired,value:E().any},bn.defaultProps={value:""},gn.propTypes={title:E().string.isRequired,value:E().string},gn.defaultProps={value:""},vn.propTypes={message:E().string.isRequired,error:E().oneOfType([E().instanceOf(Error),E().instanceOf(fn)]).isRequired,className:E().string},vn.defaultProps={className:""};class En extends Error{constructor(e,t){super(e),this.name="ParseError",this.parseString=t}}const wn="idle",xn="in_progress",Sn="errored",On="completed";class Rn extends a.Component{constructor(e){super(e),this.settings=yoastIndexingData,this.state={state:wn,processed:0,error:null,amount:parseInt(this.settings.amount,10),firstTime:"1"===this.settings.firstTime},this.startIndexing=this.startIndexing.bind(this),this.stopIndexing=this.stopIndexing.bind(this)}async doIndexingRequest(e,t){const n=await fetch(e,{method:"POST",headers:{"X-WP-Nonce":t}}),r=await n.text();let a;try{a=JSON.parse(r)}catch(e){throw new En("Error parsing the response to JSON.",r)}if(!n.ok){const t=a.data?a.data.stackTrace:"";throw new fn(a.message,e,"POST",n.status,t)}return a}async doPreIndexingAction(e){"function"==typeof this.props.preIndexingActions[e]&&await this.props.preIndexingActions[e](this.settings)}async doPostIndexingAction(e,t){"function"==typeof this.props.indexingActions[e]&&await this.props.indexingActions[e](t.objects,this.settings)}async doIndexing(e){let t=this.settings.restApi.root+this.settings.restApi.indexing_endpoints[e];for(;this.isState(xn)&&!1!==t;)try{await this.doPreIndexingAction(e);const n=await this.doIndexingRequest(t,this.settings.restApi.nonce);await this.doPostIndexingAction(e,n),(0,a.flushSync)((()=>{this.setState((e=>({processed:e.processed+n.objects.length,firstTime:!1})))})),t=n.next_url}catch(e){(0,a.flushSync)((()=>{this.setState({state:Sn,error:e,firstTime:!1})}))}}async index(){for(const e of Object.keys(this.settings.restApi.indexing_endpoints))await this.doIndexing(e);this.isState(Sn)||this.isState(wn)||this.completeIndexing()}async startIndexing(){this.setState({processed:0,state:xn},this.index)}completeIndexing(){this.setState({state:On})}stopIndexing(){this.setState((e=>({state:wn,processed:0,amount:e.amount-e.processed})))}componentDidMount(){var e,t;if(!this.settings.disabled&&(this.props.indexingStateCallback(0===this.state.amount?"already_done":this.state.state),"true"===new URLSearchParams(window.location.search).get("start-indexation"))){const n=function(e,t){const n=new URL(e);return n.searchParams.delete("start-indexation"),n.href}(window.location.href);null,e=document.title,t=n,window.history.pushState(null,e,t),this.startIndexing()}}componentDidUpdate(e,t){this.state.state!==t.state&&this.props.indexingStateCallback(this.state.state)}isState(e){return this.state.state===e}renderFirstIndexationNotice(){return(0,e.createElement)(z,{type:"info",className:"yst-mt-6"},(0,i.__)("This feature includes and replaces the Text Link Counter and Internal Linking Analysis","wordpress-seo"))}renderStartButton(){return(0,e.createElement)(s.Button,{variant:"secondary",onClick:this.startIndexing,id:"indexation-data-optimization","data-hiive-event-name":"clicked_start_data_optimization"},(0,i.__)("Start SEO data optimization","wordpress-seo"))}renderStopButton(){return(0,e.createElement)(s.Button,{variant:"secondary",onClick:this.stopIndexing},(0,i.__)("Stop SEO data optimization","wordpress-seo"))}renderDisabledTool(){return(0,e.createElement)(a.Fragment,null,(0,e.createElement)("p",null,(0,e.createElement)(s.Button,{variant:"secondary",disabled:!0,id:"indexation-data-optimization"},(0,i.__)("Start SEO data optimization","wordpress-seo"))),(0,e.createElement)(z,{type:"info",className:"yst-mt-6"},(0,i.__)("SEO data optimization is disabled for non-production environments.","wordpress-seo")))}renderProgressBar(){let t=0;return this.isState(On)&&(t=100),this.isState(xn)&&(t=this.state.processed/parseInt(this.state.amount,10)*100),(0,e.createElement)("div",{className:"yst-w-full yst-bg-slate-200 yst-rounded-full yst-h-2.5 yst-mb-4"},(0,e.createElement)("div",{className:"yst-transition-[width] yst-ease-linear yst-bg-primary-500 yst-h-2.5 yst-rounded-full",style:{width:`${t}%`}}))}renderCaption(){return(0,e.createElement)(D.Z,{id:"optimization-in-progress-text",height:this.isState(xn)?"auto":0,easing:"linear",duration:300},(0,e.createElement)("p",{className:"yst-text-sm yst-italic yst-mb-4 yst-mt-4"},(0,i.__)("SEO data optimization is running… You can safely move on to the next steps of this configuration.","wordpress-seo")))}renderErrorAlert(){return(0,e.createElement)(vn,{message:yoastIndexingData.errorMessage,error:this.state.error,className:"yst-mb-4"})}render(){return this.settings.disabled?this.renderDisabledTool():(0,e.createElement)("div",{className:"yst-relative"},this.props.children,(0,e.createElement)(pn,{unmount:!1,show:this.isState(Sn)||this.isState(xn)||this.isState(wn)&&this.state.amount>0,leave:"yst-transition-opacity yst-duration-1000",leaveFrom:"yst-opacity-100",leaveTo:"yst-opacity-0"},this.renderProgressBar(),this.isState(Sn)&&this.renderErrorAlert(),this.isState(xn)?this.renderStopButton():this.renderStartButton(),this.renderCaption(),this.isState(wn)&&this.state.firstTime&&this.renderFirstIndexationNotice()))}}Rn.propTypes={indexingActions:E().object,preIndexingActions:E().object,indexingStateCallback:E().func,children:E().node},Rn.defaultProps={indexingActions:{},preIndexingActions:{},indexingStateCallback:()=>{},children:null};const Cn=Rn;function kn({indexingStateCallback:t,indexingState:n,isStepperFinished:r}){return(0,e.createElement)(Cn,{preIndexingActions:window.yoast.indexing.preIndexingActions,indexingActions:window.yoast.indexing.indexingActions,indexingStateCallback:t},(0,e.createElement)(pn,{unmount:!1,show:["completed","already_done"].includes(n),enter:"yst-transition-opacity yst-duration-1000",enterFrom:"yst-opacity-0",enterTo:"yst-opacity-100"},(0,e.createElement)(z,{type:"success"},"already_done"!==n||r?(0,i.__)("We've successfully analyzed your site & optimized your SEO data!","wordpress-seo"):(0,i.__)("We've already successfully analyzed your site. You can move on to the next step.","wordpress-seo"))))}function Tn({indexingState:t,setIndexingState:n,showRunIndexationAlert:r,isStepperFinished:a}){return(0,e.createElement)("div",{className:"yst-@container"},(0,e.createElement)("div",{className:"yst-flex yst-flex-col @lg:yst-flex-row yst-gap-6 yst-mb-8"},(0,e.createElement)("p",{className:"yst-text-sm yst-whitespace-pre-line"},(0,i.__)("Let's start by running the SEO data optimization. That means we'll scan your site and create a database with optimized SEO data. It won't change any content or settings on your site and you don't need to do anything, just hit start!\n\nNote: If you have a lot of content, this optimization could take a moment. But trust us, it's worth it!","wordpress-seo")),(0,e.createElement)(Et,{className:"yst-shrink-0 yst-h-28 yst-w-24"})),(0,e.createElement)("div",{id:"yoast-configuration-indexing-container",className:"indexation-container"},(0,e.createElement)(kn,{indexingStateCallback:n,indexingState:t,isStepperFinished:a})),(0,e.createElement)(q,{id:"indexation-alert",isVisible:"idle"===t&&r,expandDuration:400,type:"info"},(0,i.__)("Be aware that you should run the SEO data optimization for this configuration to take maximum effect.","wordpress-seo")))}function Pn(t,n,r=""){return(0,a.createInterpolateElement)(t,{a:(0,e.createElement)("a",{id:r,href:n,target:"_blank",rel:"noopener noreferrer"})})}var Nn;kn.propTypes={indexingStateCallback:E().func.isRequired,indexingState:E().string.isRequired,isStepperFinished:E().bool},kn.defaultProps={isStepperFinished:!1},Tn.propTypes={indexingState:E().string.isRequired,setIndexingState:E().func.isRequired,showRunIndexationAlert:E().bool,isStepperFinished:E().bool},Tn.defaultProps={showRunIndexationAlert:!1,isStepperFinished:!1};let In=null!=(Nn=e.useId)?Nn:function(){let t=Ht(),[n,r]=e.useState(t?()=>qt.nextId():null);return jt((()=>{null===n&&r(qt.nextId())}),[n]),null!=n?""+n:void 0};function Mn(t,n){let[r,a]=(0,e.useState)(t),s=$t(t);return jt((()=>a(s.current)),[s,a,...n]),r}var Ln=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Ln||{}),Fn=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(Fn||{});function An(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),a=null!=r?r:-1,s=(()=>{switch(e.focus){case 0:return n.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=n.slice().reverse().findIndex(((e,n,r)=>!(-1!==a&&r.length-n-1>=a||t.resolveDisabled(e))));return-1===e?e:n.length-1-e}case 2:return n.findIndex(((e,n)=>!(n<=a||t.resolveDisabled(e))));case 3:{let e=n.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:n.length-1-e}case 4:return n.findIndex((n=>t.resolveId(n)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===s?r:s}function Dn(e){let t=e.parentElement,n=null;for(;t&&!(t instanceof HTMLFieldSetElement);)t instanceof HTMLLegendElement&&(n=t),t=t.parentElement;let r=""===(null==t?void 0:t.getAttribute("disabled"));return(!r||!function(e){if(!e)return!1;let t=e.previousElementSibling;for(;null!==t;){if(t instanceof HTMLLegendElement)return!1;t=t.previousElementSibling}return!0}(n))&&r}function zn(e){return qt.isServer?null:e instanceof Node?e.ownerDocument:null!=e&&e.hasOwnProperty("current")&&e.current instanceof Node?e.current.ownerDocument:document}let qn=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var jn,Un=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(Un||{}),$n=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))($n||{}),Hn=((jn=Hn||{})[jn.Previous=-1]="Previous",jn[jn.Next=1]="Next",jn),Vn=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Vn||{});function Bn(e,t=0){var n;return e!==(null==(n=zn(e))?void 0:n.body)&&xt(t,{0:()=>e.matches(qn),1(){let t=e;for(;null!==t;){if(t.matches(qn))return!0;t=t.parentElement}return!1}})}function Zn(e,t=(e=>e)){return e.slice().sort(((e,n)=>{let r=t(e),a=t(n);if(null===r||null===a)return 0;let s=r.compareDocumentPosition(a);return s&Node.DOCUMENT_POSITION_FOLLOWING?-1:s&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function Gn(e){var t;if(e.type)return e.type;let n=null!=(t=e.as)?t:"button";return"string"==typeof n&&"button"===n.toLowerCase()?"button":void 0}function Wn(t,n){let[r,a]=(0,e.useState)((()=>Gn(t)));return jt((()=>{a(Gn(t))}),[t.type,t.as]),jt((()=>{r||!n.current||n.current instanceof HTMLButtonElement&&!n.current.hasAttribute("type")&&a("button")}),[r,n]),r}function Yn(t,n,r){let a=$t(n);(0,e.useEffect)((()=>{function e(e){a.current(e)}return document.addEventListener(t,e,r),()=>document.removeEventListener(t,e,r)}),[t,r])}function Qn(t,n,r=!0){let a=(0,e.useRef)(!1);function s(e,r){if(!a.current||e.defaultPrevented)return;let s=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(t),o=r(e);if(null!==o&&o.getRootNode().contains(o)){for(let t of s){if(null===t)continue;let n=t instanceof HTMLElement?t:t.current;if(null!=n&&n.contains(o)||e.composed&&e.composedPath().includes(n))return}return!Bn(o,Vn.Loose)&&-1!==o.tabIndex&&e.preventDefault(),n(e,o)}}(0,e.useEffect)((()=>{requestAnimationFrame((()=>{a.current=r}))}),[r]);let o=(0,e.useRef)(null);Yn("mousedown",(e=>{var t,n;a.current&&(o.current=(null==(n=null==(t=e.composedPath)?void 0:t.call(e))?void 0:n[0])||e.target)}),!0),Yn("click",(e=>{!o.current||(s(e,(()=>o.current)),o.current=null)}),!0),Yn("blur",(e=>s(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}["textarea","input"].join(",");var Kn=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Kn||{});let Jn=Pt((function(e,t){let{features:n=1,...r}=e;return Ct({ourProps:{ref:t,"aria-hidden":2==(2&n)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&n)&&2!=(2&n)&&{display:"none"}}},theirProps:r,slot:{},defaultTag:"div",name:"Hidden"})}));function Xn(e={},t=null,n=[]){for(let[r,a]of Object.entries(e))tr(n,er(t,r),a);return n}function er(e,t){return e?e+"["+t+"]":t}function tr(e,t,n){if(Array.isArray(n))for(let[r,a]of n.entries())tr(e,er(t,r.toString()),a);else n instanceof Date?e.push([t,n.toISOString()]):"boolean"==typeof n?e.push([t,n?"1":"0"]):"string"==typeof n?e.push([t,n]):"number"==typeof n?e.push([t,`${n}`]):null==n?e.push([t,""]):Xn(n,t,e)}function nr(t,n,r){let[a,s]=(0,e.useState)(r),o=void 0!==t,i=(0,e.useRef)(o),l=(0,e.useRef)(!1),c=(0,e.useRef)(!1);return!o||i.current||l.current?!o&&i.current&&!c.current&&(c.current=!0,i.current=o,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")):(l.current=!0,i.current=o,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")),[o?t:a,Vt((e=>(o||s(e),null==n?void 0:n(e))))]}function rr(e){return[e.screenX,e.screenY]}function ar(){let t=(0,e.useRef)([-1,-1]);return{wasMoved(e){let n=rr(e);return(t.current[0]!==n[0]||t.current[1]!==n[1])&&(t.current=n,!0)},update(e){t.current=rr(e)}}}var sr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(sr||{}),or=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(or||{}),ir=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(ir||{}),lr=(e=>(e[e.OpenListbox=0]="OpenListbox",e[e.CloseListbox=1]="CloseListbox",e[e.GoToOption=2]="GoToOption",e[e.Search=3]="Search",e[e.ClearSearch=4]="ClearSearch",e[e.RegisterOption=5]="RegisterOption",e[e.UnregisterOption=6]="UnregisterOption",e[e.RegisterLabel=7]="RegisterLabel",e))(lr||{});function cr(e,t=(e=>e)){let n=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,r=Zn(t(e.options.slice()),(e=>e.dataRef.current.domRef.current)),a=n?r.indexOf(n):null;return-1===a&&(a=null),{options:r,activeOptionIndex:a}}let ur={1:e=>e.dataRef.current.disabled||1===e.listboxState?e:{...e,activeOptionIndex:null,listboxState:1},0(e){if(e.dataRef.current.disabled||0===e.listboxState)return e;let t=e.activeOptionIndex,{isSelected:n}=e.dataRef.current,r=e.options.findIndex((e=>n(e.dataRef.current.value)));return-1!==r&&(t=r),{...e,listboxState:0,activeOptionIndex:t}},2(e,t){var n;if(e.dataRef.current.disabled||1===e.listboxState)return e;let r=cr(e),a=An(t,{resolveItems:()=>r.options,resolveActiveIndex:()=>r.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled});return{...e,...r,searchQuery:"",activeOptionIndex:a,activationTrigger:null!=(n=t.trigger)?n:1}},3:(e,t)=>{if(e.dataRef.current.disabled||1===e.listboxState)return e;let n=""!==e.searchQuery?0:1,r=e.searchQuery+t.value.toLowerCase(),a=(null!==e.activeOptionIndex?e.options.slice(e.activeOptionIndex+n).concat(e.options.slice(0,e.activeOptionIndex+n)):e.options).find((e=>{var t;return!e.dataRef.current.disabled&&(null==(t=e.dataRef.current.textValue)?void 0:t.startsWith(r))})),s=a?e.options.indexOf(a):-1;return-1===s||s===e.activeOptionIndex?{...e,searchQuery:r}:{...e,searchQuery:r,activeOptionIndex:s,activationTrigger:1}},4:e=>e.dataRef.current.disabled||1===e.listboxState||""===e.searchQuery?e:{...e,searchQuery:""},5:(e,t)=>{let n={id:t.id,dataRef:t.dataRef},r=cr(e,(e=>[...e,n]));return null===e.activeOptionIndex&&e.dataRef.current.isSelected(t.dataRef.current.value)&&(r.activeOptionIndex=r.options.indexOf(n)),{...e,...r}},6:(e,t)=>{let n=cr(e,(e=>{let n=e.findIndex((e=>e.id===t.id));return-1!==n&&e.splice(n,1),e}));return{...e,...n,activationTrigger:1}},7:(e,t)=>({...e,labelId:t.id})},dr=(0,e.createContext)(null);function pr(t){let n=(0,e.useContext)(dr);if(null===n){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,pr),e}return n}dr.displayName="ListboxActionsContext";let mr=(0,e.createContext)(null);function fr(t){let n=(0,e.useContext)(mr);if(null===n){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,fr),e}return n}function yr(e,t){return xt(t.type,ur,e,t)}mr.displayName="ListboxDataContext";let hr=e.Fragment,br=Pt((function(t,n){let{value:r,defaultValue:a,name:s,onChange:o,by:i=((e,t)=>e===t),disabled:l=!1,horizontal:c=!1,multiple:u=!1,...d}=t;const p=c?"horizontal":"vertical";let m=Zt(n),[f=(u?[]:void 0),y]=nr(r,o,a),[h,b]=(0,e.useReducer)(yr,{dataRef:(0,e.createRef)(),listboxState:1,options:[],searchQuery:"",labelId:null,activeOptionIndex:null,activationTrigger:1}),g=(0,e.useRef)({static:!1,hold:!1}),v=(0,e.useRef)(null),E=(0,e.useRef)(null),w=(0,e.useRef)(null),x=Vt("string"==typeof i?(e,t)=>{let n=i;return(null==e?void 0:e[n])===(null==t?void 0:t[n])}:i),S=(0,e.useCallback)((e=>xt(_.mode,{1:()=>f.some((t=>x(t,e))),0:()=>x(f,e)})),[f]),_=(0,e.useMemo)((()=>({...h,value:f,disabled:l,mode:u?1:0,orientation:p,compare:x,isSelected:S,optionsPropsRef:g,labelRef:v,buttonRef:E,optionsRef:w})),[f,l,u,h]);jt((()=>{h.dataRef.current=_}),[_]),Qn([_.buttonRef,_.optionsRef],((e,t)=>{var n;b({type:1}),Bn(t,Vn.Loose)||(e.preventDefault(),null==(n=_.buttonRef.current)||n.focus())}),0===_.listboxState);let O=(0,e.useMemo)((()=>({open:0===_.listboxState,disabled:l,value:f})),[_,l,f]),R=Vt((e=>{let t=_.options.find((t=>t.id===e));!t||M(t.dataRef.current.value)})),C=Vt((()=>{if(null!==_.activeOptionIndex){let{dataRef:e,id:t}=_.options[_.activeOptionIndex];M(e.current.value),b({type:2,focus:Fn.Specific,id:t})}})),k=Vt((()=>b({type:0}))),T=Vt((()=>b({type:1}))),P=Vt(((e,t,n)=>e===Fn.Specific?b({type:2,focus:Fn.Specific,id:t,trigger:n}):b({type:2,focus:e,trigger:n}))),N=Vt(((e,t)=>(b({type:5,id:e,dataRef:t}),()=>b({type:6,id:e})))),I=Vt((e=>(b({type:7,id:e}),()=>b({type:7,id:null})))),M=Vt((e=>xt(_.mode,{0:()=>null==y?void 0:y(e),1(){let t=_.value.slice(),n=t.findIndex((t=>x(t,e)));return-1===n?t.push(e):t.splice(n,1),null==y?void 0:y(t)}}))),L=Vt((e=>b({type:3,value:e}))),F=Vt((()=>b({type:4}))),A=(0,e.useMemo)((()=>({onChange:M,registerOption:N,registerLabel:I,goToOption:P,closeListbox:T,openListbox:k,selectActiveOption:C,selectOption:R,search:L,clearSearch:F})),[]),D={ref:m},z=(0,e.useRef)(null),q=Qt();return(0,e.useEffect)((()=>{!z.current||void 0!==a&&q.addEventListener(z.current,"reset",(()=>{M(a)}))}),[z,M]),e.createElement(dr.Provider,{value:A},e.createElement(mr.Provider,{value:_},e.createElement(At,{value:xt(_.listboxState,{0:Lt.Open,1:Lt.Closed})},null!=s&&null!=f&&Xn({[s]:f}).map((([t,n],r)=>e.createElement(Jn,{features:Kn.Hidden,ref:0===r?e=>{var t;z.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,...Nt({key:t,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:t,value:n})}))),Ct({ourProps:D,theirProps:d,slot:O,defaultTag:hr,name:"Listbox"}))))})),gr=Pt((function(t,n){var r;let a=In(),{id:s=`headlessui-listbox-button-${a}`,...o}=t,i=fr("Listbox.Button"),l=pr("Listbox.Button"),c=Zt(i.buttonRef,n),u=Qt(),d=Vt((e=>{switch(e.key){case Ln.Space:case Ln.Enter:case Ln.ArrowDown:e.preventDefault(),l.openListbox(),u.nextFrame((()=>{i.value||l.goToOption(Fn.First)}));break;case Ln.ArrowUp:e.preventDefault(),l.openListbox(),u.nextFrame((()=>{i.value||l.goToOption(Fn.Last)}))}})),p=Vt((e=>{e.key===Ln.Space&&e.preventDefault()})),m=Vt((e=>{if(Dn(e.currentTarget))return e.preventDefault();0===i.listboxState?(l.closeListbox(),u.nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),l.openListbox())})),f=Mn((()=>{if(i.labelId)return[i.labelId,s].join(" ")}),[i.labelId,s]),y=(0,e.useMemo)((()=>({open:0===i.listboxState,disabled:i.disabled,value:i.value})),[i]);return Ct({ourProps:{ref:c,id:s,type:Wn(t,i.buttonRef),"aria-haspopup":"listbox","aria-controls":null==(r=i.optionsRef.current)?void 0:r.id,"aria-expanded":i.disabled?void 0:0===i.listboxState,"aria-labelledby":f,disabled:i.disabled,onKeyDown:d,onKeyUp:p,onClick:m},theirProps:o,slot:y,defaultTag:"button",name:"Listbox.Button"})})),vr=Pt((function(t,n){let r=In(),{id:a=`headlessui-listbox-label-${r}`,...s}=t,o=fr("Listbox.Label"),i=pr("Listbox.Label"),l=Zt(o.labelRef,n);jt((()=>i.registerLabel(a)),[a]);let c=Vt((()=>{var e;return null==(e=o.buttonRef.current)?void 0:e.focus({preventScroll:!0})})),u=(0,e.useMemo)((()=>({open:0===o.listboxState,disabled:o.disabled})),[o]);return Ct({ourProps:{ref:l,id:a,onClick:c},theirProps:s,slot:u,defaultTag:"label",name:"Listbox.Label"})})),Er=Ot.RenderStrategy|Ot.Static,wr=Pt((function(t,n){var r;let a=In(),{id:s=`headlessui-listbox-options-${a}`,...o}=t,i=fr("Listbox.Options"),l=pr("Listbox.Options"),c=Zt(i.optionsRef,n),u=Qt(),d=Qt(),p=Ft(),m=null!==p?p===Lt.Open:0===i.listboxState;(0,e.useEffect)((()=>{var e;let t=i.optionsRef.current;!t||0===i.listboxState&&t!==(null==(e=zn(t))?void 0:e.activeElement)&&t.focus({preventScroll:!0})}),[i.listboxState,i.optionsRef]);let f=Vt((e=>{switch(d.dispose(),e.key){case Ln.Space:if(""!==i.searchQuery)return e.preventDefault(),e.stopPropagation(),l.search(e.key);case Ln.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeOptionIndex){let{dataRef:e}=i.options[i.activeOptionIndex];l.onChange(e.current.value)}0===i.mode&&(l.closeListbox(),Gt().nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})})));break;case xt(i.orientation,{vertical:Ln.ArrowDown,horizontal:Ln.ArrowRight}):return e.preventDefault(),e.stopPropagation(),l.goToOption(Fn.Next);case xt(i.orientation,{vertical:Ln.ArrowUp,horizontal:Ln.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),l.goToOption(Fn.Previous);case Ln.Home:case Ln.PageUp:return e.preventDefault(),e.stopPropagation(),l.goToOption(Fn.First);case Ln.End:case Ln.PageDown:return e.preventDefault(),e.stopPropagation(),l.goToOption(Fn.Last);case Ln.Escape:return e.preventDefault(),e.stopPropagation(),l.closeListbox(),u.nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})}));case Ln.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(l.search(e.key),d.setTimeout((()=>l.clearSearch()),350))}})),y=Mn((()=>{var e,t,n;return null!=(n=null==(e=i.labelRef.current)?void 0:e.id)?n:null==(t=i.buttonRef.current)?void 0:t.id}),[i.labelRef.current,i.buttonRef.current]),h=(0,e.useMemo)((()=>({open:0===i.listboxState})),[i]);return Ct({ourProps:{"aria-activedescendant":null===i.activeOptionIndex||null==(r=i.options[i.activeOptionIndex])?void 0:r.id,"aria-multiselectable":1===i.mode||void 0,"aria-labelledby":y,"aria-orientation":i.orientation,id:s,onKeyDown:f,role:"listbox",tabIndex:0,ref:c},theirProps:o,slot:h,defaultTag:"ul",features:Er,visible:m,name:"Listbox.Options"})})),xr=Pt((function(t,n){let r=In(),{id:a=`headlessui-listbox-option-${r}`,disabled:s=!1,value:o,...i}=t,l=fr("Listbox.Option"),c=pr("Listbox.Option"),u=null!==l.activeOptionIndex&&l.options[l.activeOptionIndex].id===a,d=l.isSelected(o),p=(0,e.useRef)(null),m=$t({disabled:s,value:o,domRef:p,get textValue(){var e,t;return null==(t=null==(e=p.current)?void 0:e.textContent)?void 0:t.toLowerCase()}}),f=Zt(n,p);jt((()=>{if(0!==l.listboxState||!u||0===l.activationTrigger)return;let e=Gt();return e.requestAnimationFrame((()=>{var e,t;null==(t=null==(e=p.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})})),e.dispose}),[p,u,l.listboxState,l.activationTrigger,l.activeOptionIndex]),jt((()=>c.registerOption(a,m)),[m,a]);let y=Vt((e=>{if(s)return e.preventDefault();c.onChange(o),0===l.mode&&(c.closeListbox(),Gt().nextFrame((()=>{var e;return null==(e=l.buttonRef.current)?void 0:e.focus({preventScroll:!0})})))})),h=Vt((()=>{if(s)return c.goToOption(Fn.Nothing);c.goToOption(Fn.Specific,a)})),b=ar(),g=Vt((e=>b.update(e))),v=Vt((e=>{!b.wasMoved(e)||s||u||c.goToOption(Fn.Specific,a,0)})),E=Vt((e=>{!b.wasMoved(e)||s||!u||c.goToOption(Fn.Nothing)})),w=(0,e.useMemo)((()=>({active:u,selected:d,disabled:s})),[u,d,s]);return Ct({ourProps:{id:a,ref:f,role:"option",tabIndex:!0===s?void 0:-1,"aria-disabled":!0===s||void 0,"aria-selected":d,disabled:void 0,onClick:y,onFocus:h,onPointerEnter:g,onMouseEnter:g,onPointerMove:v,onMouseMove:v,onPointerLeave:E,onMouseLeave:E},theirProps:i,slot:w,defaultTag:"li",name:"Listbox.Option"})})),Sr=Object.assign(br,{Button:gr,Label:vr,Options:wr,Option:xr});const _r=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{fillRule:"evenodd",d:"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z",clipRule:"evenodd"}))}));function Or({id:t,value:n,choices:r,label:s,onChange:o,error:l,disabled:c}){const u=(0,a.useMemo)((()=>{const e=r.find((e=>n===e.value));return e?e.label:(0,i.__)("Select an option","wordpress-seo")}),[r,n]);return(0,e.createElement)(Sr,{id:t,as:"div",value:n,onChange:o,disabled:c},(({open:o})=>(0,e.createElement)(a.Fragment,null,s&&(0,e.createElement)(Sr.Label,{className:"yst-block yst-max-w-sm yst-mb-1 yst-text-sm yst-font-medium yst-text-slate-700"},s),(0,e.createElement)("div",{className:"yst-max-w-sm"},(0,e.createElement)("div",{className:"yst-relative"},(0,e.createElement)(Sr.Button,{"data-id":`button-${t} `,className:m()("yst-relative yst-h-[45px] yst-w-full yst-leading-6 yst-py-2 yst-pl-3 yst-pr-10 yst-text-left yst-bg-white yst-border yst-border-slate-300 yst-rounded-md yst-shadow-sm yst-cursor-default focus:yst-outline-none focus:yst-ring-1 focus:yst-ring-primary-500 focus:yst-border-primary-500 sm:yst-text-sm",{"yst-border-red-300":l.isVisible,"yst-opacity-50":c},"emptyChoice"===n?"yst-text-slate-400":"yst-text-slate-700"),...y(t,l)},(0,e.createElement)("span",{className:"yst-block yst-truncate"},u),(0,e.createElement)("span",{className:"yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-2 yst-pointer-events-none"},(0,e.createElement)(_r,{className:"yst-w-5 yst-h-5 yst-text-slate-400","aria-hidden":"true"})),l.isVisible&&(0,e.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-8"},(0,e.createElement)(O,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-red-500"}))),(0,e.createElement)(pn,{show:o,as:a.Fragment,leave:"yst-transition yst-ease-in yst-duration-100",leaveFrom:"yst-opacity-100",leaveTo:"yst-opacity-0"},(0,e.createElement)(Sr.Options,{static:!0,className:"yst-absolute yst-z-10 yst-w-full yst-mt-1 yst-overflow-auto yst-bg-white yst-rounded-md yst-shadow-lg yst-max-h-60 yst-ring-1 yst-ring-black yst-ring-opacity-5 focus:yst-outline-none sm:yst-text-sm"},r.map((t=>(0,e.createElement)(Sr.Option,{key:t.id,as:a.Fragment,value:t.value},(({selected:n,active:r})=>(0,e.createElement)("li",{className:h({selected:n,active:r})},(0,e.createElement)("span",{className:m()(n?"yst-font-semibold":"yst-font-normal","yst-block yst-truncate")},t.label),n?(0,e.createElement)("span",{className:m()("yst-text-white yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-4")},(0,e.createElement)(H,{className:"yst-w-5 yst-h-5","aria-hidden":"true"})):null)))))))),l.isVisible&&(0,e.createElement)(k,{id:f(t),className:"yst-mt-2 yst-text-sm yst-text-red-600",texts:l.message})))))}Or.propTypes={value:v.PropTypes.string.isRequired,choices:v.PropTypes.arrayOf(v.PropTypes.shape({id:v.PropTypes.oneOfType([v.PropTypes.number,v.PropTypes.string]).isRequired,value:v.PropTypes.string.isRequired,label:v.PropTypes.string.isRequired})).isRequired,label:v.PropTypes.string.isRequired,onChange:v.PropTypes.func.isRequired,id:v.PropTypes.string.isRequired,error:v.PropTypes.shape({message:v.PropTypes.string,isVisible:v.PropTypes.bool}),disabled:v.PropTypes.bool},Or.defaultProps={error:{message:"",isVisible:!1},disabled:!1};const Rr=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}))})),Cr=({className:t})=>(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",className:m()("yst-animate-spin",t)},(0,e.createElement)("circle",{className:"yst-opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,e.createElement)("path",{className:"yst-opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}));Cr.propTypes={className:E().string},Cr.defaultProps={className:""};const kr=Cr;function Tr({id:t,imageAltText:n,url:r,fallbackUrl:o,label:l,onSelectImageClick:c,onRemoveImageClick:u,className:d,error:p,status:h}){const b=m()("yst-relative yst-w-full yst-h-48 yst-mt-2 yst-flex yst-justify-center yst-items-center yst-rounded-md yst-mb-4 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-offset-2 focus:yst-ring-primary-500",p.isVisible?"yst-border-red-300":"yst-border-slate-300","yst-border-2 yst-border-dashed"),g=(0,a.useCallback)((()=>"loading"===h?(0,e.createElement)("div",{className:"yst-text-center"},(0,e.createElement)(kr,{size:"10",color:"gray-400",className:"yst-inline-block"}),(0,e.createElement)("p",{className:"yst-mt-3"},(0,i.__)("Uploading image...","wordpress-seo"))):r?(0,e.createElement)("img",{src:r,alt:n,className:"yst-w-full yst-h-full yst-object-contain"}):o?(0,e.createElement)("img",{src:o,alt:n,className:"yst-w-full yst-h-full yst-object-contain"}):(0,e.createElement)(Rr,{id:`${t}-no-image-svg`,className:"yst-w-14 yst-h-14 yst-text-slate-500"})),[h,t,r,n]);return(0,e.createElement)("div",{className:m()("yst-max-w-sm",d),...y(t,p)},(0,e.createElement)("label",{htmlFor:t,className:"yst-block yst-mb-2 yst-font-medium yst-text-slate-700"},l),(0,e.createElement)("button",{id:t,className:b,onClick:c,type:"button","data-hiive-event-name":"clicked_select_image"},g()),(0,e.createElement)("div",null,(0,e.createElement)(s.Button,{id:r?t+"__replace-image":t+"__select-image",variant:"secondary",className:"yst-mr-2",onClick:c,"data-hiive-event-name":r?"clicked_replace_image":"clicked_select_image"},r?(0,i.__)("Replace image","wordpress-seo"):(0,i.__)("Select image","wordpress-seo")),r&&(0,e.createElement)(s.Link,{id:`${t}__remove-image`,as:"button",type:"button",variant:"error",onClick:u,className:"yst-px-3 yst-py-2 yst-rounded-md","data-hiive-event-name":"clicked_remove_image"},(0,i.__)("Remove image","wordpress-seo"))),"error"===h&&(0,e.createElement)("p",{className:"yst-mt-2 yst-text-sm yst-text-red-600"},p),p.isVisible&&(0,e.createElement)(k,{id:f(t),className:"yst-mt-2 yst-text-sm yst-text-red-600",texts:p.message}))}Tr.propTypes={label:E().string,id:E().string.isRequired,url:E().string,fallbackUrl:E().string,imageAltText:E().string,onRemoveImageClick:E().func,onSelectImageClick:E().func,className:E().string,error:E().shape({message:E().string,isVisible:E().bool}),status:E().string},Tr.defaultProps={label:"",url:"",fallbackUrl:"",imageAltText:"",onRemoveImageClick:o.noop,onSelectImageClick:o.noop,className:"",error:{message:"",isVisible:!1},status:"idle"},window.yoast.socialMetadataForms;const Pr=e=>({type:e.subtype,width:e.width,height:e.height,url:e.url,id:e.id,sizes:e.sizes,alt:e.alt||e.title||e.name});function Nr(e){(function(e){const t=window.wp.media();return t.on("select",(()=>{const n=t.state().get("selection").first();e(Pr(n.attributes))})),t})(e).open()}function Ir({dispatch:t,imageUrl:n,fallbackImageUrl:r,organizationName:s,fallbackOrganizationName:o,errorFields:l}){const c=(0,a.useCallback)((()=>{Nr((e=>{t({type:"SET_COMPANY_LOGO",payload:{...e}})}))}),[Nr]),u=(0,a.useCallback)((()=>{t({type:"REMOVE_COMPANY_LOGO"})})),d=(0,a.useCallback)((e=>{t({type:"CHANGE_COMPANY_NAME",payload:e.target.value})}));return(0,e.createElement)(a.Fragment,null,(0,e.createElement)(P,{className:"yst-mt-6",id:"organization-name-input",name:"organization-name",label:(0,i.__)("Organization name","wordpress-seo"),value:""===s?o:s,onChange:d,feedback:{isVisible:l.includes("company_name"),message:[(0,i.__)("We could not save the organization name. Please check the value.","wordpress-seo")],type:"error"}}),(0,e.createElement)(Tr,{className:"yst-mt-6",id:"organization-logo-input",url:n,fallbackUrl:r,onSelectImageClick:c,onRemoveImageClick:u,imageAltText:"",hasPreview:!0,label:(0,i.__)("Organization logo","wordpress-seo")}))}function Mr(t,n){let r=(0,e.useRef)([]),a=Vt(t);(0,e.useEffect)((()=>{let e=[...r.current];for(let[t,s]of n.entries())if(r.current[t]!==s){let t=a(n,e);return r.current=n,t}}),[a,...n])}Ir.propTypes={dispatch:E().func.isRequired,imageUrl:E().string,fallbackImageUrl:E().string,organizationName:E().string,fallbackOrganizationName:E().string,errorFields:E().array},Ir.defaultProps={imageUrl:"",fallbackImageUrl:"",organizationName:"",fallbackOrganizationName:"",errorFields:[]};var Lr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Lr||{}),Fr=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(Fr||{}),Ar=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Ar||{}),Dr=(e=>(e[e.OpenCombobox=0]="OpenCombobox",e[e.CloseCombobox=1]="CloseCombobox",e[e.GoToOption=2]="GoToOption",e[e.RegisterOption=3]="RegisterOption",e[e.UnregisterOption=4]="UnregisterOption",e[e.RegisterLabel=5]="RegisterLabel",e))(Dr||{});function zr(e,t=(e=>e)){let n=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,r=Zn(t(e.options.slice()),(e=>e.dataRef.current.domRef.current)),a=n?r.indexOf(n):null;return-1===a&&(a=null),{options:r,activeOptionIndex:a}}let qr={1:e=>e.dataRef.current.disabled||1===e.comboboxState?e:{...e,activeOptionIndex:null,comboboxState:1},0(e){if(e.dataRef.current.disabled||0===e.comboboxState)return e;let t=e.activeOptionIndex,{isSelected:n}=e.dataRef.current,r=e.options.findIndex((e=>n(e.dataRef.current.value)));return-1!==r&&(t=r),{...e,comboboxState:0,activeOptionIndex:t}},2(e,t){var n;if(e.dataRef.current.disabled||e.dataRef.current.optionsRef.current&&!e.dataRef.current.optionsPropsRef.current.static&&1===e.comboboxState)return e;let r=zr(e);if(null===r.activeOptionIndex){let e=r.options.findIndex((e=>!e.dataRef.current.disabled));-1!==e&&(r.activeOptionIndex=e)}let a=An(t,{resolveItems:()=>r.options,resolveActiveIndex:()=>r.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled});return{...e,...r,activeOptionIndex:a,activationTrigger:null!=(n=t.trigger)?n:1}},3:(e,t)=>{let n={id:t.id,dataRef:t.dataRef},r=zr(e,(e=>[...e,n]));null===e.activeOptionIndex&&e.dataRef.current.isSelected(t.dataRef.current.value)&&(r.activeOptionIndex=r.options.indexOf(n));let a={...e,...r,activationTrigger:1};return e.dataRef.current.__demoMode&&void 0===e.dataRef.current.value&&(a.activeOptionIndex=0),a},4:(e,t)=>{let n=zr(e,(e=>{let n=e.findIndex((e=>e.id===t.id));return-1!==n&&e.splice(n,1),e}));return{...e,...n,activationTrigger:1}},5:(e,t)=>({...e,labelId:t.id})},jr=(0,e.createContext)(null);function Ur(t){let n=(0,e.useContext)(jr);if(null===n){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Ur),e}return n}jr.displayName="ComboboxActionsContext";let $r=(0,e.createContext)(null);function Hr(t){let n=(0,e.useContext)($r);if(null===n){let e=new Error(`<${t} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(e,Hr),e}return n}function Vr(e,t){return xt(t.type,qr,e,t)}$r.displayName="ComboboxDataContext";let Br=e.Fragment,Zr=Pt((function(t,n){let{value:r,defaultValue:a,onChange:s,name:o,by:i=((e,t)=>e===t),disabled:l=!1,__demoMode:c=!1,nullable:u=!1,multiple:d=!1,...p}=t,[m=(d?[]:void 0),f]=nr(r,s,a),[y,h]=(0,e.useReducer)(Vr,{dataRef:(0,e.createRef)(),comboboxState:c?0:1,options:[],activeOptionIndex:null,activationTrigger:1,labelId:null}),b=(0,e.useRef)(!1),g=(0,e.useRef)({static:!1,hold:!1}),v=(0,e.useRef)(null),E=(0,e.useRef)(null),w=(0,e.useRef)(null),x=(0,e.useRef)(null),S=Vt("string"==typeof i?(e,t)=>{let n=i;return(null==e?void 0:e[n])===(null==t?void 0:t[n])}:i),_=(0,e.useCallback)((e=>xt(O.mode,{1:()=>m.some((t=>S(t,e))),0:()=>S(m,e)})),[m]),O=(0,e.useMemo)((()=>({...y,optionsPropsRef:g,labelRef:v,inputRef:E,buttonRef:w,optionsRef:x,value:m,defaultValue:a,disabled:l,mode:d?1:0,get activeOptionIndex(){if(b.current&&null===y.activeOptionIndex&&y.options.length>0){let e=y.options.findIndex((e=>!e.dataRef.current.disabled));if(-1!==e)return e}return y.activeOptionIndex},compare:S,isSelected:_,nullable:u,__demoMode:c})),[m,a,l,d,u,c,y]);jt((()=>{y.dataRef.current=O}),[O]),Qn([O.buttonRef,O.inputRef,O.optionsRef],(()=>F.closeCombobox()),0===O.comboboxState);let R=(0,e.useMemo)((()=>({open:0===O.comboboxState,disabled:l,activeIndex:O.activeOptionIndex,activeOption:null===O.activeOptionIndex?null:O.options[O.activeOptionIndex].dataRef.current.value,value:m})),[O,l,m]),C=Vt((e=>{let t=O.options.find((t=>t.id===e));!t||L(t.dataRef.current.value)})),k=Vt((()=>{if(null!==O.activeOptionIndex){let{dataRef:e,id:t}=O.options[O.activeOptionIndex];L(e.current.value),F.goToOption(Fn.Specific,t)}})),T=Vt((()=>{h({type:0}),b.current=!0})),P=Vt((()=>{h({type:1}),b.current=!1})),N=Vt(((e,t,n)=>(b.current=!1,e===Fn.Specific?h({type:2,focus:Fn.Specific,id:t,trigger:n}):h({type:2,focus:e,trigger:n})))),I=Vt(((e,t)=>(h({type:3,id:e,dataRef:t}),()=>h({type:4,id:e})))),M=Vt((e=>(h({type:5,id:e}),()=>h({type:5,id:null})))),L=Vt((e=>xt(O.mode,{0:()=>null==f?void 0:f(e),1(){let t=O.value.slice(),n=t.findIndex((t=>S(t,e)));return-1===n?t.push(e):t.splice(n,1),null==f?void 0:f(t)}}))),F=(0,e.useMemo)((()=>({onChange:L,registerOption:I,registerLabel:M,goToOption:N,closeCombobox:P,openCombobox:T,selectActiveOption:k,selectOption:C})),[]),A=null===n?{}:{ref:n},D=(0,e.useRef)(null),z=Qt();return(0,e.useEffect)((()=>{!D.current||void 0!==a&&z.addEventListener(D.current,"reset",(()=>{L(a)}))}),[D,L]),e.createElement(jr.Provider,{value:F},e.createElement($r.Provider,{value:O},e.createElement(At,{value:xt(O.comboboxState,{0:Lt.Open,1:Lt.Closed})},null!=o&&null!=m&&Xn({[o]:m}).map((([t,n],r)=>e.createElement(Jn,{features:Kn.Hidden,ref:0===r?e=>{var t;D.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,...Nt({key:t,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:t,value:n})}))),Ct({ourProps:A,theirProps:p,slot:R,defaultTag:Br,name:"Combobox"}))))})),Gr=Pt((function(t,n){var r,a,s,o;let i=In(),{id:l=`headlessui-combobox-input-${i}`,onChange:c,displayValue:u,type:d="text",...p}=t,m=Hr("Combobox.Input"),f=Ur("Combobox.Input"),y=Zt(m.inputRef,n),h=(0,e.useRef)(!1),b=Qt();var g;Mr((([e,t],[n,r])=>{h.current||!m.inputRef.current||(0===r&&1===t||e!==n)&&(m.inputRef.current.value=e)}),["function"==typeof u&&void 0!==m.value?null!=(g=u(m.value))?g:"":"string"==typeof m.value?m.value:"",m.comboboxState]),Mr((([e],[t])=>{if(0===e&&1===t){let e=m.inputRef.current;if(!e)return;let t=e.value,{selectionStart:n,selectionEnd:r,selectionDirection:a}=e;e.value="",e.value=t,null!==a?e.setSelectionRange(n,r,a):e.setSelectionRange(n,r)}}),[m.comboboxState]);let v=(0,e.useRef)(!1),E=Vt((()=>{v.current=!0})),w=Vt((()=>{setTimeout((()=>{v.current=!1}))})),x=Vt((e=>{switch(h.current=!0,e.key){case Ln.Backspace:case Ln.Delete:if(0!==m.mode||!m.nullable)return;let t=e.currentTarget;b.requestAnimationFrame((()=>{""===t.value&&(f.onChange(null),m.optionsRef.current&&(m.optionsRef.current.scrollTop=0),f.goToOption(Fn.Nothing))}));break;case Ln.Enter:if(h.current=!1,0!==m.comboboxState||v.current)return;if(e.preventDefault(),e.stopPropagation(),null===m.activeOptionIndex)return void f.closeCombobox();f.selectActiveOption(),0===m.mode&&f.closeCombobox();break;case Ln.ArrowDown:return h.current=!1,e.preventDefault(),e.stopPropagation(),xt(m.comboboxState,{0:()=>{f.goToOption(Fn.Next)},1:()=>{f.openCombobox()}});case Ln.ArrowUp:return h.current=!1,e.preventDefault(),e.stopPropagation(),xt(m.comboboxState,{0:()=>{f.goToOption(Fn.Previous)},1:()=>{f.openCombobox(),b.nextFrame((()=>{m.value||f.goToOption(Fn.Last)}))}});case Ln.Home:if(e.shiftKey)break;return h.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(Fn.First);case Ln.PageUp:return h.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(Fn.First);case Ln.End:if(e.shiftKey)break;return h.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(Fn.Last);case Ln.PageDown:return h.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(Fn.Last);case Ln.Escape:return h.current=!1,0!==m.comboboxState?void 0:(e.preventDefault(),m.optionsRef.current&&!m.optionsPropsRef.current.static&&e.stopPropagation(),f.closeCombobox());case Ln.Tab:if(h.current=!1,0!==m.comboboxState)return;0===m.mode&&f.selectActiveOption(),f.closeCombobox()}})),S=Vt((e=>{f.openCombobox(),null==c||c(e)})),_=Vt((()=>{h.current=!1})),O=Mn((()=>{if(m.labelId)return[m.labelId].join(" ")}),[m.labelId]),R=(0,e.useMemo)((()=>({open:0===m.comboboxState,disabled:m.disabled})),[m]);return Ct({ourProps:{ref:y,id:l,role:"combobox",type:d,"aria-controls":null==(r=m.optionsRef.current)?void 0:r.id,"aria-expanded":m.disabled?void 0:0===m.comboboxState,"aria-activedescendant":null===m.activeOptionIndex||null==(a=m.options[m.activeOptionIndex])?void 0:a.id,"aria-multiselectable":1===m.mode||void 0,"aria-labelledby":O,"aria-autocomplete":"list",defaultValue:null!=(o=null!=(s=t.defaultValue)?s:void 0!==m.defaultValue?null==u?void 0:u(m.defaultValue):null)?o:m.defaultValue,disabled:m.disabled,onCompositionStart:E,onCompositionEnd:w,onKeyDown:x,onChange:S,onBlur:_},theirProps:p,slot:R,defaultTag:"input",name:"Combobox.Input"})})),Wr=Pt((function(t,n){var r;let a=Hr("Combobox.Button"),s=Ur("Combobox.Button"),o=Zt(a.buttonRef,n),i=In(),{id:l=`headlessui-combobox-button-${i}`,...c}=t,u=Qt(),d=Vt((e=>{switch(e.key){case Ln.ArrowDown:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&s.openCombobox(),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case Ln.ArrowUp:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&(s.openCombobox(),u.nextFrame((()=>{a.value||s.goToOption(Fn.Last)}))),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case Ln.Escape:return 0!==a.comboboxState?void 0:(e.preventDefault(),a.optionsRef.current&&!a.optionsPropsRef.current.static&&e.stopPropagation(),s.closeCombobox(),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})})));default:return}})),p=Vt((e=>{if(Dn(e.currentTarget))return e.preventDefault();0===a.comboboxState?s.closeCombobox():(e.preventDefault(),s.openCombobox()),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}))})),m=Mn((()=>{if(a.labelId)return[a.labelId,l].join(" ")}),[a.labelId,l]),f=(0,e.useMemo)((()=>({open:0===a.comboboxState,disabled:a.disabled,value:a.value})),[a]);return Ct({ourProps:{ref:o,id:l,type:Wn(t,a.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":null==(r=a.optionsRef.current)?void 0:r.id,"aria-expanded":a.disabled?void 0:0===a.comboboxState,"aria-labelledby":m,disabled:a.disabled,onClick:p,onKeyDown:d},theirProps:c,slot:f,defaultTag:"button",name:"Combobox.Button"})})),Yr=Pt((function(t,n){let r=In(),{id:a=`headlessui-combobox-label-${r}`,...s}=t,o=Hr("Combobox.Label"),i=Ur("Combobox.Label"),l=Zt(o.labelRef,n);jt((()=>i.registerLabel(a)),[a]);let c=Vt((()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})})),u=(0,e.useMemo)((()=>({open:0===o.comboboxState,disabled:o.disabled})),[o]);return Ct({ourProps:{ref:l,id:a,onClick:c},theirProps:s,slot:u,defaultTag:"label",name:"Combobox.Label"})})),Qr=Ot.RenderStrategy|Ot.Static,Kr=Pt((function(t,n){let r=In(),{id:a=`headlessui-combobox-options-${r}`,hold:s=!1,...o}=t,i=Hr("Combobox.Options"),l=Zt(i.optionsRef,n),c=Ft(),u=null!==c?c===Lt.Open:0===i.comboboxState;jt((()=>{var e;i.optionsPropsRef.current.static=null!=(e=t.static)&&e}),[i.optionsPropsRef,t.static]),jt((()=>{i.optionsPropsRef.current.hold=s}),[i.optionsPropsRef,s]),function({container:t,accept:n,walk:r,enabled:a=!0}){let s=(0,e.useRef)(n),o=(0,e.useRef)(r);(0,e.useEffect)((()=>{s.current=n,o.current=r}),[n,r]),jt((()=>{if(!t||!a)return;let e=zn(t);if(!e)return;let n=s.current,r=o.current,i=Object.assign((e=>n(e)),{acceptNode:n}),l=e.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,i,!1);for(;l.nextNode();)r(l.currentNode)}),[t,a,s,o])}({container:i.optionsRef.current,enabled:0===i.comboboxState,accept:e=>"option"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let d=Mn((()=>{var e,t;return null!=(t=i.labelId)?t:null==(e=i.buttonRef.current)?void 0:e.id}),[i.labelId,i.buttonRef.current]);return Ct({ourProps:{"aria-labelledby":d,role:"listbox",id:a,ref:l},theirProps:o,slot:(0,e.useMemo)((()=>({open:0===i.comboboxState})),[i]),defaultTag:"ul",features:Qr,visible:u,name:"Combobox.Options"})})),Jr=Pt((function(t,n){var r,a;let s=In(),{id:o=`headlessui-combobox-option-${s}`,disabled:i=!1,value:l,...c}=t,u=Hr("Combobox.Option"),d=Ur("Combobox.Option"),p=null!==u.activeOptionIndex&&u.options[u.activeOptionIndex].id===o,m=u.isSelected(l),f=(0,e.useRef)(null),y=$t({disabled:i,value:l,domRef:f,textValue:null==(a=null==(r=f.current)?void 0:r.textContent)?void 0:a.toLowerCase()}),h=Zt(n,f),b=Vt((()=>d.selectOption(o)));jt((()=>d.registerOption(o,y)),[y,o]);let g=(0,e.useRef)(!u.__demoMode);jt((()=>{if(!u.__demoMode)return;let e=Gt();return e.requestAnimationFrame((()=>{g.current=!0})),e.dispose}),[]),jt((()=>{if(0!==u.comboboxState||!p||!g.current||0===u.activationTrigger)return;let e=Gt();return e.requestAnimationFrame((()=>{var e,t;null==(t=null==(e=f.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})})),e.dispose}),[f,p,u.comboboxState,u.activationTrigger,u.activeOptionIndex]);let v=Vt((e=>{if(i)return e.preventDefault();b(),0===u.mode&&d.closeCombobox()})),E=Vt((()=>{if(i)return d.goToOption(Fn.Nothing);d.goToOption(Fn.Specific,o)})),w=ar(),x=Vt((e=>w.update(e))),S=Vt((e=>{!w.wasMoved(e)||i||p||d.goToOption(Fn.Specific,o,0)})),_=Vt((e=>{!w.wasMoved(e)||i||!p||u.optionsPropsRef.current.hold||d.goToOption(Fn.Nothing)})),O=(0,e.useMemo)((()=>({active:p,selected:m,disabled:i})),[p,m,i]);return Ct({ourProps:{id:o,ref:h,role:"option",tabIndex:!0===i?void 0:-1,"aria-disabled":!0===i||void 0,"aria-selected":m,disabled:void 0,onClick:v,onFocus:E,onPointerEnter:x,onMouseEnter:x,onPointerMove:S,onMouseMove:S,onPointerLeave:_,onMouseLeave:_},theirProps:c,slot:O,defaultTag:"li",name:"Combobox.Option"})})),Xr=Object.assign(Zr,{Input:Gr,Button:Wr,Label:Yr,Options:Kr,Option:Jr});function ea(e){return e&&e.label?e.label:null}function ta({id:t,value:n,label:r,onChange:s,onQueryChange:o,options:l,placeholder:c,isLoading:u}){const[d,p]=(0,a.useState)(l),[f,y]=(0,a.useState)(""),b=(0,a.useCallback)((e=>{y(e.target.value)}),[y]),g=(0,a.useCallback)((()=>{y("")}),[y]);(0,a.useEffect)((()=>{p(l)}),[l]),(0,a.useEffect)((()=>{o?o(f):p(l.filter((e=>e.label.toLowerCase().includes(f.toLowerCase()))))}),[f,o]);const v=(0,a.useCallback)(((e,t)=>({selected:n,active:r})=>h({selected:n||e===t,active:r})),[h]),E=(0,a.useCallback)((e=>t=>{e&&t.stopPropagation()}),[]);return(0,e.createElement)(Xr,{id:t,as:"div",value:n,onChange:s,onBlur:g},(({open:s})=>(0,e.createElement)(a.Fragment,null,r&&(0,e.createElement)(Xr.Label,{className:"yst-block yst-mb-1 yst-max-w-sm yst-text-sm yst-font-medium yst-text-slate-700"},r),(0,e.createElement)("div",{className:"yst-h-[45px] yst-max-w-sm yst-relative"},(0,e.createElement)(Xr.Button,{"data-id":`button-${t}`,role:"button",className:"yst-w-full yst-h-full yst-rounded-md yst-border yst-border-slate-300 yst-flex yst-items-center yst-rounded-r-md yst-pl-3 yst-pr-2 focus-within:yst-border-primary-500 focus-within:yst-outline-none focus-within:yst-ring-1 focus-within:yst-ring-primary-500",as:"div"},(0,e.createElement)(Xr.Input,{"data-id":`input-${t}`,className:"yst-w-full yst-text-slate-700 yst-rounded-md yst-border-0 yst-outline-none yst-bg-white yst-py-2 yst-pl-0 yst-pr-10 yst-shadow-none sm:yst-text-sm",onChange:b,displayValue:ea,placeholder:c,onClick:E(s)}),(0,e.createElement)(_r,{className:"yst-h-5 yst-w-5 yst-text-slate-400 yst-inset-y-0 yst-right-0","aria-hidden":"true"})),d.length>0&&(0,e.createElement)(Xr.Options,{className:"yst-absolute yst-z-10 yst-mt-1 yst-max-h-60 yst-w-full yst-overflow-auto yst-rounded-md yst-bg-white yst-text-base yst-shadow-lg yst-ring-1 yst-ring-black yst-ring-opacity-5 focus:yst-outline-none sm:yst-text-sm"},u&&(0,e.createElement)("div",{className:"yst-flex yst-bg-white yst-sticky yst-z-20 yst-text-sm yst-italic yst-top-0 yst-py-2 yst-pl-3 yst-pr-9 yst-my-0"},(0,e.createElement)(kr,{className:"yst-text-primary-500 yst-h-4 yst-w-4 yst-mr-2 yst-self-center"}),(0,i.__)("Loading...","wordpress-seo")),d.map((t=>(0,e.createElement)(Xr.Option,{key:`yst-option-${t.value}`,value:t,className:v(t.value,n.value)},(({selected:r})=>(0,e.createElement)(a.Fragment,null,(0,e.createElement)("span",{className:m()("yst-block yst-truncate",(r||n.value===t.value)&&"yst-font-semibold")},t.label),(r||n.value===t.value)&&(0,e.createElement)("span",{className:"yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-4 yst-text-white"},(0,e.createElement)(H,{className:"yst-h-5 yst-w-5","aria-hidden":"true"}))))))))))))}ta.propTypes={onChange:E().func.isRequired,options:E().array.isRequired,id:E().string.isRequired,value:E().shape({value:E().number,label:E().string}),label:E().string,onQueryChange:E().func,placeholder:E().string,isLoading:E().bool},ta.defaultProps={value:null,label:"",onQueryChange:null,placeholder:(0,i.__)("Select an option","wordpress-seo"),isLoading:!1};const na={"X-WP-NONCE":wpApiSettings.nonce},ra=wpApiSettings.root;function aa({initialValue:t,onChangeCallback:n,placeholder:r}){const[s,l]=(0,a.useState)([]),[c,u]=(0,a.useState)({value:t.id,label:t.name}),[d,p]=(0,a.useState)(!1),m=(0,a.useRef)(!0);(0,a.useEffect)((()=>()=>{m.current=!1}),[]);const f=(0,a.useCallback)((e=>{u(e),n(e)})),y=(0,a.useCallback)((0,o.debounce)((async e=>{p(!0);const t=await function(e=""){const t=`${ra}wp/v2/users?per_page=20${e?`&search=${encodeURIComponent(e)}`:""}`;return(0,mn.sendRequest)(t,{method:"GET",headers:na})}(e);m.current&&(p(!1),l(t.map((e=>({value:e.id,label:e.name})))))}),500),[]);return(0,e.createElement)(ta,{id:"yoast-configuration-user-select",value:c,label:(0,i.__)("Name","wordpress-seo"),onChange:f,onQueryChange:y,options:s,placeholder:r,isLoading:d})}function sa({dispatch:t,imageUrl:n,fallbackImageUrl:r,person:s,canEditUser:o}){const l=(0,a.useCallback)((()=>{Nr((e=>{t({type:"SET_PERSON_LOGO",payload:{...e}})}))}),[Nr]),u=(0,a.useCallback)((()=>{t({type:"REMOVE_PERSON_LOGO"})})),d=(0,a.useCallback)((e=>{t({type:"SET_PERSON",payload:e}),c()({path:`yoast/v1/configuration/check_capability?user_id=${e.value}`}).then((e=>{t({type:"SET_CAN_EDIT_USER",payload:e.success})})).catch((e=>{console.error(e.message)}))}),[t]),p=(0,a.useMemo)((()=>(0,a.createInterpolateElement)((0,i.sprintf)( // translators: %1$s is replaced by the selected user's name, and %2$s and %3$s are opening and closing anchor tags. o?(0,i.__)("You have selected the user %1$s as the person this site represents. This user profile information will now be used in search results. %2$sUpdate this profile to make sure the information is correct%3$s.","wordpress-seo"):(0,i.__)("You have selected the user %1$s as the person this site represents. This user profile information will now be used in search results. You're not allowed to update this user profile, so please ask this user or an admin to make sure the information is correct.","wordpress-seo"),`${s.name}`,"",""),{b:(0,e.createElement)("b",null),a:(0,e.createElement)("a",{id:"yoast-configuration-user-selector-user-link",href:window.wpseoScriptData.userEditUrl.replace("{user_id}",s.id),target:"_blank",rel:"noopener noreferrer"})})),[s.id,s.name,o]);return(0,e.createElement)(a.Fragment,null,(0,e.createElement)(aa,{initialValue:s,onChangeCallback:d,name:"person_id",placeholder:(0,i.__)("Select a user","wordpress-seo")}),(0,e.createElement)(q,{id:"user-representation-alert",isVisible:0!==s.id,type:"info",className:"yst-mt-5"},p),(0,e.createElement)(Tr,{className:"yst-mt-6",id:"person-logo-input",url:n,fallbackUrl:r,onSelectImageClick:l,onRemoveImageClick:u,imageAltText:"",hasPreview:!0,label:(0,i.__)("Personal logo or avatar","wordpress-seo")}))}function oa({onOrganizationOrPersonChange:t,dispatch:n,state:r,siteRepresentationEmpty:s}){const[o,l]=(0,a.useState)("emptyChoice"===r.companyOrPerson?"yst-opacity-0":"yst-opacity-100"),c=(0,a.useCallback)((()=>{l("yst-opacity-100")})),u=(0,a.useCallback)((e=>{n({type:"CHANGE_WEBSITE_NAME",payload:e.target.value})})),d=Pn((0,i.sprintf)(/* translators: %1$s expands to opening 'a' HTML tag, %2$s expands to closing 'a' HTML tag. */ (0,i.__)("Completing this step helps Google to understand your site even better. Bonus: You'll improve your chance of getting %1$srich results%2$s!","wordpress-seo"),"",""),"https://yoa.st/config-workout-rich-results","yoast-configuration-rich-text-link");return(0,e.createElement)(a.Fragment,null,window.wpseoFirstTimeConfigurationData.knowledgeGraphMessage&&(0,e.createElement)(z,{type:"info"},window.wpseoFirstTimeConfigurationData.knowledgeGraphMessage),(0,e.createElement)("p",{className:m()("yst-text-sm yst-whitespace-pre-line yst-mb-6",r.shouldForceCompany?"yst-mt-4":"yst-mt-0")},r.shouldForceCompany?d:(0,e.createElement)(a.Fragment,null,(0,i.__)("Tell us! Is your site about an organization or a person? ","wordpress-seo"),d)),(0,e.createElement)(Or,{id:"organization-person-select",htmlFor:"organization-person-select",name:"organization",label:(0,i.__)("Does your site represent an Organization or Person?","wordpress-seo"),value:r.shouldForceCompany?"company":r.companyOrPerson,onChange:t,choices:r.companyOrPersonOptions,disabled:!!r.shouldForceCompany}),!("company"===r.companyOrPerson&&r.companyName&&r.companyLogo||"company"===r.companyOrPerson&&!r.companyLogoFallback||"person"===r.companyOrPerson&&r.personLogo||"person"===r.companyOrPerson&&!r.personLogoFallback)&&(0,e.createElement)(z,{type:"info",className:"yst-mt-6"},(0,i.__)("We took the liberty of using your website name and logo for the organization name and logo. Feel free to change them below.","wordpress-seo")),(0,e.createElement)(P,{className:"yst-my-6",id:"website-name-input",name:"website-name",label:(0,i.__)("Website name","wordpress-seo"),value:r.websiteName||r.fallbackWebsiteName,onChange:u,feedback:{isVisible:r.errorFields.includes("website_name"),message:[(0,i.__)("We could not save the website name. Please check the value.","wordpress-seo")],type:"error"}}),(0,e.createElement)(D.Z,{height:["company","person"].includes(r.companyOrPerson)?"auto":0,duration:400,easing:"linear",onAnimationEnd:c},(0,e.createElement)("div",{className:m()("yst-transition-opacity yst-duration-300 yst-mt-6",o)},"company"===r.companyOrPerson&&(0,e.createElement)(Ir,{dispatch:n,imageUrl:r.companyLogo,fallbackImageUrl:r.companyLogoFallback,organizationName:r.companyName,fallbackOrganizationName:r.fallbackCompanyName,errorFields:r.errorFields}),"person"===r.companyOrPerson&&(0,e.createElement)(sa,{dispatch:n,imageUrl:r.personLogo,fallbackImageUrl:r.personLogoFallback,person:{id:r.personId,name:r.personName},canEditUser:!!r.canEditUser,errorFields:r.errorFields}))),(0,e.createElement)(q,{id:"site-representation-empty-alert",isVisible:s,className:"yst-mt-6"},(0,i.__)("You're almost there! Complete all settings in this step so search engines know what your site is about.","wordpress-seo")))}aa.propTypes={initialValue:E().shape({id:E().number,name:E().string}),onChangeCallback:E().func,placeholder:E().string},aa.defaultProps={initialValue:{id:0,name:""},onChangeCallback:o.noop,placeholder:(0,i.__)("Select a user","wordpress-seo")},sa.propTypes={dispatch:E().func.isRequired,imageUrl:E().string,fallbackImageUrl:E().string,person:E().shape({id:E().number,name:E().string}),canEditUser:E().bool.isRequired},sa.defaultProps={imageUrl:"",fallbackImageUrl:"",person:{id:0,name:""}},oa.propTypes={onOrganizationOrPersonChange:E().func.isRequired,dispatch:E().func.isRequired,state:E().object.isRequired,siteRepresentationEmpty:E().bool.isRequired};const ia=window.wp.url,la=(0,i.__)("Oops! Something went wrong. Check your email address and try again.","wordpress-seo"),ca=(0,i.__)("Please enter a valid email address.","wordpress-seo"),ua=(0,i.__)("Thank you! Check your inbox for the confirmation email.","wordpress-seo");function da({gdprLink:t}){const[n,r]=(0,a.useState)(""),[s,o]=(0,a.useState)("waiting"),[l,c]=(0,a.useState)(""),u=(0,a.useCallback)((async function(){if(!(0,ia.isEmail)(n))return o("error"),void c(ca);o("loading"),(await async function(e){return(await fetch("https://my.yoast.com/api/Mailing-list/subscribe",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({customerDetails:{firstName:"",email:e},list:"Yoast newsletter",source:"free"})})).json()}(n)).error?(o("error"),c(la)):(o("success"),c(ua))}),[n]),d=(0,a.useCallback)((e=>{o("waiting"),r(e.target.value)}),[r]);return(0,e.createElement)(a.Fragment,null,(0,e.createElement)("h4",{className:"yst-text-slate-900 yst-text-base yst-leading-6 yst-font-normal"},(0,i.__)("Get free weekly SEO tips!","wordpress-seo")),(0,e.createElement)("p",{className:"yst-my-2"},(0,i.sprintf)(/* translators: %1$s expands to "Yoast SEO", %2$s expands to "Yoast SEO". */ (0,i.__)("Subscribe to the %1$s newsletter to receive best practices for improving your rankings, save time on SEO tasks, stay up-to-date with the latest SEO news, and get expert guidance on how to make the most of %2$s!","wordpress-seo"),"Yoast SEO","Yoast SEO")),(0,e.createElement)("div",{className:"yst-flex yst-items-start yst-gap-2 yst-mt-4"},(0,e.createElement)(P,{label:(0,i.__)("Email address","wordpress-seo"),id:"newsletter-email",name:"newsletter email",value:n,onChange:d,className:"yst-grow",type:"email",placeholder:(0,i.__)("E.g. example@email.com","wordpress-seo"),feedback:{isVisible:["error","success"].includes(s),type:s,message:[l]}}),(0,e.createElement)("button",{type:"button",id:"newsletter-sign-up-button",className:"yst-button yst-button--primary yst-h-[45px] yst-items-center yst-mt-[27.5px] yst-shrink-0",onClick:u,disabled:"loading"===s,"data-hiive-event-name":"clicked_signup | personal preferences"},(0,i.__)("Yes, give me your free tips!","wordpress-seo"))),(0,e.createElement)("p",{className:"yst-text-slate-600 yst-text-xxs yst-leading-4"},Pn((0,i.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing anchor tags. (0,i.__)("Yoast respects your privacy. Read %1$sour privacy policy%2$s on how we handle your personal information.","wordpress-seo"),"",""),t,"yoast-configuration-gdpr-link")))}da.propTypes={gdprLink:E().string},da.defaultProps={gdprLink:""};const pa={variant:{default:"","inline-block":"yst-radio-group--inline-block"}},ma=({id:t,name:n,value:r,label:a,className:s,...o})=>(0,e.createElement)("div",{className:m()("yst-radio",s)},(0,e.createElement)("input",{type:"radio",id:t,name:n,value:r,className:"yst-radio__input",...o}),a&&(0,e.createElement)(fa,{htmlFor:t,className:"yst-radio__label"},a));ma.propTypes={name:E().string.isRequired,id:E().string.isRequired,value:E().oneOfType([E().string,E().number]).isRequired,label:E().string.isRequired,variant:E().oneOf(Object.keys({default:"","inline-block":"yst-radio--inline-block"})),className:E().string},ma.defaultProps={variant:"default",className:""};const fa=({children:t,as:n,className:r,...a})=>(0,e.createElement)(n,{className:m()("yst-label",r),...a},t);fa.propTypes={children:E().node.isRequired,as:E().elementType,className:E().string},fa.defaultProps={as:"label",className:""};const ya=({children:t,id:n,name:r,value:s,label:o,options:i,onChange:l,variant:c,className:u,...d})=>{const p=(0,a.useCallback)((({target:e})=>e.checked&&l(e.value)),[l]);return(0,e.createElement)("fieldset",{className:m()("yst-radio-group",pa.variant[c],u)},o&&(0,e.createElement)(fa,{as:"legend",className:"yst-radio-group__label"},o),t&&(0,e.createElement)("div",{className:"yst-radio-group__description"},t),(0,e.createElement)("div",{className:"yst-radio-group__options"},i.map(((t,a)=>{const o=`${n}-${a}`;return(0,e.createElement)(ma,{key:o,id:o,name:r,value:t.value,label:t.label,variant:c,checked:s===t.value,onChange:p,...d})}))))};ya.propTypes={children:E().node,id:E().string.isRequired,name:E().string.isRequired,value:E().oneOfType([E().string,E().number]).isRequired,options:E().arrayOf(E().shape({value:E().oneOfType([E().string,E().number]).isRequired,label:E().string.isRequired})).isRequired,onChange:E().func.isRequired,label:E().node,variant:E().oneOf(Object.keys(pa.variant)),className:E().string},ya.defaultProps={children:null,label:null,variant:"default",className:""};const ha=ya,ba=(0,mn.makeOutboundLink)();function ga({state:t,setTracking:n}){return(0,e.createElement)(a.Fragment,null,!t.isPremium&&(0,e.createElement)(a.Fragment,null,(0,e.createElement)(da,{gdprLink:window.wpseoFirstTimeConfigurationData.shortlinks.gdpr}),(0,e.createElement)("br",null)),(0,e.createElement)("h4",{className:"yst-text-slate-900 yst-text-base yst-leading-6 yst-font-normal"},(0,i.__)("Are you open to help us improve our services?","wordpress-seo")),!!t.isMainSite&&!t.isTrackingAllowedMultisite&&(0,e.createElement)(z,{type:"warning",className:"yst-mt-2"},(0,i.__)("This feature has been disabled by the network admin.","wordpress-seo")),!t.isMainSite&&(0,e.createElement)(z,{type:"warning",className:"yst-mt-2"},(0,i.__)("This feature has been disabled since subsites never send tracking data.","wordpress-seo")),(0,e.createElement)("p",{className:m()("yst-text-normal yst-mt-2 yst-mb-4",t.isMainSite&&t.isTrackingAllowedMultisite?"":"yst-opacity-50")},(0,i.sprintf)(/* translators: 1: Yoast SEO. */ (0,i.__)("Can we collect anonymous information about your website to enhance %1$s?","wordpress-seo"),"Yoast SEO")),(0,e.createElement)(ha,{id:"yoast-configuration-tracking-radio-button",name:"yoast-configuration-tracking",value:t.tracking,onChange:n,className:t.isMainSite&&t.isTrackingAllowedMultisite?"":"yst-opacity-50",disabled:!t.isMainSite||!t.isTrackingAllowedMultisite,options:[{value:0,label:(0,i.__)("No, I don't want to share my site data","wordpress-seo")},{value:1,label:(0,i.__)("Yes, you can collect my site data","wordpress-seo")}]}),!!t.isMainSite&&!!t.isTrackingAllowedMultisite&&(0,e.createElement)(a.Fragment,null,(0,e.createElement)(ba,{className:"yst-inline-block yst-mt-4",href:"https://yoa.st/config-workout-tracking"},(0,i.__)("What data will be collected and why?","wordpress-seo")),(0,e.createElement)("p",{className:"yst-my-2"},(0,e.createElement)("i",null,(0,i.__)("Important: We won't sell this data, and we won't collect any personal information about you or your visitors.","wordpress-seo")))))}ga.propTypes={state:E().object.isRequired,setTracking:E().func.isRequired};const va=e.forwardRef((function(t,n){return e.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:n},t),e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var Ea,wa,xa,Sa,_a,Oa,Ra,Ca,ka,Ta,Pa,Na,Ia,Ma,La,Fa,Aa,Da,za,qa,ja,Ua,$a,Ha,Va,Ba,Za,Ga,Wa,Ya,Qa,Ka,Ja,Xa,es,ts,ns,rs,as,ss,os,is,ls,cs,us,ds,ps,ms,fs,ys,hs;function bs(){return bs=Object.assign?Object.assign.bind():function(e){for(var t=1;te.createElement("svg",bs({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:"indexables_2_left_bubble_optm_svg__yst-shrink-0 indexables_2_left_bubble_optm_svg__yst-h-28",viewBox:"0 0 289.98 291.69"},t),Ea||(Ea=e.createElement("path",{fill:"#006531",d:"M178.09 168c6.2.88 11.73 57.74 10.9 64-1 7.61-20.47 21.56-35.83 16.83s-22.28-17.36-17.85-26.51 36.58-55.25 42.78-54.32z"})),wa||(wa=e.createElement("path",{fill:"#f0ecf0",d:"M256.47 217s6 6 13.08 13.82a131.19 131.19 0 1 0-181.07 40.45q3.55 2.25 7.23 4.27c.71-2.79 1.36-5 1.81-6.64 1.48-5.32 6.32-14.53 5.36-19.55s-4.13-7.68-3.54-20.08a114.5 114.5 0 0 1 3.54-25.72 14.88 14.88 0 0 0-7.09-1.77 113.17 113.17 0 0 1 10.95-12c6.87-21.57 17-42 23.64-51.22 6.22-8.64 29.37-10.27 52.71-6.72s47.75 28.12 40.37 63-28.46 44.21-30.79 49.23-5.57 18.8-3.65 23.67c1.29 3.28 6.19 9.05 11.85 17.05a130.91 130.91 0 0 0 48-28.94c-8.87-9.55-19.31-20.38-19.87-21.12 9.73-11.73 15.92-18.83 27.47-17.73z"})),xa||(xa=e.createElement("path",{fill:"#006531",d:"M150.14 131.06c-3.25-1.48-3.86-.12-7.4.48s-18.86-1.18-23.91.81c-9.9 3.91-14 11.82-16 20.27s.54 19.16 1.72 25.95-3.39 53.18-3.09 59.38 20.2 11.57 22.27.35 15.33-65.3 15.33-65.3 14.33-40.46 11.08-41.94z"})),Sa||(Sa=e.createElement("path",{fill:"#b498c6",d:"M49 177.58c26.5 32.94 70.46 51.81 71.35 58.6s-3.84 13.34-8.87 16.29-30.71-3.4-45.77-22.47c-15.55-19.67-28.56-37.13-28.56-37.13s5.68-8.18 11.85-15.29z"})),_a||(_a=e.createElement("path",{fill:"#006531",d:"M132.36 152.53c-4.21 2.95-21 27.42-26.52 32-4.18 3.48-14.36 15.36-15.25 23.63s6.39 19.91 16 25.4c5.24 3 23.88-5.3 25.65-13.27s4.32-70.72.12-67.76z"})),Oa||(Oa=e.createElement("path",{fill:"#006531",d:"M192.67 244.07c2.37-5 23.4-14.36 30.79-49.21s-17-59.44-40.37-63-46.49-1.86-52.71 6.74c-6.63 9.2-16.77 29.65-23.64 51.22 15.28-14.48 30.08-20.49 39.86-32.18-.3 1.55 8.49 23.45 11.81 28.36 4.15 6.13 14.16 17.89 20.38 31-10.34-1.92-21.49-1.6-31.9 2.41-2.66 6.3-2.07 16.93-.88 22.84-2.28 17.87-2.12 33.54.46 48.85 4.06.37 8.17.58 12.32.58a131.19 131.19 0 0 0 42.08-6.9c-5.66-8-10.56-13.77-11.85-17-1.92-4.91 1.29-18.69 3.65-23.71zM112.56 231c-.27-7.26-.22-8.8.78-20.95-2.89-1.6-6.55-4.57-10.46-6.48a114.5 114.5 0 0 0-3.54 25.72c-.59 12.4 2.59 15.06 3.54 20.08S99 263.58 97.52 268.9c-.45 1.6-1.1 3.85-1.81 6.64a127.06 127.06 0 0 0 13.85 6.58c-1.44-18.61-1.04-36.3 3-51.12z"})),Ra||(Ra=e.createElement("path",{fill:"#b498c6",d:"M269.55 230.83C262.43 223 256.47 217 256.47 217c-11.55-1.11-17.74 6-27.47 17.72.56.74 11 11.57 19.88 21.12a132.58 132.58 0 0 0 20.67-25.01z"})),Ca||(Ca=e.createElement("path",{fill:"#89bc3b",d:"M95.79 201.78a14.88 14.88 0 0 1 7.09 1.77c1.1-4.56 2.4-9.17 3.86-13.73a113.74 113.74 0 0 0-10.95 11.96z"})),ka||(ka=e.createElement("path",{fill:"#89bc3b",d:"M112.56 231c-4 14.84-4.44 32.53-3 51.14a130.52 130.52 0 0 0 36.91 9c-2.58-15.31-2.74-31-.46-48.85-1.19-5.91-1.78-16.54.88-22.84 10.41-4 21.56-4.33 31.9-2.41-6.22-13.12-16.23-24.88-20.38-31-3.32-4.91-12.11-26.81-11.81-28.36-9.78 11.69-24.58 17.7-39.86 32.18-1.46 4.56-2.76 9.17-3.86 13.73 3.91 1.91 7.57 4.88 10.46 6.48-1 12.11-1.05 13.65-.78 20.93z"})),Ta||(Ta=e.createElement("path",{fill:"#b498c6",d:"M35.85 151.6s2.66 3.18 4.43 5.55 4.66 16 8.68 20.43-7 12.22-7 12.22c-12-.92-23-13.34-21-28.7 0 0 3.25-4.73 3.84-6.5s-.18-5-.18-5a34.85 34.85 0 0 1-4.29-6.21c-1.21-2.65-.84-6.46.37-9.18s4.56-2.56 4.68-1.89c.31 1.74 2 8.86 1.86 8.6-.87-2.01 2.67 2.19 8.61 10.68z"})),Pa||(Pa=e.createElement("path",{fill:"#b498c6",d:"M32.13 155.37c-12 4.78-18.36 1.3-24.56 4.84s1.22 17.61 1.22 17.61 1.84 6.8 5.39 11.23 24.27 4.41 24.27 4.41l10.15-13.52z"})),Na||(Na=e.createElement("path",{fill:"#b498c6",d:"M28.47 184.32c-.59.89-5.5 6.45-8.45 7.45s-6.34-.66-6.34-.66c-3.64-1.42-4.81-3.6-3.07-6.2 0 0 10.29-.52 7.34.18s7.57-4.31 7.57-4.31c1.96.66 3.09 1.77 2.95 3.54z"})),Ia||(Ia=e.createElement("path",{fill:"#8b6c9c",d:"M25.52 180.78c7.47.85-3.24 16.33-11.84 10.33 5.39 1.3 7.32.21 10.71-3.07 2.5-2.49 3.06-2.79 2.42-5.24a2.59 2.59 0 0 0-1.29-2.02z"})),Ma||(Ma=e.createElement("path",{fill:"#b498c6",d:"M5.48 176.94c-2.11 2.55-1.17 5.19 4.13 8l8.39 1.15 8.57-5.31a8.67 8.67 0 0 0-.89-6.8l-10.34 3.25z"})),La||(La=e.createElement("path",{fill:"#8b6c9c",d:"M9.61 184.91c7.51.44 7.78 1.78 12.14-.95 5-3.14 5.69-4.17 3.88-10 4.06 5.07 1.3 7.9-3.35 10.83-3.09 1.94-6.79 2.92-12.67.12z"})),Fa||(Fa=e.createElement("path",{fill:"#b498c6",d:"M1.34 168.67c-3.06 1.58-.35 9.08 2.77 9l11.18-.41s9.12-2 10.34-3.25c1.81-1.8-.57-7.7-1.48-7.38l-10.93 3z"})),Aa||(Aa=e.createElement("path",{fill:"#8b6c9c",d:"M4.11 177.64c11.75.39 10.61 4.06 19.09-3.93 1.37-1.34-.15-7.07-1.05-7.11 1.23-.32 4.11 5.64 1.75 7.82-5.45 5.13-8.43 7.58-19.79 3.22z"})),Da||(Da=e.createElement("path",{fill:"#b498c6",d:"M4.59 159.81c-2.79.54-3.52 2-3.54 5.43s-.94 2.44 1.29 3.43 13.88.88 13.88.88l7.93-3c.73-2.37.66-4.59-1.18-6.5l-9.4-.89a69.28 69.28 0 0 0-8.98.65z"})),za||(za=e.createElement("path",{fill:"#8b6c9c",d:"M2.34 168.67c1.27.26 12.13.39 13.88.38-.45.09-.73.24 7.76-2.92-.91 1 .41-.43.05-2.9-.51-3.6-2.16-2.54-5.81-3.09-4.5-.9-9.43-1.88 4.8-.54.53.05 3 2.56 1.61 7.14-.11.36.83-.09-8.31 3.31-3.68.02-10.94.14-13.98-1.38z"})),qa||(qa=e.createElement("path",{fill:"#006531",d:"M197.4 137.56c4.72.88 31.31 19.79 39.83 35.92 3.33 6.31 6 21.38 8.9 27.58s13.59 18.31 14.48 19.79c-17.13 2.66-27.18 19.2-27.18 19.2-4-3.26-43.16-44.31-44-46.38-3.25-7.97 3.24-57 7.97-56.11z"})),ja||(ja=e.createElement("path",{fill:"#006531",d:"M195.4 110.09c-1.55 13 2 27.47 2 27.47s-44.31 21.26-50.8 20.08-3-24.33-3-24.33-.88-13.29 1.48-17.13 4.75-9.93 13-11.11 38.1-1.57 37.32 5.02z"})),Ua||(Ua=e.createElement("path",{fill:"#b498c6",d:"M147.3 154.39s11.48-21.63 15-24.29 18.72-8.83 22.56-10 3.84-5.31 5-8.56 1.48-29.79 1.48-29.79l-45.29 2 4.73 39.81c.36 12.52-4.85 19.83-3.48 30.83z"})),$a||($a=e.createElement("path",{fill:"#89bc3b",d:"M195.45 138.74s27.35 19.2 39.05 36.26c2.65 3.85 4.84 20.79 7.2 25.81s10.05 15.07 10.05 15.07l5.31.29 3.55 4.73c-9.41 1.64-18.27 9.31-27.18 19.2l-6.49-5.62c5.46-7.09 11.49-13 18.9-15.94 0 0-7.68-12.11-9.75-16.54s-4.52-21.19-7.2-26.41c-9-17.6-39.06-34.73-39.06-34.73z"})),Ha||(Ha=e.createElement("path",{fill:"#093f22",d:"m192.38 197.7 21.02 21.79-2.66 5.31-15.36 5.61 11.88-10.33-14.88-22.38zm-71.73-50.53 1.55 13.29a79.66 79.66 0 0 1-7.31 11.54c-4.43 5.76-8.76 11.31-8.76 11.31L114 156l-.44 12z"})),Va||(Va=e.createElement("path",{fill:"#8b6c9c",d:"M191.38 81.73s1.91 5.52-1.07 17.09c-2.07 8-25.57 30.6-35 28.17-6-1.54-6-11.85-7.27-16.31L145 83.8z"})),Ba||(Ba=e.createElement("path",{fill:"#b498c6",d:"M172.22 6.3c-20-2.46-38.74 14.76-40.58 16.91-1.16 1.35-4.27 8.05-6.64 14.45 13.42-5 36.89-.82 67.51 9.88 1 6.7.06 12.11-.92 19.63 0 0-8.61 4.69-16 4.69s-16.29-2.46-18.45-5.23-8-9.63-13.77-10-11.37 5.87-13.89 6.59c-1.75.5-8 3-10.15 5.15v-.08a15.41 15.41 0 0 0-1.18 6.5c.8 8.65 6.53 18.51 8.69 21.59s2.72 9.45 6.41 14.07c3.13 3.91 15.33 3.46 20 2.1 7-2 29.38-9.37 32.77-14S198.23 70 198.23 70s12.4-8.23 13-14.69c2.12-22.13-11.91-45.67-39.01-49.01z"})),Za||(Za=e.createElement("path",{fill:"#006531",d:"M192.2 87.46c21.23 1.16 34.39 0 35.92-9.22s1.16-64.85-52.19-76.38c-50.56-10.93-60.49 29.65-61.72 37s7.59 8.91 7.59 8.91c-.61-3.09 1.55-2.73 3.19-10.14 15.18-3.18 61.91 7.92 64.68 12.84s-.54 12.68-.24 16.06 7.69 6.47 7.69 6.47z"})),Ga||(Ga=e.createElement("path",{fill:"#093f22",d:"M225.1 81.93c1.13-4.56-4.46-9.51-15.07-14.76l-5.22 5.23-4.92 15.37c12.11.23 23.63.05 25.21-5.84z"})),Wa||(Wa=e.createElement("path",{fill:"#b498c6",d:"M207 73.61c3.69 3.07 3.93 10.55 1.78 14.54s-14.78 8.49-17.21 7.57-4.92-3.88-4.92-3.88l10.45-18.62a12.33 12.33 0 0 1 4.49.11c.31 0 2.8-1 3.11-.91a6.32 6.32 0 0 1 2.3 1.19z"})),Ya||(Ya=e.createElement("path",{fill:"#191a1a",d:"M192.2 69s-19.69 37.82-22.44 39c.82.16 5.58-1.59 7.38-2.46s20-32.59 20-32.59z"})),Qa||(Qa=e.createElement("path",{fill:"#093f22",d:"m186.03 79.26 5.37 4.21-4.21 7.53-5.93-3.32 4.77-8.42z"})),Ka||(Ka=e.createElement("path",{fill:"#fcee21",d:"M122.11 47.5a54.43 54.43 0 0 1 2.89-9.84c-4.93 9.91-10.22 24.17-5.7 30.66a35.07 35.07 0 0 1 5.58-8.22s-3.7-6.1-2.77-12.6z"})),Ja||(Ja=e.createElement("path",{fill:"#fbb03b",d:"M129.49 65.25c2.72-.78 8.83-7.61 14.37-6.38s11.14 8 13.29 10.76 11.07 5.23 18.45 5.23 16-7.69 16-7.69c1-7.52 1.93-12.93.92-19.63-30.62-10.7-54.09-14.89-67.52-9.88a54.43 54.43 0 0 0-2.89 9.84c-.93 6.45 2.76 12.6 2.76 12.6a35.07 35.07 0 0 0-5.58 8.22v.08c2.2-2.15 6.93-2.21 10.2-3.15z"})),Xa||(Xa=e.createElement("path",{fill:"#4b3f51",d:"M164.1 84.58s-10-6.68-19.87-7.87c-1.84-.22-2.48.64-3.69.59-1.78-.07-2.9-.67-4.28-.74-4.79-.22-5.77 2.37-5.77 2.37a4.35 4.35 0 0 0 1.93 4.43c1.77 1 2.51-1.11 3.32 1.77 17.72-1.66 22.26-.59 28.36-.55z"})),es||(es=e.createElement("path",{fill:"#8b6c9c",d:"M135.67 85c0 2.77-5.87 11.68 5.81 12.3 12.65.7 19.82-9.23 22.52-12.67-9.76-.11-19.34-2.38-28.33.37z"})),ts||(ts=e.createElement("path",{fill:"#f2f2f2",d:"M136.67 81.48c-.95 1.52-.25 7.58 4.61 8.3 7.75 1 16.17-1.77 22-5.22-9.55-1.06-11.88-2.62-16.38-3.49-2.54-.48-9.09-1.42-10.23.41z"})),ns||(ns=e.createElement("path",{fill:"#fcee21",d:"M124.87 60.1a20.07 20.07 0 0 0 12-.61s-2.15-7.92-6.76-7.61-5.24 8.22-5.24 8.22z"})),rs||(rs=e.createElement("path",{fill:"#f15a24",d:"M136.81 59.5c-3.13-10.48-10.72-10.06-11.88.6-1.93-.14-1.38-9.34 4.35-9.94 6.86-.67 8.23 9.15 7.53 9.34zm1.59-18.77c1.26.46.58 3.28-.69 3.38s-7.64-.52-9.45.31-5.08 4.17-6.25 6.08c.21-1.54 3.68-7.57 5-8.85s10.14-1.38 11.39-.92z"})),as||(as=e.createElement("path",{fill:"#8b6c9c",stroke:"#8b6c9c",strokeMiterlimit:10,d:"M150.7 66.25c.48 1.6 1 3.41-.85 4.33s-4-2.41-5.53-2.1-4 2.24-5.61 1.77c-3.34-1-3.69-2.69-3.69-2.69s-1.12 4.2 4.3 4.84c3.68.43 5.35-2.06 8.42-1.45s2.09 2.8 3.57 2.06c2.97-1.47.98-6.44-.61-6.76z"})),ss||(ss=e.createElement("path",{fill:"#8b6c9c",d:"M154.79 69.68c2.27 1.94 3.94 10 11.63 10.35 1.28 2-.13 5.41-1.89 9.58a20.53 20.53 0 0 0 7.07-12.91c-11.05.3-13.26-5.8-16.81-7.02zm-18.22.44s-2.47-.4-2.47.87a.37.37 0 0 1-.16.3.38.38 0 0 1-.34.06c-2.4-.79-1.79-4.72-.07-5.86-1.72 4.02 3.04 4.63 3.04 4.63z"})),os||(os=e.createElement("path",{fill:"#8b6c9c",d:"M132.48 68.63c-2 2.71-2.16 7-2 10.24 0 0-1-1.86-2-1.79s-.71 5.3.79 9a31 31 0 0 1-6-15.73c2.67 1.07 6 .5 9.27-3.38z"})),is||(is=e.createElement("ellipse",{cx:139.18,cy:184.17,fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,rx:8.75,ry:5.25,transform:"rotate(-9.22 139.183 184.166)"})),ls||(ls=e.createElement("path",{fill:"#f19018",d:"m129.81 195.84 18.24-2.09a100.85 100.85 0 0 0-14.23 16.57l8-.9a78.29 78.29 0 0 0-8.82 18.82c-3.2 9.33-2.81 18.19-3 17.84a47.74 47.74 0 0 1-3.75-14.91 56 56 0 0 1 .51-15.19c-3 .83-6 1.67-8.89 2.51a73.05 73.05 0 0 1 11.94-22.65z"})),cs||(cs=e.createElement("path",{fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,d:"m129.81 195.84 18.24-2.09a100.85 100.85 0 0 0-14.23 16.57l8-.9a78.29 78.29 0 0 0-8.82 18.82c-3.2 9.33-2.81 18.19-3 17.84a47.74 47.74 0 0 1-3.75-14.91 56 56 0 0 1 .51-15.19c-3 .83-6 1.67-8.89 2.51a73.05 73.05 0 0 1 11.94-22.65z"})),us||(us=e.createElement("path",{fill:"#f15a24",d:"M136 56.78c1 1.52-.76 3.87-2.65 3.87s-3.66-1.26-3.66-3.1a3.38 3.38 0 0 1 3.43-3.32c1.88 0 1.51.55 2.88 2.55z"})),ds||(ds=e.createElement("path",{fill:"#8b6c9c",d:"M25 161.28c-.08 6.93 1.26 20.08 15.09 24.42 0 0-8.67 1.28-11.66-1.38s-6.92-16.88-3.43-23.04z"})),ps||(ps=e.createElement("path",{fill:"#093f22",d:"m120.68 47.53 4.32-9.87c19.53-1.66 62.46 8.77 64.68 12.84s.07 13.6-.24 16.06 7.68 6.44 7.68 6.44l4.61.31s-8.3-3.07-8-7.38 3.2-16.07-1.23-18.4c-27.06-14.19-61.36-15-69.48-13.76-6.46 1-8.44 6.4-7.22 10.09.85 2.58 4.88 3.67 4.88 3.67zm47.77-26.05c-.92-2.15 18.91-8.27 30.13-7.68 6.17.32 13.26 10.33 5.91 9.45-14.77-1.77-35.11.38-36.04-1.77zM172 32.7c-.59-3 28.35-3 39.26.35 6 1.8 2.55 12.33-1.84 10.45C198 38.61 172.38 34.61 172 32.7zm-38.21-14.1L131 9.07l-6.15 6.15s8.02 4.61 8.94 3.38zm-7.07 8.61C127 26 120.57 21.06 120 22s-2.77 8.3-2.77 8.3 9.18-1.86 9.49-3.09z"})),ms||(ms=e.createElement("path",{fill:"#fc3",d:"M181.6 46.59c-.06 10.33-1.83 19.86-6 28.27A30.57 30.57 0 0 1 163.36 73c3.15-11.43 5.89-22.37 5.61-29.76a90 90 0 0 1 12.63 3.35z"})),fs||(fs=e.createElement("path",{fill:"#fcee21",d:"M172.83 62.87c-5.55.17-12.05 1.5-16.91-1.54 0 0 .7-8.22 7.15-7s9.76 8.54 9.76 8.54z"})),ys||(ys=e.createElement("path",{fill:"#f15a24",d:"M155 42.88c-1.24.38-.16 2.92.92 3.39s8.91 1.14 11.65 1.79 6.2 4.36 8.64 6.81c-.22-1.86-4.87-8.63-7.68-9.53s-12.29-2.83-13.53-2.46zm13.31 16.56a3.78 3.78 0 1 1-3.44-4.09 5 5 0 0 1 .56.09 4.28 4.28 0 0 1 2.88 4z"})),hs||(hs=e.createElement("path",{fill:"#f15a24",d:"M155.82 61.32c-2.89-12.19 15.29-11.67 17.1 1.51-.51.23-2.75-6.29-8.94-8.06-7.49-2.22-7.59 6.6-8.16 6.55z"})));function vs(e){e.preventDefault(),window.location.href="admin.php?page=wpseo_dashboard"}function Es(){const t=(0,o.get)(window,"wpseoScriptData.webinarIntroFirstTimeConfigUrl","https://yoa.st/webinar-intro-first-time-config");return(0,e.createElement)("div",{className:"yst-flex yst-flex-row yst-justify-between yst-items-center yst--mt-4"},(0,e.createElement)("div",{className:"yst-mr-6"},(0,e.createElement)("p",{className:"yst-text-sm yst-mb-4"},(0,i.sprintf)(/* translators: 1: Yoast. */ (0,i.__)("Great work! Thanks to the details you've provided, %1$s has enhanced your site for search engines, giving them a clearer picture of what your site is all about.","wordpress-seo"),"Yoast")),(0,e.createElement)("p",{className:"yst-text-sm yst-mb-6"},(0,i.__)("If your goal is to increase your rankings, you need to work on your SEO regularly. That can be overwhelming, so let's tackle it one step at a time!","wordpress-seo")),(0,e.createElement)(s.Button,{as:"a",variant:"primary",id:"button-webinar-seo-dashboard",href:t,target:"_blank","data-hiive-event-name":"clicked_to_onboarding_page"},(0,i.sprintf)(/* translators: 1: Yoast SEO. */ (0,i.__)("Learn how to increase your rankings with %1$s","wordpress-seo"),"Yoast SEO"),(0,e.createElement)(va,{className:"yst-w-4 yst-h-4 yst-icon-rtl yst-ml-2"})),(0,e.createElement)("p",{className:"yst-mt-4"},(0,e.createElement)(s.Link,{id:"link-webinar-register",href:"#",onClick:vs,"data-hiive-event-name":"clicked_seo_dashboard"},(0,i.__)("Or go to your SEO dashboard","wordpress-seo")))),(0,e.createElement)(gs,{className:"yst-shrink-0 yst-h-28 yst-mb-24"}))}function ws(e,t){const{companyName:n,companyLogo:r,companyOrPersonOptions:a,shouldForceCompany:s,fallbackCompanyName:o,websiteName:i,fallbackWebsiteName:l}=e;let{companyOrPerson:c}=e;return("company"!==c||n||r||t(ye.siteRepresentation))&&!s||(c="company"),{...e,personId:Number(e.personId),personLogoId:Number(e.personLogoId),companyLogoId:Number(e.companyLogoId),tracking:Number(e.tracking),companyOrPerson:c,companyOrPersonOptions:a,errorFields:[],stepErrors:{},editedSteps:[],companyName:n||o,websiteName:i||l}}function xs(){const{removeAlert:t}=(0,u.useDispatch)(d),[n,r]=(0,a.useState)(window.wpseoFirstTimeConfigurationData.finishedSteps),s=(0,a.useCallback)((e=>n.includes(e)),[n]),l=(0,a.useCallback)((e=>{r((t=>(0,o.uniq)([...t,e])))}),[r]);(0,a.useEffect)((()=>{!async function(e){const t=await c()({path:"yoast/v1/configuration/save_configuration_state",method:"POST",data:{finishedSteps:e}});await t.json}(n),window.wpseoFirstTimeConfigurationData.finishedSteps=n}),[n]);const[p,m]=(0,a.useReducer)(g,{...ws(window.wpseoFirstTimeConfigurationData,s)}),[f,y]=(0,a.useState)((()=>"0"===window.yoastIndexingData.amount?"already_done":"idle")),[h,b]=(0,a.useState)(!1),[v,E]=(0,a.useState)(!1),w=(0,a.useCallback)(((e,t)=>{m({type:"SET_STEP_ERROR",payload:{step:e,message:t}})}),[]),x=(0,a.useCallback)((e=>{m({type:"REMOVE_STEP_ERROR",payload:e})}),[]);(0,a.useEffect)((()=>{"completed"===f&&(t("wpseo-reindex"),window.yoastIndexingData.amount="0")}),[f,t]);const S=s(ye.siteRepresentation),_=s(ye.socialProfiles),O=s(ye.personalPreferences),R=(0,a.useCallback)((e=>{m({type:"SET_TRACKING",payload:parseInt(e,10)})})),C=(0,a.useCallback)((e=>{m({type:"SET_ERROR_FIELDS",payload:e})})),k=!("company"!==p.companyOrPerson||p.companyName&&(p.companyLogo||p.companyLogoFallback)&&p.websiteName),T=!("person"!==p.companyOrPerson||p.personId&&(p.personLogo||p.personLogoFallback)&&p.websiteName),P=(0,a.useCallback)((e=>m({type:"SET_COMPANY_OR_PERSON",payload:e})),[m]),N=[S,_,O].every(Boolean),[I,M]=(0,a.useState)(s(ye.siteRepresentation)),L=[I,s(ye.siteRepresentation),s(ye.socialProfiles),s(ye.personalPreferences),N],[F,A]=(0,a.useState)(function(e){if(!Array.isArray(e)||0===e.length)return 0;const t=e.findIndex((e=>!1===e));return-1!==t?t:e.every(Boolean)?e.length-1:0}(L)),[D,z]=(0,a.useState)(N),[q,U]=(0,a.useState)(!1),[$,H]=(0,a.useState)(D&&!q);function V(){return H(!1),U(!0),!0}(0,a.useEffect)((()=>{N&&z(!0)}),[N]),(0,a.useEffect)((()=>{H(D&&!q)}),[D,q]),(0,a.useEffect)((()=>{function e(e){"Enter"===e.key&&"first-time-configuration-tab"===document.querySelector(".nav-tab.nav-tab-active").id&&"INPUT"===e.target.tagName&&e.preventDefault()}return addEventListener("keydown",e),()=>removeEventListener("keydown",e)}),[]),(0,a.useEffect)((()=>{p.editedSteps.includes(F+1)||"in_progress"===f?window.isStepBeingEdited=!0:window.isStepBeingEdited=!1}),[p.editedSteps,f,F]);const B=(0,a.useCallback)((e=>{(p.editedSteps.includes(F+1)||"in_progress"===f)&&(-1===location.href.indexOf("page=wpseo_dashboard#top#first-time-configuration")&&-1===location.href.indexOf("page=wpseo_dashboard#/first-time-configuration")||(e.preventDefault(),e.returnValue=""))}),[p.editedSteps,f,F]);return(0,a.useEffect)((()=>(window.addEventListener("beforeunload",B),()=>{window.removeEventListener("beforeunload",B)})),[B]),(0,e.createElement)(fe,{setActiveStepIndex:A,activeStepIndex:F,isStepperFinished:N},(0,e.createElement)(de,null,(0,e.createElement)(de.Header,{name:(0,i.__)("SEO data optimization","wordpress-seo"),isFinished:I},(0,e.createElement)(ge,{stepId:ye.optimizeSeoData,beforeGo:V,isVisible:$,additionalClasses:"yst-ml-auto"},(0,i.__)("Edit","wordpress-seo"))),(0,e.createElement)(de.Content,null,(0,e.createElement)(Tn,{setIndexingState:y,indexingState:f,showRunIndexationAlert:v,isStepperFinished:N}),(0,e.createElement)(be,{stepId:ye.optimizeSeoData,additionalClasses:"yst-mt-12",beforeGo:function(){return v||"idle"!==f||"1"===window.yoastIndexingData.disabled?(M(!0),U(!1),!0):(E(!0),!1)},destination:D?"last":1},(0,i.__)("Continue","wordpress-seo")))),(0,e.createElement)(de,null,(0,e.createElement)(de.Header,{name:(0,i.__)("Site representation","wordpress-seo"),isFinished:S},(0,e.createElement)(ge,{stepId:ye.siteRepresentation,beforeGo:V,isVisible:$,additionalClasses:"yst-ml-auto"},(0,i.__)("Edit","wordpress-seo"))),(0,e.createElement)(de.Content,null,(0,e.createElement)(oa,{onOrganizationOrPersonChange:P,dispatch:m,state:p,siteRepresentationEmpty:h}),(0,e.createElement)(de.Error,{id:"yoast-site-representation-step-error",message:p.stepErrors[ye.siteRepresentation]||""}),(0,e.createElement)(we,{stepId:ye.siteRepresentation,stepperFinishedOnce:D,saveFunction:function(){return!h&&k||!h&&T?(b(!0),!1):h||"emptyChoice"!==p.companyOrPerson?(b("emptyChoice"===p.companyOrPerson||k||T),async function(e){const t={company_or_person:"emptyChoice"===e.companyOrPerson?"company":e.companyOrPerson,company_name:e.companyName,company_logo:e.companyLogo,company_logo_id:e.companyLogoId?e.companyLogoId:0,website_name:e.websiteName,person_logo:e.personLogo,person_logo_id:e.personLogoId?e.personLogoId:0,company_or_person_user_id:e.personId},n=await c()({path:"yoast/v1/configuration/site_representation",method:"POST",data:t});return await n.json}(p).then((()=>(C([]),x(ye.siteRepresentation),l(ye.siteRepresentation),window.wpseoFirstTimeConfigurationData={...window.wpseoFirstTimeConfigurationData,...p},!0))).catch((e=>e.failures?(C(e.failures),!1):(e.message&&w(ye.siteRepresentation,e.message),!1)))):(b(!0),!1)},setEditState:U}))),(0,e.createElement)(de,null,(0,e.createElement)(de.Header,{name:(0,i.__)("Social profiles","wordpress-seo"),isFinished:_},(0,e.createElement)(ge,{stepId:ye.socialProfiles,beforeGo:V,isVisible:$,additionalClasses:"yst-ml-auto"},(0,i.__)("Edit","wordpress-seo"))),(0,e.createElement)(de.Content,null,(0,e.createElement)(j,{state:p,dispatch:m,setErrorFields:C}),(0,e.createElement)(de.Error,{id:"yoast-social-profiles-step-error",message:p.stepErrors[ye.socialProfiles]||""}),(0,e.createElement)(we,{stepId:ye.socialProfiles,stepperFinishedOnce:D,saveFunction:function(){return"person"===p.companyOrPerson?(l(ye.socialProfiles),!0):async function(e){const t={facebook_site:e.socialProfiles.facebookUrl,twitter_site:e.socialProfiles.twitterUsername,other_social_urls:e.socialProfiles.otherSocialUrls},n=await c()({path:"yoast/v1/configuration/social_profiles",method:"POST",data:t});return await n.json}(p).then((e=>!1===e.success?(C(e.failures),Promise.reject("There were errors saving social profiles")):e)).then((()=>{C([]),x(ye.socialProfiles),l(ye.socialProfiles)})).then((()=>(window.wpseoFirstTimeConfigurationData.socialProfiles=p.socialProfiles,!0))).catch((e=>(e.failures&&C(e.failures),e.message&&w(ye.socialProfiles,e.message),!1)))},setEditState:U}))),(0,e.createElement)(de,null,(0,e.createElement)(de.Header,{name:(0,i.__)("Personal preferences","wordpress-seo"),isFinished:O},(0,e.createElement)(ge,{stepId:ye.personalPreferences,beforeGo:V,isVisible:$,additionalClasses:"yst-ml-auto"},(0,i.__)("Edit","wordpress-seo"))),(0,e.createElement)(de.Content,null,(0,e.createElement)(ga,{state:p,setTracking:R}),(0,e.createElement)(de.Error,{id:"yoast-personal-preferences-step-error",message:p.stepErrors[ye.personalPreferences]||""}),(0,e.createElement)(we,{stepId:ye.personalPreferences,stepperFinishedOnce:D,saveFunction:function(){return async function(e){if(0!==e.tracking&&1!==e.tracking)throw"Value not set!";const t={tracking:e.tracking},n=await c()({path:"yoast/v1/configuration/enable_tracking",method:"POST",data:t});return await n.json}(p).then((()=>l(ye.personalPreferences))).then((()=>(x(ye.personalPreferences),window.wpseoFirstTimeConfigurationData.tracking=p.tracking,!0))).catch((e=>(e.message&&w(ye.personalPreferences,e.message),!1)))},setEditState:U}))),(0,e.createElement)(de,null,(0,e.createElement)(de.Header,{name:(0,i.__)("Finish configuration","wordpress-seo"),isFinished:N}),(0,e.createElement)(de.Content,null,(0,e.createElement)(Es,null))))}function Ss(){return(0,e.createElement)("div",{id:"yoast-configuration",className:"yst-max-w-[715px] yst-mt-6 yst-p-8 yst-rounded-lg yst-bg-white yst-shadow yst-text-slate-600"},(0,e.createElement)("h2",{id:"yoast-configuration-title",className:"yst-text-lg yst-text-primary-500 yst-font-medium"},(0,i.__)("Tell us about your site, so we can get it ranked!","wordpress-seo")),(0,e.createElement)("p",{className:"yst-pt-2 yst-mb-6"},(0,i.__)("Let's get your site in tip-top shape for the search engines. Simply follow these 5 steps to make Google understand what your site is about.","wordpress-seo")),(0,e.createElement)("hr",{id:"configuration-hr-top"}),(0,e.createElement)("div",{className:"yst-mt-8"},(0,e.createElement)(xs,null)))}r()((()=>{const t={isRtl:Boolean((0,o.get)(window,"wpseoScriptData.metabox.isRtl",!1))},n=document.getElementById("wpseo-first-time-configuration");n&&(0,a.render)((0,e.createElement)(s.Root,{context:t},(0,e.createElement)(Ss,null)),n)}))})()})();js/dist/dashboard-widget.js000064400000004025147206602470011702 0ustar00(()=>{"use strict";const e=window.React,t=window.wp.element,s=window.yoast.componentsNew,o=window.yoast.styleGuide,i=window.yoast.analysisReport,a=window.yoast.helpers;class r extends t.Component{constructor(){super(),this.state={statistics:null,feed:null,isDataFetched:!1}}componentDidMount(){const e=jQuery("#wpseo-dashboard-overview-hide");e.is(":checked")&&this.fetchData(),e.on("click",(()=>{this.fetchData()}))}fetchData(){this.state.isDataFetched||(this.getStatistics(),this.getFeed(),this.setState({isDataFetched:!0}))}static getColorFromScore(e){return o.colors[`$color_${e}`]||o.colors.$color_grey}getStatistics(){wpseoApi.get("statistics",(e=>{const t={};e&&e.seo_scores&&(t.seoScores=e.seo_scores.map((e=>({value:parseInt(e.count,10),color:r.getColorFromScore(e.seo_rank),html:`${e.label}`}))),t.header=jQuery(`
    ${e.header}
    `).text(),this.setState({statistics:t}))}))}getFeed(){(0,a.getPostFeed)("https://yoast.com/feed/widget/?wp_version="+wpseoDashboardWidgetL10n.wp_version+"&php_version="+wpseoDashboardWidgetL10n.php_version,2).then((e=>{e.items=e.items.map((e=>(e.description=jQuery(`
    ${e.description}
    `).text(),e.description=e.description.replace(`The post ${e.title} appeared first on Yoast.`,"").trim(),e))),this.setState({feed:e})})).catch((e=>console.log(e)))}getSeoAssessment(){return null===this.state.statistics?null:(0,e.createElement)(i.SiteSEOReport,{key:"yoast-seo-posts-assessment",seoAssessmentText:this.state.statistics.header,seoAssessmentItems:this.state.statistics.seoScores})}getYoastFeed(){return null===this.state.feed?null:(0,e.createElement)(s.ArticleList,{className:"wordpress-feed",key:"yoast-seo-blog-feed",title:wpseoDashboardWidgetL10n.feed_header,feed:this.state.feed,footerLinkText:wpseoDashboardWidgetL10n.feed_footer})}render(){const t=[this.getSeoAssessment(),this.getYoastFeed()].filter((e=>null!==e));return 0===t.length?null:(0,e.createElement)("div",null,t)}}const n=document.getElementById("yoast-seo-dashboard-widget");n&&(0,t.render)((0,e.createElement)(r,null),n)})();js/dist/academy.js000064400000040266147206602470010104 0ustar00(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var a in s)e.o(s,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:s[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,s=window.wp.components,a=window.wp.data,r=window.wp.domReady;var i=e.n(r);const o=window.wp.element,n=window.yoast.uiLibrary,l=window.lodash,d=window.wp.i18n,c=window.yoast.reduxJsToolkit,u="adminUrl",y=(0,c.createSlice)({name:u,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),m=(y.getInitialState,{selectAdminUrl:e=>(0,l.get)(e,u,"")});m.selectAdminLink=(0,c.createSelector)([m.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),y.actions,y.reducer;const p=window.wp.url,g="linkParams",h=(0,c.createSlice)({name:g,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),w=h.getInitialState,f={selectLinkParam:(e,t,s={})=>(0,l.get)(e,`${g}.${t}`,s),selectLinkParams:e=>(0,l.get)(e,g,{})};f.selectLink=(0,c.createSelector)([f.selectLinkParams,(e,t)=>t,(e,t,s={})=>s],((e,t,s)=>(0,p.addQueryArgs)(t,{...e,...s})));const k=h.actions,_=h.reducer,E=(0,c.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:s="default",title:a,description:r})=>({payload:{id:e||(0,c.nanoid)(),variant:t,size:s,title:a||"",description:r}})},removeNotification:(e,{payload:t})=>(0,l.omit)(e,t)}}),b=(E.getInitialState,E.actions,E.reducer,"pluginUrl"),v=(0,c.createSlice)({name:b,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),S=(v.getInitialState,{selectPluginUrl:e=>(0,l.get)(e,b,"")});S.selectImageLink=(0,c.createSelector)([S.selectPluginUrl,(e,t,s="images")=>s,(e,t)=>t],((e,t,s)=>[(0,l.trimEnd)(e,"/"),(0,l.trim)(t,"/"),(0,l.trimStart)(s,"/")].join("/"))),v.actions,v.reducer,window.wp.apiFetch;const L="wistiaEmbedPermission",A=(0,c.createSlice)({name:L,initialState:{value:!1,status:"idle",error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${L}/request`,(e=>{e.status="loading"})),e.addCase(`${L}/success`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${L}/error`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,l.get)(t,"error.code",500),message:(0,l.get)(t,"error.message","Unknown")}}))}});A.getInitialState,A.actions,A.reducer;const P=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),O=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"}))})),x=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M10.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L12.586 11H5a1 1 0 110-2h7.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),I="@yoast/academy",Q=(e,t=[],...s)=>(0,a.useSelect)((t=>{var a,r;return null===(a=(r=t(I))[e])||void 0===a?void 0:a.call(r,...s)}),t),$=(e,t)=>!(!(0,l.isEmpty)(e)&&!t)||Object.values(e).every((e=>!0===e)),M=()=>{const e=Q("selectLinkParams"),s=Q("selectPreference",[],"pluginUrl",""),a=Q("selectPreference",[],"isPremium",""),r=Q("selectPreference",[],"isWooActive",""),i=Q("selectPreference",[],"isLocalActive",""),c=Q("selectUpsellSettingsAsProps"),u=(0,n.useSvgAria)(),y=(0,o.useMemo)((()=>[{id:"ai_for_seo",title:"AI for SEO",description:(0,d.__)("Join the Yoast team to learn how to harness the power of AI to revolutionize your SEO approach. Gain a competitive edge, future-proof your keyword strategies, and soar to the top of search rankings – all designed to empower busy small business owners.","wordpress-seo"),image:`${s}/images/academy/ai_for_seo_icon_my_yoast.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/ai-for-seo-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/ai-for-seo-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"seo_for_beginners",title:"SEO for beginners",description:(0,d.__)("In this free course, you'll get quick wins to make your site rank higher in Google, Bing, and Yahoo.","wordpress-seo"),image:`${s}/images/academy/seo_for_beginners.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-seo-beginners-start",e),dependencies:{},hasTrial:!0},{id:"seo_for_wp",title:"Yoast SEO for WordPress (block editor)",description:(0,d.sprintf)(/* translators: %1$s expands to Yoast SEO. */ (0,d.__)("In this course, you'll learn about how to set up and use the %1$s for WordPress plugin so it makes SEO even easier. This course is meant for users of the block editor.","wordpress-seo"),"Yoast SEO"),image:`${s}/images/academy/seo_for_wp.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-seo-wordpress-block-editor-start",e),dependencies:{},hasTrial:!0},{id:"all_around_seo",title:"All-around SEO",description:(0,d.__)("In this course, you'll learn practical SEO skills on every key aspect of SEO, to make your site stand out.","wordpress-seo"),image:`${s}/images/academy/all_around_seo.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-all-around-seo-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-all-around-seo-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"wp_for_beginners",title:"WordPress for beginners",description:(0,d.__)("Do you want to set up your own WordPress site? This course will teach you the ins and outs of creating and maintaining a WordPress website!","wordpress-seo"),image:`${s}/images/academy/wp_for_beginners.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-wordpress-beginners-start",e),dependencies:{},hasTrial:!0},{id:"copywriting",title:"SEO copywriting",description:(0,d.__)("In this course, you'll learn how to write awesome copy that is optimized for ranking in search engines.","wordpress-seo"),image:`${s}/images/academy/copywriting.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-seo-copywriting-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-seo-copywriting-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"structured_data_for_beginners",title:"Structured data for beginners",description:(0,d.__)("Learn how to make your site stand out from the crowd by adding structured data!","wordpress-seo"),image:`${s}/images/academy/structured_data_for_beginners.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-structured-data-beginners-start",e),dependencies:{},hasTrial:!0},{id:"keyword_research",title:"Keyword research",description:(0,d.__)("Do you know the essential first step of good SEO? It's keyword research. In this training, you'll learn how to research and select the keywords that will guide searchers to your pages.","wordpress-seo"),image:`${s}/images/academy/keyword_research.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-keyword-research-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-keyword-research-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"block_editor",title:"Block editor training",description:(0,d.__)("Start creating block-tastic content with the new WordPress block editor! Learn all about the block editor and what you can do with it.","wordpress-seo"),image:`${s}/images/academy/block_editor.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-block-editor-start",e),dependencies:{},hasTrial:!0},{id:"site_structure",title:"Site structure",description:(0,d.__)("A clear site structure benefits your users and is of great importance for SEO. Still, most people seem to forget about this. Get ahead of your competition and learn how to improve your site structure!","wordpress-seo"),image:`${s}/images/academy/site_structure.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-site-structure-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-site-structure-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"local",title:"Local SEO",description:(0,d.__)("Do you own a local business? This course will teach you how to make sure your local audience can find you in the search results and on Google Maps!","wordpress-seo"),image:`${s}/images/academy/local.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-local-seo-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-local-seo-unlock",e),dependencies:{LOCAL:i},hasTrial:!0},{id:"ecommerce",title:"Ecommerce SEO",description:(0,d.__)("Learn how to optimize your online shop for your customers and for search engines!","wordpress-seo"),image:`${s}/images/academy/ecommerce.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-ecommerce-seo-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-ecommerce-seo-unlock",e),dependencies:{WOO:r},hasTrial:!0},{id:"understanding_structured_data",title:"Understanding structured data",description:(0,d.__)("Do you want to take a deep dive into structured data? In this course, you'll learn the theory related to structured data in detail.","wordpress-seo"),image:`${s}/images/academy/understanding_structured_data.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-understanding-structured-data-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-understanding-structured-data-unlock",e),dependencies:{PREMIUM:a},hasTrial:!1},{id:"multilingual",title:"International SEO",description:(0,d.__)("Are you selling in countries all over the world? In this course, you’ll learn all about setting up and managing a site that targets people in different languages and locales.","wordpress-seo"),image:`${s}/images/academy/multilingual.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-international-seo-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-international-seo-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"crawlability",title:"Technical SEO: Crawlability and indexability",description:(0,d.__)("You have to make it possible for search engines to find your site, so they can display it in the search results. We'll tell you all about how that works in this course!","wordpress-seo"),image:`${s}/images/academy/crawlability.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-technical-seo-crawlability-indexability-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-technical-seo-crawlability-indexability-unlock",e),dependencies:{PREMIUM:a},hasTrial:!0},{id:"hosting_and_server",title:"Technical SEO: Hosting and server configuration",description:(0,d.__)("Choosing the right type of hosting for your site is the basis of a solid Technical SEO strategy. Learn all about it in this course!","wordpress-seo"),image:`${s}/images/academy/hosting_and_server.png`,startLink:(0,p.addQueryArgs)("https://yoa.st/academy-technical-seo-hosting-server-configuration-start",e),upsellLink:(0,p.addQueryArgs)("https://yoa.st/academy-technical-seo-hosting-server-configuration-unlock",e),dependencies:{PREMIUM:a},hasTrial:!1}]),[e]);return(0,t.createElement)("div",{className:"yst-p-4 min-[783px]:yst-p-8 yst-mb-8 xl:yst-mb-0"},(0,t.createElement)(n.Paper,{as:"main"},(0,t.createElement)("header",{className:"yst-p-8 yst-border-b yst-border-slate-200"},(0,t.createElement)("div",{className:"yst-max-w-screen-sm"},(0,t.createElement)(n.Title,null,(0,d.__)("Academy","wordpress-seo")),(0,t.createElement)("p",{className:"yst-text-tiny yst-mt-3"},a&&(0,d.sprintf)( // translators: %s for Yoast SEO Premium. (0,d.__)("Learn vital SEO skills that you can apply at once! Let us take you by the hand and give you practical SEO tips to help you outrank your competitors. Maximize your SEO game! Because your %s subscription gives you unlimited access to all courses.","wordpress-seo"),"Yoast SEO Premium"),!a&&(0,t.createElement)(t.Fragment,null,(0,d.sprintf)( // translators: %s for Yoast SEO. (0,d.__)("Learn vital SEO skills that you can apply at once! Let us take you by the hand and give you practical SEO tips to help you outrank your competitors. %s comes with five free courses.","wordpress-seo"),"Yoast SEO")," ",(0,t.createElement)(n.Link,{href:(0,p.addQueryArgs)("https://yoa.st/academy-page-upsell/",e),target:"_blank",...c},(0,d.sprintf)( // translators: %s for Yoast SEO Premium. (0,d.__)("Maximize your SEO game by purchasing %s, which grants you unlimited access to all courses.","wordpress-seo"),"Yoast SEO Premium")))))),(0,t.createElement)("div",{className:"yst-h-full yst-p-8"},(0,t.createElement)("div",{className:"yst-max-w-6xl yst-grid yst-gap-6 yst-grid-cols-1 sm:yst-grid-cols-2 min-[783px]:yst-grid-cols-1 lg:yst-grid-cols-2 xl:yst-grid-cols-4"},y.map((e=>(0,t.createElement)(n.Card,{key:`card-course-${e.id}`},(0,t.createElement)(n.Card.Header,{className:"yst-h-auto yst-p-0"},(0,t.createElement)("img",{className:"yst-w-full yst-transition yst-duration-200",src:e.image,alt:"",width:500,height:250,loading:"lazy",decoding:"async"}),((e,t)=>!(0,l.isEmpty)(e)&&(t||e.WOO||e.LOCAL))(e.dependencies,a)&&(0,t.createElement)("div",{className:"yst-absolute yst-top-2 yst-right-2 yst-flex yst-gap-1.5"},(0,t.createElement)(n.Badge,{size:"small",variant:"upsell"},(0,d.__)("Premium","wordpress-seo")))),(0,t.createElement)(n.Card.Content,{className:"yst-flex yst-flex-col yst-gap-3"},(0,t.createElement)(n.Title,{as:"h3"},e.title),e.description,!$(e.dependencies,a)&&(0,t.createElement)(n.Link,{href:e.startLink,className:"yst-flex yst-items-center yst-mt-3 yst-no-underline yst-font-medium yst-text-primary-500",target:"_blank"},(0,d.__)("Start free trial lesson","wordpress-seo"),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,d.__)("(Opens in a new browser tab)","wordpress-seo")),(0,t.createElement)(x,{className:"yst-h-4 yst-w-4 yst-ml-1 yst-icon-rtl"}))),(0,t.createElement)(n.Card.Footer,null,(0,t.createElement)(t.Fragment,null,!$(e.dependencies,a)&&(0,t.createElement)(n.Button,{as:"a",id:`button-get-course-${e.id}`,className:"yst-gap-2 yst-w-full yst-px-2",variant:"upsell",href:null==e?void 0:e.upsellLink,target:"_blank",rel:"noopener",...c},(0,t.createElement)(P,{className:"yst-w-5 yst-h-5 yst--ml-1 yst-shrink-0",...u}),(0,d.sprintf)(/* translators: %1$s expands to Premium. */ (0,d.__)("Unlock with %1$s","wordpress-seo"),"Premium")),$(e.dependencies,a)&&(0,t.createElement)(n.Button,{as:"a",id:`button-start-course-${e.id}`,className:"yst-gap-2 yst-w-full yst-px-2 yst-leading-5",variant:"primary",href:e.startLink,target:"_blank",rel:"noopener"},(0,d.__)("Start the course","wordpress-seo"),(0,t.createElement)(O,{className:"yst--mr-1 yst-ml-1 yst-h-5 yst-w-5 yst-text-white"})))))))))))},T=()=>({...(0,l.get)(window,"wpseoScriptData.preferences",{})}),U=(0,c.createSlice)({name:"preferences",initialState:T(),reducers:{}}),R={selectPreference:(e,t,s={})=>(0,l.get)(e,`preferences.${t}`,s),selectPreferences:e=>(0,l.get)(e,"preferences",{})};R.selectUpsellSettingsAsProps=(0,c.createSelector)([e=>R.selectPreference(e,"upsellSettings",{}),(e,t="premiumCtbId")=>t],((e,t)=>({"data-action":null==e?void 0:e.actionId,"data-ctb-id":null==e?void 0:e[t]})));const N=U.actions,C=U.reducer;i()((()=>{const e=document.getElementById("yoast-seo-academy");if(!e)return;(({initialState:e={}}={})=>{(0,a.register)((({initialState:e})=>(0,a.createReduxStore)(I,{actions:{...k,...N},selectors:{...f,...R},initialState:(0,l.merge)({},{[g]:w(),preferences:T()},e),reducer:(0,a.combineReducers)({[g]:_,preferences:C})}))({initialState:e}))})({initialState:{[g]:(0,l.get)(window,"wpseoScriptData.linkParams",{})}}),(()=>{const e=document.getElementById("wpcontent"),t=document.getElementById("adminmenuwrap");e&&t&&(e.style.minHeight=`${t.offsetHeight}px`)})();const r=(0,a.select)(I).selectPreference("isRtl",!1);(0,o.render)((0,t.createElement)(n.Root,{context:{isRtl:r}},(0,t.createElement)(s.SlotFillProvider,null,(0,t.createElement)(M,null))),e)}))})();js/dist/languages/cs.js000064400000055062147206602470011054 0ustar00(()=>{"use strict";var i={d:(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(i,e)=>Object.prototype.hasOwnProperty.call(i,e),r:i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})}},e={};i.r(e),i.d(e,{default:()=>h});const t=window.yoast.analysis,n=["ten","nula","jeden","jedné","jedna","jedno","dva","dvě","dvou","tři","čtyři","pět","šest","sedm","osm","devět","deset","sto","tisíc","tento","ta","tato","to","toto","ti","tito","kdo","co"],s=["protože","když","sbohem","sotva","kdo","co","kde","odkud","kdy","odkdy","ačkoli","navzdory","ačkoli","když","kde","aby","pořádku","kdyby","jak","do","že","jako","přesně","jako","než","aby","kdo","kde","kdo","koho","kde","kolik","odkud","proč","kolik","nebo"],a=["předtím","vždyť","definitely","konečně","jasné","možné","ale","demzufolge","však","ačkoliv","protože","ovšem","zkrátka","potom","stejně","tím","jinak","zatímco","když","co","kdežto","ačkoli","přestože","čas","chvíle","chvilka","avšak","jenže","nicméně","přitom","aniž","a","proto","tedy","teda","totiž","mimoto","čímž","což","než","nejenže","také","jenom","přesto","jak","jelikož","takže","zda","sice","tudíž","jakoby","nýbrž","neboli","jen","čili","pak","jenomže","kdežto","leč","poněvadž","třeba","přece","nežli","zdali","buďto","totiž","jenom","leda","pakliže","třebaže","jakože","jakkoli","nechť","sotva","kterak","sic","jakkoliv","ledaže","ježto","třebas","jakž","pakli","zdalipak","takž","jakže","pokavaď","jakby","pokudž","sotvaže","pokad","kdyžtě","mezitímco","buďsi","byťsi","pokadž","tedyť","buďže","dle","vzhledem","místo","vedle","okolo","uprostřed","namísto","navzdory","krom","poblíž","blízko","nedaleko","začátkem","naproti","počátkem","počínaje","postupem","vlivem","vyjma","následkem","dík","zpoza","zásluhou","nevyjímaje","doprostřed","zpod","zespoda","závěrem","úvodem","přese","prostřed","nepočítaje","úměrně","vprostřed","navrch","vevnitř","zespodu","poblíže","počínajíc","nadtoť","zpozad","vyjímaje","začínaje","zespod","navrchu","vyjímajíc","navzdor","dál","veprostřed","končíc","začínajíc","nepočítajíc","zvíce","vprostředku","opodále","podále","naprostřed","vlastně","podle","samozřejmě","vždyť","zatím","dřív","radši","spíš","poprvé","nakonec","navíc","záleží","zbytek","kým","jakmile","skutečně","tentokrát","představit","jménem"],o=a.concat(["a proto","i když","i přestože","z tohoto důvodu","kromě toho","nějaký čas","k tomu","na jedné straně","stručně řečeno","jinými slovy","důvod je","důvodem je","hlavně protože","možným důvodem je","a potom","mimo to","z uvedených důvodů","z těchto důvodů","důvod je jednoduchý","teprve potom","hlavní důvod proč","nejdřív potom","přesto však","ale zároveň","ale také","během toho"]),u=function(i){let e=i;return i.forEach((t=>{(t=t.split("-")).length>0&&t.filter((e=>!i.includes(e))).length>0&&(e=e.concat(t))})),e}([].concat([],["nula","jeden","jedné","jedna","jedno","dva","dvě","dvou","tři","čtyři","pět","šest","sedm","osm","devět","deset","jedenáct","dvanáct","třináct","čtrnáct","patnáct","šestnáct","sedmnáct","osmnáct","devatenáct","dvacet","dvacet jedna","dvacet dva","dvacet tři","třicet","čtyřicet","padesát","šedesát","sedmdesát","osmdesát","devadesát","sto","dvě stě","tři sta","čtyři sta","pět set","šest set","sedm set","osm set","devět set","tisíc","dva tisíce","jedenáct tisíc","dvacet pět tisíc","sto třicet osm tisíc","milión","dva milióny","pět miliónů","šest miliónů","sedm miliónů","miliarda"],["první","druhý","druhé","třetí","čtvrtý","pátý","šestý","sedmý","osmý","devátý","desátý"],["já","ty","on","ona","ono","my","mě","mne","mi","mně","vy","oni","ony","tě","ti","tebe","tobě","jeho","něho","ho","jej","něj","ji","jí","ní","je","ně","jim","nim","jimi","nimi","jich","nich","jemu","němu","něm","mém","mým","mých","mou","mými","ním","mu","nás","nám","námi","vás","vám","mnou","námi","tebou","vámi","našich","tys","naši","můj","má","mé","mí","moje","mého","mojí","mých","mému","moji","tvůj","tvoje","tvá","tvé","tví","tvoji","tvého","tvojí","tvých","tvojích","tvému","tvým","tvou","tvém","tvých","tvými","jeho","její","náš","naše","váš","vaše","jejich","vaší","naší","ten","tento","ta","tato","to","toto","ti","tito","tyto","ty","tato","tohle","toho","abych","těch","tenhle","abyste","abychom","tyhle","tuhle","tohoto","čeho","čemu","téhle","těmi","této","tomhle","tou","tahle","žes","tímhle","těm","těchto","tomu","tu","ten","tom","tím","který","která","které","kterého","kterému","kterou","kterém","kterým","kteří","kterých","kterými","jenž","jež","jehož","jejž","něhož","nějž","jíž","níž","jemuž","němuž","jež","něž","němž","jímž","nímž","již","jichž","nichž","jimž","nimž","jimiž","nimiž","kdo","co","koho","čeho","komu","čemu","koho","kom","čem","kým","čím","cože","což","koho","jakou"],["co","čí","čím","jak","jaký","jaké","kde","kdo","kdý","kolik","který","jenž","proč"],["nějaký","nějaká","nějaké","žádný","nijaký","lecjaký","ledajaký","ledasjaký","kdejaký","kdekterý","všelijaký","veškerý","pár","hodně","celý","tolik","celou","celé","oba","buď","zbytek","žádná","nějakou","spoustu","několik"],["se","si","sebe","sobě","sebou","svůj","svoje","svá","své","svého","svojí","svému","svoji","svou","svém","svým","sví","svých","svými"],["někdo","někoho","někomu","někom","někým","něco","nic","něčeho","něčemu","něco","cokoli","cokoliv","něčem","něčím","některá","některé","některého","některému","některý","některou","některém","některým","někteří","některých","některými","nějaká","nějaké","nějakého","nějakému","nějaký","nějakou","nějakém","nějakým","nějací","nějakých","nějakými","něčí","něčího","něčímu","něčím","něčí","ničí","něčích","něčími","ledakdo","ledaco","ledajaký","ledakterý","kdokoliv","kdokoli","kohokoli","komukoli","kohokoli","komkoli","kýmkoli","cokoli","jakýkoli","jakýkoliv","kterýkoli","číkoli","kdos","kdosi","cosi","kterýsi","jakýsi","nikdo","čísi","leckdo","leckdos","ledakdo","ledaskdo","kdekdo","lecco","leccos","ledaco","ledacos","ledaco","ledasco","leckterý","kdekdo","kdečí","kdeco","lecčí","ledačí","ledasčí","někde","nikde","kdekoliv","kdekoli","všude","leckde","ledaskde","ledakde","někudy","kudysi","nikudy","kdekudy","odněkud","odkudsi","odnikud","odevšad","kdesi","všechen","málokdo","máloco","málokterý","zřídkakdo","zřídkaco","sotvakdo","sotvaco","sotva který","každý","každá","každé","každého","každému","každému","každou","každém","každým","každí","každých","každým","každými","všechen","všechna","všechno","vše","všeho","vší","všemu","všechnu","vším","všichni","všechny","všech","všem","všemi","takový","takové ","takového","takovou","cokoliv","jiného","jiný","taková","jiné","odtud"],["během","bez","blízko","do","od","okolo","kolem","u","vedle","z","ze","k","ke","kvůli","navzdor","navzdory","krom, vedle","kromě, vedle","místo","namísto","ohledně","podél","pomocí","oproti","naproti","proti","prostřednictvím","s","u","vlivem","vyjma","využitím","stran","díky","kvůli","podle","vůči","na","té","o","pro","přes","za","po","v","ve","mezi","s","se","nad","pod","před","mimo","skrz","při","jako","asi","dokud","ven","běž","odkud","ode","nahoře","nahoru","dovnitř","dne","beze","napříč","versus","via","vně","dovnitř","vpředu","vůkol","vespod","opodál","vepředu","svrchu","vnitř","zprostřed","naspodu","zdéli","okol","podál","naspod","kontra","vespodu","zponad","ponad","nadtož","kolkolem","zdélí","veskrz","popod","daleko","vůkolem"],["a","i","aby","ale","že","protože","neboť","když","až","jestli","jestliže","pokud","kdyby","nebo","anebo","či","proto","který","jenž","aniž","než","tak","takže","kvůli","kdybych","ach","zdá","zatím","během","kdybyste","jakožto","jakož","neb"],["řekl","říkala","řekla","řekne","říkal","říká","podle","neřekl","říkat","chtějí","neviděl","vypadáš","mluvil","rozumím","znám","cítím","nemyslím","víme","nevěřím","myslíte"],["jasně","velmi","vůbec","přesně","určitě","úplně","samozřejmě","docela","skutečně","rozhodně","vážně","spolu","jistě","naprosto","velice","hrozně","strašně","opravdu"],["mělo","přijít","podívat","dělej","dá","dala","přijde","stojí","udělám","mohlo","nechte","nemáme","dám","přišla","dělal","dejte"],["dobře","dobrý","dobrá","dobré","dost","dlouho","dlouha","nejlepší","poslední","rychle","lepší","vlastní","ostatní","velký","starý","líp","malé","špatný","lépe","hlavní","právo","úžasné","pěkný","stejné","spousta","skvělá","dobrej","horší","novou","stará","nového","nejdřív","druhou","naposledy","hezký","dlouhý","dobrý","malý","těžký","velký","zlý","delší","lepší","menší","těžší","větší","horší","nejdelší","nejlepší","nejmenší","nejtěžší","největší","nejhorší","pěkně","všelijak","nějak","jaksi","tak nějak","ijak","nikterak","akkoli","akkoliv","kdejak","už","jen","tady","teď","ještě","možná","nikdy","ani","taky","pak","trochu","prostě","víc","jenom","další","právě","zpátky","vždycky","pryč","zase","někdy","také","chvíli","znovu","snad","třeba","stále","zrovna","příliš","nějak","vždy","skoro","kolem","později","zpět","najednou","támhle","někam","hlavně","často","občas","společně","dokonce","zde","aspoň","jediný","pouze","stačí","mnohem","zas","nikam","dávno","již","dvakrát","vzhůru","pomalu","bohužel","raději","nejspíš","náhodou","okamžitě"],["jo","hej","oh","uh ","hele","fajn","ok","proboha","ah","okay"],[],["den","dnes","čas","ráno","zítra","dneska","minut","včera","času","dní","dni","dny","hodinu","hodin","týdny","měsíce","roku","měsíců"],["věc","věci","můžeš","člověk","lidi","člověka","člověku","člověče","člověku","člověkovi","lidech","lidem","lidé","lidí","člověkem","lidmi","chlap","místa"],["atd.","bůhvíkdo","bůhvíjaký","bůhvíčí","nevímco","nevímkdo a podobně","si","ne","ně","pan","pane","pana","paní","prosím","pořádku","líto","chlape","slečno","mimochodem"],a)),r=[["buď","nebo"],["buď","anebo"],["ani","ani"],["nejen","ale i"],["jak","tak"],["sice","ale"],["sice","však"],["jednak","jednak"]],d=["án","ána","áno","áni","ány","ován","ána","áno","áni","ány","en","ena","eno","eni","eny","ěn","ěna","ěno","ěni","ěny","et","eta","eto","eti","ety","it","ita","ito","iti","ity","at","ata","ato","ati","aty","yt","yta","yto","yti","yty","ut","uta","uto","uti","uty"],{getWords:f}=t.languageProcessing,{values:l}=t.languageProcessing,{Clause:c}=l,{getClausesSplitOnStopWords:k,createRegexFromArray:v}=t.languageProcessing,m={Clause:class extends c{constructor(i,e){super(i,e),this._participles=function(i){return f(i).filter((i=>d.some((e=>i.endsWith(e)))))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){this.setPassive(this.getParticiples().length>0)}},regexes:{auxiliaryRegex:v(["být","byl","byla","bylo","byli","byly","je","jsem","jsi","jste","jste","jsme","jste","jsou","budu","budeš","budete","bude","budeme","budete","budou","nebyl","nebyla","nebylo","nebyli","nebily","nebudu","nebudeš","nebudete","nebude","nebudeme","nebudete","nebudou"]),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi,stopwordRegex:v(s)}};function b(i){return k(i,m)}const g=window.lodash,S=function(i,e){const t=e.externalStemmer.palataliseSuffixes,n=i.length;return i.substring(n-2,n)===t.palataliseSuffixCi||i.substring(n-2,n)===t.palataliseSuffixCe||i.substring(n-2,n)===t.palataliseSuffixCiCaron||i.substring(n-2,n)===t.palataliseSuffixCeCaron?i.replace(i.substring(n-2,n),t.palataliseSuffixK):i.substring(n-2,n)===t.palataliseSuffixZi||i.substring(n-2,n)===t.palataliseSuffixZe||i.substring(n-2,n)===t.palataliseSuffixZiCaron||i.substring(n-2,n)===t.palataliseSuffixZeCaron?i.replace(i.substring(n-2,n),t.palataliseSuffixH):i.substring(n-3,n)===t.palataliseSuffixCte||i.substring(n-3,n)===t.palataliseSuffixCti||i.substring(n-3,n)===t.palataliseSuffixCtiAccented?i.replace(i.substring(n-3,n),t.palataliseSuffixCk):i.substring(n-3,n)===t.palataliseSuffixSte||i.substring(n-3,n)===t.palataliseSuffixSti||i.substring(n-3,n)===t.palataliseSuffixStiAccented?i.replace(i.substring(n-3,n),t.palataliseSuffixSk):i.slice(0,-1)},{baseStemmer:x}=t.languageProcessing;function p(i){const e=(0,g.get)(i.getData("morphology"),"cs",!1);return e?i=>function(i,e){return i=function(i,e){for(const t of e.externalStemmer.exceptionStemsWithFullForms)if(t[1].includes(i))return t[0];return i}(i=i.toLowerCase(),e),i=function(i,e){const t=e.externalStemmer.caseSuffixes,n=i.length;if(n>7&&i.substring(n-5,n)===t.caseSuffixAtech)return i.slice(0,-5);if(n>6){if(i.substring(n-4,n)===t.caseSuffixEtem)return i=i.slice(0,-3),S(i,e);if(i.substring(n-4,n)===t.caseSuffixAtum)return i.slice(0,-4)}if(n>5){if(i.substring(n-3,n)===t.caseSuffixEch||i.substring(n-3,n)===t.caseSuffixIch||i.substring(n-3,n)===t.caseSuffixIchAccented||i.substring(n-3,n)===t.caseSuffixEho||i.substring(n-3,n)===t.caseSuffixEmiCaron||i.substring(n-3,n)===t.caseSuffixEmi||i.substring(n-3,n)===t.caseSuffixEmuAccented||i.substring(n-3,n)===t.caseSuffixEte||i.substring(n-3,n)===t.caseSuffixEti||i.substring(n-3,n)===t.caseSuffixIho||i.substring(n-3,n)===t.caseSuffixIhoAccented||i.substring(n-3,n)===t.caseSuffixImi||i.substring(n-3,n)===t.caseSuffixImu)return i=i.slice(0,-2),S(i,e);if(i.substring(n-3,n)===t.caseSuffixAchAccented||i.substring(n-3,n)===t.caseSuffixAta||i.substring(n-3,n)===t.caseSuffixAty||i.substring(n-3,n)===t.caseSuffixYch||i.substring(n-3,n)===t.caseSuffixAma||i.substring(n-3,n)===t.caseSuffixAmi||i.substring(n-3,n)===t.caseSuffixOve||i.substring(n-3,n)===t.caseSuffixOvi||i.substring(n-3,n)===t.caseSuffixYmi)return i.slice(0,-3)}if(n>4){if(i.substring(n-2,n)===t.caseSuffixEm)return i=i.slice(0,-1),S(i,e);if(i.substring(n-2,n)===t.caseSuffixEs||i.substring(n-2,n)===t.caseSuffixEmAccented||i.substring(n-2,n)===t.caseSuffixIm)return i=i.slice(0,-2),S(i,e);if(i.substring(n-2,n)===t.caseSuffixUm||i.substring(n-2,n)===t.caseSuffixAt||i.substring(n-2,n)===t.caseSuffixAm||i.substring(n-2,n)===t.caseSuffixOs||i.substring(n-2,n)===t.caseSuffixUs||i.substring(n-2,n)===t.caseSuffixYm||i.substring(n-2,n)===t.caseSuffixMi||i.substring(n-2,n)===t.caseSuffixOu)return i.slice(0,-2)}if(n>3){if(i.substring(n-1,n)===t.caseSuffixE||i.substring(n-1,n)===t.caseSuffixI||i.substring(n-1,n)===t.caseSuffixIAccented||i.substring(n-1,n)===t.caseSuffixECaron)return S(i,e);if(i.substring(n-1,n)===t.caseSuffixU||i.substring(n-1,n)===t.caseSuffixY||i.substring(n-1,n)===t.caseSuffixURing||i.substring(n-1,n)===t.caseSuffixA||i.substring(n-1,n)===t.caseSuffixO||i.substring(n-1,n)===t.caseSuffixAAccented||i.substring(n-1,n)===t.caseSuffixEAccented||i.substring(n-1,n)===t.caseSuffixYAccented)return i.slice(0,-1)}return i}(i,e),i=function(i,e){const t=e.externalStemmer.possessiveSuffixes,n=i.length;if(n>5){if(i.substring(n-2,n)===t.possessiveSuffixOv)return i.slice(0,-2);if(i.substring(n-2,n)===t.possessiveSuffixesUv)return i.slice(0,-2);if(i.substring(n-2,n)===t.possessiveSuffixIn)return i=i.slice(0,-1),S(i,e)}return i}(i,e),i=function(i,e){const t=e.externalStemmer.comparativeSuffixes,n=i.length;return n>5&&i.substring(n-3,n)===t.comparativeSuffixesEjs||i.substring(n-3,n)===t.comparativeSuffixesEjsCaron?(i=i.slice(0,-2),S(i,e)):i}(i,e),i=function(i,e){const t=e.externalStemmer.diminutiveSuffixes,n=i.length;if(n>7&&i.substring(n-5,n)===t.diminutiveSuffixOusek)return i.slice(0,-5);if(n>6){if(i.substring(n-4,n)===t.diminutiveSuffixEcek||i.substring(n-4,n)===t.diminutiveSuffixEcekAccented||i.substring(n-4,n)===t.diminutiveSuffixIcek||i.substring(n-4,n)===t.diminutiveSuffixIcekAccented||i.substring(n-4,n)===t.diminutiveSuffixEnek||i.substring(n-4,n)===t.diminutiveSuffixEnekAccented||i.substring(n-4,n)===t.diminutiveSuffixInek||i.substring(n-4,n)===t.diminutiveSuffixInekAccented)return i=i.slice(0,-3),S(i,e);if(i.substring(n-4,n)===t.diminutiveSuffixAcekAccented||i.substring(n-4,n)===t.diminutiveSuffixAcek||i.substring(n-4,n)===t.diminutiveSuffixOcek||i.substring(n-4,n)===t.diminutiveSuffixUcek||i.substring(n-4,n)===t.diminutiveSuffixAnek||i.substring(n-4,n)===t.diminutiveSuffixOnek||i.substring(n-4,n)===t.diminutiveSuffixUnek||i.substring(n-4,n)===t.diminutiveSuffixAnekAccented)return i.slice(0,-4)}if(n>5){if(i.substring(n-3,n)===t.diminutiveSuffixEck||i.substring(n-3,n)===t.diminutiveSuffixEckAccented||i.substring(n-3,n)===t.diminutiveSuffixIck||i.substring(n-3,n)===t.diminutiveSuffixIckAccented||i.substring(n-3,n)===t.diminutiveSuffixEnk||i.substring(n-3,n)===t.diminutiveSuffixEnkAccented||i.substring(n-3,n)===t.diminutiveSuffixInk||i.substring(n-3,n)===t.diminutiveSuffixInkAccented)return i=i.slice(0,-3),S(i,e);if(i.substring(n-3,n)===t.diminutiveSuffixAckAccented||i.substring(n-3,n)===t.diminutiveSuffixAck||i.substring(n-3,n)===t.diminutiveSuffixOck||i.substring(n-3,n)===t.diminutiveSuffixUck||i.substring(n-3,n)===t.diminutiveSuffixAnk||i.substring(n-3,n)===t.diminutiveSuffixOnk||i.substring(n-3,n)===t.diminutiveSuffixUnk)return i.slice(0,-3);if(i.substring(n-3,n)===t.diminutiveSuffixAtk||i.substring(n-3,n)===t.diminutiveSuffixAnkAccented||i.substring(n-3,n)===t.diminutiveSuffixUsk)return i.slice(0,-3)}if(n>4){if(i.substring(n-2,n)===t.diminutiveSuffixEk||i.substring(n-2,n)===t.diminutiveSuffixEkAccented||i.substring(n-2,n)===t.diminutiveSuffixIkAccented||i.substring(n-2,n)===t.diminutiveSuffixIk)return i=i.slice(0,-1),S(i,e);if(i.substring(n-2,n)===t.diminutiveSuffixAkAccented||i.substring(n-2,n)===t.diminutiveSuffixAk||i.substring(n-2,n)===t.diminutiveSuffixOk||i.substring(n-2,n)===t.diminutiveSuffixUk)return i.slice(0,-1)}return n>3&&i.substring(n-1,n)===t.diminutiveSuffixK?i.slice(0,-1):i}(i,e),i=function(i,e){const t=e.externalStemmer.augmentativeSuffixes,n=i.length;return n>6&&i.substring(n-4,n)===t.augmentativeSuffixAjzn?i.slice(0,-4):n>5&&i.substring(n-3,n)===t.augmentativeSuffixIzn||i.substring(n-3,n)===t.augmentativeSuffixIsk?(i=i.slice(0,-2),S(i,e)):i}(i,e),i=function(i,e){const t=e.externalStemmer.derivationalSuffixes,n=i.length;if(n>8&&i.substring(n-6,n)===t.derivationalSuffixObinec)return i.slice(0,-6);if(n>7){if(i.substring(n-5,n)===t.derivationalSuffixIonar)return i=i.slice(0,-4),S(i,e);if(i.substring(n-5,n)===t.derivationalSuffixOvisk||i.substring(n-5,n)===t.derivationalSuffixOvstv||i.substring(n-5,n)===t.derivationalSuffixOvist||i.substring(n-5,n)===t.derivationalSuffixOvnik)return i.slice(0,-5)}if(n>6){if(i.substring(n-4,n)===t.derivationalSuffixAsek||i.substring(n-4,n)===t.derivationalSuffixLoun||i.substring(n-4,n)===t.derivationalSuffixNost||i.substring(n-4,n)===t.derivationalSuffixTeln||i.substring(n-4,n)===t.derivationalSuffixOvec||i.substring(n-5,n)===t.derivationalSuffixOvik||i.substring(n-4,n)===t.derivationalSuffixOvtv||i.substring(n-4,n)===t.derivationalSuffixOvin||i.substring(n-4,n)===t.derivationalSuffixStin)return i.slice(0,-4);if(i.substring(n-4,n)===t.derivationalSuffixEnic||i.substring(n-4,n)===t.derivationalSuffixInec||i.substring(n-4,n)===t.derivationalSuffixItel)return i=i.slice(0,-3),S(i,e)}if(n>5){if(i.substring(n-3,n)===t.derivationalSuffixEnk||i.substring(n-3,n)===t.derivationalSuffixIan||i.substring(n-3,n)===t.derivationalSuffixIst||i.substring(n-3,n)===t.derivationalSuffixIsk||i.substring(n-3,n)===t.derivationalSuffixIstCaron||i.substring(n-3,n)===t.derivationalSuffixItb||i.substring(n-3,n)===t.derivationalSuffixIrn)return i=i.slice(0,-2),S(i,e);if(i.substring(n-3,n)===t.derivationalSuffixArn||i.substring(n-3,n)===t.derivationalSuffixOch||i.substring(n-3,n)===t.derivationalSuffixOst||i.substring(n-3,n)===t.derivationalSuffixOvn||i.substring(n-3,n)===t.derivationalSuffixOun||i.substring(n-3,n)===t.derivationalSuffixOut||i.substring(n-3,n)===t.derivationalSuffixOus||i.substring(n-3,n)===t.derivationalSuffixUsk||i.substring(n-3,n)===t.derivationalSuffixKyn||i.substring(n-3,n)===t.derivationalSuffixCan||i.substring(n-3,n)===t.derivationalSuffixKar||i.substring(n-3,n)===t.derivationalSuffixNer||i.substring(n-3,n)===t.derivationalSuffixNik||i.substring(n-3,n)===t.derivationalSuffixCtv||i.substring(n-3,n)===t.derivationalSuffixStv)return i.slice(0,-3)}if(n>4){if(i.substring(n-2,n)===t.derivationalSuffixAcAccented||i.substring(n-2,n)===t.derivationalSuffixAc||i.substring(n-2,n)===t.derivationalSuffixAnAccented||i.substring(n-2,n)===t.derivationalSuffixAn||i.substring(n-2,n)===t.derivationalSuffixAr||i.substring(n-2,n)===t.derivationalSuffixAs)return i.slice(0,-2);if(i.substring(n-2,n)===t.derivationalSuffixEc||i.substring(n-2,n)===t.derivationalSuffixEn||i.substring(n-2,n)===t.derivationalSuffixEnCaron||i.substring(n-2,n)===t.derivationalSuffixEr||i.substring(n-2,n)===t.derivationalSuffixIr||i.substring(n-2,n)===t.derivationalSuffixIc||i.substring(n-2,n)===t.derivationalSuffixIn||i.substring(n-2,n)===t.derivationalSuffixInAccented||i.substring(n-2,n)===t.derivationalSuffixIt||i.substring(n-2,n)===t.derivationalSuffixIv)return i=i.slice(0,-1),S(i,e);if(i.substring(n-2,n)===t.derivationalSuffixOb||i.substring(n-2,n)===t.derivationalSuffixOt||i.substring(n-2,n)===t.derivationalSuffixOv||i.substring(n-2,n)===t.derivationalSuffixOn||i.substring(n-2,n)===t.derivationalSuffixUl||i.substring(n-2,n)===t.derivationalSuffixYn||i.substring(n-2,n)===t.derivationalSuffixCk||i.substring(n-2,n)===t.derivationalSuffixCn||i.substring(n-2,n)===t.derivationalSuffixDl||i.substring(n-2,n)===t.derivationalSuffixNk||i.substring(n-2,n)===t.derivationalSuffixTv||i.substring(n-2,n)===t.derivationalSuffixTk||i.substring(n-2,n)===t.derivationalSuffixVk)return i.slice(0,-2)}return n>3&&(i.charAt(i.length-1)===t.derivationalSuffixC||i.charAt(i.length-1)===t.derivationalSuffixCCaron||i.charAt(i.length-1)===t.derivationalSuffixK||i.charAt(i.length-1)===t.derivationalSuffixL||i.charAt(i.length-1)===t.derivationalSuffixN||i.charAt(i.length-1)===t.derivationalSuffixT)?i.slice(0,-1):i}(i,e),function(i,e){for(const t of e.externalStemmer.stemsThatBelongToOneWord.nouns)if(t.includes(i))return t[0];return i}(i,e)}(i,e):x}const{AbstractResearcher:j}=t.languageProcessing;class h extends j{constructor(i){super(i),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"cs",passiveConstructionType:"periphrastic",firstWordExceptions:n,stopWords:s,functionWords:u,transitionWords:o,twoPartTransitionWords:r}),Object.assign(this.helpers,{getClauses:b,getStemmer:p})}}(window.yoast=window.yoast||{}).Researcher=e})();js/dist/languages/hu.js000064400000154601147206602470011062 0ustar00(()=>{"use strict";var e={d:(a,n)=>{for(var l in n)e.o(n,l)&&!e.o(a,l)&&Object.defineProperty(a,l,{enumerable:!0,get:n[l]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},a={};e.r(a),e.d(a,{default:()=>_});const n=window.yoast.analysis,l=["ahányszor","ahelyett","ahogy","ahol","ahonnan","ahová","akár","akárcsak","akkor","alapvetően","alighogy","ám","ámbár","ámde","ameddig","amennyiben","amennyire","amennyiszer","amíg","amikor","amikorra","aminthogy","amióta","amire","annálfogva","annyira","avagy","azaz","azazhogy","azért","azonban","azonkívül","azután","bár","befejezésül","bizony","csakhogy","de","dehát","dehogy","egybehangzóan","egyidejűleg","egyöntetűen","egyöntetűleg","ekképpen","ellenben","először","előzőleg","elsősorban","ennélfogva","eredményeképp","eredményeképpen","és","eszerint","ezért","feltétlenül","főként","főleg","függetlenül","ha","habár","hanem","hányszor","harmadjára","harmadszor","hasonlóan","hasonlóképpen","hát","hirtelen","hirtelenjében","hisz","hiszen","hogy","hogyha","hol","holott","honnan","hová","így","illetőleg","illetve","immár","is","jóllehet","kár","kétségtelenül","kifejezetten","kiváltképp","következésképpen","legalábbis","legfőképp","maga","máskülönben","másodsorban","másodszor","meg","mégis","megkérdőjelezhetetlenül","megkérdőjelezhetően","mégpedig","mégsem","mennél","mennyiszer","merre","mert","merthogy","midőn","mielőtt","míg","mihelyt","miként","miképp","mikor","mikorra","mindamellett","mindazáltal","mindazonáltal","mindenekelőtt","minél","mint","mintha","minthogy","mióta","mire","miután","mivel","mivelhogy","nahát","nehogy","noha","nos","nyilvánvalóan","óh","összefoglalva","összehasonlításképp","összehasonlításképpen","pedig","például","plusz","s","sajna","satöbbi","se","sem","sőt","szintén","tagadhatatlanul","tehát","továbbá","tudniillik","úgy","ugyan","ugyanis","úgyhogy","vagy","vagyis","valamennyi","valamint","valóban","végezetül","végül","végülis","viszont","amerről","hiába","miközben","egyszersmind","csakugyan","különben","mialatt","mintegy","miszerint","nemde","ugye","vajon","semmint","hacsak","úgymint","mintsem"],k=l.concat(["a továbbiakban","abba, hogy","abban, hogy","abból, hogy","addig, amíg","addig, hogy","addig, míg","afelé, hogy","ahelyett, hogy","ahhoz, hogy","ahogy fent látható","ahogy írtam","ahogy megmutattam","ahogy megjegyeztem","akként, hogy","akkorra, hogy","amiatt, hogy","amellett, hogy","amint azt megjegyeztük","amint csak","amint láthatjuk","anélkül, hogy","annak érdekében, hogy","annak okáért","annyi, hogy","annyi, mint","annyira, hogy","annyira, mint","arra, hogy","arról, hogy","attól fogva, hogy","attól, hogy","avégett, hogy","avégre, hogy","az ellen, hogy","az első dolog","az első dolog, amit meg kell jegyezni","az iránt, hogy","azelőtt, hogy","azért, hogy","azonos módon","azok után, hogy","azon, hogy","azonkívül, hogy","azóta, hogy","azt követően","aztán pedig","azután, hogy","azzal a feltétellel, hogy","azzal, hogy","bár igaz lehet","ebből a célból","ebből az okból","előbb vagy utóbb","ennek eredményeként","ennek folytán","ennek megfelelően","éppen ellenkezőleg","éppen úgy","erre a célra","ezen felül","fenntartás nélkül","ha egyébként","ha egyszer","ha különben","ha ugyan","hasonló módon","hogy sem","hogy sem mint","hol hol","holott pedig","időről időre","igaz, hogy","így tehát","ilyen körülmények között","késedelem nélkül","kétség nélkül","más szóval","más szavakkal","másképpen fogalmazva","még akkor is","még ha","mert különben","mert tény, hogy","mind mind","mindaddig, amíg","mindezek után","mint sem hogy","nem is beszélve","nem különben","nem úgy, mint","oda, hogy","oly módon, hogy","sem hogy","szem előtt tartva","tény, hogy","úgy, hogy","úgy, mint","ugyanazon okból","ugyanolyan okból","olybá tűnik","egyszer s mindenkorra","akkor, amikor","azóta, mióta","attól kezdve, mióta","attól kezdve, hogy","akkorra, amikorra","akkor, ha","azóta, amióta","akkorra, amikorra","addigra, amikorra","akkor, hogyha","akkor, ha","úgy-ahogy","mintsem hogy"]),t=function(e){let a=e;return e.forEach((n=>{(n=n.split("-")).length>0&&n.filter((a=>!e.includes(a))).length>0&&(a=a.concat(n))})),a}([].concat(["a","az","egy"],["egy","kettő","három","négy","öt","hat","hét","nyolc","kilenc","tíz","tizenegy","tizenkettő","tizenhárom","tizennégy","tizenöt","tizenhat","tizenhét","tizennyolc","tizenkilenc","húsz","száz","ezer","tízezer","százezer","millió","félmillió","egymillió"],["első","második","harmadik","negyedik","ötödik","hatodik","hetedik","nyolcadik","kilencedik","tizedik","tizenegyedik","tizenkettedik","tizenharmadik","tizennegyedik","tizenötödik","tizenhatodik","tizenhetedik","tizennyolcadik","tizenkilencedik","huszadik","századik","ezredik","tízezredik","százezredik","milliomodik","egymilliomodik"],["én","engem","enyém","nekem","velem","értem","bennem","belém","belőlem","nálam","hozzám","tőlem","rajtam","rám","rólam","te","téged","tiéd","neked","veled","érted","benned","beléd","belőled","nálad","hozzád","tőled","rajtad","rád","rólad","ő","őt","övé","neki","vele","érte","benne","bele","belé","nála","hozzá","tőle","rajta","rá","róla","mi","minket","mienk","nekünk","velünk","értünk","bennünk","belénk","nálunk","hozzánk","tőlünk","rajtunk","ránk","rólunk","ti","titeket","tiétek","nektek","veletek","értetek","bennetek","belétek","nálatok","hozzátok","tőletek","rajtatok","rátok","rólatok","ők","őket","övék","nekik","velük","értük","bennük","beléjük","náluk","hozzájuk","tőlük","rajtuk","rájuk","róluk","Ön","Önt","Öné","Önnek","Önnel","Önért","Önben","Önbe","Ön","Önt","Öné","Önnek","Önnel","Önért","Önben","Önbe","Önből","Önnél","Önhöz","Öntől","Önön","Önre","Önről","Önök","Önöket","Önöké","Önöknek","Önökkel","Önökért","Önökben","Önökbe","Önökből","Önöknél","Önökhöz","Önöktől","Önökön","Önökre","Önökről","ez","emez","ugyanez","ezt","emezt","ugyanezt","ezé","emezé","ugyanezé","ennek","emennek","ugyanennek","ezzel","emezzel","ugyanezzel","ezért","emezért","ugyanezért","ebben","emebben","ugyanebben","ebbe","emebbe","ugyanebbe","ebből","emebből","ugyanebből","ennél","emennél","ugyanennél","ehhez","emehhez","ugyanehhez","ettől","emettől","ugyanettől","ezen","emezen","ugyanezen","erre","emerre","ugyanerre","erről","emerről","ugyanerről","eddig","emeddig","ugyaneddig","ekkor","emekkor","ugyanekkor","ezzé","emezzé","ugyanezzé","ekként","emekként","ugyanekként","az","amaz","ugyanaz","azt","amazt","ugyanazt","azé","amazé","ugyanazé","annak","amannak","ugyanannak","azzal","amazzal","ugyanazzal","azért","amazért","ugyanazért","abban","amabban","ugyanabban","abba","amabba","ugyanabba","abból","amabból","ugyanabból","annál","amannál","ugyanannál","ahhoz","amahhoz","ugyanahhoz","attól","amattól","ugyanattól","azon","amazon","ugyanazon","arra","amarra","ugyanarra","arról","amarról","ugyanarról","addig","amaddig","ugyanaddig","akkor","amakkor","ugyanakkor","azzá","amazzá","ugyanazzá","akként","amakként","ugyanakként","ilyen","emilyen","ugyanilyen","ilyet","emilyet","ugyanilyet","ilyennek","emilyennek","ugyanilyennek","ilyennel","emilyennel","ugyanilyennel","ilyenért","emilyenért","ugyanilyenért","ilyenben","emilyenben","ugyanilyenben","ilyenbe","emilyenbe","ugyanilyenbe","ilyenből","emilyenből","ugyanilyenből","ilyennél","emilyennél","ugyanilyennél","ilyenhez","emilyenhez","ugyanilyenhez","ilyentől","emilyentől","ugyanilyentől","ilyenen","emilyenen","ugyanilyenen","ilyenre","emilyenre","ugyanilyenre","ilyenről","emilyenről","ugyanilyenről","ilyenkor","emilyenkor","ugyanilyenkor","ilyenné","emilyenné","ugyanilyenné","olyan","amolyan","ugyanolyan","olyat","amolyat","ugyanolyat","olyannak","amolyannak","ugyanolyannak","olyannal","amolyannal","ugyanolyannal","olyanért","amolyanért","ugyanolyanért","olyanban","amolyanban","ugyanolyanban","olyanba","amolyanba","ugyanolyanba","olyanból","amolyanból","ugyanolyanból","olyannál","amolyannál","ugyanolyannál","olyanhoz","amolyanhoz","ugyanolyanhoz","olyantól","amolyantól","ugyanolyantól","olyanon","amolyanon","ugyanolyanon","olyanra","amolyanra","ugyanolyanra","olyanról","amolyanról","ugyanolyanról","olyankor","amolyankor","ugyanolyankor","olyanná","amolyanná","ugyanolyanná","ennyi","emennyi","ugyanennyi","ennyit","emennyit","ugyanennyit","ennyinek","emennyinek","ugyanennyinek","ennyivel","emennyivel","ugyanennyivel","ennyiért","emennyiért","ugyanennyiért","ennyiben","emennyiben","ugyanennyiben","ennyibe","emennyibe","ugyanennyibe","ennyiből","emennyiből","ugyanennyiből","ennyinél","emennyinél","ugyanennyinél","ennyihez","emennyihez","ugyanennyihez","ennyitől","emennyitől","ugyanennyitől","ennyin","emennyin","ugyanennyin","ennyire","emennyire","ugyenennyire","ennyiről","emennyiről","ugyanennyiről","ennyivé","emennyivé","ugyanennyivé","annyi","amannyi","ugyanannyi","annyit","amannyit","ugyanannyit","annyinak","amannyinak","ugyanannyinak","annyival","amannyival","ugyanannyival","annyiért","amannyiért","ugyanannyiért","annyiban","amannyiban","ugyanannyiban","annyiba","amannyiba","ugyanannyiba","annyiból","amannyiból","ugyanannyiból","annyinál","amannyinál","ugyanannyinál","annyihoz","amannyihoz","ugyanannyihoz","annyitól","amannyitól","ugyananyitól","annyin","amannyin","ugyanannyin","annyira","amannyira","ugyanannyira","annyiról","amannyiról","ugyanannyiról","annyivá","amannyivá","ugyanannyivá","így","emígy","ugyanígy","úgy","amúgy","ugyanúgy","itt","ott","ugyanitt","ogyanott","ide","oda","ugyanide","ugyanoda","amoda","emide","innen","onnan","ugyaninnen","ogyanonnan","amonnan","eminnen","eddig","addig","ezután","azután","ezelőtt","azelőtt","ugyaneddig","ugyanaddig","emeddig","amaddig","ekkora","ekkorát","ekkorának","ekkorával","ekkoráért","ekkorában","ekkorába","ekkorából","ekkoránál","ekkorához","ekkorától","ekkorán","ekkorára","ekkoráról","ekkorává","akkora","akkorát","akkorának","akkorával","akkoráért","akkorában","akkorába","akkorából","akkoránál","akkorához","akkorától","akkorán","akkorára","akkoráról","akkorává","ekképpen","akképpen","ezek","emezek","ugyanezek","ezeket","emezeket","ugyanezeket","ezeké","emezeké","ugyanezeké","ezeknek","emezeknek","ugyanezeknek","ezekkel","emezekkel","ugyanezekkel","ezekért","emezekért","ugyanezekért","ezekben","emezekben","ugyanezekben","ezekbe","emezekbe","ugyanezekbe","ezekből","emezekből","ugyanezekből","ezeknél","emezeknél","ugyanezeknél","ezekhez","emezekhez","ugyanezekhez","ezektől","emezektől","ugyanezektől","ezekre","emezekre","ugyanezekre","ezekről","emezekről","ugyanezekről","ezekig","emezekig","ugyanezekig","ezekké","emezekké","ugyanezekké","ezekként","emezekként","ugyanezekként","azok","amazok","ugyanazok","azokat","amazokat","ugyanazokat","azoké","amazoké","ugyanazoké","azoknak","amazoknak","ugyanazoknak","azokkal","amazokkal","ugyanazokkal","azokért","amazokért","ugyanazokért","azokban","amazokban","ugyanazokban","azokba","amazokba","ugyanazokba","azokból","amazokból","ugyanazokból","azoknál","amazoknál","ugyanazoknál","azokhoz","amazokhoz","ugyanazokhoz","azoktól","amazoktól","ugyanazoktól","azokra","amazokra","ugyanazokra","azokról","amazokról","ugyanazokról","azokig","amazokig","ugyanazokig","azokká","amazokká","ugyanazokká","ilyenek","emilyenek","ugyanilyenek","ilyeneket","emilyeneket","ugyanilyeneket","ilyeneknek","emilyeneknek","ugyanilyeneknek","ilyenekkel","emilyenekkel","ugyanilyenekkel","ilyenekért","emilyenekért","ugyanilyenekért","ilyenekben","emilyenekben","ugyanilyenekben","ilyenekbe","emilyenekbe","ugyanilyenekbe","ilyenekből","emilyenekből","ugyanilyenekből","ilyeneknél","emilyeneknél","ugyanilyeneknél","ilyenekhez","emilyenekhez","ugyanilyenekhez","ilyenektől","emilyenektől","ugyanilyenektől","ilyeneken","emilyeneken","ugyanilyeneken","ilyenekre","emilyenekre","ugyanilyenekre","ilyenekről","emilyenekről","ugyanilyenekről","ilyenekké","emilyenekké","ugyanilyenekké","olyanok","amolyanok","ugyanolyanok","olyanokat","amolyanokat","ugyanolyanokat","olyanoknak","amolyanoknak","ugyanolyanoknak","olyanokkal","amolyanokkal","ugyanolyanokkal","olyanokért","amolyanokért","ugyanolyanokért","olyanokban","amolyanokban","ugyanolyanokban","olyanokba","amolyanokba","ugyanolyanokba","olyanokból","amolyanokból","ugyanolyanokból","olyanoknál","amolyanoknál","ugyanolyanoknál","olyanokhoz","amolyanokhoz","ugyanolyanokhoz","olyanoktól","amolyanoktól","ugyanolyanoktól","olyanokon","amolyanokon","ugyanolyanokon","olyanokra","amolyanokra","ugyanolyanokra","olyanokról","amolyanokról","ugyanolyanokról","olyanokká","amolyanokká","ugyanolyanokká","aki","akit","akié","akinek","akivel","akiért","akiben","akibe","akiből","akinél","akihez","akitől","akin","akire","akiről","akivé","ami","amit","amié","aminek","amivel","amiért","amiben","amibe","amiből","aminél","amihez","amitől","amin","amire","amiről","amivé","amilyen","amilyet","amilyennek","amilyennel","amilyenért","amilyenben","amilyenbe","amilyenből","amilyennél","amilyenhez","amilyentől","amilyenen","amilyenre","amilyenről","amilyenné","amekkora","amekkorát","amekkorának","amekkorával","amekkoráért","amekkorában","amekkorába","amekkorából","amekkoránál","amekkorához","amekkorától","amekkorán","amekkorára","amekkoráról","amekkorává","amely","amelyet","amelynek","amellyel","amelyért","amelyben","amelybe","amelyből","amelynél","amelyhez","amelytől","amelyen","amelyre","amelyről","amellyé","ahány","ahányat","ahánynak","ahánnyal","ahányért","ahányban","ahányba","ahányból","ahánynál","ahányhoz","ahánytól","ahányan","ahányra","ahányról","ahánnyá","amennyi","amennyit","amennyinek","amennyivel","amennyiért","amennyiben","amennyibe","amennyiből","amennyinél","amennyihez","amennyitől","amennyin","amennyire","amennyiről","amennyivé","ahányadik","ahányadikat","ahányadiknak","ahányadika","ahányadikért","ahányadikban","ahányadikba","ahányadikból","ahányadiknál","ahányadikhoz","ahányadiktól","ahányadikon","ahányadikra","ahányadikról","ahányadikká","ahová","ahonnan","ahonnantól","amerre","amerről","ahogy","ahogyan","amiért","amikor","amikortól","amikorra","akik","akiket","akiké","akiknek","akikkel","akikért","akikben","akikbe","akikból","akiknél","akikhez","akiktől","akiken","akikre","akikről","akikké","amik","amiket","amiké","amiknek","amikkel","amikért","amikben","amikbe","amikból","amiknél","amikhez","amiktől","amiken","amikre","amikről","amikké","amilyenek","amilyeneket","amilyeneknek","amilyenekkel","amilyenekért","amilyenekben","amilyenekbe","amilyenekből","amilyeneknél","amilyenekhez","amilyenektől","amilyeneken","amilyenekre","amilyenekről","amekkorák","amekkorákat","amekkoráknak","amekkorákkal","amekkorákért","amekkorákban","amekkorákba","amekkorákból","amekkoráknál","amekkorákhoz","amekkoráktól","amekkorákon","amekkorákra","amekkorákról","amekkorákká","amelyek","amelyeket","amelyeknek","amelyekkel","amelyekért","amelyekben","amelyekbe","amelyekből","amelyeknél","amelyekhez","amelyektől","amelyeken","amelyekre","amelyekről","ahányak","ahányakat","ahányaknak","ahányakkal","ahányakért","ahányakban","ahányakba","ahányakból","ahányaknál","ahányakhoz","ahányaktól","ahányakon","ahányakra","ahányakról","ahányakká","amennyik","amennyiket","amennyiknek","amennyikkel","amennyikért","amennyikben","amennyikbe","amennyikből","amennyiknél","amennyikhez","amennyiktől","amennyiken","amennyikre","amennyikről","amennyikké","ahányadikak","ahányadikat","ahányadiknak","ahányadikkal","ahányadikért","ahányadikban","ahányadikba","ahányadikból","ahányadiknál","ahányadikhoz","ahányadiktól","ahányadikon","ahányadikra","ahányadikról","ahányadikká","amikért","egymás","egymást","egymásé","egymásnak","egymással","egymásért","egymásban","egymásba","egymásból","egymásnál","egymáshoz","egymástól","egymáson","egymásra","egymásról","egymássá"],["ki","kit","kié","kinek","kivel","kiért","kiben","kibe","kiből","kinél","kihez","kitől","kin","kire","kiről","kicsoda","kicsodát","kicsodának","kicsodával","kicsodáért","kicsodában","kicsodába","kicsodából","kicsodánál","kicsodához","kicsodától","kicsodán","kicsodára","kicsodáról","mi","mit","minek","mivel","miért","miben","mibe","miből","minél","mihez","mitől","min","mire","miről","micsoda","micsodát","micsodának","micsodával","micsodáért","micsodában","micsodába","micsodából","micsodánál","micsodához","micsodától","micsodán","micsodára","micsodáról","milyen","milyet","milyennek","milyennel","milyenért","milyenben","milyenbe","milyenből","milyennél","milyenhez","milyentől","milyenen","milyenre","milyenről","mekkora","mekkorát","mekkorának","mekkorával","mekkoráért","mekkorában","mekkorába","mekkorából","mekkoránál","mekkorához","mekkorától","mekkorán","mekkorára","mekkoráról","miféle","mifélét","mifélének","mifélével","miféléért","mifélében","mifélébe","miféléből","mifélénél","miféléhez","mifélétől","mifélén","mifélére","miféléről","melyik","melyiket","melyiknek","melyikkel","melyikért","melyikben","melyikbe","melyikből","melyiknél","melyikhez","melyiktől","melyiken","melyikre","melyikről","hány","hányat","hánynak","hánnyal","hányért","hányban","hányba","hányból","hánynál","hányhoz","hánytól","hányon","hányra","hányról","mennyi","mennyit","mennyinek","mennyivel","mennyiért","mennyiben","mennyibe","mennyiből","mennyinél","mennyihez","mennyitől","mennyin","mennyire","mennyiről","hányadik","hányadikat","hányadiknak","hányadikkal","hányadikért","hányadikban","hányadikba","hányadikból","hányadiknál","hányadikhoz","hányadiktól","hányadikon","hányadikra","hányadikról","hol","hová","honnan","honnantól","honnanról","merre","mettől","merről","meddig","meddigtől","meddigről","mióta","hogyan","miként","kik","kiket","kiknek","kikkel","kikért","kikben","kikbe","kikből","kiknél","kikhez","kiktől","kiken","kikre","kikről","kicsodák","kicsodákat","kicsodáknak","kicsodákkal","kicsodákért","kicsodákban","kicsodákba","kicsodákból","kicsodáknál","kicsodákhoz","kicsodáktól","kicsodákon","kicsodákra","kicsodáról","mik","miket","miknek","mikkel","mikért","mikben","mikbe","mikből","miknél","mikhez","miktől","miken","mikre","mikről","micsodák","micsodákat","micsodáknak","micsodákkal","micsodákért","micsodákban","micsodákba","micsodákból","micsodáknál","micsodákhoz","micsodáktól","micsodákon","micsodákra","micsodákról","milyenek","milyeneket","milyeneknek","milyenekkel","milyenekért","milyenekben","milyenekbe","milyenekből","milyeneknél","milyenekhez","milyenektől","milyeneken","milyenekre","milyenekről","mekkorák","mekkorákat","mekkoráknak","mekkorákkal","mekkorákért","mekkorákban","mekkorákba","mekkorákból","mekkoráknál","mekkorákhoz","mekkoráktól","mekkorákon","mekkorákra","mekkorákról","mifélék","miféléket","miféléknek","mifélékkel","mifélékért","mifélékben","mifélékbe","mifélékből","miféléknél","mifélékhez","miféléktől","miféléken","mifélékre","mifélékről","melyikek","melyikeket","melyikeknek","melyikekkel","melyikekért","melyikekben","melyikekbe","melyikekből","melyikeknél","melyikekhez","melyikektől","melyikeken","melyikekre","melyikekről","hányak","hányakat","hányaknak","hányakkal","hányakért","hányakban","hányakba","hányakból","hányaknál","hányakhoz","hányaktól","hányakon","hányakra","hányakról","mennyik","mennyiket","mennyiknek","mennyikkel","mennyikért","mennyikben","mennyikbe","mennyikből","mennyiknél","mennyikhez","mennyiktől","mennyiken","mennyikre","mennyikről","hányadikak","hányadikakat","hányadikaknak","hányadikakkal","hányadikakért","hányadikakban","hányadikakba","hányadikakból","hányadikaknál","hányadikakhoz","hányadikaktól","hányadikakon","hányadikakra","hányadikakról"],["sok","kevés","elég","jónéhány","néhány","rengeteg","töredék","temérdek","tengernyi","számtalan","számos","elegendő","kevéske","egy csomó","egy rakás","egy halom"],["magam","magamat","magamé","magamnak","magammal","magamért","magamban","magamba","magamból","magamnál","magamhoz","magamtól","magamon","magamra","magamról","magammá","magad","magadat","magadé","magadnak","magaddal","magadért","magadban","magadba","magadból","magadnál","magadhoz","magadtól","magadon","magadra","magadról","magaddá","maga","magát","magáé","magának","magával","magáért","magában","magába","magából","magánál","magához","magától","magán","magára","magáról","magává","magunk","magunkat","magunké","magunknak","magunkkal","magunkért","magunkban","magunkba","magunkból","magunknál","magunkhoz","magunktól","magunkon","magunkra","magunkról","magunkká","magatok","magatokat","magatoké","magatoknak","magatokkal","magatokért","magatokban","magatokba","magatokból","magatoknál","magatokhoz","magatoktól","magatokon","magatokra","magatokról","magatokká","maguk","magukat","maguké","maguknak","magukkal","magukért","magukban","magukba","magukból","maguknál","magukhoz","maguktól","magukon","magukra","magukról","magukká"],["valaki","valakit","valakié","valakinek","valakivel","valakiért","valakiben","valakibe","valakiből","valakinél","valakihez","valakitől","valakin","valakire","valakiről","valakivé","valami","valamit","valamié","valaminek","valamivel","valamiért","valamiben","valamibe","valamiből","valaminél","valamihez","valamitől","valamin","valamire","valamiről","valamivé","valamilyen","valamilyet","valamilyennek","valamilyennel","valamilyenért","valamilyenben","valamilyenbe","valamilyenből","valamilyennél","valamilyenhez","valamilyentől","valamilyenen","valamilyenre","valamilyenről","valaminő","valamelyes","valamelyest","valamekkora","valamekkorát","valamekkorának","valamekkorával","valamekkoráért","valamekkorában","valamekkorába","valamekkorából","valamekkoránál","valamekkorához","valamekkorától","valamekkorán","valamekkorára","valamekkoráról","valamekkorává","valamely","valamelyet","valamelynek","valamellyel","valamelyért","valamelyben","valamelybe","valamelyből","valamelynél","valamelyhez","valamelytől","valamelyen","valamelyre","valamelyről","valamellyé","valamelyik","valamelyiket","valemelyiknek","valamelyikkel","valamelyikért","valamelyikben","valamelyikbe","valamelyikből","valamelyiknél","valamelyikhez","valamelyiktől","valamelyiken","valamelyikre","valamelyikről","valamelyikké","valamiféle","valamifélét","valamifélének","valamifélével","valamiféléért","valamifélében","valamifélébe","valamiféléből","valamifélénél","valamiféléhez","valamifélétől","valamifélén","valamifélére","valamiféléről","valamennyi","valamennyit","valamennyié","valamennyinek","valamennyivel","valamennyiért","valamennyiben","valamennyibe","valamennyiből","valamennyinél","valamennyihez","valamennyitől","valamennyin","valamennyire","valamennyiről","valamennyivé","valahány","valahányat","valahánynak","valahánnyal","valahányért","valahányban","valahányba","valahányból","valahánynál","valahányhoz","valahánytól","valahányon","valahányra","valahányról","valahánnyá","némely","némelyet","némelynek","némelynél","némelyért","némelyben","némelybe","némelyből","némelynél","némelyhez","némelytől","némelyen","némelyre","némelyről","némi","némelyik","némelyiket","némelyiknek","némelyikkel","némelyikért","némelyikben","némelyikbe","némelyikből","némelyiknél","némelyikhez","némelyiktől","némelyiken","némelyikre","némelyikről","néminemű","néhány","néhányat","néhánynak","néhánnyal","néhányért","néhányban","néhányba","néhányból","néhánynál","néhányhoz","néhánytól","néhányon","néhányra","néhányról","valahol","valahová","valamerre","valahonnan","valamikor","valaha","valaha","valahogyan","valamiképpen","valamiért","néhol","néha","némelykor","némiképpen","némileg","mindenki","mindenféle","mindegyik","mindahány","mindenhol","mindenütt","mindenhová","mindenhonnan","mindenkor","mindenhogyan","mindenképpen","bárki","bármi","bármelyik","bármilyen","bármennyi","bárhol","bárhová","bárhonnan","bármikor","bármeddig","bárhogyan","akárki","akármi","akármelyik","akármilyen","akármennyi","akárhány","akárhol","akárhová","akárhonnan","akármikor","akárhogyan","senki","semmi","semmilyen","semennyi","sehány","sehol","sehová","sehonnan","semmikor","sehogy","semmiképp","valakik","valakiket","valakiké","valakiknek","valakikkel","valakikért","valakikben","valakikbe","valakikből","valakiknél","valakikhez","valakiktől","valakiken","valakikre","valakikről","valakikké","valamik","valamiket","valamiké","valamiknek","valamikkel","valamikért","valamikben","valamikbe","valamikből","valamiknél","valamikhez","valamiktől","valamiken","valamikre","valamikről","valamikké","valamilyenek","valamilyeneket","valamilyeneknek","valamilyenekkel","valamilyenekért","valamilyenekben","valamilyenekbe","valamilyenekből","valamilyeneknél","valamilyenekhez","valamilyenektől","valamilyeneken","valamilyenekre","valamilyenekről","valamilyenekké","valaminők","valamekkorák","valamekkorákat","valamekkoráknak","valamekkorákkal","valamekkorákért","valamekkorákban","valamekkorákba","valamekkorákból","valamekkoráknál","valamekkorákhoz","valamekkoráktól","valamekkorákon","valamekkorákra","valamekkorákról","valamelyek","valamelyeket","valamelyeknek","valamelyekkel","valamelyekért","valamelyekben","valamelyekbe","valamelyekből","valamelyeknél","valamelyekhez","valamelyektől","valamelyeken","valamelyekre","valamelyekről","valamelyekké","valamelyikek","valamelyikeket","valamelyikeknek","valamelyikekkel","valamelyikekért","valamelyikekben","valamelyikekbe","valamelyikekből","valamelyikeknél","valamelyikekhez","valamelyikektől","valamelyikeken","valamelyikekre","valamelyikekről","valamifélék","valamiféléket","valamiféléknek","valamifélékkel","valamifélékért","valamifélékben","valamifélékbe","valamifélékből","valamiféléknél","valamifélékhez","valamiféléktől","valamiféléken","valamifélékre","valamifélékről","valamennyik","valamennyiket","valamennyiknek","valamennyikkel","valamennyikért","valamennyikben","valamennyikbe","valamennyikből","valamennyiknél","valamennyikhez","valamennyiktől","valamennyiken","valamennyikre","valamennyikről","valahányak","valahányakat","valahányaknak","valahányakkal","valahányakért","valahányakban","valahányakba","valahányakból","valahányaknál","valahányakhoz","valahányaktól","valahányakon","valahányakra","valahányakról","némelyek","némelyeket","némelyeknek","némelyekkel","némelyekért","némelyekben","némelyekbe","némelyekből","némelyeknél","némelyekhez","némelyektől","némelyeken","némelyekre","némelyekről","némelyikek","némelyikeket","némelyikeknek","némelyikekkel","némelyikekért","némelyikekben","némelyikekbe","némelyikekből","némelyikeknél","némelyikekhez","némelyikektől","némelyikeken","némelyikekre","némelyikekről","néhányak","néhányakat","néhányaknak","néhányakkal","néhányakért","néhányakban","néhányakba","néhányakból","néhányaknál","néhányakhoz","néhányaktól","néhányakon","néhányakra","néhányakról"],["előtt","elé","elől","alatt","alá","alól","túl","alatt","belül","előtt","fogva","hosszat","múlva","óta","tájt","ellen","helyett","iránt","miatt","nélkül","részére","számára","végett","között"],["és","s","se","sem","vagy","is","de"],["mond","bejelent","megerősít","kijelent","javasol","említ","tájékoztat","értesít","kérdez","beszél","megkérdez","állít","elmagyaráz","magyaráz","gondol","hisz","megtárgyal","tárgyal","vitat","megvitat","ért","megért","elmond","elmesél","tud","megtud","megbeszél","megmond","megmagyaráz"],["alig","kissé","különösen","nagyon","teljesen","túl","túlságosan","kevésbé","nagyrészt","kicsit","picit","szörnyen","borzasztóan","iszonyatosan","irtó","irtózatosan","komolyan","súlyosan","könnyedén","nehezen"],["fog","volna","akar","bír","kell","kíván","látszik","lehet","tud","szabad","tetszik","méltóztatik","szokott"],["nagy","kicsi","gyors","lassú","jó","rossz","drága","olcsó","vastag","vékony","keskeny","széles","puha","hangos","halk","intelligens","buta","nedves","száraz","nehéz","könnyű","kemény","lágy","sekély","mély","gyönge","erős","gazdag","szegény","fiatal","öreg","hosszú","rövid","magas","alacsony","bőkezű","fukar","igaz","hamis","gyönyörű","csúnya","új","régi","boldog","szomorú","idős","gyenge","biztonságos","veszélyes","korán","későn","világos","sötét","nyitva","zárva","szoros","laza","teli","üres","sok","kevés","élő","halott","meleg","hideg","érdekes","unalmas","szerencsés","szerencsétlen","fontos","lényegtelen","messze","közel","tiszta","piszkos","kedves","gonosz","kellemes","kellemetlen","kiváló","borzalmas","normális","szép","nagyon","kicsit","gyorsan","lassan","jól","rosszul","drágán","olcsón","hangosan","halkan","nehezen","könnyen","gyengén","erősen","gazdagon","fiatalon","öreg","hosszan","röviden","magasan","alacsonyan","bőkezűen","gyönyörűen","csúnyán","boldogan","szomorúan","gyengéden","biztonságosan","veszélyesen","világosan","szorosan","lazán","sokan","kevesen","élve","melegen","hidegen","érdekesen","unalmasan","szerencsésen","szerencsétlenül","tisztán","piszkosan","kedvesen","gonoszan","kellemesen","kellemetlenül","kiválóan","borzalmasan","normálisan","szépen"],["ó","óh","jaj","a kutyafáját","a fenébe","a csudába","a francba","atyaég","atyavilág","azta","aztamindenit","juj","juhú","éljen","jé","hű","hú","ajjaj","pszt","csitt","hess","hé","ej","ejnye","na","nicsak","nocsak","natessék","nahát","rajta","hajrá","juhú","teringettét","nosza","uccu","csitt","kuss","dirr","durr"],["liter","l","deciliter","dl","milliliter","gramm","g","dekagramm","dkg","kilogramm","kg","milligramm","mg","tucat","centiliter","cl","méter","m","deciméter","dm","centiméter","cm","milliméter","mm","evőkanál","ek.","mokkáskanál","mk.","kávéskanál","kk.","gyermekkanál","gyk.","kávéscsésze","kcs.","teáscsésze","tcs.","csésze","csé.","bögre","bgr.","mélytányér","ujjnyi","csomag","gerezd","csokor"],["másodperc","perc","óra","nap","hét","hónap","év","évtized","évszázad","évezred","ma","holnap","tegnap","jövő héten","jövő hónapban","jövő évben","múlt héten","múlt hónapban","múlt évben","tavaly","jövőre","reggel","délben","este","éjszaka","hajnalban","délután","délelőtt"],["dolog","izé","valami","személy","ember","alkalom","eset","ügy","tárgy","valamicsoda","téma","ötlet"],["stb.","fél","harmad","negyed","ötöd","hatod","heted","nyolcad","kilenced","tized","egyharmad","egynegyed","egyötöd","egyhatod","egyheted","egynyolcad","egykilenced","egytized","század","ezred"],l)),r=[["nemcsak","hanem","is"],["ahogy","akkor"],["ahogy","azonnal"],["ahogy","azután"],["ahogy","máris"],["ahogy","nyomban"],["ahogy","tüstént"],["akkor","amikor"],["akkor","ha"],["akkor","hogy"],["akkor","hogyha"],["akkor","mikor"],["akkorra","amikorra"],["akkorra","mikorra"],["akkorra","mire"],["akkortól","amikor"],["akkortól","mikor"],["alighogy","máris"],["alighogy","nyomban"],["alighogy","tüstént"],["addig","ameddig"],["ameddig","addig"],["abba","hogy"],["abban","hogy"],["abból","hogy"],["addig","amíg"],["addig","hogy"],["addig","míg"],["afelé","hogy"],["ahelyett","hogy"],["ahhoz","hogy"],["akként","hogy"],["akkorra","hogy"],["amiatt","hogy"],["amellett","hogy"],["anélkül","hogy"],["annyi","hogy"],["annyi","mint"],["annyira","hogy"],["annyira","mint"],["arra","hogy"],["arról","hogy"],["attól fogva","hogy"],["attól","hogy"],["avégett","hogy"],["avégre","hogy"],["az ellen","hogy"],["az iránt","hogy"],["azelőtt","hogy"],["azért","hogy"],["azon","hogy"],["azonkívül","hogy"],["azóta","hogy"],["azután","hogy"],["azzal","hogy"],["hol","hol"],["igaz","hogy"],["mind","mind"],["nem úgy","mint"],["oly módon","hogy"],["inkább","semhogy"],["úgy","hogy"],["úgy","mint"],["vagy","vagy"],["se","se"],["sem","sem"],["is","is"],["akár","akár"],["is","meg"],["nem","hanem"],["egyrészt","másrészt"],["minél","annál"],["amíg","addig"],["amíg","addigra"],["amikor","akkor"],["akkor","amikor"],["amikor","aközben"],["amikor","azalatt"],["addigra","amikorra"],["amikorra","addigra"],["amikorra","akkorra"],["amint","akkor"],["amint","azonnal"],["amint","máris"],["amint","nyomban"],["amint","tüstént"],["amióta","attól kezdve"],["azóta","amióta"],["amióta","azóta"],["amire","addig"],["amire","addigra"],["azóta","hogy"],["ha","akkor"],["hogyha","akkor"],["is","is"],["azalatt","mialatt"],["mialatt","azalatt"],["mielőtt","azelőtt"],["azelőtt","mielőtt"],["mihelyt","azonnal"],["mihelyt","máris"],["mihelyt","nyomban"],["mihelyt","tüstént"],["mikor","akkor"],["mikor","aközben"],["mikor","azalatt"],["mikor","azután"],["mikorra","addigra"],["akkorra","mikorra"],["mikorra","akkorra"],["miközben","azalatt"],["mióta","attól kezdve"],["mire","addigra"],["miután","azután"],["attól kezdve","mióta"],["mióta","azóta"],["azóta","mióta"],["mire","addig"],["addigra","mire"],["azután","miután"],["nemcsak","hanem"],["sem","sem"],["vagy","vagy"]],i=["az","a","egy","nulla","egy","kettő","kettő","három","négy","öt","hat","hét","nyolc","kilenc","tíz","száz","ezer","és","se","sem","vagy","de","aztán","ezután","azután","majd","ezek után","nagyon","kicsit","nagy","kevés","sok","sokan","kevesen","jól","ez","ezek","az","azok","néhány","aki","ami","én","mi","ő","ők","engem","nekem","velem","nálam","hozzám","tőlem","rajtam","rám","rólam","téged","neked","veled","érted","nálad","hozzád","tőled","rólad","őt","neki","vele","érte","nála","hozzá","tőle","rajta","rá","róla","minket","nekünk","velünk","értünk","nálunk","hozzánk","tőlünk","rólunk","titeket","nektek","veletek","értetek","nálatok","hozzátok","tőletek","rajtatok","rátok","rólatok","őket","nekik","velük","értük","bennük","náluk","hozzájuk","tőlük","rajtuk","rájuk","róluk","azonban","ám","ha","szerintem","míg","bár","habár","hát","ha","amennyiben","mivel","azonban","amíg","azért","ezért","mi","mit","miért","meddig","mikor","hány","mennyi","ki","kit","merre","hogy","hogyan","miként","hol","honnan","hová","mivel","milyen","ó","óh","jaj","kék","zöld","fekete","sárga","piros","szürke","ne","nem","hát","nos"],m=["a","ahogy","ahol","aki","akik","akkor","alatt","által","általában","amely","amelyek","amelyekben","amelyeket","amelyet","amelynek","ami","amit","amolyan","amíg","amikor","át","abban","ahhoz","annak","arra","arról","az","azok","azon","azt","azzal","azért","aztán","azután","azonban","bár","be","belül","benne","cikk","cikkek","cikkeket","csak","de","e","eddig","egész","egy","egyes","egyetlen","egyéb","egyik","egyre","ekkor","el","elég","ellen","elé","először","előtt","első","én","éppen","ebben","ehhez","emilyen","ennek","erre","ez","ezt","ezek","ezen","ezzel","ezért","és","fel","felé","hanem","hiszen","hogy","hogyan","igen","így","illetve","ill.","ill","ilyen","ilyenkor","ismét","itt","jó","jól","jobban","kell","kellett","keresztül","keressünk","ki","kívül","között","közül","legalább","lehet","lehetett","legyen","lenne","lenni","lesz","lett","maga","magát","majd","majd","már","más","másik","meg","még","mellett","mert","mely","melyek","mi","mit","míg","miért","milyen","mikor","minden","mindent","mindenki","mindig","mint","mintha","mivel","most","nagy","nagyobb","nagyon","ne","néha","nekem","neki","nem","néhány","nélkül","nincs","olyan","ott","össze","ő","ők","őket","pedig","persze","rá","s","saját","sem","semmi","sok","sokat","sokkal","számára","szemben","szerint","szinte","talán","tehát","teljes","tovább","továbbá","több","úgy","ugyanis","új","újabb","újra","után","utána","utolsó","vagy","vagyis","valaki","valami","valamint","való","vissza","viszont"],y=window.lodash,s=function(e,a){const n=function(e,a){const n=e.externalStemmer.vowels,l=new RegExp(n);return a.search(l)}(e,a);if(0===n){const n=function(e,a){const n=new RegExp(e.externalStemmer.digraphs),l=new RegExp(e.externalStemmer.consonants),k=a.search(n),t=a.search(l);return k===t?k+1:t}(e,a);return n+1}return n+1},{baseStemmer:o}=n.languageProcessing;function g(e){const a=(0,y.get)(e.getData("morphology"),"hu",!1);return a?e=>function(e,a){const n=function(e,a){if(e.length<3)return e;const n=s(a,e);if(e.search(new RegExp(a.externalStemmer.suffixes1))>=n){let n=e.slice(0,-2);const l=new RegExp(a.externalStemmer.doubleConsonants);-1!==n.search(l)&&(n=n.slice(0,-1));const k=new RegExp(a.externalStemmer.tripleDoubleConsonants);if(-1!==n.search(k)&&(n=n.slice(0,-2)+n.charAt(n.length-1)),n.length!==e.slice(0,-2).length)return n}return e}(e,a),l=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));if(k>=l){const a=e.substring(0,k);return a.endsWith("á")?a.replace(/á$/i,"a"):a.endsWith("é")?a.replace(/é$/i,"e"):a}return e}(n,a.externalStemmer.suffixes2,a),k=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k)+"a":e}(l,a.externalStemmer.suffixes3,a),t=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k):e}(k,a.externalStemmer.suffixes4,a),r=function(e,a,n){if(e.length<3)return e;const l=s(n,e);if(e.search(new RegExp(a))>=l){let a=e.slice(0,-1);const l=new RegExp(n.externalStemmer.doubleConsonants);return-1!==a.search(l)&&(a=a.slice(0,-1)),a}return e}(t,a.externalStemmer.suffixes5,a),i=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k):e}(r,a.externalStemmer.suffixes6,a),m=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k):e}(i,a.externalStemmer.suffixes7,a),y=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k):e}(m,a.externalStemmer.suffixes8,a),o=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a.suffixes9a));if(k>=l)return e.substring(0,k)+"a";const t=e.search(new RegExp(a.suffixes9b));return t>=l?e.substring(0,t)+"e":e}(y,a.externalStemmer.suffixes9,a),g=function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k)+"a":e}(o,a.externalStemmer.suffixes10,a),z=function(e,a,n){if(e.length<3)return e;const l=s(n,e);return e.search(new RegExp(a.suffixes11a))>=l?e.slice(0,-2)+"a":e.search(new RegExp(a.suffixes11b))>=l?e.slice(0,-2)+"e":e}(g,a.externalStemmer.suffixes11,a);return function(e,a,n){if(e.length<3)return e;const l=s(n,e),k=e.search(new RegExp(a));return k>=l?e.substring(0,k):e}(z,a.externalStemmer.suffixes12,a)}(e,a):o}const z=["megvételre","megrendezésre","képzésre","kifejezésre","következtetésre","fejlesztésre","bevezetésre","kezelésre","ellenőrzésre","elhelyezésre","értékesítésre","cselekvésre","beépítésre","intézkedésre","kifizetésre","működésre","értékelésre","egyeztetésre","rögzítésre","megjelenésre","meghirdetésre","fizetésre","megbeszélésre","bejelentésre","bekezdésre","közreműködésre","teljesítésre","elküldésre","kivitelezésre","kihirdetésre","korszerűsítésre","előterjesztésre","üzemeltetésre","szerződéskötésre","visszafizetésre","befektetésre","minősítésre","telepítésre","megfigyelésre","berendezésre","megerősítésre","megtekintésre","feltüntetésre","megkülönböztetésre","befizetésre","megszüntetésre","kinevezésre","előkészítésre","felmentésre","megszervezésre","gyógykezelésre","mérlegelésre","végkielégítésre","engedélyezésre","kihelyezésre","megsemmisítésre","előrelépésre","tenyésztésre","elnevezésre","befejezésre","ismétlésre","egyesülésre","közvetítésre","lekérdezésre","szervezésre","csökkentésre","területfejlesztésre","költségtérítésre","felfüggesztésre","frissítésre","vámfizetésre","kifejlesztésre","elhelyezkedésre","teremtésre","megjelölésre","töltésre","kiegyenlítésre","kifejtésre","megépítésre","átszervezésre","termesztésre","felemelkedésre","átépítésre","áremelésre","áthelyezésre","újjáépítésre","megbecsülésre","átültetésre","visszaigénylésre","feljegyzésre","törlesztésre","helyettesítésre","követelésre","érvelésre","elkülönítésre","átképzésre","kiértékelésre","térítésre","továbbfejlesztésre","ösztönzésre","szerkesztésre","megítélésre","letöltésre","selejtezésre","segélyezésre","érintkezésre","emelkedésre","megküldésre","erősítésre","felderítésre","védésre","elbeszélgetésre","megemlítésre","felépítésre","megfejtésre","mentesítésre","előfizetésre","megtervezésre","szakképesítésre","hitelesítésre","megnevezésre","érvényesítésre","számonkérésre","terjeszkedésre","beterjesztésre","összevetésre","jogsértésre","véglegesítésre","kiküldetésre","megörökítésre","kivégzésre","költözésre","megtérülésre","kézbesítésre","közmegegyezésre","idézésre","kirekesztésre","visszaesésre","beszerelésre","beültetésre","kiterjesztésre","kifüggesztésre","leépítésre","megismerkedésre","végzésre","részletfizetésre","megfizetésre","kiürítésre","ízesítésre","méregtelenítésre","rendszerezésre","felterjesztésre","szemléltetésre","megtermékenyítésre","lekötésre","kiegyezésre","előrejelzésre","ellenvetésre","növelésre","képesítésre","beszedésre","ellenjegyzésre","áttelepítésre","egységesítésre","akadálymentesítésre","előtörlesztésre","azonosításra","aktiválásra","hasznosításra","foglalkoztatásra","finanszírozásra","megfinanszírozásra","benyújtásra","pontosításra","forgalmazásra","beszállításra","felzárkózásra","továbbításra","differenciálásra","folyósításra","kiszállításra","átcsoportosításra","kártalanításra","továbbgondolásra","felzárkóztatásra","megválaszolásra","átállásra","számlázásra","fotózásra","megvásárlásra","felszámításra","kiszámlázásra","lehívásra","leszámlázásra","továbbjutásra","szaporításra","raktározásra","kinyomtatásra","reklámozásra","újrahasznosításra","archiválásra","elővásárlásra","visszautalásra","létrehozásra","tanúsításra","ártalmatlanításra","adományozásra","kisorsolásra","utalványozásra","átgondolásra","azonosulásra","postázásra","televíziózásra","átsorolásra","finomításra","privatizálásra","dokumentálásra","beiskolázásra","digitalizálásra","újragondolásra","aktualizálásra","delegálásra","pályáztatásra","voksolásra","felhordásra","moderálásra","áthaladásra","gyámolításra","lajstromozásra","sokszorosításra","elsajátításra","szigorításra","klónozásra","elhatárolódásra","elbontásra","kiaknázásra","befolyásolásra","renoválásra","kivárásra","feliratozásra","akkreditálásra","parkosításra","szakosodásra","legyártásra","továbbgondolkodásra","magánosításra","összehangolásra","megvilágosodásra","titkosításra","integrálásra","visszaadásra","rangsorolásra","kilábalásra","szponzorálásra","szankcionálásra","modernizálásra","leltározásra","koordinálásra","apostolkodásra","definiálásra","komposztálásra","elvándorlásra","átváltásra","kódolásra","naplózásra","adagolásra","megtámadásra","exportálásra","betáplálásra","kompenzálásra","kapaszkodásra","áthallgatásra","dedikálásra","beindításra","kimunkálásra","hamisításra","megigazulásra","újratárgyalásra","visszaszállításra","megalapításra","szabványosításra","tartósításra","meditálásra","palackozásra","bírságolásra","listázásra","liberalizálásra","iskoláztatásra","auditálásra","monitorozásra","visszapótlásra","sugalmazásra","kipostázásra","előrejutásra","gyarapításra","visszaosztásra","konzerválásra","adóztatásra","decentralizálásra","diagnosztizálásra","harmonizálásra","konszolidálásra","átszállításra","realizálásra","beazonosításra","szelektálásra","újraszabályozásra","kihúzásra","optimalizálásra","bevizsgálásra","kiválogatásra","leosztásra","szállítmányozásra","torzításra","visszaigazolásra","visszaszolgáltatásra","rehabilitálásra","továbbtartásra","darabolásra","felhasználásra","bemutatásra","ellátásra","felújításra","kialakításra","átadásra","kiállításra","feldolgozásra","módosításra","változásra","kiosztásra","beavatkozásra","megvalósításra","megállapodásra","jóváhagyásra","szabályozásra","változtatásra","elszámolásra","felhívásra","meghallgatásra","elbírálásra","végrehajtásra","lemondásra","elhatározásra","kiírásra","megfogalmazásra","népszavazásra","kiválasztásra","hozzájárulásra","bemutatkozásra","felszólalásra","elutasításra","megvitatásra","levonásra","átutalásra","kizárásra","előállításra","bizonyításra","kárpótlásra","nyomtatásra","felállításra","beszámításra","pótlásra","publikálásra","megbízásra","felbontásra","megválasztásra","kibocsátásra","kivizsgálásra","lebontásra","feltárásra","felosztásra","visszavonásra","elosztásra","felvásárlásra","megbocsátásra","szétosztásra","megújításra","megnyitásra","korlátozásra","bérbeadásra","eltiltásra","elbocsátásra","meghosszabbításra","bebocsátásra","levágásra","restaurálásra","felajánlásra","kivágásra","kormányalakításra","megmunkálásra","osztályozásra","sorozatgyártásra","betakarításra","leszámolásra"],{getWords:v}=n.languageProcessing,h=["éva","szava","moszkva","alternatíva","normatíva","java","jelszava","direktíva","perspektíva","dráva","lova","kurva","szilva","páva","kollektíva","lárva","szarva","tava","láva","díva","ponyva","hava","offenzíva","előszava","borotva","színe-java","hamva","káva","legjava","mályva","murva","olíva","híre-hamva","pelyva","címszava","dudva","sava","csóva","golyva","árva","fénycsóva","utószava","antikva","közjava","aktíva","hadiárva","morotva","gyomorsava","villanyborotva","alapszava","szerva","odva","naiva","szupernova","félárva","harangszava","szlalomozva","halastava","vezényszava","falova","defenzíva","lángcsóva","varázsszava","végszava","hadova","dzsuva","pányva","sátorponyva","parancsszava","vezérszava","falva","durva","gyáva","tétova","zagyva","mogorva","morva","híva","báva","hova","fordítva","ahova","felváltva","valahova","kurva","sehova","kisvártatva","játszva","hivatva","mindenhova","tova","bárhova","lopva","idestova","elragadtatva","lélekszakadva","fejcsóválva","akárhova","fogcsikorgatva","tárva-nyitva","hagyatva","szájtátva","készakarva","karonfogva","szívdobogva","lélegzet-visszafojtva","szívszorongva","orozva","fogvacogva","szívszakadva","fogvicsorítva","bélapátfalva","albertfalva","éve","neve","könyve","szíve","teve","elve","műve","kedve","terve","nyelve","szerve","medve","híve","alapelve","törvénykönyve","életműve","irányelve","kézikönyve","felhasználóneve","jegyzőkönyve","diáknyelve","leve","ismérve","tanterve","hírneve","objektíve","íve","emlékműve","anyanyelve","beceneve","forgatókönyve","féléve","orgonaműve","tankönyve","alapköve","jókedve","évkönyve","járműve","köve","keresztneve","ráckeve","munkaterve","vezetékneve","remekműve","túrkeve","töve","öve","futóműve","heve","sarokköve","életéve","vendégkönyve","negyedéve","jegesmedve","csöve","szócsöve","keve","üdve","nedve","gyűjtőneve","fedőneve","mérföldköve","kéve","ütemterve","próbaköve","gépjárműve","domborműve","ékköve","rokonszenve","érzékszerve","kollektíve","életkedve","örve","sérve","verseskönyve","füve","építőköve","ellenszenve","álneve","tanulmányterve","szakácskönyve","erőműve","sarkköve","barnamedve","hajtóműve","mesterműve","színműve","törzskönyve","utóneve","családneve","formanyelve","távcsöve","tanéve","mosómedve","talpköve","szövegkönyve","sírköve","keserve","boltíve","márkaneve","munkakedve","kérdőíve","rosszkedve","emlékkönyve","gúnyneve","szakkönyve","pályaműve","olvasókönyve","előneve","csúcsszerve","személyneve","atomerőműve","útikönyve","cséve","telefonkönyve","képeskönyve","szabálykönyve","nyakörve","cseppköve","látószerve","mozgásszerve","daloskönyve","halászleve","heresérve","jogelve","köldöksérve","utcaneve","eleve","közvetve","elvétve","relatíve","karöltve","együttvéve","vállvetve"],{values:d}=n.languageProcessing,{Clause:b}=d,u=["kerülök","kerülsz","kerül","kerülünk","kerültök","kerülnek","kerüljek","kerülj","kerüljön","kerüljünk","kerüljetek","kerüljenek","kerülnék","kerülnél","kerülne","kerülnénk","kerülnétek","kerülnének","kerültem","kerültél","került","kerültünk","kerültetek","kerültek","kerültem volna","kerültél volna","került volna","kerültünk volna","kerültetek vola","kerültek volna","fogok kerülni","fogsz kerülni","fog kerülni","fogunk kerülni","fogtok kerülni","fognak kerülni"],c=["vagyok","vagy","van","vagyunk","vagytok","vannak","legyek","legyél","legyen","legyünk","legyetek","legyenek","lennék","lennél","lenne","lennénk","lennétek","lennének","leszek","leszel","lesz","leszünk","lesztek","lesznek","voltam","voltál","volt","voltunk","voltatok","voltak","lettem volna","lettél volna","lett volna","lettünk volna","lettetek volna","lettek volna"],f=["fogok","fogsz","fog","fogunk","fogtok","fognak"],p={auxiliaries1:u,auxiliaries2:c,auxiliaries3:f,allAuxiliaries:[].concat(u,c,f)},{getClausesSplitOnStopWords:j,createRegexFromArray:x}=n.languageProcessing,w={Clause:class extends b{constructor(e,a){super(e,a),this._participles=function(e){const a=v(e),n=new RegExp("(ve|va|ódni|ődni)$");return a.filter((e=>n.test(e)||z.includes(e)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getParticiples().filter((e=>!h.includes(e)));this.setPassive(e.length>0)}},regexes:{auxiliaryRegex:x(p.allAuxiliaries),stopwordRegex:x(m)}};function S(e){return j(e,w)}const R=["ábrázol","ad","adományoz","ajándékoz","akadályoz","alakít","alapít","álcáz","áldoz","alkalmaz","alkot","állít","arat","ás","automatizál","azonosít","befolyásol","bírál","bizonyít","bocsát","bont","bonyolít","csatol","definiál","deklarál","digitalizál","dob","dokumentál","dolgoz","finanszíroz","fogalmaz","foglal","foglalkoztat","fogyaszt","fojt","fokoz","fontol","fordít","forgalmaz","garantál","gyakorl","gyárt","gyógyít","hagy","hajt","hálál","hallgat","hamisít","hárít","használ","határoz","hidal","hoz","igazít","igazol","illusztrál","importál","indít","ír","irányít","istáz","javasol","javít","jutalmaz","kattint","kínál","kombinál","kompenzál","komponál","kritizál","kutat","lapoz","listáz","locsol","magyaráz","másol","moderál","mond","motivál","mozgósít","mulaszt","mutat","nyomtat","nyújt","olvas","oszt","parancsol","postáz","pótl","próbál","produkál","ragaszt","rak","ráz","regisztrál","reklámoz","rombol","ront","ruház","sajátít","sorol","strukturál","sugárz","szabályoz","szakít","szállít","számít","számláz","számol","szavaz","szimbolizál","szólít","szorít","talál","támogat","tanít","tárol","tart","taszít","távolít","tilt","tisztít","továbbít","tudósít","tulajdonít","újít","utal","utasít","válaszol","választ","válogat","vált","változtat","varázsol","világít","világosít","vitat","vizsgál","von"],E=["beszél","böngész","bővít","címz","cserél","derít","díszít","dönt","egészít","egyeztet","egyszerűsít","elégít","emel","említ","engedélyez","enyhít","épít","érint","erősít","ért","értékel","értelmez","érzékeltet","ev","fedez","fejleszt","fejt","fektet","felejt","feltev","figyel","fizet","győz","gyűjt","hegeszt","helyettesít","helyez","hirdet","idéz","igényl","illeszt","intéz","ismer","ítél","ízesít","jegyz","jelenít","jelent","jelentkez","jelöl","kényszerít","képvisel","kérdez","kerekít","keresztel","készít","késztet","kezel","kivitelez","kölcsönz","köt","követ","közl","közvetít","küld","különít","küszöböl","melegít","mellékl","mér","nevez","néz","nyel","nyer","örökít","őrz","összegz","összesít","rendel","rendez","rögzít","semmisít","sürget","szed","szeg","szennyez","szerel","szerkeszt","szervez","szigetel","színez","tekint","telepít","teljesít","tenyészt","teremt","térít","terjeszt","tervez","testesít","tesztel","tev","tölt","tömörít","törl","üldöz","ültet","végz","veszélyeztet","vet","vetít","vev","vezet"],P={odikVerbStems1:R,odikVerbStems2:E,all:R.concat(E)},W=["ódom","ódsz","ódik","ódunk","ódtok","ódnak","ódtam","ódtál","ódott","ódtunk","ódtatok","ódtak","ódjak","ódj","ódjon","ódjunk","ódjatok","ódjanak","ódnék","ódnál","ódna","ódnánk","ódnátok","ódnának"],C=["ődöm","ődsz","ődik","ődünk","ődtök","ődnek","ődtem","ődtél","ődött","ődtünk","ődtetek","ődtek","ődjek","ődj","ődjön","ődjünk","ődjetek","ődjenek","ődnék","ődnél","ődne","dnénk","ődnétek","ődnének"],O=["abba","agyon","alul","alá","alább","által","át","be","bele","belé","benn","egybe","együtt","el","ellen","elő","előre","észre","fel","föl","félbe","félre","felül","fölül","fenn","fönn","hátra","haza","helyre","hozzá","ide","jóvá","keresztül","ketté","ki","kölcsön","körül","körbe","közbe","közre","közzé","külön","le","létre","meg","mellé","neki","oda","össze","rá","rajta","széjjel","szembe","szerte","szét","tele","teli","tova","tovább","tönkre","utol","túl","újjá","újra","utána","végbe","végig","vissza"],{getWords:A}=n.languageProcessing,T=function(e,a,n,l){return a.some((a=>l.some((function(l){const k=a+l;if(e.endsWith(k)){const a=e.slice(0,e.indexOf(k));return""===a||n.includes(a)}}))))};function V(e){const a=A(e),n=P.odikVerbStems1,l=P.odikVerbStems2;return a.some((e=>T(e,n,O,W)||T(e,l,O,C)))}const{AbstractResearcher:$}=n.languageProcessing;class _ extends ${constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"hu",passiveConstructionType:"morphologicalAndPeriphrastic",functionWords:t,transitionWords:k,twoPartTransitionWords:r,firstWordExceptions:i,stopWords:m}),Object.assign(this.helpers,{getStemmer:g,getClauses:S,isPassiveSentence:V})}}(window.yoast=window.yoast||{}).Researcher=a})();js/dist/languages/nb.js000064400000121154147206602470011042 0ustar00(()=>{"use strict";var e={d:(t,r)=>{for(var d in r)e.o(r,d)&&!e.o(t,d)&&Object.defineProperty(t,d,{enumerable:!0,get:r[d]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>W});const r=window.yoast.analysis,d=["ei","et","en","ett","to","tre","fire","fem","seks","sju","syv","åtte","ni","ti","denne","dette","disse","den","det","de"],s=["også","fortsatt","derimot","derfor","faktisk","endelig","likevel","følgelig","likeså","dessuten","selvsagt","deretter","men","for","fordi","mens","bare","da","dog","enn","ettersom","før","hvorpå","inntil","når","omennskjønt","samt","som","uaktet","pga.","uansett","foruten","siden","m.a.o","attpåtil","derved","følgelig","forøvrig","iallfall","imidlertid","især","likefullt","likeledes","likeså","likevel","omsider","samstundes","samtidig","sikkert","således","såleis","særs","ellers","enda","dersom","skjønt","samme","eansett","etterpå","generelt","herav","imens"],n=s.concat(["på den andre siden","for øyeblikket","i stedet","i mellomtiden","til slutt","i tillegg","i tilfelle","med mindre","om enn","om to strakser","selv om","på grunn av","med hensyn til","for eksempel","en gang","fremfor alt","i alle fall","i et nøtteskall","i hvert fall","i mellomtiden","med andre ord","til dømes","for øvrig","i ettertid","så langt","på tross av","til tross for","til tross for at ","for at","slik at","i løpet av","så at","slik som","så lenge","så ofte","så snart","etter hvert som","så fremt","så sant","i fall","for så vidt som","fordi om","enda om","trass i at","hvor så","hva enn","hvor enn","sånn at","som om","så som","rett og slett ","på samme måte","etter hvert","av dette følger","i mellomtiden","i dette tilfellet","i motsetning til","som et resultat","like viktig","på grunn av det","på den positive siden","på den negative siden","tvert imot","kort oppsummert","i begge tilfeller"]);function l(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}const i=["tror","fortelle","fortell","fortalte","tenkte","tenk"],k=["ha","har","hadde","gjør","gjøre","gjorde","kaller","kalte","kalle","kalla","virker","virka","virke","virka","går","gikk","gå","leges","lages","legges","lages","består","bestod","bestå","bestått","bety","betyr"],a=l(k.concat(i)),o=l([].concat(["ei","et"],["null","en","ett","ene","to","tre","fire","fem","seks","syv","åtte","ni","ti","elleve","tolv","tretten","fjorten","femten","seksten","sytten","atten","nitten","tjue","tyve","tjueen","enogtyve","tretti","tredve","førti","førr","femti","seksti","sytti","åtti","nitti","hundre","hundreogen","etthundreogen","tohundre","tusen","tusenogen","million","millioner","milliard","milliarder"],["nullte","første","først","sekund","tredje","fjerde","femte","sjette","syvende","åttende","niende","tiende","ellevte","tolvte","trettende","fjortende","femtende","sekstende","syttende","åttende","nittende","tjuende","tjueførst","tjueførste","trettiende","førtiende","femtiende","sekstiende","syttiende","åttiende","nittiende","hundrede","hundreogfemtiende","to hundrede","tusende","millionte","millardte"],["jeg","du","den","det","vi","de","han","hun","dere","henne","oss","meg","deg","ham","dem","min","din","deres","vår","deres","ditt","mitt","våre","vårt","hans","hennes","dens","dets","egen","egne","mi","di","sin","si","sitt","sine","mine","dine","denne","dette","disse","slik","slikt","slike","sånn","sånt","sånne","samme","hverandre","hvert","som"],["hvem","hvordan","hvorfor","hvor","hva","hvilken","hvilket","hvilke"],["mange","mye","mang en","mangt et","hele","mer","ingen","ingenting","ikke noen","ikke noe","alle","all","alt","allting","noen","noe","flere","hver","hvert","annenhver","ammethvert","begge","sov","mest","fleste","få","fæst","færrest","flere","flest"],["seg","selv"],["ingenting","annen","annet","andre"],["sånn","ved","mot","ned","enn","over","inn","i","sa","opp","der","fra","din","nei","mellom","di","oppe","av","med","til","å","på","du","uten","én","under","hos","inne","gjennom","unna","del","nede","til","over","under","etter","kun","blant","for","mellom","blant"],["eller","hvis","ja","et","som","i","og","både","men","mens","enten","verken","at","om","da","når","før","idet","etter at","siden","innen","med det samme","til","inntil","hver gang","etter hvert som","så lenge","så lenge som","så ofte","så ofte som","så snart","så snart som","etter","etterpå","foran","tidligere","fordi","ettersom","derfor","dersom","hvis","så fremt","så sant","i fall","i tilfelle","med mindre","uten at","bare","for så vidt som","uten at","uten å","enda","fordi om","enda om","skjønt","om enn","hva så","trass i at","hvor så","samme","selv om","hva enn","til tross for at","hvor enn","uansett","for at","så","så at","slik at","sånn at","for at, så","slik som","så som","som om","enn","dess","jo","desto"],i,["virkelig","akkurat","visst"],k,["helt","andre","litt","lenge","siste","fint","annet","stor","stort","store","neste","lenger","annen","nye","alene","flott","gammel","gammelt","gamle","klart","liten","langt","gamle","dårlig","hyggelig","gode","sånt","nytt","best","lang","små","lot","større","vakker","vakkert","vakre","ny","bra","bedre","grei","greit","greie","høyt","største","størst","slikt","liten","lita","lite","små","mindre","minst","kort","glad","dårlig","ille","ond","vond","verre","verst","eldre","eldst","lang","lengre","lengst","nær","næmerere","nærere","nærmest","nærest","tung","tyngre","tyngst","ung","yngre","yngst","pen","alltid","godt","sammen","tilbake","etter","igjen","bare","så","veldig","bedre","samme","far","eneste","enig","borte","snart","rundt","beste","bort","vekk","nesten","ganske","senere","videre","straks","svært","neste","bak","bakre","bakerst","borte","bortre","bortest","fremme","fremre","fremst","foran","forrest","inne","indre","innerst","midt","midtre","midterst","nede","nedre","nederst","nord","nordre","nordligst","øvre","øverst","sør","søndre","sørligst","vest","vestre","vestligst","øst","østre","østligst","ute","ytre","ytterst","underst","langt","fram","her","der","nok","aldri","ut","ned","nede","bort","innom","ingensteds","sjelden","sjeldnere","sjeldnest","raskt","raskere","raskest","gjerne","heller","helst","dårligere","dårligst","vondt","vondere","vondest","meget","øverst","enda","neppe","nokså","nesten","helt","bitende","aller","ganske","aldeles","derfra","herfra","utenlands","noensteds","oppå","hjemme","hit","dit","vekk","fram","fort","hyggelig","hvorledes","sånn","således","slik","pent","morsomt","akkurat","alt","ofte","nettopp","bestandig","noen gang","noen ganger","fremdeles","ennå","da","sjeldent"],["hei","fy","au","hurra","uff","takk","hm","fanden","pokker","fillern","åh","isj","hallo","æsj"],["g"],["år","året","går","dag","nå","tid","tiden","morgen","dager","minutt","minutter","dagen","uke","uker","måneder","stund","timer","time","morges","ettermiddag","tidlig","fjor","kveld","natt","fogårs","vinter","sommer","vår","høst"],["ting","tingene"],["ok","okay","ja","jo","jaså","nei","ikke","unnskyld","beklager","herr","altså","grader","grad","kr","en halvdel","en halv","to halve","en tredel","tredjedel","to tredeler","tredjedeler","en firedel","fjerdedel","kvart","en trettendedel","en fjortendedel","en promille","en tusendel","halvannen","en og en halv"],a,s)),g=["dette","at","disse","på","unntatt","for","fra","i","om","ovenfor","på tvers","etter","mot","blant","rundt","som","på","før","bak","nedenfor","under","siden","mellom","utover","men","av","når","da","som","fordi ","ikke","og"],p=[["både","og"],["enten","eller"],["verken","eller"],["jo","dess"],["dess","dess"],["jo","desto"],["ikke bare","men"],["ikke bare","også"]],m=window.lodash,f=function(e){let t=e.search(/[aeiouyøåæ][^aeiouyøåæ]/);return-1!==t&&(t+=2),-1!==t&&t<3&&(t=3),t},v=function(e,t,r){const d=e.search(new RegExp(r.externalStemmer.regexSuffixes1a));if(d>=t&&-1!==t){let t=e.substring(0,d);return/ert$/i.test(t)&&(t=t.slice(0,-1)),t}const s=e.search(/s$/),n=e.search(new RegExp(r.externalStemmer.regexSuffixes1b));return s>=t&&-1!==n&&-1!==t?e.slice(0,-1):e},u=function(e,t,r){return e.search(new RegExp(r.externalStemmer.regexSuffixes2))>=t&&-1!==t&&(e=e.slice(0,-1)),e},b=function(e,t,r){const d=e.search(new RegExp(r.externalStemmer.regexSuffixes3));return d>=t&&-1!==t&&(e=e.substring(0,d)),e},{baseStemmer:y}=r.languageProcessing;function h(e){const t=(0,m.get)(e.getData("morphology"),"nb",!1);return t?e=>function(e,t){let r=-1;for(const d of[v,u,b])r=f(e),e=d(e,r,t);return e}(e,t):y}const j=["villet","bruket","finnet","legget","viset","vitet","ligget","ønsket","holdet","spillet","laget","velget","tenket","menet","trenget","begynnet","kjennet","kjøpet","startet","finnest","leset","følget","jobbet","gjeldet","sendet","fortellet","skremt","prøvd","sittet","høret","hjelpet","bygget","klaret","kjøret","føret","snakket","øket","tilbyt","skapet","håpet","vinnet","møtet","delet","følet","utviklet","betydd","kallet","bidrat","læret","selget","spiset","opplevet","fortsettet","passet","drivet","krevet","fungeret","levet","leveret","virket","betalet","forståt","deltat","benyttet","søket","endret","spørret","vurderet","stillet","handlet","inkluderet","åpnet","reiset","inneholdet","bestemmet","anbefalet","trekket","ventet","samlet","flyttet","nevnet","gjennomføret","husket","luret","lurt","sikret","begynt","beståt","reduseret","slippet","hentet","regnet","svaret","knyttet","utføret","hetet","merket","baseret","trenet","fallet","meldet","ledet","fyllet","produseret","dekket","endet","mistet","gledet","unngåt","sørget","behandlet","vokset","mottat","registreret","beskrivet","arrangeret","forsøket","etableret","påvirket","skjønnet","fjernet","fødet","sjekket","forklaret","treffet","stoppet","bestillet","oppnåt","plasseret","avsluttet","henget","løpet","forventet","sluttet","presenteret","elsket","slitet","kostet","planlegget","bæret","besøket","glemmet","støttet","byttet","kastet","testet","nytet","oppdaget","oppståt","tapet","brytet","løset","styret","fornøyet","innebæret","rettet","representeret","tilpasset","publiseret","omfattet","utsettet","sammenlignet","tillatet","sovet","dannet","hevdet","tjenet","inviteret","forsvinnet","manglet","drepet","utgjøret","skillet","beskyttet","stemmet","varieret","drikket","opprettet","inngåt","forbedret","ødelegget","satset","dukket","målet","lastet","foreslåt","diskuteret","ringet","studeret","interesseret","styrket","begrenset","varet","koblet","skadet","forlatet","forlatt","lovet","foretat","skaffet","foregåt","godkjennet","koset","sparet","hørest","hindret","vedtat","bringet","bekreftet","oppdateret","anset","synget","fokuseret","forårsaket","spret","erstattet","skytet","serveret","kombineret","kjempet","latet","antat","blandet","byt","snut","preget","fordelet","ansettet","takket","faret","utvidet","skyldest","minnet","trykket","lanseret","kontaktet","beholdet","letet","forberedet","festet","innføret","undersøket","brennet","malet","medføret","beveget","stikket","skiftet","hoppet","involveret","egnet","overtat","monteret","tålet","avgjøret","lykkest","plukket","beregnet","utgit","peket","håndteret","tegnet","langet","uttalet","lagret","følest","installeret","feiret","opprettholdet","oppfordret","reageret","kontrolleret","understreket","havnet","vasket","befinnet","fullføret","leket","lidet","defineret","omtalet","løftet","oppgit","rammet","samarbeidet","fanget","typet","opplyset","strekket","dreiet","stenget","utarbeidet","fremmet","overføret","pleiet","oppfyllet","inspireret","engasjeret","utnyttet","oppføret","organiseret","smaket","reddet","scoret","hendet","bekymret","kuttet","påpeket","rekket","forandret","aksepteret","ordnet","nektet","presset","passeret","savnet","nærmet","pakket","smilet","møtest","rapporteret","dømmet","oppfattet","tilhøret","stiget","tildelet","talet","tydet","greiet","markeret","ivaretat","fortjenet","vennet","leiet","lånet","eksisteret","dokumenteret","klikket","vendet","tvinget","kommenteret","innrømmet","forholdet","landet","våknet","funket","formidlet","identifiseret","tellet","utstyret","gratuleret","formet","angripet","overrasket","foreligget","hevet","tørret","foretrekket","garanteret","justeret","prioriteret","lyttet","gjentat","imponeret","resulteret","skjulet","trengest","rivet","trivest","lukket","uttrykket","overlevet","klaget","informeret","tilbringet","postet","giftet","designet","avsløret","varslet","fremståt","blogget","innset","stolet","opereret","forsvaret","forutsettet","gripet","ryddet","utdannet","skrut","veiet","krysset","utfordret","gjennomgåt","reguleret","støtet","senket","lignet","bevaret","angit","utforsket","tørket","syklet","forsterket","tolket","slappet","investeret","fikset","berøret","beviset","ropet","koket","forblit","opptret","vekket","fastsettet","strikket","fryktet","blåset","avholdet","drømmet","syt","forekommet","forbyt","pratet","observeret","taklet","påståt","konkurreret","anet","rennet","rit","signeret","forhindret","ankommet","konkluderet","sporet","stiftet","relateret","forbindet","avtalet","varmet","bitet","påføret","bindet","fellet","kvalifiseret","refereret","utformet","avviset","klippet","overbeviset","blat","plaget","øvet","orket","behøvet","godtat","beklaget","henviset","kommuniseret","integreret","seilet","betraktet","danset","giddet","synket","lettet","tilrettelegget","finansieret","stimuleret","bedret","forebygget","avhenget","skuffet","tilsit","rullet","lestt","analyseret","hilset","bosettet","stjelet","tilsvaret","introduseret","dyrket","aktiveret","gravet","tret","disset","farget","anvendet","inntat","oversettet","hatet","konsentreret","utløset","reflekteret","grunnlegget","pustet","opplevest","kritiseret","anerkjennet","avdekket","svekket","slettet","gjenståt","hvilet","redigeret","kåret","steket","røret","låset","advaret","risikeret","renset","gråtet","knuset","rykket","underviset","skjæret","motiveret","luktet","domineret","fisket","biståt","seest","åpenbaret","tilføret","tilknyttet","påviset","besluttet","kartlegget","filmet","ytet","pågåt","kikket","gjemmet","annonseret","logget","omhandlet","returneret","røyket","pålegget","tipset","tippet","plantet","fremstillet","puttet","irriteret","tennet","stanset","utøvet","indikeret","noteret","tiltrekket","fryset","pyntet","klatret","lyset","oppgraderet","pusset","slenget","fraktet","fristet","stammet","skremmet","antydet","utnevnet","videreføret","forsket","vandret","tilsettet","oppsøket","fattet","svinget","forhandlet","skrevet","lønnet","stryket","suget","viet","digget","siktet","huset","repareret","erfaret","praktiseret","badet","forlenget","baket","straffet","realiseret","stresset","skrytet","intervjuet","flytet","bekjempet","illustreret","bøyet","droppet","iverksettet","ladet","mistenket","sovnet","forpliktet","tømmet","fremhevet","dempet","tvilet","begåt","orienteret","overvåket","fastslåt","banket","løsnet","tilfredsstillet","kopieret","etterfølget","rommet","argumenteret","angret","kulet","drøftet","sparket","begrunnet","betegnet","flyktet","erklæret","oppsummeret","forelsket","respekteret","lydet","låtet","avklaret","isoleret","smittet","anslåt","hellet","priset","smøret","genereret","oppbevaret","innledet","utelukket","belyset","omgit","vektlegget","listet","overlatet","tittet","dritet","debuteret","roet","konstrueret","administreret","gjengit","ryket","nomineret","svømmet","smeltet","offentliggjøret","etterlatet","skinnet","smellet","skriket","forvaltet","presteret","spesialiseret","siget","forsikret","dateret","klemmet","forstyrret","toppet","skyvet","linket","matchet","ridet","videreutviklet","fremgåt","avgit","fornyet","limet","raset","spat","balanseret","frigjøret","siteret","forestillet","konstateret","jaktet","grunnet","veiledet","gjenopprettet","angåt","besvaret","sammenliknet","innhentet","ristet","rengjøret","litet","kompliseret","utredet","nyttet","arresteret","moret","betjenet","booket","demonstreret","strømmet","anmeldet","dekoreret","mestret","vedlikeholdet","springet","erkjennet","oppholdet","avviklet","fotograferet","parkeret","vitnet","sviktet","rekrutteret","importeret","elimineret","oppmuntret","belønnet","blokkeret","presiseret","markedsføret","kjennetegnet","høstet","kjennest","lokaliseret","våget","overset","innstillet","utmerket","gjenspeilet","henvendet","lokket","sukket","utstedet","innehat","utbetalet","rangeret","avbrytet","evalueret","jaget","hivet","sprekket","døpet","omsettet","sorteret","slåsst","karakteriseret","fremføret","rundet","bemerket","underlegget","korresponderet","verdsettet","konverteret","formuleret","forfølget","utbret","disponeret","avanseret","strammet","implementeret","opparbeidet","kysset","korrigeret","blomstret","innvilget","ofret","knekket","filet","matet","forsinket","forenet","reserveret","spennet","tilsendet","transporteret","vannet","stavet","belastet","forenklet","skreddersyt","etterlyset","skyldet","spåt","dyttet","timet","rotet","nedlegget","dettet","kvittet","innredet","kortet","motsettet","lindret","bremset","frelset","foret","gjenkjennet","opphevet","sniket","tallet","absorberet","lekket","doblet","distribueret","synliggjøret","feilet","forsynet","bearbeidet","ignoreret","unnet","forkynnet","tråkket","assosieret","tilegnet","utviset","nedsettet","diagnostiseret","framståt","heiet","planet","anget","evnet","herjet","sklit","misforståt","forbeholdet","begeistret","avsettet","fyret","oset","kompenseret","overstiget","tilset","oppkallet","krypet","brettet","bevilget","skildret","forvandlet","minsket","rømmet","klassifiseret","anlegget","lyvet","sprenget","overnattet","innfrit","spørrest","maktet","forverret","turet","stellet","klargjøret","arvet","hemmet","ledest","skyllet","nøyet","pumpet","tillegget","hyllet","tillet","behersket","skjerpet","berømmet","vernet","forankret","luftet","svelget","innkallet","kunngjøret","luket","opphøret","headet","vekslet","fratat","suppleret","innlemmet","trillet","lenket","boret","avlyset","sponset","driftet","medvirket","motvirket","ferdigstillet","grenset","sprettet","gjestet","regisseret","protesteret","anklaget","gjettet","etterspørret","duket","stemplet","koordineret","avtat","oppnevnet","omkommet","overholdet","printet","misbruket","forlanget","dedikeret","roset","unnskyldet","utdelet","såret","sertifiseret","oppløset","provoseret","forvirret","øset","begravet","overgåt","påtat","helbredet","stirret","erobret","spekuleret","skiltet","mobbet","rustet","nikket","gruet","bommet","innlegget","utpeket","surfet","kranglet","tilgit","utdypet","sammensettet","hakket","fremkommet","strevet","igangsettet","hersket","brekket","bristet","bydet","draget","flyget","fnyset","fyket","glippet","grinet","gyset","gytet","gyvet","hogget","hugget","klinget","klypet","klyvet","knipet","kommet","kvedet","kvekket","kveppet","latet"," lyget","lyvet","nyset","pipet","ridet","settet","skitet","skjelvet","skridet","skrivet","skvettet","slippet","smyget","snytet","spinnet","stridet","supet","sverget","sverjet","ljuget","sviket","svinnet","sleppet","tigget","viket","villt","brukt","finnt","leggt","vist","vitt","liggt","ønskt","holdt","spillt","lagt","velgt","tenkt","ment","trengt","begynnt","kjennt","kjøpt","startt","finnes","lest","følgt","jobbt","gjeldt","sendt","fortellt","sitt","hørt","hjelpt","byggt","klart","kjørt","ført","snakkt","økt","tilby","skapt","håpt","vinnt","møtt","delt","følt","utviklt","bety","kallt","bidra","lært","selgt","spist","opplevt","fortsett","passt","drivt","krevt","fungert","levt","levert","virkt","betalt","forstå","delta","benytt","søkt","endrt","spørrt","vurdert","stillt","handlt","inkludert","åpnt","reist","inneholdt","bestemmt","anbefalt","trekkt","ventt","samlt","flytt","nevnt","gjennomført","huskt","lurt","sikrt","bestå","redusert","slippt","hentt","regnt","svart","knytt","utført","hett","merkt","basert","trent","fallt","meldt","ledt","fyllt","produsert","dekkt","endt","mistt","gledt","unngå","sørgt","behandlt","vokst","motta","registrert","beskrivt","arrangert","forsøkt","etablert","påvirkt","skjønnt","fjernt","født","sjekkt","forklart","trefft","stoppt","bestillt","oppnå","plassert","avslutt","hengt","løpt","forventt","slutt","presentert","elskt","slitt","kostt","planleggt","bært","besøkt","glemmt","støtt","bytt","kastt","testt","nytt","oppdagt","oppstå","tapt","brytt","løst","styrt","fornøyt","innebært","rett","representert","tilpasst","publisert","omfatt","utsett","sammenlignt","tillatt","sovt","dannt","hevdt","tjent","invitert","forsvinnt","manglt","drept","utgjørt","skillt","beskytt","stemmt","variert","drikkt","opprett","inngå","forbedrt","ødeleggt","satst","dukkt","målt","lastt","foreslå","diskutert","ringt","studert","interessert","styrkt","begrenst","vart","koblt","skadt","forlatt","lovt","foreta","skafft","foregå","godkjennt","kost","spart","høres","hindrt","vedta","bringt","bekreftt","oppdatert","anst","syngt","fokusert","forårsakt","sprt","erstatt","skytt","servert","kombinert","kjempt","latt","anta","blandt","by","snu","pregt","fordelt","ansett","takkt","fart","utvidt","skyldes","minnt","trykkt","lansert","kontaktt","beholdt","lett","forberedt","festt","innført","undersøkt","brennt","malt","medført","bevegt","stikkt","skiftt","hoppt","involvert","egnt","overta","montert","tålt","avgjørt","lykkes","plukkt","beregnt","utgi","pekt","håndtert","tegnt","langt","uttalt","lagrt","føles","installert","feirt","opprettholdt","oppfordrt","reagert","kontrollert","understrekt","havnt","vaskt","befinnt","fullført","lekt","lidt","definert","omtalt","løftt","oppgi","rammt","samarbeidt","fangt","typt","opplyst","strekkt","dreit","stengt","utarbeidt","fremmt","overført","pleit","oppfyllt","inspirert","engasjert","utnytt","oppført","organisert","smakt","reddt","scort","hendt","bekymrt","kutt","påpekt","rekkt","forandrt","akseptert","ordnt","nektt","presst","passert","savnt","nærmt","pakkt","smilt","møtes","rapportert","dømmt","oppfatt","tilhørt","stigt","tildelt","talt","tydt","greit","markert","ivareta","fortjent","vennt","leit","lånt","eksistert","dokumentert","klikkt","vendt","tvingt","kommentert","innrømmt","forholdt","landt","våknt","funkt","formidlt","identifisert","tellt","utstyrt","gratulert","formt","angript","overraskt","foreliggt","hevt","tørrt","foretrekkt","garantert","justert","prioritert","lytt","gjenta","imponert","resultert","skjult","trenges","rivt","trives","lukkt","uttrykkt","overlevt","klagt","informert","tilbringt","postt","giftt","designt","avslørt","varslt","fremstå","bloggt","innst","stolt","operert","forsvart","forutsett","gript","ryddt","utdannt","skru","veit","krysst","utfordrt","gjennomgå","regulert","støtt","senkt","lignt","bevart","angi","utforskt","tørkt","syklt","forsterkt","tolkt","slappt","investert","fikst","berørt","bevist","ropt","kokt","forbli","opptrt","vekkt","fastsett","strikkt","fryktt","blåst","avholdt","drømmt","sy","forekommt","forby","pratt","observert","taklt","påstå","konkurrert","ant","rennt","ri","signert","forhindrt","ankommt","konkludert","sport","stiftt","relatert","forbindt","avtalt","varmt","bitt","påført","bindt","fellt","kvalifisert","referert","utformt","avvist","klippt","overbevist","bla","plagt","øvt","orkt","behøvt","godta","beklagt","henvist","kommunisert","integrert","seilt","betraktt","danst","giddt","synkt","lett","tilretteleggt","finansiert","stimulert","bedrt","forebyggt","avhengt","skufft","tilsi","rullt","lest","analysert","hilst","bosett","stjelt","tilsvart","introdusert","dyrkt","aktivert","gravt","trt","disst","fargt","anvendt","innta","oversett","hatt","konsentrert","utløst","reflektert","grunnleggt","pustt","oppleves","kritisert","anerkjennt","avdekkt","svekkt","slett","gjenstå","hvilt","redigert","kårt","stekt","rørt","låst","advart","risikert","renst","grått","knust","rykkt","undervist","skjært","motivert","luktt","dominert","fiskt","bistå","sees","åpenbart","tilført","tilknytt","påvist","beslutt","kartleggt","filmt","ytt","pågå","kikkt","gjemmt","annonsert","loggt","omhandlt","returnert","røykt","påleggt","tipst","tippt","plantt","fremstillt","putt","irritert","tennt","stanst","utøvt","indikert","notert","tiltrekkt","fryst","pyntt","klatrt","lyst","oppgradert","pusst","slengt","fraktt","fristt","stammt","skremmt","antydt","utnevnt","videreført","forskt","vandrt","tilsett","oppsøkt","fatt","svingt","forhandlt","skrevt","lønnt","strykt","sugt","vit","diggt","siktt","hust","reparert","erfart","praktisert","badt","forlengt","bakt","strafft","realisert","stresst","skrytt","intervjut","flytt","bekjempt","illustrert","bøyt","droppt","iverksett","ladt","mistenkt","sovnt","forpliktt","tømmt","fremhevt","dempt","tvilt","begå","orientert","overvåkt","fastslå","bankt","løsnt","tilfredsstillt","kopiert","etterfølgt","rommt","argumentert","angrt","kult","drøftt","sparkt","begrunnt","betegnt","flyktt","erklært","oppsummert","forelskt","respektert","lydt","lått","avklart","isolert","smitt","anslå","hellt","prist","smørt","generert","oppbevart","innledt","utelukkt","belyst","omgi","vektleggt","listt","overlatt","titt","dritt","debutert","rot","konstruert","administrert","gjengi","rykt","nominert","svømmt","smeltt","offentliggjørt","etterlatt","skinnt","smellt","skrikt","forvaltt","prestert","spesialisert","sigt","forsikrt","datert","klemmt","forstyrrt","toppt","skyvt","linkt","matcht","ridt","videreutviklt","fremgå","avgi","fornyt","limt","rast","spa","balansert","frigjørt","sitert","forestillt","konstatert","jaktt","grunnt","veiledt","gjenopprett","angå","besvart","sammenliknt","innhentt","ristt","rengjørt","litt","komplisert","utredt","nytt","arrestert","mort","betjent","bookt","demonstrert","strømmt","anmeldt","dekorert","mestrt","vedlikeholdt","springt","erkjennt","oppholdt","avviklt","fotografert","parkert","vitnt","sviktt","rekruttert","importert","eliminert","oppmuntrt","belønnt","blokkert","presisert","markedsført","kjennetegnt","høstt","kjennes","lokalisert","vågt","overst","innstillt","utmerkt","gjenspeilt","henvendt","lokkt","sukkt","utstedt","inneha","utbetalt","rangert","avbrytt","evaluert","jagt","hivt","sprekkt","døpt","omsett","sortert","slåss","karakterisert","fremført","rundt","bemerkt","underleggt","korrespondert","verdsett","konvertert","formulert","forfølgt","utbrt","disponert","avansert","strammt","implementert","opparbeidt","kysst","korrigert","blomstrt","innvilgt","ofrt","knekkt","filt","matt","forsinkt","forent","reservert","spennt","tilsendt","transportert","vannt","stavt","belastt","forenklt","skreddersy","etterlyst","skyldt","spå","dytt","timt","rott","nedleggt","dett","kvitt","innredt","kortt","motsett","lindrt","bremst","frelst","fort","gjenkjennt","opphevt","snikt","tallt","absorbert","lekkt","doblt","distribuert","synliggjørt","feilt","forsynt","bearbeidt","ignorert","unnt","forkynnt","tråkkt","assosiert","tilegnt","utvist","nedsett","diagnostisert","framstå","heit","plant","angt","evnt","herjt","skli","misforstå","forbeholdt","begeistrt","avsett","fyrt","ost","kompensert","overstigt","tilst","oppkallt","krypt","brett","bevilgt","skildrt","forvandlt","minskt","rømmt","klassifisert","anleggt","lyvt","sprengt","overnatt","innfri","spørres","maktt","forverrt","turt","stellt","klargjørt","arvt","hemmt","ledes","skyllt","nøyt","pumpt","tilleggt","hyllt","tillt","beherskt","skjerpt","berømmt","vernt","forankrt","luftt","svelgt","innkallt","kunngjørt","lukt","opphørt","headt","vekslt","frata","supplert","innlemmt","trillt","lenkt","bort","avlyst","sponst","driftt","medvirkt","motvirkt","ferdigstillt","grenst","sprett","gjestt","regissert","protestert","anklagt","gjett","etterspørrt","dukt","stemplt","koordinert","avta","oppnevnt","omkommt","overholdt","printt","misbrukt","forlangt","dedikert","rost","unnskyldt","utdelt","sårt","sertifisert","oppløst","provosert","forvirrt","øst","begravt","overgå","påta","helbredt","stirrt","erobrt","spekulert","skiltt","mobbt","rustt","nikkt","grut","bommt","innleggt","utpekt","surft","kranglt","tilgi","utdypt","sammensett","hakkt","fremkommt","strevt","igangsett","herskt","brekkt","bristt","bydt","dragt","flygt","fnyst","fykt","glippt","grint","gyst","gytt","gyvt","hoggt","huggt","klingt","klypt","klyvt","knipt","kommt","kvedt","kvekkt","kveppt","latt"," lygt","lyvt","nyst","pipt","ridt","sett","skitt","skjelvt","skridt","skrivt","skvett","slippt","smygt","snytt","spinnt","stridt","supt","svergt","sverjt","ljugt","svikt","svinnt","sleppt","tiggt","vikt","bedt","betydd","bundet","bitt","blitt","brekket","brent","brutt","bydd","budt","båret","dettet","dradd","dratt","drukket","dritet","dritt","drevet","ett","falt","funnet","flydd","fløyet","flydd","fløyet","flytt","forsvunnet","fortalt","frosset","fått","fulgt","gitt","giddet","gjeldet","gjeldt","gjort","kvalt","glidd","gravd","gravet","grint","grepet","grått","gått","hatt","hett","hivd","hjulpet","hogget","hogd","holdt","klypt","kløpet","knekket","knekt","kommet","krøpet","latt","latt","ledd","lagt","ligget","lydd","lydt","løyet","løpet","løpt","nyst","nytt","pepet","rekket","rekkt","rent","ridd","revet","røket","sett","solgt","satt","sagt","sittet","skitt","skjelvet","skåret","sklidd","skreket","skrevet","skrytt","skutt","skyvd","skjøvet","slengt","sluppet","slitt","slått","smelt","snytt","sovet","sprukket","sprettet","sprunget","spurt","stukket","stjålet","strukket","strøket","stått","likt","sverga","sverget","svoret","svidd","sveket","svunnet","sunget","sunket","tatt","truffet","trukket","tvunget","tort","turt","valgt","vikt","vunnet","visst","vridd","vært","villed","bruked","finned","legged","vised","vited","ligged","ønsked","holded","spilled","laged","velged","tenked","mened","trenged","begynned","kjenned","kjøped","started","finnesd","lesed","følged","jobbed","gjelded","sended","fortelled","sitted","høred","hjelped","bygged","klared","kjøred","føred","snakked","øked","tilbyd","skaped","håped","vinned","møted","deled","føled","utvikled","betyd","kalled","bidrad","læred","selged","spised","oppleved","fortsetted","passed","drived","kreved","fungered","leved","levered","virked","betaled","forståd","deltad","benytted","søked","endred","spørred","vurdered","stilled","handled","inkludered","åpned","reised","inneholded","bestemmed","anbefaled","trekked","vented","samled","flytted","nevned","gjennomføred","husked","lured","sikred","beståd","redusered","slipped","hented","regned","svared","knytted","utføred","heted","merked","basered","trened","falled","melded","leded","fylled","produsered","dekked","ended","misted","gleded","unngåd","sørged","behandled","voksed","mottad","registrered","beskrived","arrangered","forsøked","etablered","påvirked","skjønned","fjerned","føded","sjekked","forklared","treffed","stopped","bestilled","oppnåd","plassered","avslutted","henged","løped","forvented","slutted","presentered","elsked","slited","kosted","planlegged","bæred","besøked","glemmed","støtted","bytted","kasted","tested","nyted","oppdaged","oppståd","taped","bryted","løsed","styred","fornøyed","innebæred","retted","representered","tilpassed","publisered","omfatted","utsetted","sammenligned","tillated","soved","danned","hevded","tjened","invitered","forsvinned","mangled","dreped","utgjøred","skilled","beskytted","stemmed","variered","drikked","oppretted","inngåd","forbedred","ødelegged","satsed","dukked","måled","lasted","foreslåd","diskutered","ringed","studered","interessered","styrked","begrensed","vared","kobled","skaded","forlated","loved","foretad","skaffed","foregåd","godkjenned","kosed","spared","høresd","hindred","vedtad","bringed","bekrefted","oppdatered","ansed","synged","fokusered","forårsaked","spred","erstatted","skyted","servered","kombinered","kjemped","lated","antad","blanded","byd","snud","preged","fordeled","ansetted","takked","fared","utvided","skyldesd","minned","trykked","lansered","kontakted","beholded","leted","forbereded","fested","innføred","undersøked","brenned","maled","medføred","beveged","stikked","skifted","hopped","involvered","egned","overtad","montered","tåled","avgjøred","lykkesd","plukked","beregned","utgid","peked","håndtered","tegned","langed","uttaled","lagred","følesd","installered","feired","opprettholded","oppfordred","reagered","kontrollered","understreked","havned","vasked","befinned","fullføred","leked","lided","definered","omtaled","løfted","oppgid","rammed","samarbeided","fanged","typed","opplysed","strekked","dreied","stenged","utarbeided","fremmed","overføred","pleied","oppfylled","inspirered","engasjered","utnytted","oppføred","organisered","smaked","redded","scored","hended","bekymred","kutted","påpeked","rekked","forandred","akseptered","ordned","nekted","pressed","passered","savned","nærmed","pakked","smiled","møtesd","rapportered","dømmed","oppfatted","tilhøred","stiged","tildeled","taled","tyded","greied","markered","ivaretad","fortjened","venned","leied","låned","eksistered","dokumentered","klikked","vended","tvinged","kommentered","innrømmed","forholded","landed","våkned","funked","formidled","identifisered","telled","utstyred","gratulered","formed","angriped","overrasked","foreligged","heved","tørred","foretrekked","garantered","justered","prioritered","lytted","gjentad","imponered","resultered","skjuled","trengesd","rived","trivesd","lukked","uttrykked","overleved","klaged","informered","tilbringed","posted","gifted","designed","avsløred","varsled","fremståd","blogged","innsed","stoled","operered","forsvared","forutsetted","griped","rydded","utdanned","skrud","veied","kryssed","utfordred","gjennomgåd","regulered","støted","senked","ligned","bevared","angid","utforsked","tørked","sykled","forsterked","tolked","slapped","investered","fiksed","berøred","bevised","roped","koked","forblid","opptred","vekked","fastsetted","strikked","frykted","blåsed","avholded","drømmed","syd","forekommed","forbyd","prated","observered","takled","påståd","konkurrered","aned","renned","rid","signered","forhindred","ankommed","konkludered","spored","stifted","relatered","forbinded","avtaled","varmed","bited","påføred","binded","felled","kvalifisered","referered","utformed","avvised","klipped","overbevised","blad","plaged","øved","orked","behøved","godtad","beklaged","henvised","kommunisered","integrered","seiled","betrakted","dansed","gidded","synked","letted","tilrettelegged","finansiered","stimulered","bedred","forebygged","avhenged","skuffed","tilsid","rulled","lestd","analysered","hilsed","bosetted","stjeled","tilsvared","introdusered","dyrked","aktivered","graved","tred","dissed","farged","anvended","inntad","oversetted","hated","konsentrered","utløsed","reflektered","grunnlegged","pusted","opplevesd","kritisered","anerkjenned","avdekked","svekked","sletted","gjenståd","hviled","redigered","kåred","steked","røred","låsed","advared","risikered","rensed","gråted","knused","rykked","undervised","skjæred","motivered","lukted","dominered","fisked","biståd","seesd","åpenbared","tilføred","tilknytted","påvised","beslutted","kartlegged","filmed","yted","pågåd","kikked","gjemmed","annonsered","logged","omhandled","returnered","røyked","pålegged","tipsed","tipped","planted","fremstilled","putted","irritered","tenned","stansed","utøved","indikered","notered","tiltrekked","frysed","pynted","klatred","lysed","oppgradered","pussed","slenged","frakted","fristed","stammed","skremmed","antyded","utnevned","videreføred","forsked","vandred","tilsetted","oppsøked","fatted","svinged","forhandled","skreved","lønned","stryked","suged","vied","digged","sikted","hused","reparered","erfared","praktisered","baded","forlenged","baked","straffed","realisered","stressed","skryted","intervjued","flyted","bekjemped","illustrered","bøyed","dropped","iverksetted","laded","mistenked","sovned","forplikted","tømmed","fremheved","demped","tviled","begåd","orientered","overvåked","fastslåd","banked","løsned","tilfredsstilled","kopiered","etterfølged","rommed","argumentered","angred","kuled","drøfted","sparked","begrunned","betegned","flykted","erklæred","oppsummered","forelsked","respektered","lyded","låted","avklared","isolered","smitted","anslåd","helled","prised","smøred","generered","oppbevared","innleded","utelukked","belysed","omgid","vektlegged","listed","overlated","titted","drited","debutered","roed","konstruered","administrered","gjengid","ryked","nominered","svømmed","smelted","offentliggjøred","etterlated","skinned","smelled","skriked","forvalted","prestered","spesialisered","siged","forsikred","datered","klemmed","forstyrred","topped","skyved","linked","matched","rided","videreutvikled","fremgåd","avgid","fornyed","limed","rased","spad","balansered","frigjøred","sitered","forestilled","konstatered","jakted","grunned","veileded","gjenoppretted","angåd","besvared","sammenlikned","innhented","risted","rengjøred","lited","komplisered","utreded","nytted","arrestered","mored","betjened","booked","demonstrered","strømmed","anmelded","dekorered","mestred","vedlikeholded","springed","erkjenned","oppholded","avvikled","fotografered","parkered","vitned","svikted","rekruttered","importered","eliminered","oppmuntred","belønned","blokkered","presisered","markedsføred","kjennetegned","høsted","kjennesd","lokalisered","våged","oversed","innstilled","utmerked","gjenspeiled","henvended","lokked","sukked","utsteded","innehad","utbetaled","rangered","avbryted","evaluered","jaged","hived","sprekked","døped","omsetted","sortered","slåssd","karakterisered","fremføred","runded","bemerked","underlegged","korrespondered","verdsetted","konvertered","formulered","forfølged","utbred","disponered","avansered","strammed","implementered","opparbeided","kyssed","korrigered","blomstred","innvilged","ofred","knekked","filed","mated","forsinked","forened","reservered","spenned","tilsended","transportered","vanned","staved","belasted","forenkled","skreddersyd","etterlysed","skylded","spåd","dytted","timed","roted","nedlegged","detted","kvitted","innreded","korted","motsetted","lindred","bremsed","frelsed","fored","gjenkjenned","oppheved","sniked","talled","absorbered","lekked","dobled","distribuered","synliggjøred","feiled","forsyned","bearbeided","ignorered","unned","forkynned","tråkked","assosiered","tilegned","utvised","nedsetted","diagnostisered","framståd","heied","planed","anged","evned","herjed","sklid","misforståd","forbeholded","begeistred","avsetted","fyred","osed","kompensered","overstiged","tilsed","oppkalled","kryped","bretted","bevilged","skildred","forvandled","minsked","rømmed","klassifisered","anlegged","lyved","sprenged","overnatted","innfrid","spørresd","makted","forverred","tured","stelled","klargjøred","arved","hemmed","ledesd","skylled","nøyed","pumped","tillegged","hylled","tilled","behersked","skjerped","berømmed","verned","forankred","lufted","svelged","innkalled","kunngjøred","luked","opphøred","headed","veksled","fratad","supplered","innlemmed","trilled","lenked","bored","avlysed","sponsed","drifted","medvirked","motvirked","ferdigstilled","grensed","spretted","gjested","regissered","protestered","anklaged","gjetted","etterspørred","duked","stempled","koordinered","avtad","oppnevned","omkommed","overholded","printed","misbruked","forlanged","dedikered","rosed","unnskylded","utdeled","såred","sertifisered","oppløsed","provosered","forvirred","øsed","begraved","overgåd","påtad","helbreded","stirred","erobred","spekulered","skilted","mobbed","rusted","nikked","grued","bommed","innlegged","utpeked","surfed","krangled","tilgid","utdyped","sammensetted","hakked","fremkommed","streved","igangsetted","hersked","brekked","bristed","byded","draged","flyged","fnysed","fyked","glipped","grined","gysed","gyted","gyved","hogged","hugged","klinged","klyped","klyved","kniped","kommed","kveded","kvekked","kvepped","lated","lyged","lyved","nysed","piped","rided","setted","skited","skjelved","skrided","skrived","skvetted","slipped","smyged","snyted","spinned","strided","suped","sverged","sverjed","ljuged","sviked","svinned","slepped","tigged","viked","kunngjort"],{getWords:c}=r.languageProcessing,{precedenceException:x,values:w}=r.languageProcessing,{Clause:S}=w,P=["bli","blir","ble ","blei","blitt","bli","blivende","blis","er"],{createRegexFromArray:R,getClauses:C}=r.languageProcessing,E={Clause:class extends S{constructor(e,t){super(e,t),this._participles=function(e){const t=c(e),r=[];return(0,m.forEach)(t,(function(e){(0,m.includes)(j,e)&&r.push(e)})),r}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getClauseText(),t=this.getParticiples().filter((t=>!x(e,t,a)));this.setPassive(t.length>0)}},stopwords:g,auxiliaries:P,regexes:{auxiliaryRegex:R(P),stopwordRegex:R(g),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi}};function O(e){return C(e,E)}const{AbstractResearcher:T}=r.languageProcessing;class W extends T{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"nb",passiveConstructionType:"periphrastic",functionWords:o,firstWordExceptions:d,transitionWords:n,twoPartTransitionWords:p,stopWords:g}),Object.assign(this.helpers,{getStemmer:h,getClauses:O})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/fr.js000064400000210460147206602470011051 0ustar00(()=>{"use strict";var e={d:(i,t)=>{for(var s in t)e.o(t,s)&&!e.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:t[s]})},o:(e,i)=>Object.prototype.hasOwnProperty.call(e,i),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},i={};e.r(i),e.d(i,{default:()=>qe});const t=window.yoast.analysis,s=["le","la","les","un","une","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","celui","celle","ceux","celles","celui-ci","celle-là","celui-là","celle-ci"],l=["ainsi","alors","aussi","car","cependant","certainement","certes","conséquemment","d'abord","d'ailleurs","d'après","davantage","désormais","deuxièmement","donc","dorénavant","effectivement","également","enfin","ensuite","entre-temps","essentiellement","excepté","finalement","globalement","jusqu'ici","là-dessus","lorsque","mais","malgré","néanmoins","notamment","partant","plutôt","pourtant","précédemment","premièrement","probablement","puis","puisque","quoique","sauf","selon","semblablement","sinon","suivant","toutefois","troisièmement"],r=l.concat(["à cause de","à ce jour","à ce propos","à ce sujet","à cet égard","à cette fin","à compter de","à condition que","à défaut de","à force de","à juste titre","à la lumière de","à la suite de","à l'aide de","à l'appui de","à l'encontre de","à l'époque actuelle","à l'exception de","à l'exclusion de","à l'heure actuelle","à l'image de","à l'instar de","à l'inverse","à l'inverse de","à l'opposé","à la condition que","à mesure que","à moins que","à nouveau","à partir de","à première vue","à savoir","à seule fin que","à supposer que","à tel point que","à tout prendre","à vrai dire","afin de","afin d'attirer l'attention sur","afin que","ainsi donc","ainsi que","alors que","antérieurement","après cela","après quoi","après que","à propos de","en l'occurence","après réflexion","après tout","attendu que","au cas où","au contraire","au fond","au fur et à mesure","au lieu de","au même temps","au moment où","au moyen de","au point que","au risque de","au surplus","au total","aussi bien que","aussitôt que","autant que","autrement dit","avant que","avant tout","ayant fini","bien que","c'est à dire que","c'est ainsi que","c'est dans ce but que","c'est dire","c'est le cas de","c'est la raison pour laquelle","c'est pourquoi","c'est qu'en effet","c'est-à-dire","ça confirme que","ça montre que","ça prouve que","cela étant","cela dit","cependant que","compte tenu","comme l'illustre","comme le souligne","comme on pouvait s'y attendre","comme quoi","comme si","commençons par examiner","comparativement à","conformément à","contrairement à","considérons par exemple","d'autant plus","d'autant que","d'autre part","d'ici là","d'où","d'un autre côté","d'un côté","d'une façon générale","dans ce cas","dans ces conditions","dans cet esprit","dans l'ensemble","dans l'état actuel des choses","dans l'éventualité où","dans l'hypothèse où","dans la mesure où","dans le but de","dans le cadre de","dans le cas où","dans les circonstances actuelles","dans les grandes lignes","dans un autre ordre d'idée","dans un délai de","de ce fait","de cette façon","de crainte que","de façon à","de façon à ce que","de façon que","de fait","de l'autre côté","de la même manière","de la même façon que","de manière que","de même","de même qu'à","de même que","de nos jours","de peur que","de prime abord","de sorte que","de surcroît","de telle manière que","de telle sorte que","de toute évidence","de toute façon","de toute manière","depuis que","dès lors que","dès maintenant","dès qua","dès que","du fait que","du moins","du moment que","du point de vue de","du reste","d'ici là","d'ores et déjà","en admettant que","en attendant que","en bref","en cas de","en cas que","en ce cas","en ce domaine","en ce moment","en ce qui a trait à","en ce qui concerne","en ce sens","en cela","en comparaison de","en conclusion","en conformité avec","en conséquence","en d'autres termes","en définitive","en dépit de","pour cela","en dernier lieu","en deuxième lieu","en effet","en face de","en fait","en fin de compte","en général","en guise de conclusion","en matière de","en même temps que","en outre","en particulier","en plus","en premier lieu","en principe","en raison de","en réalité","en règle générale","en résumé","en revanche","en second lieu","en somme","en sorte que","en supposant que","en tant que","en terminant","en théorie","en tout cas","en tout premier lieu","en troisième lieu","en un mot","en vérité","en vue que","encore que","encore une fois","entre autres","et même","et puis","étant donné qu'à","étant donné que","face à","grâce à","il est à noter que","il est indéniable que","il est question de","il est vrai que","il faut dire aussi que","il faut reconnaître que","il faut souligner que","il ne faut pas oublier que","il s'ensuit que","il suffit de prendre pour exemple","jusqu'ici","il y a aussi","jusqu'à ce que","jusqu'à ce jour","jusqu'à maintenant","jusqu'à présent","jusqu'au moment où","jusqu'ici","l'aspect le plus important de","l'exemple le plus significatif","jusqu'au moment où","la preuve c'est que","loin que","mais en réalité","malgré cela","malgré tout","même si","mentionnons que","mis à part le fait que","notons que","nul doute que","ou bien","outre cela","où que","par ailleurs","par conséquent","par contre","par exception","par exemple","par la suite","par l'entremise de","par l'intermédiaire de","par rapport à","par suite","par suite de","par surcroît","parce que","pareillement","partant de ce fait","pas du tout","pendant que","plus précisément","plus tard","pour ainsi dire","pour autant que","pour ce qui est de","pour ces motifs","pour ces raisons","pour cette raison","pour commencer","pour conclure","pour le moment","pour marquer la causalité","pour l'instant","pour peu que","pour prendre un autre exemple","pour que","pour résumé","pour terminer","pour tout dire","pour toutes ces raisons","pourvu que","prenons le cas de","quand bien même que","quand même","quant à","quel que soit","qui plus est","surtout quand","qui que","quitte à","quoi qu'il en soit","quoi que","quoiqu'il en soit","sans délai","sans doute","sans parler de","sans préjuger","sans tarder","sauf si","selon que","si bien que","si ce n'est que","si l'on songe que","sitôt que","somme toute","sur ce point","surtout si","sous cette réserve","sous prétexte que","sous réserve de","sous réserve que","suivant que","supposé que","sur le plan de","tandis que","tant et si bien que","tant que","tel que","tellement que","touchant à","tout à fait","tout bien pesé","tout compte fait","tout d'abord","tout de même","tout en reconnaissant que","une fois de plus","vu que"]);function n(e){let i=e;return e.forEach((t=>{(t=t.split("-")).length>0&&t.filter((i=>!e.includes(i))).length>0&&(i=i.concat(t))})),i}const a=["le","la","les","un","une","des","aux","du","au","d'un","d'une","l'un","l'une"],o=["deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt","trente","quarante","cinquante","soixante","soixante-dix","quatre-vingt","quatre-vingt-dix","septante","huitante","octante","nonante","cent","mille","million","milliard"],u=["second","secondes","deuxième","deuxièmes","troisième","troisièmes","quatrième","quatrièmes","cinquième","cinquièmes","sixième","sixièmes","septième","septièmes","huitième","huitièmes","neuvième","neuvièmes","dixième","dixièmes","onzième","onzièmes","douzième","douzièmes","treizième","treizièmes","quatorzième","quatorzièmes","quinzième","quinzièmes","seizième","seizièmes","dix-septième","dix-septièmes","dix-huitième","dix-huitièmes","dix-neuvième","dix-neuvièmes","vingtième","vingtièmes"],d=["je","tu","il","elle","on","nous","vous","ils","elles","qu'il","qu'elle","qu'ils","qu'elles","qu'on","d'elle","d'elles"],c=["moi","toi","lui","soi","eux","d'eux","qu'eux"],m=["me","te"],p=["celui","celle","ceux","celles","ce","celui-ci","celui-là","celle-ci","celle-là","ceux-ci","ceux-là","celles-ci","celles-là","ceci","cela","ça","cette","cet","ces"],b=["mon","ton","son","ma","ta","sa","mes","tes","ses","notre","votre","leur","nos","vos","leurs"],f=["beaucoup","peu","quelque","quelques","tous","tout","toute","toutes","plusieurs","plein","chaque","suffisant","suffisante","suffisantes","suffisants","faible","moins","tant","plus","divers","diverse","diverses"],v=["se"],g=["aucun","aucune","autre","autres","d'autres","certain","certaine","certaines","certains","chacun","chacune","même","mêmes","quelqu'un","quelqu'une","quelques'uns","quelques'unes","autrui","nul","personne","quiconque","rien","d'aucunes","d'aucuns","nuls","nules","l'autre","tel","telle","tels","telles"],y=["qui","que","lequel","laquelle","auquel","auxquels","auxquelles","duquel","desquels","desquelles","dont","où","quoi"],w=["combien","comment","pourquoi","d'où"],h=["quel","quels","quelle"],q=["y","n'y"],x=["là","ici","d'ici","voici"],z=["a","a-t-elle","a-t-il","a-t-on","ai","ai-je","aie","as","as-tu","aura","aurai","auraient","aurais","aurait","auras","aurez","auriez","aurons","auront","avaient","avais","avait","avez","avez-vous","aviez","avions","avons","avons-nous","ayez","ayons","eu","eûmes","eurent","eus","eut","eûtes","j'ai","j'aurai","j'avais","j'eus","ont","ont-elles","ont-ils","vais","vas","va","allons","allez","vont","vais-je","vas-tu","va-t-il","va-t-elle","va-t-on","allons-nous","allez-vous","vont-elles","vont-ils","allé","allés","j'allai","allai","allas","alla","allâmes","allâtes","allèrent","j'allais","allais","allait","allions","alliez","allaient","j'irai","iras","ira","irons","irez","iront","j'aille","aille","ailles","aillent","j'allasse","allasse","allasses","allât","allassions","allassiez","allassent","j'irais","irais","irait","irions","iriez","iraient","allant","viens","vient","venons","venez","viennent","viens-je","viens-de","vient-il","vient-elle","vient-on","venons-nous","venez-vous","viennent-elles","viennent-ils","vins","vint","vînmes","vîntes","vinrent","venu","venus","venais","venait","venions","veniez","venaient","viendrai","viendras","viendra","viendrons","viendrez","viendront","vienne","viennes","vinsse","vinsses","vînt","vinssions","vinssiez","vinssent","viendrais","viendrait","viendrions","viendriez","viendraient","venant","dois","doit","devons","devez","doivent","dois-je","dois-tu","doit-il","doit-elle","doit-on","devons-nous","devez-vous","doivent-elles","doivent-ils","dus","dut","dûmes","dûtes","durent","dû","devais","devait","devions","deviez","devaient","devrai","devras","devra","devrons","devrez","devront","doive","doives","dusse","dusses","dût","dussions","dussiez","dussent","devrais","devrait","devrions","devriez","devraient","peux","peut","pouvons","pouvez","peuvent","peux-je","peux-tu","peut-il","peut-elle","peut-on","pouvons-nous","pouvez-vous","peuvent-ils","peuvent-elles","pus","put","pûmes","pûtes","purent","pu","pouvais","pouvait","pouvions","pouviez","pouvaient","pourrai","pourras","pourra","pourrons","pourrez","pourront","puisse","puisses","puissions","puissiez","puissent","pusse","pusses","pût","pussions","pussiez","pussent","pourrais","pourrait","pourrions","pourriez","pourraient","pouvant","semble","sembles","semblons","semblez","semblent","semble-je","sembles-il","sembles-elle","sembles-on","semblons-nous","semblez-vous","semblent-ils","semblent-elles","semblai","semblas","sembla","semblâmes","semblâtes","semblèrent","semblais","semblait","semblions","sembliez","semblaient","semblerai","sembleras","semblera","semblerons","semblerez","sembleront","semblé","semblasse","semblasses","semblât","semblassions","semblassiez","semblassent","semblerais","semblerait","semblerions","sembleriez","sembleraient","parais","paraît","ait","paraissons","paraissez","paraissent","parais-je","parais-tu","paraît-il","paraît-elle","paraît-on","ait-il","ait-elle","ait-on","paraissons-nous","paraissez-vous","paraissent-ils","paraissent-elles","parus","parut","parûmes","parûtes","parurent","paraissais","paraissait","paraissions","paraissiez","paraissaient","paraîtrai","paraîtras","paraîtra","paraîtrons","paraîtrez","paraîtront","paru","paraisse","paraisses","parusse","parusses","parût","parussions","parussiez","parussent","paraîtrais","paraîtrait","paraîtrions","paraîtriez","paraîtraient","paraitrais","paraitrait","paraitrions","paraitriez","paraitraient","paraissant","mets","met","mettons","mettez","mettent","mets-je","mets-tu","met-il","met-elle","met-on","mettons-nous","mettez-vous","mettent-ils","mettent-elles","mis","mit","mîmes","mîtes","mirent","mettais","mettait","mettions","mettiez","mettaient","mettrai","mettras","mettra","mettrons","mettrez","mettront","mette","mettes","misse","misses","mît","missions","missiez","missent","mettrais","mettrait","mettrions","mettriez","mettraient","mettant","finis","finit","finissons","finissez","finissent","finis-je","finis-tu","finit-il","finit-elle","finit-on","finissons-nous","finissez-vous","finissent-ils","finissent-elles","finîmes","finîtes","finirent","finissais","finissait","finissions","finissiez","finissaient","finirai","finiras","finira","finirons","finirez","finiront","fini","finisse","finisses","finît","finirais","finirait","finirions","finiriez","finiraient","finissant","n'a","n'ai","n'aie","n'as","n'aura","n'aurai","n'auraient","n'aurais","n'aurait","n'auras","n'aurez","n'auriez","n'aurons","n'auront","n'avaient","n'avais","n'avait","n'avez","n'avez-vous","n'aviez","n'avions","n'avons","n'avons-nous","n'ayez","n'ayons","n'ont","n'ont-elles","n'ont-ils","n'allons","n'allez","n'allais","n'allait","n'allions","n'alliez","n'allaient","n'iras","n'ira","n'irons","n'irez","n'iront","qu'a"],j=["avoir","aller","venir","devoir","pouvoir","sembler","paraître","paraitre","mettre","finir","d'avoir","d'aller","n'avoir","l'avoir"],E=["suis","es","est","est-ce","n'est","sommes","êtes","sont","suis-je","es-tu","est-il","est-elle","est-on","sommes-nous","êtes-vous","sont-ils","sont-elles","étais","était","étions","étiez","étaient","serai","seras","sera","serons","serez","seront","serais","serait","serions","seriez","seraient","sois","soit","soyons","soyez","soient","été","n'es","n'est-ce","n'êtes","n'était","n'étais","n'étions","n'étiez","n'étaient","qu'est"],S=["être","d'être"],R=["à","après","d'après","au-delà","au-dessous","au-dessus","avant","avec","concernant","chez","contre","dans","de","depuis","derrière","dès","devant","durant","en","entre","envers","environ","hormis","hors","jusque","jusqu'à","jusqu'au","jusqu'aux","loin","moyennant","outre","par","parmi","pendant","pour","près","quant","sans","sous","sur","travers","vers","voilà"],P=["et","ni","or","ou"],C=["non","pas","seulement","sitôt","aussitôt","d'autre"],W=["afin","autant","comme","d'autant","d'ici","quand","lors","parce","si","tandis"],k=["dit","disent","dit-il","dit-elle","disent-ils","disent-elles","disait","disait-il","disait-elle","disaient-ils","disaient-elles","dirent","demande","demandent","demande-t-il","demande-t-elle","demandent-ils","demandent-elles","demandait","demandaient","demandait-il","demandait-elle","demandaient-ils","demandaient-elles","demanda","demanda-t-il","demanda-t-elle","demandé","pense","pensent","pense-t-il","pense-t-elle","pensent-ils","pensent-elles","pensait","pensaient","pensait-il","pensait-elle","pensaient-ils","pensaient-elles","pensa","pensa-t-il","pensa-t-elle","pensé","affirme","affirme-t-il","affirme-t-elle","affirmé","avoue","avoue-t-il","avoue-t-elle","avoué","concède","concède-t-il","concède-t-elle","concédé","confie","confie-t-il","confie-t-elle","confié","continue","continue-t-il","continue-t-elle","continué","déclame","déclame-t-il","déclame-t-elle","déclamé","déclare","déclare-t-il","déclare-t-elle","déclaré","déplore","déplore-t-il","déplore-t-elle","déploré","explique","explique-t-il","explique-t-elle","expliqué","lance","lance-t-il","lance-t-elle","lancé","narre","narre-t-il","narre-t-elle","narré","raconte","raconte-t-il","raconte-t-elle","raconté","rappelle","rappelle-t-il","rappelle-t-elle","rappelé","réagit","réagit-il","réagit-elle","réagi","répond","répond-il","répond-elle","répondu","rétorque","rétorque-t-il","rétorque-t-elle","rétorqué","souligne","souligne-t-il","souligne-t-elle","souligné","affirme-t-il","affirme-t-elle","ajoute-t-il","ajoute-t-elle","analyse-t-il","analyse-t-elle","avance-t-il","avance-t-elle","écrit-il","écrit-elle","indique-t-il","indique-t-elle","poursuit-il","poursuit-elle","précise-t-il","précise-t-elle","résume-t-il","résume-t-elle","souvient-il","souvient-elle","témoigne-t-il","témoigne-t-elle"],O=["dire","penser","demander","concéder","continuer","confier","déclamer","déclarer","déplorer","expliquer","lancer","narrer","raconter","rappeler","réagir","répondre","rétorquer","souligner","affirmer","ajouter","analyser","avancer","écrire","indiquer","poursuivre","préciser","résumer","témoigner"],A=["assez","trop","tellement","presque","très","absolument","extrêmement","quasi","quasiment","fort"],L=["fais","fait","faisons","faites","font","fais-je","fait-il","fait-elle","fait-on","faisons-nous","faites-vous","font-ils","font-elles","fis","fit","fîmes","fîtes","firent","faisais","faisait","faisions","faisiez","faisaient","ferai","feras","fera","ferons","ferez","feront","veux","veut","voulons","voulez","veulent","voulus","voulut","voulûmes","voulûtes","voulurent","voulais","voulait","voulions","vouliez","voulaient","voudrai","voudras","voudra","voudrons","voudrez","voudront","voulu","veux-je","veux-tu","veut-il","veut-elle","veut-on","voulons-nous","voulez-vous","veulent-ils","veulent-elles","voudrais","voudrait","voudrions","voudriez","voudraient","voulant"],T=["faire","vouloir"],$=["antérieur","antérieures","antérieurs","antérieure","précédent","précédents","précédente","précédentes","facile","faciles","simple","simples","vite","vites","vitesse","vitesses","difficile","difficiles","propre","propres","long","longe","longs","longes","longue","longues","bas","basse","basses","ordinaire","ordinaires","bref","brefs","brève","brèves","sûr","sûrs","sûre","sûres","sure","sures","surs","habituel","habituels","habituelle","habituelles","soi-disant","surtout","récent","récents","récente","récentes","total","totaux","totale","totales","complet","complets","complète","complètes","possible","possibles","communément","constamment","facilement","continuellement","directement","légèrement","dernier","derniers","dernière","dernières","différent","différents","différente","différentes","similaire","similaires","pareil","pareils","pareille","pareilles","largement","mal","super","bien","pire","pires","suivants","suivante","suivantes","prochain","prochaine","prochains","prochaines","proche","proches","fur"],M=["nouveau","nouvel","nouvelle","nouveaux","nouvelles","vieux","vieil","vieille","vieilles","beau","bel","belle","belles","bon","bons","bonne","bonnes","grand","grande","grands","grandes","haut","hauts","haute","hautes","petit","petite","petits","petites","meilleur","meilleurs","meilleure","meilleures","joli","jolis","jolie","jolies","gros","grosse","grosses","mauvais","mauvaise","mauvaises","dernier","derniers","dernière","dernières"],N=["ah","ha","oh","ho","bis","plouf","vlan","ciel","pouf","paf","crac","hurrah","allo","stop","bravo","ô","eh","hé","aïe","oef","ahi","fi","zest","hem","holà","chut"],V=["mg","g","kg","ml","dl","cl","l","grammes","gram","once","onces","oz","lbs","càc","cc","càd","càs","càt","cd","cs","ct"],B=["minute","minutes","heure","heures","journée","journées","semaine","semaines","mois","année","années","aujourd'hui","demain","hier","après-demain","avant-hier"],I=["chose","choses","façon","façons","pièce","pièces","truc","trucs","fois","cas","aspect","aspects","objet","objets","idée","idées","thème","thèmes","sujet","sujets","personnes","manière","manières","sorte","sortes"],D=["ne","oui","d'accord","amen","euro","euros","etc"],F=(n([].concat(u,j,T,S,O,M)),n($),n([].concat(a,R,P,p,A,f,b)),n([].concat(l,d,m,c,v,N,o,E,k,z,L,g,C,W,h,y,x,D,q,V,B,I)),[].concat(a,R,c,m,b,v,g,w,h,o,u,L,k,T)),_=[].concat(z,j),H=n([].concat(a,o,u,p,b,v,d,m,y,f,g,w,q,x,z,j,h,E,S,R,P,C,W,k,O,l,["encore","éternellement","immédiatement","compris","comprenant","inclus","naturellement","particulièrement","notablement","actuellement","maintenant","ordinairement","généralement","habituellement","d'habitude","vraiment","finalement","uniquement","peut-être","initialement","déjà","c.-à-d","souvent","fréquemment","régulièrement","simplement","éventuellement","quelquefois","parfois","probable","plausible","jamais","toujours","incidemment","accidentellement","récemment","dernièrement","relativement","clairement","évidemment","apparemment","pourvu"],A,L,T,N,$,M,V,I,D,B,["mme","mmes","mlle","mlles","mm","dr","pr"],["jr","sr"],c)),J=["et","ou","car","or","puisque","puisqu'il","puisqu'ils","puisqu'elle","puisqu'elles","puisqu'un","puisqu'une","puisqu'on","quand","lorsque","lorsqu'il","lorsqu'elle","lorsqu'ils","lorsqu'elles","lorsqu'on","lorsqu'un","lorsqu'une","quoique","quoiqu'il","quoiqu'ils","quoiqu'elle","quoiqu'elles","quoiqu'on","quoiqu'un","quoiqu'une","qu'elle","qu'il","qu'ils","qu'elles","qu'on","qu'un","qu'une","si","s'ils","s'il","quand bien même","pourquoi","après","avant","afin de","compte tenu de","pour ne pas dire","sinon","une fois","sitôt","dont","lequel","laquelle","lesquels","lesquelles","auquel","auxquels","auxquelles","duquel","desquels","desquelles","qui","où","d'où",":","allé","entré","resté","retombé","apparu","réapparu","devenu","redevenu","intervenu","provenu","resurvenu","survenu","allés","entrés","restés","retombés","apparus","réapparus","devenus","redevenus","intervenus","provenus","resurvenus","survenus","allée","entrée","restée","retombée","apparue","réapparue","devenue","redevenue","intervenue","provenue","resurvenue","survenue","allées","entrées","restées","retombées","apparues","réapparues","devenues","redevenues","intervenues","provenues","resurvenues","survenues"],U=[["à première vue","mais à bien considérer les choses"],["à première vue","mais toute réflexion faite"],["aussi","que"],["autant de","que"],["certes","mais"],["d'un côté","de l'autre côté"],["d'un côté","de l'autre"],["d'un côté","d'un autre côté"],["d'une part","d'autre part"],["d'une parte","de l'autre parte"],["moins de","que"],["non seulement","mais aussi"],["non seulement","mais en outre"],["non seulement","mais encore"],["plus de","que"],["quelque","que"],["si","que"],["soit","soit"],["tantôt","tantôt"],["tout d'abord","ensuite"],["tout","que"]],X=JSON.parse('{"vowels":"aeiouyàâéèêëîïûüùôæœ","deviations":{"vowels":[{"fragments":["[ptf]aon(ne)?[s]?$"],"countModifier":-1},{"fragments":["aoul","[^eéiïou]e(s|nt)?$","[qg]ue(s|nt)?$"],"countModifier":-1},{"fragments":["o[ëaéèï]"],"countModifier":1},{"fragments":["a[eéèïüo]","é[aâèéiîuo]","ii[oe]","[aeéuo]y[aâeéèoui]","coe[^u]","zoo","coop","coord","poly[ae]","[bcd]ry[oa]","[bcdfgptv][rl](ou|u|i)[aéèouâ]","ouez","[blmnt]uio","uoia","ment$","yua","[bcdfgptv][rl](i|u|eu)e([ltz]|r[s]?$|n[^t])","[^aeiuyàâéèêëîïûüùôæœqg]uie[rz]$"],"countModifier":1}],"words":{"full":[{"word":"ok","syllables":2},{"word":"eyeliner","syllables":3},{"word":"coati","syllables":3},{"word":"que","syllables":1},{"word":"flouer","syllables":2},{"word":"relouer","syllables":3},{"word":"évaluons","syllables":4},{"word":"instituons","syllables":4},{"word":"atténuons","syllables":4},{"word":"remuons","syllables":3},{"word":"redestribuons","syllables":5},{"word":"suons","syllables":2},{"word":"reconstituons","syllables":5},{"word":"dent","syllables":1},{"word":"fréquent","syllables":2},{"word":"permanent","syllables":3},{"word":"mécontent","syllables":3},{"word":"grandiloquent","syllables":4},{"word":"continent","syllables":3},{"word":"occident","syllables":3},{"word":"référent","syllables":3},{"word":"indigent","syllables":3},{"word":"concurrent","syllables":3},{"word":"gent","syllables":1},{"word":"différent","syllables":3},{"word":"strident","syllables":2},{"word":"équivalent","syllables":4},{"word":"ardent","syllables":2},{"word":"impotent","syllables":3},{"word":"argent","syllables":2},{"word":"immanent","syllables":3},{"word":"indécent","syllables":3},{"word":"effluent","syllables":3},{"word":"agent","syllables":2},{"word":"dolent","syllables":2},{"word":"contingent","syllables":3},{"word":"impénitent","syllables":4},{"word":"adjacent","syllables":3},{"word":"incident","syllables":3},{"word":"content","syllables":2},{"word":"incontinent","syllables":4},{"word":"éloquent","syllables":3},{"word":"convent","syllables":2},{"word":"dissident","syllables":3},{"word":"innocent","syllables":3},{"word":"ventripotent","syllables":4},{"word":"convalescent","syllables":4},{"word":"accident","syllables":3},{"word":"récent","syllables":2},{"word":"absent","syllables":2},{"word":"décadent","syllables":3},{"word":"réticent","syllables":3},{"word":"évent","syllables":2},{"word":"souvent","syllables":2},{"word":"intelligent","syllables":3},{"word":"inhérent","syllables":3},{"word":"adolescent","syllables":4},{"word":"couvent","syllables":2},{"word":"cent","syllables":1},{"word":"urgent","syllables":2},{"word":"précédent","syllables":3},{"word":"imprudent","syllables":3},{"word":"torrent","syllables":2},{"word":"abstinent","syllables":3},{"word":"indifférent","syllables":4},{"word":"excédent","syllables":3},{"word":"déférent","syllables":3},{"word":"incandescent","syllables":4},{"word":"intermittent","syllables":4},{"word":"présent","syllables":3},{"word":"astringent","syllables":3},{"word":"trident","syllables":2},{"word":"impertinent","syllables":4},{"word":"détergent","syllables":3},{"word":"évident","syllables":3},{"word":"influent","syllables":3},{"word":"pertinent","syllables":3},{"word":"subséquent","syllables":3},{"word":"féculent","syllables":3},{"word":"déférent","syllables":3},{"word":"ambivalent","syllables":4},{"word":"omnipotent","syllables":4},{"word":"décent","syllables":2},{"word":"compétent","syllables":3},{"word":"adhérent","syllables":3},{"word":"afférent","syllables":3},{"word":"luminescent","syllables":4},{"word":"lent","syllables":1},{"word":"apparent","syllables":3},{"word":"effervescent","syllables":4},{"word":"parent","syllables":2},{"word":"pénitent","syllables":3},{"word":"fluorescent","syllables":3},{"word":"impudent","syllables":3},{"word":"diligent","syllables":3},{"word":"entregent","syllables":3},{"word":"flatulent","syllables":3},{"word":"serpent","syllables":2},{"word":"violent","syllables":2},{"word":"somnolent","syllables":3},{"word":"déliquescent","syllables":4},{"word":"proéminent","syllables":4},{"word":"résident","syllables":3},{"word":"putrescent","syllables":3},{"word":"talent","syllables":2},{"word":"spumescent","syllables":3},{"word":"tangent","syllables":2},{"word":"chiendent","syllables":2},{"word":"négligent","syllables":3},{"word":"antécédent","syllables":4},{"word":"régent","syllables":2},{"word":"polyvalent","syllables":4},{"word":"latent","syllables":2},{"word":"opulent","syllables":3},{"word":"arpent","syllables":2},{"word":"adent","syllables":2},{"word":"concupiscent","syllables":4},{"word":"sanguinolent","syllables":4},{"word":"opalescent","syllables":4},{"word":"prudent","syllables":2},{"word":"conséquent","syllables":3},{"word":"pourcent","syllables":2},{"word":"transparent","syllables":3},{"word":"sergent","syllables":2},{"word":"diligent","syllables":3},{"word":"inconséquent","syllables":4},{"word":"turbulent","syllables":3},{"word":"fervent","syllables":2},{"word":"truculent","syllables":3},{"word":"interférent","syllables":4},{"word":"confluent","syllables":3},{"word":"succulent","syllables":3},{"word":"purulent","syllables":3},{"word":"patent","syllables":2},{"word":"indulgent","syllables":3},{"word":"engoulevent","syllables":4},{"word":"auvent","syllables":2},{"word":"président","syllables":3},{"word":"confident","syllables":3},{"word":"incompétent","syllables":4},{"word":"accent","syllables":2},{"word":"arborescent","syllables":4},{"word":"contrevent","syllables":3},{"word":"cohérent","syllables":3},{"word":"relent","syllables":2},{"word":"insolent","syllables":3},{"word":"virulent","syllables":3},{"word":"rémanent","syllables":3},{"word":"vent","syllables":1},{"word":"turgescent","syllables":3},{"word":"incohérent","syllables":4},{"word":"malcontent","syllables":3},{"word":"lactescent","syllables":3},{"word":"inintelligent","syllables":5},{"word":"omniprésent","syllables":4},{"word":"récurrent","syllables":3},{"word":"covalent","syllables":3},{"word":"éminent","syllables":3},{"word":"onguent","syllables":2},{"word":"indolent","syllables":3},{"word":"event","syllables":2},{"word":"corpulent","syllables":3},{"word":"divergent","syllables":3},{"word":"excellent","syllables":3},{"word":"phosphorescent","syllables":4},{"word":"évanescent","syllables":4},{"word":"paravent","syllables":3},{"word":"avent","syllables":2},{"word":"iridescent","syllables":4},{"word":"prénomment","syllables":2},{"word":"consument","syllables":2},{"word":"dégomment","syllables":2},{"word":"enveniment","syllables":3},{"word":"proclament","syllables":2},{"word":"chôment","syllables":1},{"word":"infirment","syllables":2},{"word":"briment","syllables":1},{"word":"fument","syllables":1},{"word":"acclament","syllables":2},{"word":"referment","syllables":2},{"word":"impriment","syllables":2},{"word":"paument","syllables":1},{"word":"déciment","syllables":2},{"word":"accoutument","syllables":3},{"word":"essaiment","syllables":2},{"word":"ferment","syllables":1},{"word":"dépriment","syllables":2},{"word":"raniment","syllables":2},{"word":"programment","syllables":2},{"word":"fantasment","syllables":2},{"word":"animent","syllables":2},{"word":"affirment","syllables":2},{"word":"filment","syllables":1},{"word":"dament","syllables":1},{"word":"parsèment","syllables":3},{"word":"priment","syllables":1},{"word":"assomment","syllables":2},{"word":"rament","syllables":1},{"word":"pâment","syllables":1},{"word":"conforment","syllables":2},{"word":"embaument","syllables":2},{"word":"calment","syllables":1},{"word":"blasphèment","syllables":2},{"word":"désarment","syllables":2},{"word":"consomment","syllables":2},{"word":"griment","syllables":1},{"word":"abîment","syllables":2},{"word":"blâment","syllables":1},{"word":"endorment","syllables":2},{"word":"allument","syllables":2},{"word":"blâment","syllables":1},{"word":"confirment","syllables":2},{"word":"escriment","syllables":2},{"word":"trament","syllables":1},{"word":"hument","syllables":1},{"word":"surnomment","syllables":2},{"word":"écument","syllables":2},{"word":"triment","syllables":1},{"word":"estiment","syllables":2},{"word":"rallument","syllables":2},{"word":"enflamment","syllables":2},{"word":"riment","syllables":1},{"word":"plument","syllables":1},{"word":"suppriment","syllables":2},{"word":"gomment","syllables":1},{"word":"affament","syllables":2},{"word":"friment","syllables":1},{"word":"clament","syllables":1},{"word":"dorment","syllables":1},{"word":"dénomment","syllables":2},{"word":"entament","syllables":2},{"word":"arriment","syllables":2},{"word":"résument","syllables":2},{"word":"enrhument","syllables":2},{"word":"rendorment","syllables":2},{"word":"compriment","syllables":2},{"word":"aiment","syllables":1},{"word":"rythment","syllables":1},{"word":"périment","syllables":2},{"word":"réclament","syllables":2},{"word":"subliment","syllables":2},{"word":"brument","syllables":1},{"word":"embrument","syllables":2},{"word":"germent","syllables":1},{"word":"renferment","syllables":2},{"word":"sèment","syllables":1},{"word":"reforment","syllables":2},{"word":"liment","syllables":1},{"word":"cament","syllables":1},{"word":"parfument","syllables":2},{"word":"arment","syllables":1},{"word":"brament","syllables":1},{"word":"déforment","syllables":2},{"word":"assument","syllables":2},{"word":"crament","syllables":1},{"word":"exclament","syllables":2},{"word":"forment","syllables":1},{"word":"diffament","syllables":2},{"word":"somment","syllables":1},{"word":"oppriment","syllables":2},{"word":"miment","syllables":1},{"word":"enferment","syllables":2},{"word":"nomment","syllables":1},{"word":"reprogramment","syllables":3},{"word":"transforment","syllables":2},{"word":"expriment","syllables":2},{"word":"informent","syllables":2},{"word":"légitiment","syllables":3},{"word":"de","syllables":1},{"word":"le","syllables":1},{"word":"je","syllables":1},{"word":"te","syllables":1},{"word":"ce","syllables":1},{"word":"ne","syllables":1},{"word":"re","syllables":1},{"word":"me","syllables":1},{"word":"se","syllables":1},{"word":"ses","syllables":1},{"word":"mes","syllables":1},{"word":"mes","syllables":1},{"word":"ces","syllables":1},{"word":"des","syllables":1},{"word":"tes","syllables":1},{"word":"les","syllables":1},{"word":"oye","syllables":1},{"word":"es","syllables":1},{"word":"remerciâmes","syllables":4},{"word":"herniaires","syllables":3},{"word":"autopsiais","syllables":4},{"word":"août","syllables":1}],"fragments":{"global":[{"word":"business","syllables":2},{"word":"skate","syllables":1},{"word":"board","syllables":1},{"word":"coach","syllables":1},{"word":"roadster","syllables":2},{"word":"soap","syllables":1},{"word":"goal","syllables":1},{"word":"coaltar","syllables":2},{"word":"loader","syllables":2},{"word":"coat","syllables":1},{"word":"baseball","syllables":2},{"word":"foëne","syllables":1},{"word":"cacaoyer","syllables":4},{"word":"scoop","syllables":1},{"word":"zoom","syllables":1},{"word":"bazooka","syllables":3},{"word":"tatoueu","syllables":3},{"word":"cloueu","syllables":2},{"word":"déchouer","syllables":2},{"word":"écrouelles","syllables":3},{"word":"maestria","syllables":3},{"word":"maestro","syllables":3},{"word":"vitae","syllables":3},{"word":"paella","syllables":3},{"word":"vae","syllables":2},{"word":"thaï","syllables":1},{"word":"skaï","syllables":1},{"word":"masaï","syllables":2},{"word":"samouraï","syllables":3},{"word":"bonsaï","syllables":2},{"word":"bonzaï","syllables":2},{"word":"aïkido","syllables":3},{"word":"daïquiri","syllables":3},{"word":"pagaïe","syllables":2},{"word":"chiite","syllables":2},{"word":"pays","syllables":2},{"word":"antiaérien","syllables":5},{"word":"bleui","syllables":2},{"word":"remerciai","syllables":4},{"word":"monstrueu","syllables":3},{"word":"niakoué","syllables":3},{"word":"minoen","syllables":3},{"word":"groenlandais","syllables":4},{"word":"remerciant","syllables":4},{"word":"skiant","syllables":2},{"word":"ruade","syllables":2},{"word":"weltanschauung","syllables":4}],"atBeginning":[{"word":"roast","syllables":1},{"word":"taï","syllables":1}],"atEnd":[{"word":"écrouer","syllables":3},{"word":"clouer","syllables":2}]}}}}'),G=window.lodash,K=["abâtardi","abattu","abêti","aboli","abouti","abruti","abstenu","abstrait","accompli","accouru","accroupi","accru","accueilli","adjoint","adouci","advenu","affadi","affaibli","affermi","agi","agrandi","aguerri","ahuri","aigri","alangui","alenti","alourdi","aluni","amaigri","amati","amerri","aminci","amoindri","amolli","amorti","anéanti","apâli","aperçu","aplani","appartenu","appauvri","appendu","appesanti","applaudi","approfondi","arrondi","assagi","assailli","assaini","asservi","assombri","assorti","assoupi","assoupli","assourdi","assouvi","assujetti","astreint","attendri","attendu","atterri","attiédi","attrait","autodétruit","avachi","aveuli","avili","banni","barri","bâti","battu","béni","blanchi","blêmi","bleui","blondi","blotti","bonni","bouffi","bouilli","bruni","bu","calmi","candi","ceint","chéri","choisi","circonscrit","circonvenu","combattu","comparu","compati","conclu","concouru","condescendu","conduit","confit","confondu","conjoint","connu","consenti","construit","contenu","contraint","contredit","contrefait","contrevenu","convaincu","convenu","converti","coproduit","correspondu","couru","cousu","craint","cramoisi","crépi","croupi","cru","cueilli","cuit","débattu","décati","déchu","déconfit","déconstruit","décousu","découvert","décrépi","décrit","décru","déçu","dédit","déduit","défailli","défendu","défini","défleuri","défraîchi","dégarni","dégluti","dégourdi","démenti","démoli","démordu","démuni","départi","dépeint","dépendu","dépéri","déplu","dépoli","dépourvu","désobéi","desservi","déteint","détendu","détenu","détruit","dévêtu","discouru","disjoint","disparu","distendu","distrait","dit","diverti","dormi","durci","ébahi","ébaubi","ébaudi","éclairci","éconduit","écrit","élargi","élu","embelli","embouti","émoulu","empli","empreint","empuanti","ému","enchéri","encouru","endolori","endormi","enduit","endurci","enfoui","enfreint","enfui","englouti","engourdi","enhardi","enjoint","enlaidi","ennobli","enorgueilli","enrichi","enseveli","entendu","entr'aperçu","entraperçu","entreclos","entremis","entretenu","entrevu","entrouvert","envahi","épanoui","éperdu","équarri","équivalu","estourbi","établi","éteint","étendu","étourdi","étréci","étreint","eu","évanoui","exclu","extrait","faibli","fait","fallu","farci","feint","fendu","fini","fléchi","fleuri","fondu","forci","foui","fourbi","fourni","foutu","fraîchi","franchi","frémi","frit","fui","garanti","garni","gauchi","gémi","glapi","grandi","grossi","guéri","haï","imparti","induit","infléchi","inscrit","instruit","interdit","interrompu","interverti","introduit","inverti","investi","jailli","jauni","joint","joui","langui","loti","lu","maintenu","méconnu","mécru","médit","menti","minci","moisi","moiti","molli","mordu","morfondu","moulu","mugi","muni","nanti","noirci","nourri","nui","obéi","obscurci","obtenu","offert","oint","ouï","ourdi","ouvert","pâli","parcouru","paru","pâti","peint","pendu","perçu","péri","perverti","pétri","plaint","portrait","pourfendu","pourri","poursuivi","pourvu","prédéfini","prédit","préétabli","prémuni","prescrit","prétendu","prévalu","prévenu","prévu","produit","promu","proscrit","pu","puni","rabattu","rabougri","radouci","raffermi","ragaillardi","raidi","rajeuni","ralenti","ramolli","ranci","ravi","réadmis","réagi","réappris","rebâti","rebattu","rebondi","rebu","reconnu","reconstruit","reconverti","recouru","recouvert","recrépi","récrit","recru","reçu","recueilli","recuit","redécouvert","redéfini","redit","réduit","réécrit","réélu","réentendu","refendu","réfléchi","refondu","refoutu","refroidi","regarni","régi","réinscrit","réintroduit","réinvesti","rejoint","réjoui","relu","relui","rembruni","remordu","rempli","renchéri","rendormi","rendu","rentrait","répandu","reparcouru","réparti","reparu","repeint","rependu","repenti","reperdu","répondu","reproduit","résolu","resplendi","ressaisi","resservi","restreint","resurgi","rétabli","retendu","retenu","retraduit","retrait","retranscrit","rétréci","réuni","réussi","revécu","revendu","reverdi","reverni","revêtu","revu","ri","roidi","rosi","rôti","rougi","roussi","rousti","rouvert","rugi","saisi","sali","satisfait","sauri","secouru","séduit","senti","serti","servi","sévi","souffert","souri","sous-entendu","sous-tendu","souscrit","soustrait","soutenu","souvenu","su","subi","subvenu","suffi","suivi","surenchéri","surgi","suri","survécu","suspendu","tapi","tari","teint","tendu","tenu","terni","terri","tiédi","tondu","tordu","traduit","trahi","trait","transcrit","transi","travesti","tressailli","uni","vagi","vaincu","valu","vécu","vendu","verdi","verni","vêtu","vieilli","vomi","voulu","vu"],Q=["absous","absoute","absoutes","dissous","dissoute","dissoutes","crû","crus","crue","crues","dû","dus","dues","mû","mus","mue","mues"],Y=["repris","démis","omis","dépris","retransmis","assis","promis","circoncis","permis","compris","mépris","inclus","soumis","rassis","sursis","enclos","acquis","compromis","commis","désappris","appris","conquis","transmis","remis","surpris","reconquis","mis","enquis","pris","admis","clos","émis","entrepris","épris","requis"],{getWords:Z,matchRegularParticiples:ee}=t.languageProcessing,ie=function(e,i,t){const s=[];return(0,G.forEach)(i,(function(i){const l=new RegExp("^"+i+t+"?$","ig"),r=e.match(l);r&&s.push(r[0])})),s};const te=["allé","arrivé","décédé","demeuré","entré","été","né","resté","retombé","tombé","achalandé","aéroporté","affilé","affixé","âgé","aîné","aisé","aligoté","alizé","alliacé","alluré","alphabétisé","alvéolé","aminé","ammoniaqué","ampoulé","archi-prouvé","archi-usé","asexué","autoguidé","autopropulsé","aviné","baleiné","barbelé","baryté","bien-aimé","bisexué","bouqueté","brioché","burkinabé","cagoulé","calamistré","cannelé","carabiné","carboné","caréné","carié","carminé","carné","carpé","censé","cérusé","charançonné","chenillé","chocolaté","chtarbé","citronné","cofondé","contrecollé","côtelé","courbaturé","crawlé","crossé","crustacé","cutané","damasquiné","damassé","débellé","décavé","déguenillé","demi-paralysé","denté","dépenaillé","désenchanté","désodé","diapré","ébranché","écervelé","effréné","effronté","éhonté","embourgeoisé","embroussaillé","embruiné","émerillonné","encalminé","encaustiqué","encorné","endiablé","endiamanté","enfoiré","enfouraillé","ensellé","entrelardé","éploré","ergoté","erroné","étagé","éthéré","éversé","éwé","ex-associé","exorbité","expansé","famé","férié","fibré","filoguidé","flammé","fleurdelisé","fliqué","flûté","forcené","fortuné","foulbé","frelaté","friqué","futé","gazonné","gracieusé","gradé","granulé","herminé","hiérarchisé","huppé","hydrogéné","igné","illettré","illimité","imbriqué","immaculé","immérité","immodéré","immunodéprimé","impayé","impensé","impollué","imprononcé","inaccoutumé","inachevé","inactivé","inadapté","inaltéré","inanimé","inapproprié","inarticulé","inavoué","inchangé","inconditionné","inconsidéré","inconsolé","incontesté","incontrôlé","incréé","indéfriché","indéterminé","indifférencié","indiscipliné","indiscuté","indivisé","indompté","inébranlé","inemployé","inentamé","inespéré","inexpérimenté","inexpliqué","inexploité","inexploré","inexprimé","infondé","informulé","infortuné","inhabité","inimité","injustifié","inné","innommé","inoccupé","inopiné","inorganisé","inoublié","insensé","insoupçonné","instantané","insubordonné","insurpassé","intentionné","interallié","intouché","inusité","inutilisé","invertébré","inviolé","iodé","irraisonné","irréalisé","lacté","lamé","lamifié","larvé","laryngé","léopardé","lettré","lié","lifté","losangé","luné","lunetté","madré","maillé","malaisé","malavisé","maléficié","malfamé","malformé","malintentionné","mendé","ménopausé","mentholé","mi-accablé","mi-allongé","mi-café","mi-consterné","mi-enterré","mi-étonné","mi-pincé","mi-terrorisé","miellé","millimétré","miraculé","momentané","monoclé","monté","mordoré","mort-né","névrosé","nitré","non-initié","nouveau-né","olé-olé","ongulé","paillé","palé","papilionacé","paqueté","paraffiné","passé","pasteurisé","patenté","paysagé","pédonculé","pestiféré","platiné","pocheté","polychromé","poplité","potelé","pourpré","praliné","précité","prédigéré","préencollé","préfabriqué","prématuré","premier-né","préprogrammé","prostré","protéiné","pyramidé","quadrilobé","racé","re-café","re-rêvé","re-vérifié","rebarré","redécoré","relargué","remonté","rentré","résiné","ressuscité","réticulé","retourné","revérifié","revivifié","rose-thé","safrané","satiné","saumoné","sébacé","sensé","sexué","sigillé","silicosé","simultané","sinistré","soufré","sous-cutané","sous-développé","sous-qualifié","soussigné","spiralé","spontané","stratifié","sulfaté","sulfuré","sulfurisé","suractivé","suranné","surbooké","surbrodé","surdéveloppé","surdimensionné","surdoué","surentraîné","suroxygéné","surpeuplé","surqualifié","susmentionné","susnommé","systématisé","tarabiscoté","taupé","thrombosé","tiercé","timoré","tiqueté","transcutané","triphasé","usagé","usité","vallonné","vanillé","vascularisé","veinulé","venté","vergé","vert-de-grisé","vertébré","vitaminé","vulcanisé","zélé"],se=["à-côté","abbé","absurdité","accessibilité","acerbité","acidité","acmé","acné","âcreté","activité","actualité","acuité","adaptabilité","adiposité","admissibilité","adversité","affabilité","affectivité","affidé","affinité","agilité","agressivité","alacrité","alcalinité","altérité","amabilité","ambiguïté","amé","aménité","américanité","amirauté","amitié","amoralité","ancestralité","ancienneté","anfractuosité","angulosité","animalité","animosité","anormalité","anti-acné","anti-cité","anti-criminalité","anti-gravité","anti-intimité","anti-société","antigravité","antiquité","anxiété","aparté","applicabilité","âpreté","archevêché","aridité","artificialité","asexualité","asociabilité","aspérité","assiduité","astarté","atrocité","austérité","authenticité","autodafé","autorité","avé","aveugle-né","avidité","ébriété","effectivité","efficacité","égalité","élasticité","électricité","élément-clé","élémentarité","éligibilité","émotivité","empaffé","énormité","entièreté","entité","enviandé","épitomé","équanimité","équité","étanchéité","éternité","ethnicité","étrangéité","étrangeté","euromarché","évêché","éventualité","ex-abbé","ex-fiancé","excentricité","exclusivité","exemplarité","exhaustivité","exiguïté","extériorité","externalité","exterritorialité","extrémité","idée-clé","identité","illégalité","illégitimité","imbécillité","immatérialité","immaturité","immédiateté","immensité","immobilité","immoralité","immortalité","immuabilité","immunité","immutabilité","impalpabilité","impartialité","impassibilité","impeccabilité","impécuniosité","impénétrabilité","imperméabilité","impersonnalité","impétuosité","impiété","implacabilité","impopularité","impossibilité","impraticabilité","imprévisibilité","improbabilité","impudicité","impulsivité","impunité","impureté","inaccessibilité","inactivité","inanité","inauthenticité","incapacité","incommodité","incommunicabilité","incompatibilité","incongruité","incorruptibilité","incrédibilité","incrédulité","incuriosité","indemnité","indestructibilité","indignité","indisponibilité","individualité","indivisibilité","indocilité","industrie-clé","inefficacité","inégalité","inéligibilité","inéluctabilité","inévitabilité","inexorabilité","infaillibilité","infécondité","infériorité","infertilité","infidélité","infinité","infirmité","inflammabilité","inflexibilité","ingéniosité","ingénuité","inhospitalité","inhumanité","inimitié","iniquité","innocuité","inopportunité","insalubrité","insanité","insécurité","insensibilité","inséparabilité","insincérité","insipidité","insonorité","instabilité","instantanéité","insularité","intangibilité","intégralité","intégrité","intelligibilité","intemporalité","intensité","intentionnalité","interactivité","intériorité","intimité","intrépidité","inusabilité","inutilité","invalidité","inventivité","invincibilité","inviolabilité","invisibilité","invulnérabilité","irrationalité","irréalité","irrecevabilité","irrégularité","irréligiosité","irresponsabilité","irréversibilité","irrévocabilité","irritabilité","obésité","objectivité","obliquité","obscénité","obscurité","obséquiosité","officialité","oiseau-clé","oisiveté","okoumé","onctuosité","opacité","opiniâtreté","opportunité","oralité","originalité","ubiquité","ukulélé","unanimité","unicité","uniformité","unilatéralité","unité","universalité","université","urbanité","utilité","yé-yé","yéyé","achillée","almée","aménorrhée","année","anti-nausée","apnée","apogée","araignée","arrière-pensée","assiettée","athénée","auloffée","aveugle-née","avrillée","azalée","échauffourée","écuellée","élysée","embardée","empyrée","épée","épopée","étuvée","ex-allée","ex-dulcinée","ex-fiancée","ex-lycée","idée","ipomée","odyssée","onomatopée","orchidée","orée","orphée","urée","banalité","bas-côté","beaupré","beauté","bébé","bédé","bénédicité","bénignité","bestialité","bien-fondé","biodiversité","bipolarité","bisexualité","blé","bonté","bout-rimé","bovidé","brièveté","brutalité","caducité","café","callosité","camélidé","canapé","capacité","capillarité","captivité","carte-clé","caté","catholicité","causalité","causticité","cavité","cécité","célébrité","célérité","cérébralité","cétacé","charité","chassé-croisé","chasteté","cherté","chétivité","chimpanzé","chrétienté","ciné","cinéma-vérité","circularité","citoyenneté","civilité","clandé","clandestinité","clarté","clé","clergé","co-propriété","coaccusé","cochonceté","code-clé","collectivité","collégialité","combativité","comestibilité","comité","commodité","communauté","communicabilité","compacité","comparabilité","compatibilité","compétitivité","complémentarité","complexité","complicité","comptabilité","comté","concavité","condé","conductibilité","conductivité","confidentialité","conformité","confraternité","congé","conjugalité","connectivité","consanguinité","constitutionnalité","contiguïté","continuité","contrariété","contre-gré","contre-plaqué","contre-vérité","contreplaqué","contrevérité","convexité","convivialité","coopé","copropriété","cordialité","coré","coriacité","corporalité","côté","créativité","crédibilité","crédulité","crétacé","criminalité","cruauté","crudité","culpabilité","cupidité","curiosité","cybercafé","cyprinidé","dangerosité","daphné","dé","débotté","décimalité","décision-clé","déclivité","déductibilité","défectuosité","degré","déité","déloyauté","demi-clarté","demi-degré","demi-liberté","demi-obscurité","demi-vérité","dénatalité","densité","député","dératé","dernier-né","désirabilité","dextérité","difficulté","difformité","dignité","discontinuité","disparité","disponibilité","diversité","divinité","docilité","domesticité","doyenné","dualité","duché","duplicité","durabilité","dureté","faculté","faillibilité","faisabilité","familiarité","fatalité","fatuité","fausseté","fébrilité","fécondité","félidé","félinité","féminité","féodalité","fermeté","férocité","ferté","fertilité","festivité","fétidité","fiabilité","fibrillé","fidélité","fierté","finalité","fiscalité","fixité","flaccidité","flatuosité","flexibilité","flexuosité","flottabilité","fluidité","fonctionnalité","formalité","fossé","fragilité","francité","fraternité","friabilité","frigidité","frilosité","fringillidé","frivolité","frugalité","fugacité","furtivité","futilité","gaieté","gaîté","gallinacé","gémellité","généralité","générosité","génialité","génitalité","germanité","gibbosité","globalité","godemiché","gracieuseté","gracilité","grand-duché","granité","gratuité","gravidité","gré","grossièreté","habileté","habitabilité","haute-fidélité","henné","hérédité","hétérogénéité","hétérosexualité","hilarité","histocompatibilité","historicité","homme-clé","homogénéité","homosexualité","honnêteté","honorabilité","horizontalité","hospitalité","hostilité","humanité","humidité","humilité","hyperacidité","hyperactivité","hypercoagulabilité","hyperémotivité","hypermarché","hyperréactivité","hypersensibilité","jovialité","joyeuseté","jubé","judaïcité","judaïté","judéité","juvénilité","karaoké","karaté","karité","kiné","koré","lâcheté","laïcité","lamedé","lascivité","latéralité","latinité","laubé","laxité","lé","légalité","légèreté","légitimité","lèse-majesté","létalité","lettre-clé","libéralité","liberté","licéité","limpidité","liquidité","lisibilité","littéralité","lividité","localité","longanimité","longévité","loquacité","loyauté","lubricité","lucidité","luminosité","macramé","magnanimité","majesté","majorité","mal-aimé","mal-baisé","malhonnêteté","malignité","malinké","malléabilité","malpropreté","maniabilité","manoeuvrabilité","marginalité","masculinité","maskinongé","massivité","matérialité","maternité","matité","maturité","mauvaiseté","méchanceté","médiocrité","médiumnité","mémé","mémorabilité","mendicité","mensualité","mentalité","merveillosité","méticulosité","mi-capacité","mi-été","mi-meublé","mi-porté","mi-réalité","mi-résigné","miché","microgravité","minorité","mitoyenneté","mixité","mobilité","mocheté","modalité","modernité","modicité","moment-clé","mondanité","monstruosité","mont-de-piété","monumentalité","mooré","moralité","morbidité","morosité","mortalité","mot-clé","motilité","motricité","mousmé","mucosité","multiplicité","multipropriété","municipalité","musicalité","mutabilité","mutité","mutualité","naïveté","narghilé","narguilé","natalité","nationalité","nativité","navigabilité","nébulosité","négativité","néné","nervosité","nescafé","netteté","neutralité","névé","niakoué","niébé","nocivité","non-conformité","non-culpabilité","nordicité","normalité","notabilité","notoriété","nouveauté","nouvelleté","nubilité","nudité","nue-propriété","nullité","nuptialité","papauté","papé","parenté","parité","partialité","particularité","passiveté","passivité","pâté","paternité","pause-café","pauses-café","pauvreté","pédé","pédégé","pénalité","pépé","pérennité","perfectibilité","périodicité","perméabilité","permissivité","péroné","perpétuité","perplexité","perré","personnage-clé","personnalité","perspicacité","perversité","pèse-bébé","petit-salé","photosensibilité","phrase-clé","pilosité","pisé","pitié","placidité","plasticité","plausibilité","pluralité","pluviosité","point-clé","poiré","poire-vérité","polarité","polycopié","polytonalité","ponctualité","pongé","popularité","porosité","portabilité","porte-bébé","porte-clé","position-clé","positivité","possessivité","possibilité","poste-clé","postérité","potentialité","pousse-café","pré","pré-salé","précarité","préciosité","précocité","prématurité","prévisibilité","prévôté","prieuré","primauté","principauté","priorité","privauté","probabilité","probité","prodigalité","productivité","profitabilité","prolixité","promiscuité","proportionnalité","propreté","propriété","prospérité","proximité","psyché","puberté","publicité","pudicité","puérilité","pugnacité","puîné","pureté","pusillanimité","qualité","quantité","quarté","quasi-impossibilité","quasi-impunité","quasi-nudité","quasi-totalité","quasi-unanimité","question-clé","quinté","quotidienneté","quotité","radioactivité","raisiné","rapacité","raphé","rapidité","rareté","rationalité","raucité","ré","réactivité","réalité","récépissé","réceptivité","recevabilité","réciprocité","récré","régularité","relativité","religiosité","rentabilité","reportage-vérité","respectabilité","responsabilité","réversibilité","rigidité","risibilité","rivalité","romanité","rotondité","roulé-boulé","royauté","rugosité","rusticité","sagacité","saint-honoré","sainteté","saké","salacité","saleté","salinité","salmonidé","salubrité","santé","sapidité","satiété","sauveté","scène-clé","scientificité","scissiparité","scolarité","scrupulosité","sécurité","sédentarité","sélectivité","semi-liberté","séné","sénevé","sénilité","sensibilité","sensorialité","sensualité","sentimentalité","septicité","sérénité","sergé","séropositivité","sérosité","serviabilité","servilité","sévérité","sexualité","similarité","simplicité","simultanéité","sincérité","singularité","sinuosité","sobriété","sociabilité","société","solennité","solidarité","solidité","solubilité","soluté","solvabilité","sommité","somptuosité","sonorité","sordidité","sororité","soudaineté","sous-comité","sous-humanité","souveraineté","spasticité","spécialité","spécificité","sphéricité","spiritualité","spontanéité","sportivité","spumosité","stabilité","sténopé","stérilité","stupidité","suavité","subjectivité","sublimité","subtilité","succédané","suggestibilité","suggestivité","superficialité","superfluité","supériorité","supermarché","supraconductivité","suractivité","surcapacité","surdité","sûreté","surgé","surhumanité","surintensité","surréalité","susceptibilité","suzeraineté","synthé","taboulé","taciturnité","tamouré","tangibilité","tarpé","technicité","télé","témérité","témoin-clé","temporalité","ténacité","tendreté","ténébrionidé","ténuité","territorialité","tévé","thé","théâtralité","tiaré","timidité","tollé","tonalité","tonicité","totalité","toxicité","traçabilité","tranquillité","translucidité","transsexualité","trinité","trivialité","tsé-tsé","tubérosité","turbé","vacuité","vahiné","validité","vanité","variabilité","variété","vassalité","vastité","velléité","vélocité","vénalité","vénusté","véracité","verbosité","vérité","versatilité","verticalité","vétusté","viabilité","vicinalité","vicomté","viduité","virginité","virilité","virtualité","virtuosité","viscosité","visibilité","vitalité","vivacité","volatilité","volonté","volubilité","volupté","voracité","vulgarité","vulnérabilité","batée","becquée","billevesée","bolée","bondrée","borée","bouée","bougainvillée","brouettée","buée","caducée","canne-épée","casserolée","cavée","centaurée","cépée","céphalée","charretée","chaudronnée","chicorée","chorée","cochlée","cochonnée","colée","contre-allée","contre-plongée","corvée","coryphée","cucurbitacée","cuillerée","culée","cylindrée","demi-journée","demi-volée","denrée","dernière-née","diarrhée","diatomée","dionée","dragée","dulcinée","dysménorrhée","dyspnée","fée","feuillée","flopée","fournée","fricassée","friselée","galathée","galée","giboulée","giroflée","gonorrhée","goulée","graminée","guinée","gynécée","haquenée","hottée","hyménée","hyperborée","hypogée","journée","lance-fusée","litée","logorrhée","lycée","macchabée","mainlevée","maisonnée","mal-aimée","mal-baisée","maréchaussée","marée","mausolée","mélopée","mi-effrontée","mi-journée","miellée","mijaurée","mosquée","moteur-fusée","muflée","nausée","nuée","nuitée","panacée","pâtée","peignée","pelletée","pépée","périgée","périnée","pharmacopée","pipée","platée","pochetée","pochetée","poignée","poirée","poisson-épée","porte-épée","potée","poupée","première-née","prérentrée","presse-purée","prytanée","purée","quasi-fiancée","ramée","raz-de-marée","resucée","rétrofusée","rez-de-chaussée","risée","ruchée","scarabée","séborrhée","sigisbée","simagrée","singe-araignée","soirée","solanacée","tablée","tinée","trachée","trâlée","transfusée","travée","trépanée","trochée","trophée","vallée","ventrée","vesprée"],le=["bé","cré","crédié","é","loucedé","eussé","hé","malgré","moitié-moitié","ohé","olé","ollé","sacrédié","quasi-instantanée"],{precedenceException:re,directPrecedenceException:ne,values:ae}=t.languageProcessing,{Clause:oe}=ae,ue=["être","d'être","suis","es","est","sommes","êtes","sont","n'est","n'es","n'êtes","été","j'étais","étais","était","étions","étiez","étaient","c'était","n'étais","n'était","n'étions","n'étiez","n'étaient","serai","seras","sera","serons","serez","seront","sois","soit","soyons","soyez","soient","fusse","fusses","fût","fussions","fussiez","fussent","serais","serait","serions","seriez","seraient","fus","fut","fûmes","fûtes","furent","suis-je","es-tu","est-il","est-elle","est-on","sommes-nous","êtes-vous","sont-ils","sont-elles","est-ce","étais-je","étais-tu","était-il","était-elle","était-on","était-ce","étions-nous","étiez-vous","étaient-ils","étaient-elles","serai-je","seras-tu","sera-t-il","sera-t-elle","sera-t-on","sera-ce","serons-nous","serez-vous","seront-ils","seront-elles","serais-je","serais-tu","serait-il","serait-elle","serait-on","serait-ce","serions-nous","seriez-vous","seraient-ils","seraient-elles","fus-je","fus-tu","fut-il","fut-elle","fut-on","fut-ce","fûmes-nous","fûtes-vous","furent-ils","furent-elles"],{createRegexFromArray:de,getClauses:ce}=t.languageProcessing,me={Clause:class extends oe{constructor(e,i){super(e,i),this._participles=function(e){const i=Z(e),t=[];return(0,G.forEach)(i,(function(e){0===ee(e,[/\S+(é|ée|és|ées)($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi]).length&&0===function(e){let i=[].concat(ie(e,K,"(e|s|es)"));return i=i.concat(ie(e,Y,"(e|es)")),(0,G.includes)(Q,e)&&i.push(e),i}(e).length||t.push(e)})),t}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getClauseText(),i=this.getParticiples().filter((i=>!(i.startsWith("l'")||i.startsWith("d'")||(0,G.includes)(le,i)||this.isOnAdjectiveVerbExceptionList(i)||this.isOnNounExceptionList(i)||ne(e,i,F)||re(e,i,_))));this.setPassive(i.length>0)}isOnAdjectiveVerbExceptionList(e){return!!te.includes(e)||(e.endsWith("es")?e=e.slice(0,-2):(e.endsWith("e")||e.endsWith("s"))&&(e=e.slice(0,-1)),te.includes(e))}isOnNounExceptionList(e){return!!se.includes(e)||(e.endsWith("s")&&(e=e.slice(0,-1)),se.includes(e))}},stopwords:J,auxiliaries:ue,regexes:{auxiliaryRegex:de(ue),stopCharacterRegex:/(,)(?=[ \n\r\t'"+\-»«‹›<>])/gi,followingAuxiliaryExceptionRegex:de(["le","la","les","une","l'un","l'une"]),directPrecedenceExceptionRegex:de(["se","me","te","s'y","m'y","t'y","nous nous","vous vous"]),elisionAuxiliaryExceptionRegex:de(["c'","s'","peut-"],!0)}};function pe(e){return ce(e,me)}const{exceptionListHelpers:{checkIfWordEndingIsOnExceptionList:be},regexHelpers:{applyAllReplacements:fe}}=t.languageProcessing,{baseStemmer:ve}=t.languageProcessing;function ge(e){const i=(0,G.get)(e.getData("morphology"),"fr",!1);return i?e=>function(e,i){const t=e=e.toLowerCase(),s=function(e,i){for(const t of i.cannotTakeExtraSuffixS)if(t[0]===e)return t[1];e.endsWith("s")&&(e=e.slice(0,-1));for(const t of i.canTakeExtraSuffixS)if(t[0]===e)return t[1]}(e,i.shortWordsAndStems);if(s)return s;const l=function(e,i){for(const t of i)if(t[1].includes(e))return t[0];return null}(e,i.exceptionStemsWithFullForms);if(l)return l;if(e.endsWith("x")&&i.pluralsWithXSuffix.includes(e))return e.slice(0,-1);if(e.endsWith("s")&&i.sShouldNotBeStemmed.includes(e))return e;const r=i.nonVerbsOnEnt;if(e.endsWith("ent")&&r.includes(e))return e;if(e.endsWith("ents")&&r.includes(e.slice(0,-1)))return e.slice(0,-1);const n=i.nonVerbsOnOns;if(e.endsWith("ons")&&n.includes(e))return e.slice(0,-1);e=fe(e,i.regularStemmer.preProcessingStepsRegexes);const[a,o,u]=function(e,i){let t;-1!==e.search(new RegExp(i.rvRegex1))||-1!==e.search(new RegExp(i.rvRegex2))?t=3:(t=e.substring(1).search(new RegExp(i.rvRegex3)),-1===t?t=e.length:t+=2);const s=new RegExp(i.r1Regex);let l=e.search(s),r="";-1===l?l=e.length:(l+=2,r=e.substring(l));let n=r.search(s);return-1===n?n=e.length:(n+=2,n+=l),-1!==l&&l<3&&(l=3),[l,n,t]}(e,i.regularStemmer.rIntervals),d=e=function(e,i,t,s,l){const r=e.search(new RegExp(i.standardSuffixes1)),n=e.search(new RegExp(i.standardSuffixes2)),a=e.search(new RegExp(i.standardSuffixes3[0])),o=e.search(new RegExp(i.standardSuffixes4[0])),u=e.search(new RegExp(i.standardSuffixes5[0])),d=e.search(new RegExp(i.standardSuffixes6)),c=e.search(new RegExp(i.standardSuffixes7)),m=e.search(new RegExp(i.standardSuffixes8)),p=e.search(new RegExp(i.standardSuffixes9[0])),b=e.search(new RegExp(i.standardSuffixes10[0])),f=e.search(new RegExp(i.standardSuffixes11[0])),v=e.search(new RegExp(i.standardSuffixes12)),g=e.search(new RegExp(i.standardSuffixes13[0])),y=e.search(new RegExp(i.standardSuffixes14[0])),w=e.search(new RegExp(i.standardSuffixes15));if(-1!==r&&r>=s)e=e.substring(0,r);else if(-1!==n&&n>=s){const t=(e=e.substring(0,n)).search(new RegExp(i.suffixesPrecedingChar1[0]));e=-1!==t&&t>=s?e.substring(0,t):e.replace(new RegExp(i.suffixesPrecedingChar1[0]),i.suffixesPrecedingChar1[1])}else if(-1!==a&&a>=s)e=e.slice(0,a)+i.standardSuffixes3[1];else if(-1!==o&&o>=s)e=e.slice(0,o)+i.standardSuffixes4[1];else if(-1!==u&&u>=s)e=e.slice(0,u)+i.standardSuffixes5[1];else if(-1!==v&&v>=t)e=e.substring(0,v+1);else if(-1!==d&&d>=l){const r=(e=e.substring(0,d)).search(new RegExp(i.suffixesPrecedingChar2[0])),n=e.search(new RegExp(i.suffixesPrecedingChar4[0])),a=e.search(new RegExp(i.suffixesPrecedingChar5[0])),o=e.search(new RegExp(i.suffixesPrecedingChar6[0]));if(r>=s){const t=(e=e.slice(0,r)+i.suffixesPrecedingChar2[1]).search(new RegExp(i.suffixesPrecedingChar3[0]));t>=s&&(e=e.slice(0,t)+i.suffixesPrecedingChar3[1])}else-1!==e.search(new RegExp(i.suffixesPrecedingChar4[0]))?n>=s?e=e.substring(0,n):n>=t&&(e=e.substring(0,n)+i.suffixesPrecedingChar4[1]):a>=s?e=e.slice(0,a)+i.suffixesPrecedingChar5[1]:o>=l&&(e=e.slice(0,o)+i.suffixesPrecedingChar6[1])}else if(-1!==c&&c>=s){const t=(e=e.substring(0,c)).search(new RegExp(i.suffixesPrecedingChar7[0])),l=e.search(new RegExp(i.suffixesPrecedingChar1[0]));-1!==t?e=t>=s?e.substring(0,t):e.substring(0,t)+i.suffixesPrecedingChar7[1]:-1!==l?e=-1!==l&&l>=s?e.substring(0,l):e.substring(0,l)+i.suffixesPrecedingChar1[1]:e.search(new RegExp(i.suffixesPrecedingChar2[0]))>=s&&(e=e.replace(new RegExp(i.suffixesPrecedingChar2[0]),i.suffixesPrecedingChar2[1]))}else if(-1!==m&&m>=s)(e=e.substring(0,m)).search(new RegExp(i.suffixesPrecedingChar3[0]))>=s&&(e=(e=e.replace(new RegExp(i.suffixesPrecedingChar3[0]),i.suffixesPrecedingChar3[1])).search(new RegExp(i.suffixesPrecedingChar1[0]))>=s?e.replace(new RegExp(i.suffixesPrecedingChar1[0]),""):e.replace(new RegExp(i.suffixesPrecedingChar1[0]),i.suffixesPrecedingChar1[1]));else if(-1!==p)e=e.replace(new RegExp(i.standardSuffixes9[0]),i.standardSuffixes9[1]);else if(b>=t)e=e.replace(new RegExp(i.standardSuffixes10[0]),i.standardSuffixes10[1]);else if(-1!==f){const l=e.search(new RegExp(i.standardSuffixes11[0]));l>=s?e=e.substring(0,l):l>=t&&(e=e.substring(0,l)+i.standardSuffixes11[1])}else-1!==g&&g>=l?e=e.replace(new RegExp(i.standardSuffixes13[0]),i.standardSuffixes13[1]):-1!==y&&y>=l?e=e.replace(new RegExp(i.standardSuffixes14[0]),i.standardSuffixes14[1]):-1!==w&&w>=l&&(e=e.substring(0,w+1));return e}(e,i.regularStemmer.standardSuffixes,a,o,u),c=function(e,i,t,s){let l=!1;if(i===e.toLowerCase()||be(i,s.exceptions)){l=!0;const i=new RegExp(s.suffixes[0]);e.search(i)>=t&&(e=e.replace(i,s.suffixes[1]))}return{word:e,step2aDone:l}}(e,t,u,i.regularStemmer.verbSuffixesWithIBeginning);e=c.word;const m=c.step2aDone;if(r.includes(e)||(e=function(e,i,t,s,l,r){const n=r.regularStemmer.otherVerbSuffixes;if(i&&t===e){const i=new RegExp(n[0]);if(e.search(i)>=s)return e.replace(i,"");for(let i=1;i=l)return e.replace(t,"")}if(e.endsWith("ions"))return e;const t=new RegExp(r.regularStemmer.verbSuffixOns);e.search(t)>=l&&(e=e.replace(t,""))}return e}(e,m,d,o,u,i)),t===e.toLowerCase())e=function(e,i,t,s){const l=s.residualSuffixes;e.search(new RegExp(l.residualSuffixes1[0]))>=i&&(e=e.replace(new RegExp(l.residualSuffixes1[0]),l.residualSuffixes1[1]));const r=e.search(new RegExp(l.residualSuffix2));if(r>=t&&e.search(new RegExp(l.residualSuffix3))>=i)e=e.substring(0,r);else{let t=e.search(new RegExp(l.residualSuffixes4[0]));t>=i?e=e.substring(0,t)+l.residualSuffixes4[1]:(t=e.search(new RegExp(l.residualSuffix5)),t>=i?e=e.substring(0,t):(t=e.search(new RegExp(l.residualSuffix6[0])),t>=i&&(e=e.substring(0,t)+l.residualSuffix6[1])))}return e}(e,u,o,i.regularStemmer);else{const t=i.regularStemmer.yAndSoftCEndingAndReplacement.yEndingAndReplacement,s=i.regularStemmer.yAndSoftCEndingAndReplacement.softCEndingAndReplacement;e.endsWith(t[0])?e=e.slice(0,-1)+t[1]:e.endsWith(s[0])&&(e=e.slice(0,-1)+s[1])}e=fe(e,i.regularStemmer.finalConsonantUndoubling);const p=i.regularStemmer.unaccentERegex;return function(e,i){for(const t of i.adjectives)if(t.includes(e))return t[0];for(const t of i.verbs)if(t.includes(e))return t[0]}(e=(e=e.replace(new RegExp(p[0]),p[1])).toLowerCase(),i.stemsThatBelongToOneWord)||e}(e,i):ve}const{formatNumber:ye}=t.helpers;function we(e){const i=207-1.015*e.numberOfWords/e.numberOfSentences-73.6*e.numberOfSyllables/e.numberOfWords;return ye(i)}const{AbstractResearcher:he}=t.languageProcessing;class qe extends he{constructor(e){super(e),Object.assign(this.config,{language:"fr",passiveConstructionType:"periphrastic",firstWordExceptions:s,functionWords:H,stopWords:J,transitionWords:r,twoPartTransitionWords:U,syllables:X}),Object.assign(this.helpers,{getClauses:pe,getStemmer:ge,fleschReadingScore:we})}}(window.yoast=window.yoast||{}).Researcher=i})();js/dist/languages/sv.js000064400000433576147206602470011111 0ustar00(()=>{"use strict";var s={d:(a,e)=>{for(var t in e)s.o(e,t)&&!s.o(a,t)&&Object.defineProperty(a,t,{enumerable:!0,get:e[t]})},o:(s,a)=>Object.prototype.hasOwnProperty.call(s,a),r:s=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})}},a={};s.r(a),s.d(a,{default:()=>$});const e=window.yoast.analysis,t=["ett","det","den","de","en","två","tre","fyra","fem","sex","sju","åtta","nio","tio","denne","denna","detta","dessa"],r=["alltså","ändå","annars","ännu","även","avslutningsvis","bl.a.","d.v.s.","då","därav","därefter","däremot","därför","därmed","därpå","dessutom","dock","efteråt","eftersom","emellertid","enligt","exempelvis","fastän","följaktligen","förrän","först","förutom","huvudsakligen","ifall","inledningsvis","innan","jämförelsevis","likadant","likaså","liksom","medan","men","nämligen","när","oavsett","också","omvänt","säkerligen","således","sålunda","sammanfattningsvis","sammantaget","samt","samtidigt","särskilt","såsom","sist","slutligen","speciellt","t.ex.","tidigare","tillika","tills","trots","tvärtemot","tvärtom","tydligen","varpå","vidare","uppenbarligen","ytterligare"],d=r.concat(["å andra sidan","å ena sidan","allt som allt","anledningen är","anledningen blir","annorlunda än","av den orsaken","av detta skäl","beroende på","bland annat","därtill kommer","det beror på att","det vill säga","det visar","detta beror på","detta går ut på att","detta innebär att","detta leder till","detta medför att","effekten blir","efter ett tag","ej heller","en effekt av detta","en förklaring till detta","ett exempel på detta","ett liknande exempel","exakt som","följden blir","för att avrunda","för all del","för att förklara","för att inte säga","för att inte tala om","för att klargöra","för att poängtera","för att säga det på ett annat sätt","för att sammanfatta","för att understryka","för att visa","för det andra","för det första","för det tredje","förr eller senare","för närvarande","framför allt","fram till nu","har att göra med","härav följer","i båda fallen","i det fallet","i det hela","i det här fallet","i det långa loppet","i enlighet med","i förhållande till","i fråga om","i jämförelse med","i kontrast till","i likhet med","i ljuset av","i motsats till","i och med","i relation till","i samband med","i sin tur","i själva verket","i slutändan","i stället för","i syfte att","i synnerhet","i verkligheten","icke desto mindre","ihop med","inte desto mindre","jämfört med","kan sammanfattas","kort sagt","konsekvensen av detta","lika viktigt är","målet är att","med andra ord","med anledning av","med det i åtanke","med det i tankarna","med ett ord","med hänsyn till","med härledning av","mot bakgrund av","mot den bakgrunden","när allt kommer omkring","när det gäller","närmare bestämt","nu när","orsaken är","på det sättet","på grund av","på liknande sätt","på så sätt","på samma sätt","resultatet blir","så länge som","så småningom","så snart som","sist men inte minst","slutsatsen blir","som antytt","som en följd av","som en konsekvens av","som ett exempel på","som ett resultat","som jag tidigare antytt","som konklusion kan","som man kan se","som nämnt","som tidigare nämnts","summa summarum","tack vare","till att börja med","till dess","till exempel","till en början","till följd av","till sist","till skillnad från","till slut","till största delen","tillsammans med","tvärt om","under de omständigheterna","under omständigheterna","under tiden","vad mera är","viktigt att inse","vilket innebär"]);function l(s){let a=s;return s.forEach((e=>{(e=e.split("-")).length>0&&e.filter((a=>!s.includes(a))).length>0&&(a=a.concat(e))})),a}const n=["en","ett","det","den","de"],i=["två","tre","fyra","fem","sex","sju","åtta","nio","tio","tiotals","elva","tolv","tretton","fjorton","femton","sexton","sjutton","arton","aderton","nitton","tjugo","hundra","hundratals","tusen","tusentals","miljon","miljoner","miljontals","miljard","miljarder"],k=["första","andra","tredje","fjärde","femte","sjätte","sjunde","åttonde","nionde","tionde","elfte","tolfte","trettonde","fjortonde","femtonde","sextonde","sjuttonde","artonde","nittonde","tjugonde"],o=["jag","du","han","hon","hen","vi","ni"],g=["mig","dig","honom","henne","oss","er","dem","henom","eder"],m=["sig","sin","sitt","sina"],f=["min","mitt","mina","din","ditt","dina","hans","hennes","dess","ens","vår","vårt","våra","er","ert","era","ers","deras","hens"],p=["denne","denna","detta","dessa","här","där","varifrån","därav","hit","dit","vart","hädan","dädan","vadan","hän","sen"],v=["som","vilken","vilket","vilka","vars","då"],u=["vem","vems","vad"],b=["hur","varför"],h=["någon","något","några","nån","nåt","ingen","inget","inga","annan","annat","andra","någonstans","ingenstans","annastans","överallt","någonstädes","ingenstädes","annorstädes","allestädes","någorlunda","ingalunda","annorlunda","någonting","ingenting","allting","all","allt","alla","somlig","somligt","somliga","mången","månget","man","en","ens"],c=["varandra","varsin","varsitt","envar","varannan","vartannat"],y=["andra","åtskilliga","bådadera","både","få","fårre","fåtalig","fåtaliga","flera","flesta","föga","ganska","icke","inte","lite","litet","många","mer","mera","mest","mindre","minst","mycket","nog","ollika","tillräckligt","vardera","varje","viss","visst","vissa","visse"],j=["bakåt","bakifrån","bortifrån","däråt","därav","därhän","däri","därifrån","därom","därpå","därtill","däruti","därvid","ditåt","dithän","dittills","efteråt","förrut","framåt","hädenefter","häråt","härav","härefter","häremot","häri","härifrån","härmed","härom","härpå","härtill","häruti","härvid","hitåt","hittills","ini","inifrån","intill","inuti","nedanför","nedåt","nedför","nedtill","uppåt","uppför","upptill","varav","varefter","varemot","varför","varfrån","vari","varifrån","varmed","varom","varpå","varthän","vartill","varur","varvid"],x=["behövande","behöver","behövt","behövde","bör","börande","borde","bort","brukade","brukande","brukar","brukat","fående","får","fått","fick","hade","haft","har","hava","havande","kan","kunde","kunnande","kunnat","mådde","mående","mår","måste","mått","måtte","skall","skulle","varande","velat","viljande","vill","ville"],w=["behöva","böra","bruka","få","ha","kunna","må","ska","vilja"],S=["är","var","varit","vore","blivit","blivande","blir","bliver","blev","blitt","funnits","finnande","finns","fanns","befunnit","befinnande","befinner","befann","tyckts","tyckande","tycks","tycktes"],R=["vara","bli","finnas","befinna","tyckas"],P=["gående","gällande","gällde","gäller","gällt","går","gått","gav","ger","gett","gick","givande","giver","gjorde","gjort","gör","görande","kom","kommande","kommer","kommit","ligger","ligges","lå","ligget","liggande","ställer","ställde","ställt","ställ","ställande","ställd","ställas","ställs","ställes","ställdes","ställts","tagande","tager","tagit","tar","tog","utgör","utgjorde","utgjort","utgörande","utgjord","utgöras","utgörs","utgöres","utgjordes","utgjorts"],z=["gå","gälla","ge","göra","komma","ligga","ställa","ta","utgöra"],E=["angav","anger","angett","angiver","angivit","berättade","berättar","berättat","föreslagit","föreslår","föreslått","föreslog","förklarade","förklarar","förklarat","förstår","förstått","förstod","frågade","frågar","frågat","påstår","påstått","påstod","sa","sade","säger","sagt","svarade","svarar","svarat","talade","talar","talat","tänker","tänkt","tänkte"],O=["ange","berätta","föreslå","förklara","förstå","fråga","påstå","säga","svara","tala","tänka"],M=["äldre","äldst","äldsta","äldste","bäst","bättre","dålig","dåliga","dålige","dåligt","egen","eget","egna","egne","enkel","enkelt","enkla","enklare","enklast","enklaste","enkle","fel","gamla","gamle","gammal","gammalt","god","goda","godare","godast","godaste","gode","gott","grundläggande","hel","hela","helare","helast","helaste","hele","helt","kort","korta","kortare","kortast","kortaste","korte","lång","långa","långe","längre","långsam","långsamma","långsammare","långsammast","långsammaste","långsamme","långsamt","längst","längsta","längste","långt","liknande","lilla","lille","liten","litet","mindre","minst","minsta","minste","möjlig","möjliga","möjligare","möjligast","möjligaste","möjlige","möjligt","nödvändig","nödvändiga","nödvändigare","nödvändigast","nödvändigaste","nödvändige","nödvändigt","normal","normala","normalare","normalast","normalaste","normale","normalt","ny","nya","nyare","nyast","nyaste","nye","nytt","olikt","olika","olike","samma","sämre","sämst","sämsta","sämste","särskild","särskilda","särskilde","särskilt","sen","sena","senare","senast","senaste","sene","sent","små","snabb","snabba","snabbare","snabbast","snabbaste","snabbe","snabbt","stor","stora","store","större","störst","största","störste","stort","svår","svåra","svårare","svårast","svåraste","svåre","svårt","tidig","tidiga","tidigare","tidigast","tidigaste","tidige","tidigt","trevlig","trevliga","trevligare","trevligast","trevligaste","trevlige","trevligt","ung","unga","unge","ungt","uppenbar","uppenbara","uppenbare","uppenbart","värre","värst","värsta","värste","verklig","viktig","viktiga","viktigare","viktigast","viktigaste","viktige","viktigt","yngre","yngst","yngsta","yngste"],W=["aldrig","allmänt","alltid","delvis","direkt","huvudsakligen","ibland","långsamt","mestadels","nästan","ofta","relativt","riktigt","riktigare","riktigast","sällan","snabbt","ständigt","väl","vanligt"],q=["antal","antalet","antals","antalets","antalen","antalens","bit","bitar","bitarna","bitarnas","bitars","biten","bitens","bits","del","delar","delarna","delarnas","delars","delen","delens","dels","detalj","detaljen","detaljens","detaljer","detaljerna","detaljernas","detaljers","detaljs","exempel","exempels","exemplet","exemplets","exemplen","exemplens","person","personen","personens","personer","personerna","personernas","personers","persons","procent","punkt","punkten","punktens","punkter","punkterna","punkternas","punkters","sak","saken","sakens","saker","sakerna","sakernas","sakers","saks","sätt","sätten","sättens","sättet","sättets","sätts","skillnad","skillnaden","skillnadens","skillnader","skillnaderna","skillnadernas","skillnaders","skillnads","sort","sorten","sortens","sorter","sorterna","sorternas","sorters","sorts","tema","teman","temanas","temans","temas","temat","temats","tid","tiden","tidens","tider","tiderna","tidernas","tiders","tids","ting","tingen","tingens","tinget","tingets","tings"],T=["åt","av","bakom","bland","bortom","bredvid","cirka","efter","emellan","emot","enligt","för","före","förutom","framför","från","genom","hos","i","igenom","inom","inuti","längs","med","mellan","mittemot","mot","nära","nästa","nedan","ner","olik","om","omkring","ovanför","ovanpå","över","på","runt","sedan","som","till","tvärs","tvärsöver","under","upp","ur","ut","utan","utanför","utom","via","vid"],_=["absolut","alldeles","allra","bra","fullständigt","fullt","ganska","helt","illa","jätte","rysligt","så","storligen","totalt","väldigt","ytterst"],A=["eller","och"],C=["att"],D=["år","årens","året","årets","års","årtal","årtalen","årtalens","årtaconst","årtaconsts","årtals","dag","dagar","dagarna","dagarnas","dagars","dagen","dagens","dags","går","idag","månad","månaden","månadens","månader","månaderna","månadernas","månaders","månads","minut","minuten","minutens","minuter","minuterna","minuternas","minuters","minuts","morgon","sekund","sekunden","sekundens","sekunder","sekunderna","sekundernas","sekunders","sekunds","timmar","timmarna","timmarnas","timmars","timme","timmen","timmens","timmes","vecka","veckan","veckans","veckas","veckor","veckorna","veckornas","veckors"],F=["prof","doc","dr"],I=["å","aj","aja","fy","grattis","hej","hu","jaså","javisst","o","oj","ojdå","prosit","puh","skål","usch"],L=["c","cl","cm","dl","g","kg","km","krm","l","m","mg","ml","mm","msk","pkt","st","tsk"],B=["förlåt","ja","jo","ju","m.m","nej","ok","okej","tack"],G=(l([].concat(k,M,W,w,z,R,O)),l([].concat(n,T,A,p,_,y,f)),l([].concat(r,o,g,m,v,I,i,S,x,E,P,h,c,C,u,b,B,j,L,D,F,q)),l([].concat(n,i,k,o,g,m,f,p,v,u,b,h,c,y,j,x,w,S,R,P,z,E,O,M,W,q,T,_,A,C,D,F,I,L,B))),H=[["antingen","eller"],["icke blott","utan afven"],["ju","desto"]],J={productPages:{parameters:{recommendedMinimum:3,recommendedMaximum:6,acceptableMaximum:7,acceptableMinimum:1}}},K=window.lodash,N=function(s,a){const e=s.match(new RegExp(a.externalStemmer.regexR1region));let t="";return e&&e[1]&&(t=e[1],e.index+2<3&&(t=s.slice(3))),{r1:t,rest:s.slice(0,s.length-t.length)}},{baseStemmer:Q}=e.languageProcessing;function U(s){const a=(0,K.get)(s.getData("morphology"),"sv",!1);return a?s=>function(s,a){let e=N(s,a);const t=function(s,a,e){const t=a.r1;if(!t)return s;const r=new RegExp(e.externalStemmer.regexSuffixes1a),d=t.match(r);return d?a.rest+t.slice(0,d.index):s}(s,e,a),r=function(s,a,e){return a.r1&&s.match(new RegExp(e.externalStemmer.regexSuffixes1b))?s.slice(0,-1):s}(s,e,a);return s=t.length{"use strict";var e={d:(r,n)=>{for(var t in n)e.o(n,t)&&!e.o(r,t)&&Object.defineProperty(r,t,{enumerable:!0,get:n[t]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},r={};e.r(r),e.d(r,{default:()=>Ze});const n=window.yoast.analysis,t=["de","het","een","één","eén","twee","drie","vier","vijf","zes","zeven","acht","negen","tien","dit","dat","die","deze"],o=["aangezien","al","aldus","allereerst","als","alsook","anderzijds","bijgevolg","bijvoorbeeld","bovendien","concluderend","daardoor","daarentegen","daarmee","daarna","daarnaast","daarom","daartoe","daarvoor","dadelijk","dan","desondanks","dienovereenkomstig","dientegevolge","doch","doordat","dus","echter","eerst","evenals","eveneens","evenzeer","hierom","hoewel","immers","indien","integendeel","intussen","kortom","later","maar","mits","nadat","namelijk","net als","niettemin","noch","ofschoon","omdat","ondanks","ondertussen","ook","opdat","resumerend","samengevat","samenvattend","tegenwoordig","teneinde","tenzij","terwijl","tevens","toch","toen","uiteindelijk","vanwege","vervolgens","voorafgaand","vooralsnog","voordat","voorts","vroeger","waardoor","waarmee","waaronder","wanneer","want","zoals","zodat","zodoende","zodra"],d=o.concat(["aan de andere kant","aan de ene kant","aangenomen dat","al met al","alles afwegend","alles bij elkaar","alles in aanmerking nemend","als gevolg van","anders gezegd","daar staat tegenover","daarbij komt","daaruit volgt","dat betekent","dat blijkt uit","de oorzaak daarvan is","de oorzaak hiervan is","door middel van","een voorbeeld hiervan","een voorbeeld van","gesteld dat","hetzelfde als","hieruit kunnen we afleiden","hieruit volgt","hoe het ook zij","in de derde plaats","in de eerste plaats","in de tweede plaats","in één woord","in het bijzonder","in het geval dat","in plaats van","in tegenstelling tot","in vergelijking met","maar ook","met als doel","met andere woorden","met behulp van","met de bedoeling","neem nou","net als","om kort te gaan","onder andere","op dezelfde wijze","stel dat","te danken aan","te wijten aan","ten derde","ten eerste","ten gevolge van","ten slotte","ten tweede","ter conclusie","ter illustratie","ter verduidelijking","tot nog toe","tot slot","vandaar dat","vergeleken met","voor het geval dat"]);function a(e){let r=e;return e.forEach((n=>{(n=n.split("-")).length>0&&n.filter((r=>!e.includes(r))).length>0&&(r=r.concat(n))})),r}const l=["de","het","een","der","des","den"],s=["eén","één","twee","drie","vier","vijf","zes","zeven","acht","negen","tien","elf","twaalf","dertien","veertien","vijftien","zestien","zeventien","achttien","negentien","twintig","honderd","honderden","duizend","duizenden","miljoen","miljoenen","biljoen","biljoenen"],i=["eerste","tweede","derde","vierde","vijfde","zesde","zevende","achtste","negende","tiende","elfde","twaalfde","dertiende","veertiende","vijftiende","zestiende","zeventiende","achttiende","negentiende","twinstigste"],g=["ik","je","jij","hij","ze","we","wij","jullie","zij","u","ge","gij","men"],b=["mij","jou","hem","haar","hen","hun","uw"],v=["dit","dat","deze","die","zelf"],u=["mijn","mijne","jouw","jouwe","zijne","hare","ons","onze","hunne","uwe","elkaars","elkanders"],c=["alle","sommige","sommigen","weinig","weinige","weinigen","veel","vele","velen","geen","beetje","elke","elk","genoeg","meer","meest","meeste","meesten","paar","zoveel","enkele","enkelen","zoveelste","hoeveelste","laatste","laatsten","iedere","allemaal","zekere","ander","andere","gene","enig","enige","verscheidene","verschillende","voldoende","allerlei","allerhande","enerlei","enerhande","beiderlei","beiderhande","tweeërlei","tweeërhande","drieërlei","drieërhande","velerlei","velerhande","menigerlei","menigerhande","enigerlei","enigerhande","generlei","generhande"],h=["mezelf","mijzelf","jezelf","jouzelf","zichzelf","haarzelf","hemzelf","onszelf","julliezelf","henzelf","hunzelf","uzelf","zich"],m=["mekaar","elkaar","elkander","mekander"],w=["iedereen","ieder","eenieder","alleman","allen","alles","iemand","niemand","iets","niets","menigeen"],k=["ieders","aller","iedereens","eenieders"],p=["welke","welk","wat","wie","wiens","wier"],f=["hoe","waarom","waar","hoezo","hoeveel"],y=["daaraan","daarachter","daaraf","daarbij","daarbinnen","daarboven","daarbuiten","daardoorheen","daarheen","daarin","daarjegens","daarmede","daarnaar","daarnaartoe","daaromtrent","daaronder","daarop","daarover","daaroverheen","daarrond","daartegen","daartussen","daartussenuit","daaruit","daarvan","daarvandaan","eraan","erachter","erachteraan","eraf","erbij","erbinnen","erboven","erbuiten","erdoor","erdoorheen","erheen","erin","erjegens","ermede","ermee","erna","ernaar","ernaartoe","ernaast","erom","eromtrent","eronder","eronderdoor","erop","eropaf","eropuit","erover","eroverheen","errond","ertegen","ertegenaan","ertoe","ertussen","ertussenuit","eruit","ervan","ervandaan","ervandoor","ervoor","hieraan","hierachter","hieraf","hierbij","hierbinnen","hierboven","hierbuiten","hierdoor","hierdoorheen","hierheen","hierin","hierjegens","hierlangs","hiermede","hiermee","hierna","hiernaar","hiernaartoe","hiernaast","hieromheen","hieromtrent","hieronder","hierop","hierover","hieroverheen","hierrond","hiertegen","hiertoe","hiertussen","hiertussenuit","hieruit","hiervan","hiervandaan","hiervoor","vandaan","waaraan","waarachter","waaraf","waarbij","waarboven","waarbuiten","waardoorheen","waarheen","waarin","waarjegens","waarmede","waarna","waarnaar","waarnaartoe","waarnaast","waarop","waarover","waaroverheen","waarrond","waartegen","waartegenin","waartoe","waartussen","waartussenuit","waaruit","waarvan","waarvandaan","waarvoor"],j=["daar","hier","ginder","daarginds","ginds","ver","veraf","ergens","nergens","overal","dichtbij","kortbij"],z=["word","wordt","werd","werden","ben","bent","is","was","waren"],x=["worden","zijn"],S=["heb","hebt","heeft","hadden","had","kun","kan","kunt","kon","konden","mag","mocht","mochten","dien","dient","diende","dienden","moet","moest","moesten","ga","gaat","ging","gingen"],P=["hebben","kunnen","mogen","dienen","moeten","gaan"],E=["blijkt","blijk","bleek","bleken","gebleken","dunkt","dunk","dunkte","dunkten","gedunkt","heet","heette","heetten","geheten","lijkt","lijk","geleken","leek","leken","schijn","schijnt","scheen","schenen","toescheen","toeschijnt","toeschijn","toeschenen"],F=["blijken","dunken","heten","lijken","schijnen","toeschijnen"],B=["à","aan","aangaande","achter","behalve","behoudens","beneden","benevens","benoorden","benoordoosten","benoordwesten","beoosten","betreffende","bewesten","bezijden","bezuiden","bezuidoosten","bezuidwesten","bij","binnen","blijkens","boven","bovenaan","buiten","circa","conform","contra","cum","dankzij","door","gedurende","gezien","in","ingevolge","inzake","jegens","krachtens","langs","luidens","met","middels","na","naar","naast","nabij","namens","nevens","niettegenstaande","nopens","om","omstreeks","omtrent","onder","onderaan","ongeacht","onverminderd","op","over","overeenkomstig","per","plus","post","richting","rond","rondom","spijts","staande","te","tegen","tegenover","ten","ter","tijdens","tot","tussen","uit","van","vanaf","vanuit","versus","via","vis-à-vis","volgens","voor","voorbij","wegens","zijdens","zonder"],M=["af","heen","mee","toe","achterop","onderin","voorin","bovenop","buitenop","achteraan","onderop","binnenin","tevoren"],W=["en","alsmede","of","ofwel","en/of"],O=["zowel","evenmin","zomin","hetzij"],T=["vermits","dewijl","dorodien","naardien","nademaal","overmits","wijl","eer","eerdat","aleer","vooraleer","alvorens","totdat","zolang","sinds","sedert","ingeval","tenware","alhoewel","hoezeer","uitgezonderd","zoverre","zover","naargelang","naarmate","alsof"],I=["zegt","zei","vraagt","vroeg","denkt","dacht","stelt","pleit","pleitte"],V=["zeer","erg","redelijk","flink","tikkeltje","bijzonder","ernstig","enigszins","zo","tamelijk","nogal","behoorlijk","zwaar","heel","hele","reuze","buitengewoon","ontzettend","vreselijk"],A=["laat","liet","lieten","kom","komt","kwam","kwamen","maakt","maak","maakte","maakten","doe","doet","deed","deden","vindt","vind","vond","vonden"],D=["laten","komen","maken","doen","vinden"],C=["nieuw","nieuwe","nieuwer","nieuwere","nieuwst","nieuwste","oud","oude","ouder","oudere","oudst","oudste","vorig","vorige","goed","goede","beter","betere","best","beste","groot","grote","groter","grotere","grootst","grootste","makkelijk","makkelijke","makkelijker","makkelijkere","makkelijkst","makkelijste","gemakkelijk","gemakkelijke","gemakkelijker","gemakkelijkere","gemakkelijkst","gemakkelijste","simpel","simpele","simpeler","simpelere","simpelst","simpelste","snel","snelle","sneller","snellere","snelst","snelste","verre","verder","verdere","verst","verste","lang","lange","langer","langere","langst","langste","hard","harde","harder","hardere","hardst","hardste","minder","mindere","minst","minste","eigen","laag","lage","lager","lagere","laagst","laagste","hoog","hoge","hoger","hogere","hoogst","hoogste","klein","kleine","kleiner","kleinere","kleinst","kleinste","kort","korte","korter","kortere","kortst","kortste","herhaaldelijke","directe","ongeveer","slecht","slechte","slechter","slechtere","slechtst","slechtste","zulke","zulk","zo'n","zulks","er","extreem","extreme","bijbehorende","bijbehorend","niet"],R=["oh","wauw","hèhè","hè","hé","au","ai","jaja","welja","jawel","ssst","heremijntijd","hemeltjelief","aha","foei","hmm","nou","nee","tja","nja","okido","ho","halt","komaan","komop","verrek","nietwaar","brr","oef","ach","och","bah","enfin","afijn","haha","hihi","hatsjie","hatsjoe","hm","tring","vroem","boem","hopla"],N=["ml","cl","dl","l","tl","el","mg","g","gr","kg","ca","theel","min","sec","uur"],L=["seconde","secondes","seconden","minuut","minuten","uur","uren","dag","dagen","week","weken","maand","maanden","jaar","jaren","vandaag","morgen","overmorgen","gisteren","eergisteren","'s","morgens","avonds","middags","nachts"],H=["ding","dingen","manier","manieren","item","items","keer","maal","procent","geval","aspect","persoon","personen","deel"],$=["wel","ja","neen","oké","oke","okee","ok","zoiets","€","euro"],q=(a([].concat(x,P,F,D)),a([].concat(i,C)),a([].concat(l,B,W,v,V,c)),a([].concat(o,g,b,h,R,s,z,S,E,I,A,w,O,T,f,p,j,$,M,y,N,L,H,m,u)),a([].concat(l,f,s,u,h,k,E,F,B))),_=a([].concat(l,s,i,v,u,h,m,g,b,c,w,k,p,f,y,j,M,z,x,S,P,E,F,B,W,O,T,I,o,["absoluut","zeker","ongetwijfeld","sowieso","onmiddelijk","meteen","inclusief","direct","ogenblikkelijk","terstond","natuurlijk","vanzelfsprekend","gewoonlijk","normaliter","doorgaans","werkelijk","daadwerkelijk","inderdaad","waarachtig","oprecht","bijna","meestal","misschien","waarschijnlijk","wellicht","mogelijk","vermoedelijk","allicht","aannemelijk","oorspronkelijk","aanvankelijk","initieel","eigenlijk","feitelijk","wezenlijk","juist","reeds","alvast","bijv.","vaak","dikwijls","veelal","geregeld","menigmaal","regelmatig","veelvuldig","eenvoudigweg","simpelweg","louter","kortweg","stomweg","domweg","zomaar","eventueel","mogelijkerwijs","eens","weleens","nooit","ooit","anders","momenteel","thans","incidenteel","trouwens","elders","volgend","recent","onlangs","recentelijk","laatst","zojuist","relatief","duidelijk","overduidelijk","klaarblijkelijk","nadrukkelijk","ogenschijnlijk","kennelijk","schijnbaar","alweer","continu","herhaaldelijk","nog","steeds","nu"],V,A,D,R,C,N,H,$,L,["mevr","dhr","mr","dr","prof"],["jr","sr"])),G=["alhoewel","als","dan","doordat","hoewel","hoezeer","indien","mits","naargelang","naarmate","nadat","ofschoon","omdat","opdat","tenzij","toen","voordat","voorzover","wanneer","zoals","zodat","zodra","zolang","wie","wiens","wier","welke","welk"],J=[["aan de ene kant","aan de andere kant"],["enerzijds","anderzijds"],["natuurlijk","maar"],["niet alleen","maar ook"],["noch","noch"],["zowel","als"]],U=JSON.parse('{"vowels":"aáäâeéëêiíïîoóöôuúüûy","deviations":{"vowels":[{"fragments":["ue$","dge$","[tcp]iënt","ace$","[br]each","[ainpr]tiaal","[io]tiaan","gua[yc]","[^i]deal","tive$","load","[^e]coke","[^s]core$"],"countModifier":-1},{"fragments":["aä","aeu","aie","ao","ë","eo","eú","ieau","ea$","ea[^u]","ei[ej]","eu[iu]","ï","iei","ienne","[^l]ieu[^w]","[^l]ieu$","i[auiy]","stion","[^cstx]io","^sion","riè","oö","oa","oeing","oie","[eu]ü","[^q]u[aeèo]","uie","[bhnpr]ieel","[bhnpr]iël"],"countModifier":1},{"fragments":["[aeolu]y[aeéèoóu]"],"countModifier":1}],"words":{"full":[{"word":"bye","syllables":1},{"word":"core","syllables":1},{"word":"cure","syllables":1},{"word":"dei","syllables":2},{"word":"dope","syllables":1},{"word":"dude","syllables":1},{"word":"fake","syllables":1},{"word":"fame","syllables":1},{"word":"five","syllables":1},{"word":"hole","syllables":1},{"word":"least","syllables":1},{"word":"lone","syllables":1},{"word":"minute","syllables":2},{"word":"move","syllables":1},{"word":"nice","syllables":1},{"word":"one","syllables":1},{"word":"state","syllables":1},{"word":"surplace","syllables":2},{"word":"take","syllables":1},{"word":"trade","syllables":1},{"word":"wide","syllables":1}],"fragments":{"global":[{"word":"adieu","syllables":2},{"word":"airline","syllables":2},{"word":"airmiles","syllables":2},{"word":"alien","syllables":3},{"word":"ambient","syllables":3},{"word":"announcement","syllables":3},{"word":"appearance","syllables":3},{"word":"appeasement","syllables":3},{"word":"atheneum","syllables":4},{"word":"awesome","syllables":2},{"word":"baccalaurei","syllables":5},{"word":"baccalaureus","syllables":5},{"word":"baseball","syllables":3},{"word":"basejump","syllables":2},{"word":"banlieue","syllables":3},{"word":"bapao","syllables":2},{"word":"barbecue","syllables":3},{"word":"beamer","syllables":2},{"word":"beanie","syllables":2},{"word":"beat","syllables":1},{"word":"belle","syllables":2},{"word":"bête","syllables":1},{"word":"bingewatch","syllables":2},{"word":"blocnote","syllables":2},{"word":"blue","syllables":1},{"word":"board","syllables":1},{"word":"break","syllables":1},{"word":"broad","syllables":1},{"word":"bulls-eye","syllables":2},{"word":"business","syllables":2},{"word":"byebye","syllables":2},{"word":"cacao","syllables":2},{"word":"caesar","syllables":2},{"word":"camaieu","syllables":3},{"word":"caoutchouc","syllables":2},{"word":"carbolineum","syllables":5},{"word":"catchphrase","syllables":1},{"word":"carrier","syllables":3},{"word":"cheat","syllables":1},{"word":"cheese","syllables":1},{"word":"circonflexe","syllables":3},{"word":"clean","syllables":1},{"word":"cloak","syllables":1},{"word":"cobuying","syllables":3},{"word":"comeback","syllables":2},{"word":"comfortzone","syllables":3},{"word":"communiqué","syllables":4},{"word":"conopeum","syllables":4},{"word":"console","syllables":2},{"word":"corporate","syllables":3},{"word":"coûte","syllables":1},{"word":"creamer","syllables":2},{"word":"crime","syllables":1},{"word":"cruesli","syllables":2},{"word":"deadline","syllables":2},{"word":"deautoriseren","syllables":6},{"word":"deuce","syllables":1},{"word":"deum","syllables":2},{"word":"dirndl","syllables":2},{"word":"dread","syllables":2},{"word":"dreamteam","syllables":2},{"word":"drone","syllables":1},{"word":"enquête","syllables":3},{"word":"escape","syllables":2},{"word":"exposure","syllables":3},{"word":"extranei","syllables":4},{"word":"extraneus","syllables":4},{"word":"eyecatcher","syllables":3},{"word":"eyeliner","syllables":3},{"word":"eyeopener","syllables":4},{"word":"eyetracker","syllables":3},{"word":"eyetracking","syllables":3},{"word":"fairtrade","syllables":2},{"word":"fauteuil","syllables":2},{"word":"feature","syllables":2},{"word":"feuilletee","syllables":3},{"word":"feuilleton","syllables":3},{"word":"fisheye","syllables":2},{"word":"fineliner","syllables":3},{"word":"finetunen","syllables":3},{"word":"forehand","syllables":2},{"word":"freak","syllables":1},{"word":"fusioneren","syllables":4},{"word":"gayparade","syllables":3},{"word":"gaypride","syllables":2},{"word":"goal","syllables":1},{"word":"grapefruit","syllables":2},{"word":"gruyère","syllables":3},{"word":"guele","syllables":1},{"word":"guerrilla","syllables":3},{"word":"guest","syllables":1},{"word":"hardware","syllables":2},{"word":"haute","syllables":1},{"word":"healing","syllables":2},{"word":"heater","syllables":2},{"word":"heavy","syllables":2},{"word":"hoax","syllables":1},{"word":"hotline","syllables":2},{"word":"idee-fixe","syllables":3},{"word":"inclusive","syllables":3},{"word":"inline","syllables":2},{"word":"intake","syllables":2},{"word":"intensive","syllables":3},{"word":"jeans","syllables":1},{"word":"Jones","syllables":1},{"word":"jubileum","syllables":4},{"word":"kalfsribeye","syllables":3},{"word":"kraaiennest","syllables":3},{"word":"lastminute","syllables":3},{"word":"learning","syllables":2},{"word":"league","syllables":1},{"word":"line-up","syllables":2},{"word":"linoleum","syllables":4},{"word":"load","syllables":1},{"word":"loafer","syllables":2},{"word":"longread","syllables":2},{"word":"lookalike","syllables":3},{"word":"louis","syllables":3},{"word":"lyceum","syllables":3},{"word":"magazine","syllables":3},{"word":"mainstream","syllables":2},{"word":"make-over","syllables":3},{"word":"make-up","syllables":2},{"word":"malware","syllables":2},{"word":"marmoleum","syllables":4},{"word":"mausoleum","syllables":4},{"word":"medeauteur","syllables":4},{"word":"midlifecrisis","syllables":4},{"word":"migraineaura","syllables":5},{"word":"milkshake","syllables":2},{"word":"millefeuille","syllables":4},{"word":"mixed","syllables":1},{"word":"muesli","syllables":2},{"word":"museum","syllables":3},{"word":"must-have","syllables":2},{"word":"must-read","syllables":2},{"word":"notebook","syllables":2},{"word":"nonsense","syllables":2},{"word":"nowhere","syllables":2},{"word":"nurture","syllables":2},{"word":"offline","syllables":2},{"word":"oneliner","syllables":3},{"word":"onesie","syllables":2},{"word":"online","syllables":2},{"word":"opinion","syllables":3},{"word":"paella","syllables":3},{"word":"pacemaker","syllables":3},{"word":"panache","syllables":2},{"word":"papegaaienneus","syllables":5},{"word":"passe-partout","syllables":3},{"word":"peanuts","syllables":2},{"word":"perigeum","syllables":4},{"word":"perineum","syllables":4},{"word":"perpetuum","syllables":4},{"word":"petroleum","syllables":4},{"word":"phone","syllables":3},{"word":"picture","syllables":2},{"word":"placemat","syllables":2},{"word":"porte-manteau","syllables":3},{"word":"portefeuille","syllables":4},{"word":"presse-papier","syllables":3},{"word":"primetime","syllables":2},{"word":"queen","syllables":1},{"word":"questionnaire","syllables":3},{"word":"queue","syllables":1},{"word":"reader","syllables":2},{"word":"reality","syllables":3},{"word":"reallife","syllables":2},{"word":"remake","syllables":2},{"word":"repeat","syllables":2},{"word":"repertoire","syllables":3},{"word":"research","syllables":2},{"word":"reverence","syllables":3},{"word":"ribeye","syllables":2},{"word":"ringtone","syllables":3},{"word":"road","syllables":1},{"word":"roaming","syllables":2},{"word":"sciencefiction","syllables":4},{"word":"selfmade","syllables":2},{"word":"sidekick","syllables":2},{"word":"sightseeing","syllables":3},{"word":"skyline","syllables":2},{"word":"smile","syllables":1},{"word":"sneaky","syllables":2},{"word":"software","syllables":2},{"word":"sparerib","syllables":2},{"word":"speaker","syllables":2},{"word":"spread","syllables":1},{"word":"statement","syllables":2},{"word":"steak","syllables":1},{"word":"steeplechase","syllables":3},{"word":"stonewash","syllables":2},{"word":"store","syllables":1},{"word":"streaken","syllables":2},{"word":"stream","syllables":1},{"word":"streetware","syllables":1},{"word":"supersoaker","syllables":4},{"word":"surprise-party","syllables":4},{"word":"sweater","syllables":2},{"word":"teaser","syllables":2},{"word":"tenue","syllables":2},{"word":"template","syllables":2},{"word":"timeline","syllables":2},{"word":"tissue","syllables":2},{"word":"toast","syllables":1},{"word":"tête-à-tête","syllables":3},{"word":"typecast","syllables":2},{"word":"unique","syllables":2},{"word":"ureum","syllables":3},{"word":"vibe","syllables":1},{"word":"vieux","syllables":1},{"word":"ville","syllables":1},{"word":"vintage","syllables":2},{"word":"wandelyup","syllables":3},{"word":"wiseguy","syllables":2},{"word":"wake-up-call","syllables":3},{"word":"webcare","syllables":2},{"word":"winegum","syllables":2},{"word":"base","syllables":1,"notFollowedBy":["e","n","r"]},{"word":"game","syllables":1,"notFollowedBy":["n","l","r"]},{"word":"style","syllables":1,"notFollowedBy":["n","s"]},{"word":"douche","syllables":1,"notFollowedBy":["n","s"]},{"word":"space","syllables":1,"notFollowedBy":["n","s"]},{"word":"striptease","syllables":2,"notFollowedBy":["n","s"]},{"word":"jive","syllables":1,"notFollowedBy":["n","r"]},{"word":"keynote","syllables":2,"notFollowedBy":["n","r"]},{"word":"mountainbike","syllables":3,"notFollowedBy":["n","r"]},{"word":"face","syllables":1,"notFollowedBy":["n","t"]},{"word":"challenge","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"cruise","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"house","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"dance","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"franchise","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"freelance","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"lease","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"linedance","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"lounge","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"merchandise","syllables":3,"notFollowedBy":["n","r","s"]},{"word":"performance","syllables":3,"notFollowedBy":["n","r","s"]},{"word":"release","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"resource","syllables":2,"notFollowedBy":["n","r","s"]},{"word":"cache","syllables":1,"notFollowedBy":["c","l","n","t","x"]},{"word":"office","syllables":2,"notFollowedBy":["r","s"]},{"word":"close","syllables":1,"notFollowedBy":["r","t"]}],"atBeginningOrEnd":[{"word":"byte","syllables":1},{"word":"cake","syllables":1},{"word":"care","syllables":1},{"word":"coach","syllables":1},{"word":"coat","syllables":1},{"word":"earl","syllables":1},{"word":"foam","syllables":1},{"word":"gate","syllables":1},{"word":"head","syllables":1},{"word":"home","syllables":1},{"word":"live","syllables":1},{"word":"safe","syllables":1},{"word":"site","syllables":1},{"word":"soap","syllables":1},{"word":"teak","syllables":1},{"word":"team","syllables":1},{"word":"wave","syllables":1},{"word":"brace","syllables":1,"notFollowedBy":["s"]},{"word":"case","syllables":1,"notFollowedBy":["s"]},{"word":"fleece","syllables":1,"notFollowedBy":["s"]},{"word":"service","syllables":2,"notFollowedBy":["s"]},{"word":"voice","syllables":1,"notFollowedBy":["s"]},{"word":"kite","syllables":1,"notFollowedBy":["n","r"]},{"word":"skate","syllables":1,"notFollowedBy":["n","r"]},{"word":"race","syllables":1,"notFollowedBy":["n","r","s"]}],"atBeginning":[{"word":"coke","syllables":1},{"word":"deal","syllables":1},{"word":"image","syllables":2,"notFollowedBy":["s"]}],"atEnd":[{"word":"force","syllables":1},{"word":"tea","syllables":1},{"word":"time","syllables":1},{"word":"date","syllables":1,"alsoFollowedBy":["s"]},{"word":"hype","syllables":1,"alsoFollowedBy":["s"]},{"word":"quote","syllables":1,"alsoFollowedBy":["s"]},{"word":"tape","syllables":1,"alsoFollowedBy":["s"]},{"word":"upgrade","syllables":2,"alsoFollowedBy":["s"]}]}}}}'),Y={productPages:{parameters:{recommendedMinimum:3,recommendedMaximum:6,acceptableMaximum:7,acceptableMinimum:1}}},K=window.lodash,Q=["gebraad","gemoed","gebed","gebied","gebod","gebodsbord","geboorte-eiland","geboortestad","gebruikspaard","gedachtewereld","gedenkblad","gedenknaald","gedichtenwedstrijd","gedoogakkoord","gedoogbeleid","geduld","geestenwereld","geesteskind","geestestoestand","geesteswereld","gehandicaptenbeleid","gehoorafstand","gehoorsafstand","geitenbaard","geitenhuid","geld","geldhond","geldvoorraad","geleidehond","gelijkekansenbeleid","geloofsdaad","geloofsinhoud","geluidswand","gelukskind","gemeenschapsraad","gemeentebeleid","gemeenteraad","gemeenteraadslid","gemoedstoestand","genadeverbond","genderbeleid","geneesmiddelenbeleid","generaalsbewind","geslachtsdaad","gespreksavond","gespreksflard","getijdengebied","gevangenisbeleid","gevangeniswereld","gevechtsafstand","gevelwand","gevoelstoestand","gevoelswereld","gewelddaad","geweldigaard","geweldverbod","gezelschapshond","gezichtsafstand","gezichtshuid","gezinsbeleid","gezinsbond","gezinshoofd","gezinslid","gezinspaard","gezinstoestand","gezondheidsbeleid","gezondheidstoestand","gezondheidszorgbeleid","gecentreerd","geserreerd","gepolitoerd","gebocheld","gebrild","gegleufd","gekarteld","gemeubeld","gesausd","geaccidenteerd","geaccrediteerd","geacheveerd","geaderd","geaggregeerd","geagiteerd","geallieerd","geanimeerd","geanticipeerd","gearticuleerd","geassorteerd","gebenedijd","gebiedend","geblaseerd","geblindeerd","geborneerd","gebronzeerd","gebrouilleerd","gebruind","gecharmeerd","gechromeerd","geciviliseerd","geclausuleerd","gecoiffeerd","geconditioneerd","geconstipeerd","gecontinueerd","gecoöpteerd","gecrispeerd","gecultiveerd","gedecideerd","gedecolleteerd","gedegouteerd","gedemilitariseerd","gedemodeerd","gedesillusioneerd","gedesinteresseerd","gedetailleerd","gediplomeerd","gedisciplineerd","gedisponeerd","gedistingeerd","gedomicilieerd","gedoteerd","gedupeerd","geëigend","geestdodend","geestverruimend","geëxalteerd","geëxponeerd","gefigureerd","gefingeerd","geflatteerd","geforceerd","gefumeerd","gegeerd","gegeneerd","gegradueerd","gegriepeerd","gehaaid","gehandschoend","gehavend","gehomologeerd","gehorend","geïllustreerd","geïmponeerd","geïmproviseerd","geïncrimineerd","geïrriteerd","geklasseerd","gekmakend","gekuifd","gekwalificeerd","gelardeerd","geldend","geldverslindend","geleed","geleidend","gelieerd","geliefkoosd","gelijkluidend","gelinieerd","geluiddempend","geluidswerend","geluidwerend","gemarineerd","gematteerd","gemiddeld","geoccupeerd","geoutilleerd","geparaffineerd","geparfumeerd","gepatenteerd","gepermitteerd","geplafonneerd","geplisseerd","gepredisponeerd","geprefabriceerd","gepreoccupeerd","geproportioneerd","geraffineerd","gerandomiseerd","gereformeerd","gereglementeerd","geresigneerd","geresponsabiliseerd","gerimpeld","geringschattend","geruchtmakend","geruststellend","gesatureerd","gesauteerd","geschakeerd","gesepareerd","geseponeerd","gesofisticeerd","gesoigneerd","gespeend","gespikkeld","gestresseerd","geurenblind","gevergeerd","geverseerd","gezaghebbend","gezagsondermijnend","gezichtsbepalend","gezinsvervangend","gezwind","geit","gedragstherapeut","geveltoerist","gezant","gerant","gerst","gerstenat","geut","gebarenkunst","gebedsbijeenkomst","gebekvecht","gebiedsagent","gebit","geboorterecht","gebruikersovereenkomst","gebruiksrecht","gebruiksvoorschrift","gedragsvoorschrift","geest","geestdrift","geesteskracht","geestesproduct","geestkracht","gefluit","gehandicaptensport","geheimhoudingsplicht","geheimschrift","geheugenkunst","gehoorapparaat","geitenteelt","gekloot","geldautomaat","geldingskracht","geldingszucht","geldkist","geldmarkt","geldmarkttekort","geldpot","geldsoort","geldtekort","geldtransport","gelduitgifteautomaat","geldzucht","gelegenheidsargument","geloofsgenoot","geluidseffect","geluidsoverlast","geluidspoort","gemaksproduct","gemakzucht","gemberpot","gemeenschapsrecht","gemeenteadvocaat","gemeenteraadsbesluit","gemeenterecht","gemeentewet","gemeentewiet","gemoedsrust","geneeskracht","geneeskundestudent","geneeskunst","geneesmiddelenfabrikant","geneesmiddelenmarkt","generatieconflict","generatiegenoot","generatiepact","generatiestudent","genetkat","genocidewet","genot","genotsproduct","genotzucht","gent","geodeet","geologiedocent","gereedschapskist","gerucht","geruchtencircuit","geschiedenisdocent","geschiedenisstudent","geschiet","geschrift","gespreksgenoot","gesprekspunt","getijdenkracht","gevangenispoort","gevecht","gevechtskracht","gevechtssport","gevellijst","gevelornament","gewest","gewetensangst","gewetensconflict","gewicht","gewinzucht","gewondentransport","gewoonterecht","gewricht","gezagsapparaat","gezinsbudget","gezinsrapport","gezondheidseffect","gezondheidsklacht","gezondheidsproduct","gezondheidsrecht","gezondheidswet","gezondheidswinst","gerokt","gevlekt","gebuikt","gesaust","gebiedsgericht","geel-zwart","gehandicapt","gereformeerd-vrijgemaakt","gestuikt","geëtst","bed","bediendevakbond","bedrijfsbeleid","bedrijfsblad","bedrijfspand","bedrijfswereld","bedrijvenbond","beekdonderpad","beeld","beginselakkoord","begintoestand","begripsinhoud","begrotingsakkoord","begrotingsbeleid","behandelaanbod","beheerraad","beheersgebied","behoud","beiaard","bejaardenbeleid","bekerwedstrijd","belastinggebied","belastinggeld","belastingschuld","beleggingsbeleid","beleggingspand","beleid","beleidsdaad","beleidsgebied","belevingswereld","belplafond","beltegoed","bemanningslid","Bemiddelingsraad","bendehoofd","bendelid","benedenstad","benefietwedstrijd","benoemingenbeleid","benuttingsgraad","berberpaard","beregeningsverbod","bergeend","berggebied","bergland","bergpaard","bergpad","bergwand","beroepsarbeid","beroepsverbod","beroepswereld","beschermingsbeleid","beschermingsgebied","beslissingswedstrijd","besparingsbeleid","bestand","bestandsakkoord","besteleend","besturenbond","bestuursakkoord","bestuursbeleid","bestuurshoofd","bestuurslid","beukenblad","beursmaand","beursrecord","beurswaakhond","beurswereld","beveiligingsbeleid","bevolkingsbeleid","bewind","bewustzijnsinhoud","bewustzijnstoestand","bezuinigingsbeleid","beenhard","bebrild","beangstigend","bebaard","bedeesd","bederfwerend","bedreigend","bedrijvend","bedroevend","beduidend","beduusd","bedwelmend","beeldbepalend","beeldend","beeldvormend","beeldvullend","begeleidend","begerenswaard","begrijpend","behartenswaard","behartigenswaard","behoudend","bejaard","beklagenswaard","beklemmend","belanghebbend","belangstellend","belangwekkend","belastingbesparend","belastingbetalend","beledigend","beleerd","beleidsadviserend","belendend","belerend","bemoedigend","benauwend","benijdenswaard","bepalend","beperkend","beregoed","berekenend","beroemd","beroepsblind","beschaamd","beschamend","beschouwend","beschrijvend","besdragend","beslissend","bestaand","bestverkopend","beteuterd","betoverend","betraand","betreffend","betreurenswaard","bevelend","bevelhebbend","bevestigend","bevoegd","bevredigend","bevreemdend","bevriend","bewonderenswaard","bewustzijnsverruimend","bezwarend","beest","berggeit","betaalkracht","beerput","bergamot","beschuit","beademingsapparaat","beddenfabrikant","bedeltocht","bedevaart","bedevaartstocht","bediendecontract","bedieningsfout","bedilzucht","bedoeïenentent","bedrijfsadvocaat","bedrijfsfeest","bedrijfsfysiotherapeut","bedrijfsmanagement","bedrijfsopbrengst","bedrijfsrestaurant","bedrijfsresultaat","bedrijfssport","bedrijfswinst","bedrijvenmarkt","bedrust","beeldhouwkunst","beeldmoment","beeldrecht","beeldsnijkunst","beestenmarkt","beet","begeleidwonenproject","beginnersfout","beginpunt","begrippenapparaat","begrotingsdebat","begrotingsrecht","begrotingstekort","behaagzucht","behandelingsresultaat","behoudzucht","bejaardenpaspoort","bekerplant","bekerwinst","beklagrecht","beklemrecht","belangenconflict","belastingafdracht","belastingbiljet","belastingconsulent","belastingdienst","belastingexpert","belastingopbrengst","belastingplicht","belastingrecht","belastingspecialist","belastingwet","beleggersmarkt","beleggingsexpert","beleggingsmarkt","beleggingsopbrengst","beleggingsproduct","beleggingsresultaat","beleidsaspect","beleidsdebat","beleidsfout","beleidsresultaat","beleidsspecialist","belevingsrestaurant","belgicist","belminuut","beltegoedkaart","bemoeizucht","benefiet","benefietconcert","benoemingsbesluit","benzinelucht","benzinemarkt","benzinetekort","beoordelingsfout","beoordelingsrapport","berghut","bergklimaat","berglucht","bergrit","bergsport","bergtijdrit","bergtocht","berichtendienst","berkenhout","bermmonument","bermrecreant","bermsloot","bermtoerist","beroepsdiplomaat","beroepsernst","beroepsfout","beroepsgenoot","beroepsjournalist","beroepskracht","beroepsrecht","beroepssoldaat","beroepssport","berufsverbot","beschermingsbesluit","beschikkingsrecht","beslismoment","beslissingsrecht","besluit","bestaansrecht","bestandsformaat","bestelbiljet","bestelkaart","bestuursapparaat","bestuursassistent","bestuursbesluit","bestuursconflict","bestuurskracht","bestuurskundedocent","bestuursmandaat","bestuursprocesrecht","bestuursrecht","betaalautomaat","betaaldienst","betaalkaart","betaalopdracht","betalingsbalanstekort","betalingsopdracht","bètastudent","beterschapskaart","betrouwbaarheidsrit","beukenhout","beursapparaat","beursklimaat","beurskrant","beursmarkt","beursstudent","beurt","beverrat","bevoegdheidsconflict","bevrijdingsconcert","bevrijdingsfeest","bewaarplicht","bewegingsapparaat","bewegingsdocent","bewegingskunst","bewijskracht","bewijsrecht","bewustwordingsproject","bezemkast","bezit","bezitsrecht","bezoekrecht","bezuinigingsdrift","bezuinigingsopdracht","bezwaarschrift","beroepsgericht","bedompt","bedrijfsgericht","beginselvast","beleidsgericht","bewolkt","bezweet","verbeterblad","verband","verbeeldingswereld","verbod","verbodsbord","verbond","verdwaalarmband","verdwijnwoord","verenigingsblad","verenigingslid","verfhuid","vergismoord","vergunningenbeleid","verhalenpad","verhalenwedstrijd","verkeersaanbod","verkeersbeleid","verkeersbord","verkiezingsavond","verkleinwoord","verkoopbeleid","verkoopverbod","vernieuwingsbeleid","verpleeghuisbed","verraad","verschijningsverbod","verstand","vertoningsverbod","vertrekbeleid","vervalmaand","vervoerbeleid","vervoersaanbod","vervoersbeleid","vervoersbond","vervoersverbod","vervolgingsbeleid","verwijderingsbeleid","verzamelbeleid","verzekeringswereld","verzetsdaad","verzetsheld","verzuimbeleid","verdragend","verkeersremmend","verbazend","verbazingwekkend","verbijsterend","verblindend","verbluffend","verbouwereerd","verdaagd","verdedigend","verdovend","vereend","verfrissend","vergelijkend","verhalend","verheffend","verheugend","verkikkerd","verklarend","verkwikkend","verkwistend","verlammend","verlangend","verliesgevend","verlieslatend","verlieslijdend","verlokkend","verlossend","vermeend","vermeldenswaard","vermeldingswaard","vermoeiend","vermogend","vernederend","vernietigend","verontrustend","verpletterend","verrassend","verscheurend","verschillend","verslaafd","verspringend","verstikkend","verstrekkend","verstrooid","vertederend","vertrouwenwekkend","vertwijfeld","vervelend","verwaand","verwarrend","verwoestend","verzachtend","verziend","verzoenend","verwant","verantwoordingsplicht","verbandkist","verbeeldingskracht","verbintenissenrecht","verblijfsrecht","verbrandingsproduct","verbroederingsfeest","verdedigingsfout","verdragsrecht","verdriet","verdringingseffect","veredelingsproduct","verenigingsrecht","verffabrikant","verfpot","verfrest","vergiet","vergoedingslimiet","vergrotingsapparaat","vergunningplicht","verhaalsrecht","verhuiskist","verhuurboot","verjaardagsfeest","verjaardagsgast","verjaardagstaart","verjaarfeest","verjaringsfeest","verkeersagent","verkeersinfarct","verkeersmanagement","verkeersmarkt","verkeersoverlast","verkeerswet","verkenningstocht","verkiezingsbijeenkomst","verkiezingsbiljet","verkiezingsdebat","verkiezingsinkt","verkiezingsresultaat","verkiezingswinst","verkleedkist","verkoopapparaat","verkoopargument","verkoopopbrengst","verkoopopdracht","verkooprecht","verkoopresultaat","verkopersmarkt","verlatingsangst","verlovingsfeest","verminderingskaart","vermogensrecht","vermogenstekort","vermogenswinst","vernielzucht","vernietigingskracht","vernieuwingsdebat","vernieuwingsproject","veroveringstocht","veroveringszucht","verpleegassistent","verrassingseffect","verrassingsfeest","verrijkingsmarkt","verruimingskandidaat","verschoningsrecht","verschot","versproduct","versterfrecht","vertaalfout","vertaalproject","vertaalrecht","vertebraat","vertegenwoordigingsrecht","vervangingsmarkt","vervoersmanagement","vervoersmarkt","vervolgbijeenkomst","vervolgingsapparaat","vervolgopdracht","vervolgproject","vervreemdingseffect","verwijt","verzakingsrecht","verzamelkrant","verzekeringsagent","verzekeringsmarkt","verzekeringsproduct","verzekeringsrecht","verzekeringsresultaat","verzetskrant","verzoeningsbijeenkomst","verzorgingsproduct","slingerpad","avondgebed","bibbergeld","dageraad","drinkgeld","kalfsgebraad","leefgeld","ochtendgebed","ongelukskind","vluggerd","voltigeerpaard","voltigepaard","aandachtsgebied","aanlijngebod","aardbevingsgebied","abonnementsgeld","achtergrondgeluid","achterstandsgebied","actiegebied","afzetgebied","akkerbouwgebied","alpengebied","amazonegebied","ambtsgebied","ambtsgewaad","antigeluid","aspergebed","autonomiegebied","baggereiland","bangerd","bijgeluid","bijstandsgeld","binnenduingebied","blindengeleidehond","blowgebodsbord","boezemgebied","bongerd","bosgebied","bridgeavond","bridgebond","bridgewedstrijd","broedgebied","brongebied","budgetbeleid","burgerbewind","centrumgebied","collegelid","computergebied","concentratiegebied","conceptregeerakkoord","concessiegebied","conflictgebied","contactgeluid","crisisgebied","cultuurgebied","dankgebed","deelgebied","deelnemingenbeleid","deltagebied","deskundigheidsgebied","dierengeluid","doelgebied","doodsgewaad","doorgangsgebied","dopgeld","douanegebied","drempelgeld","driekoningenavond","duinengebied","duingebied","eigendomsvoorbehoud","energiegebied","engerd","eurogebied","feestgewaad","filmgebied","foerageergebied","formuliergebed","frequentiegebied","frontgebied","functioneringsgebied","gangenpaard","gitaargeluid","gitaargeweld","golfgebied","golflengtegebied","graangebied","grachtengebied","grensgebied","groeigebied","groengebied","groepsgeluid","groepsgeweld","grondgebied","grondwaterbeschermingsgebied","haflingerpaard","handelsgebied","havengebied","heidegebied","helikoptergeld","herkomstgebied","herwaarderingsgebied","hogedrukgebied","hogeronderwijsbeleid","hongersnood","hoogveengebied","ICT-gebied","immigratiegebied","inburgeringsbeleid","indicatiegebied","industriegebied","ingeland","inkomgeld","interessegebied","jachtgebied","jagershond","jongerenbeleid","jongerenblad","kantorengebied","kassengebied","keelgeluid","kennisgebied","kerngebied","kernwinkelgebied","kijkgeld","kindergeld","kleigebied","kloostergewaad","knipooggeweld","kogelwond","koorgebed","krapgeldbeleid","krijgsgeweld","krimpgebied","kruisgebed","kunstgebied","kustgebied","kwelgebied","lagedrukgebied","landbouwgebied","langeafstandspaard","langebaanwedstrijd","langetermijnbeleid","leefgebied","leergebied","leerstofgebied","legerpaard","legervoorraad","levensgebied","lidgeld","logeerbed","luchtvaartgebied","luistergeld","machtsgebied","managementbeleid","mandaatgebied","manegepaard","marktgebied","mededelingenblad","mededelingenbord","mediageweld","merengebied","middaggebed","middengebied","mijngebied","milieubeschermingsgebied","milieugebied","misgewaad","missiegebied","modegebied","moerasgebied","morgengebed","Morgenland","morgenstond","moslimgebied","motorgeluid","muilkorfgebod","nachtgewaad","nagelbed","natuurbeschermingsgebied","natuurgebied","natuurgeweld","natuurontwikkelingsgebied","NAVO-gebied","NAVO-grondgebied","nederzettingenbeleid","neerslaggebied","negerkind","no-gogebied","noodgebied","noordpoolgebied","Noordzeegebied","oceaangebied","octrooigebied","oefengebied","oerwoudgeluid","oliegebied","omgevingsbeleid","omgevingsgeluid","onderwijsgebied","onderzoeksgebied","onrustgebied","ontwikkelingsgebied","oorlogsgebied","oorlogsgeweld","oorsprongsgebied","operatiegebied","opleidingenaanbod","opmarsgebied","overgangsgebied","overlastgebied","overstromingsgebied","overwinteringsgebied","paaigebied","partnergeweld","ploegenwedstrijd","poldergebied","politiegeweld","potpoldergebied","presentiegeld","priestergewaad","regeerakkoord","regelafstand","regenboogkind","regenboogzebrapad","regenwoud","regeringsaanbod","regeringsbeleid","regeringsraad","regeringsstad","reizigersaanbod","richtingenstrijd","roggebrood","rouwgewaad","rugzakgeld","rustgebied","rustgeld","sabotagedaad","samenwerkingsgebied","schandegeld","Schengenakkoord","schietgebed","schoolgeld","servicegeweld","slangenhuid","sleutelgeld","slotgebed","smeekgebed","smeergeldstad","spaargeld","spanningsgebied","spiegelbeeld","spiegelwand","sportgebied","spraakgeluid","stemgeluid","stiltegebied","stoelgeld","stormgeweld","straatgeluid","straatgeweld","strafschopgebied","supportersgeweld","taalgebied","tegelpad","tegelwand","tegenbod","tegengeluid","tegengeweld","tegenspoed","tegenwind","televisiegeweld","tussengebied","uitgaansgeweld","uitgeefbeleid","uitgeversverbond","uitgeverswereld","ultrageluid","vaargebied","vagebond","vakantiegeld","veertigurengebed","vegetariërsbond","vingerhoed","vliegtuiggeluid","vluchtelingenbeleid","voetbalgeweld","vogelgeluid","vogelwereld","volksgezondheidsbeleid","voorzieningenaanbod","vormgevingsbeleid","vredesgeluid","vreemdelingenbeleid","vrijdaggebed","vrijgezellenavond","vrijwilligersbeleid","vuurwapengeweld","wapengeweld","waterbergingsgebied","watergebied","watergeweld","werkgelegenheidsbeleid","werkgeversaanbod","werkgeversbond","werkgeversverbond","wetgevingsbeleid","wiegenkind","wijngebied","wintersportgebied","wisselgeld","woestijngebied","zakgeld","zangersbond","zeegebied","zeehavengebied","ziektegeld","zigeunerkind","zigeunerpaard","zondegeld","zorgenkind","zwangerschapsmaand","zwijggeld","agent","afgezant","dirigent","echtgenoot","morgendienst","apologeet","budgetsupermarkt","burgerdienst","changement","dorpsgenoot","huisgenoot","krankzinnigengesticht","muggenbeet","nagerecht","omgevingsportret","politieagent","tijgerkat","tussengerecht","vogelmijt","voorgerecht","wegenwacht","wegenzout","wijkagent","wisselagent","zeegezicht","zorgbudget","aankoopbudget","aardappelgerecht","accountmanagement","achterhoedegevecht","adoptieagent","advertentiebudget","afspiegelingskabinet","agendahedonist","algemenebijstandswet","amandelgeest","ambtenarengerecht","apengezicht","arbeidsgerecht","aspergerobot","aspergeteelt","assetmanagement","baggerboot","baggermarkt","baggeropdracht","baggerproject","baggerschuit","baggervloot","balkanvergeet-mij-niet","barricadegevecht","bijgerecht","boemerangeffect","bouwmanagement","bovengebit","branchegenoot","bridgejournalist","bridgesport","budget","budgetrecht","budgettekort","bugnugget","burgemeestersambt","burgemeesterspost","burgerdocent","burgerplicht","burgerpot","burgerpresident","burgerrecht","burgerschapsrecht","buurtagent","buurtgenoot","capaciteitsmanagement","casemanagement","celgenoot","chef-dirigent","CIA-agent","clubgenoot","coalitiegenoot","collectiemanagement","collegebesluit","collegekaart","collegestudent","competentiemanagement","crisismanagement","defensiebudget","depannagedienst","deskundigenrapport","disgenoot","dopingexpert","draagvleugelboot","dreigement","driekoningenfeest","dubbelagent","dwerggeit","eerstgeboorterecht","eigendomsrecht","elftalgenoot","enkelgewricht","etalageruit","ex-agent","ex-echtgenoot","exploitatiebudget","FBI-agent","fractiegenoot","gadget","garagepoort","glogetuigschrift","groentegerecht","groentenugget","grondgevecht","halfgeleiderfabrikant","halsgerecht","halsgewricht","hamburgerrestaurant","hamburgertent","handelsagent","handgewricht","hanengevecht","hengelsport","hersengadget","heupgewricht","hogeschooldocent","hogeschoolstudent","hokjesgeest","hondengevecht","hoofdagent","hoofdgerecht","horlogekast","hotelmanagement","huishoudbudget","hulpagent","huwelijksvermogensrecht","inburgeringsplicht","inburgeringstraject","informatiemanagement","ingenieursdienst","ingenieursstudent","inlichtingenrapport","interim-management","internetevangelist","investeringsbudget","inzagerecht","jaarbudget","jongerenkrant","jongerenpaspoort","kaakgewricht","kaasgerecht","kaasnugget","kalfsgehakt","kamergenoot","kant-en-klaargerecht","kantongerecht","kennismanagement","kipnugget","klasgenoot","kniegewricht","kogelgewricht","kooigevecht","kredietmanagement","kroegentocht","kruidnagelsigaret","kunstbudget","kunstgeschiedenisdocent","kunstgeschiedenisstudent","kunstmanagement","kussengevecht","kwaliteitsmanagement","kwelgeest","lamsgehakt","langetermijneffect","leeftijdgenoot","leeftijdsgenoot","legercommandant","legerdienst","legerkrant","legerpredikant","legertent","lievelingsgerecht","logeergast","lotgenotencontact","loungerestaurant","low budget","lozingenbesluit","luchtagent","luchtgevecht","lunchgerecht","macrobudget","management","managementfout","melkgeit","mens-erger-je-niet","mergelgrot","milieumanagement","miljoenenbudget","mobiliteitsbudget","moddergevecht","monumentenbudget","morgenlicht","morgenpost","motoragent","muggenbult","narcotica-agent","NAVO-bondgenoot","negerhut","nepagent","nugget","ondergebit","onderwijsbudget","onderwijsmanagement","onderzoeksbudget","onderzoeksgerecht","on-en-minvermogenkaart","ongevallenwet","onteigeningswet","orgelconcert","orgeldocent","orgelkast","overheidsbudget","overheidsmanagement","overnamegevecht","overnemingsgevecht","paardengebit","passagebiljet","pastagerecht","persagent","personeelsbudget","personeelsmanagement","plaggenhut","ploegentijdrit","pluimgewicht","politiebudget","polsgewricht","postzegelformaat","prestigeproject","prins-regent","procesmanagement","productiebudget","projectmanagement","pseudovogelpest","publiciteitsagent","raffinageproduct","reclamebudget","reegeit","regeerambt","regelzucht","regenboogtricot","regenput","regent","regentaat","regenwaterput","regeringsapparaat","regeringsbesluit","regeringsbudget","regeringskrant","regeringsrapport","regeringssoldaat","reisagent","reisbudget","restauratiebudget","rijksbudget","rijstgerecht","risicomanagement","röntgenapparaat","ruggenmergsvocht","rundergehakt","scharniergewricht","scheidsgerecht","schijngevecht","schimmengevecht","schoolagent","schoolbegeleidingsdienst","schoolgenoot","schoolwijkagent","schoudergewricht","sergeant","slangenbeet","slangenhout","slingerplant","slowfoodgerecht","soortgenoot","spiegelgevecht","spiegelkast","spiegelruit","spiegelschrift","spiegeltent","spinazienugget","sportmanagement","spronggewricht","stagedocent","stageopdracht","stagerapport","stierengevecht","straatgevecht","streekgerecht","stressmanagement","studentenbudget","subsidiebudget","taalgenoot","tafelgenoot","tafelgenot","teamgeest","tegenargument","tegeneffect","tegenkracht","tentoonstellingsbudget","tijdgeest","tijdgenoot","tijdmanagement","tijdsgewricht","tijgerpunt","timemanagement","titanengevecht","titelgevecht","topdirigent","topmanagement","totaalbudget","totaalgewicht","tweegevecht","tweevingertest","twintigeurobiljet","undercoveragent","urgentierecht","veiligheidsagent","veiligheidsarrangement","veiligheidsmanagement","vijftigeurobiljet","vingerplant","visgerecht","visnugget","vleesgerecht","vleugelboot","vliegenkast","vliegerfeest","vluchtelingenrecht","vluchtelingentransport","VN-gezant","vogelmarkt","vogeltjesmarkt","vogelvangst","vogelvlucht","volksgericht","voorlichtingsbudget","vrachtwagenfabrikant","vrachtwagenmarkt","vragersmarkt","vredegerecht","vreemdelingenangst","vreemdelingenbesluit","vreemdelingendebat","vreemdelingenrecht","vreemdelingenstemrecht","vuistgevecht","vuurgevecht","watergeest","watergevecht","watermanagement","wegenbouwproject","wereldtitelgevecht","werkgelegenheidseffect","werkgelegenheidsproject","werkingsbudget","wervelgewricht","wetenschapsbudget","wetgevingsproject","wintergerst","wintergezicht","wrevelagent","zadelgewricht","zagevent","zanger-componist","zanger-gitarist","zangerscast","zangvogelsport","zeegevecht","zegelrecht","zegetocht","zelfmanagement","ziekenhuisbudget","zwangerschapstest","goedgevuld","aangebrand","welgevuld","afgeborsteld","donkergekleurd","goedgevormd","welgevormd","allesverzengend","bontgekleurd","doorgewinterd","goedgehumeurd","goedgeluimd","goedgezind","haatdragend","kegeldragend","lichtgekleurd","nagelbijtend","ongekleurd","ongemanierd","ongeverfd","rentedragend","risicodragend","roodgekleurd","slechtgehumeurd","slechtgezind","vruchtdragend","welgemanierd","welgezind","welopgevoed","woldragend","zaaddragend","zorgdragend","aanbodgestuurd","aangehuwd","aangetekend","aangetrouwd","aanliggend","aanmatigend","aanvoegend","achtereenvolgend","achterliggend","afgewend","allesdoordringend","allesvernietigend","alleszeggend","almogend","alvermogend","angstaanjagend","bijstandsgerechtigd","bloeddrukverhogend","bloeddrukverlagend","bloemdragend","braakliggend","brandvertragend","breedgerand","brildragend","cholesterolverlagend","christelijk-gereformeerd","computergestuurd","diepliggend","doodgemoedereerd","doordringend","doorslaggevend","dreigend","drempelverlagend","dringend","dwingend","eerstvolgend","eierleggend","Engelssprekend","ergerniswekkend","felgekleurd","godtergend","goedgekleed","goedgemanierd","goudgerand","grensverleggend","handenwringend","hemeltergend","hiernavolgend","hogergenoemd","hoogdringend","hoopgevend","indringend","ingebeeld","ingekankerd","ingekeerd","ingenaaid","ingewikkeld","ingeworteld","intrigerend","knoldragend","kogelwerend","laaggeletterd","leidinggevend","levensbedreigend","levensbeëindigend","levensverlengend","lichtgevend","lichtgewond","liggend","losliggend","maatgevend","meedogend","minvermogend","moedgevend","naastliggend","navolgend","neerbuigend","niet-geleidend","nietszeggend","normgevend","oergezond","omliggend","onaangediend","onbevredigend","ondergewaardeerd","onderliggend","ondeugend","ongeaccepteerd","ongeanimeerd","ongearticuleerd","ongeautoriseerd","ongecensureerd","ongeciviliseerd","ongeclausuleerd","ongecompliceerd","ongeconcentreerd","ongeconditioneerd","ongecontroleerd","ongecoördineerd","ongecorrigeerd","ongecultiveerd","ongedateerd","ongedefinieerd","ongedifferentieerd","ongediplomeerd","ongedisciplineerd","ongedoubleerd","ongeëmancipeerd","ongeëmotioneerd","ongeforceerd","ongefrankeerd","ongefundeerd","ongegeneerd","ongehavend","ongehonoreerd","ongeïdentificeerd","ongeïnformeerd","ongeïnspireerd","ongeïnteresseerd","ongekend","ongekwalificeerd","ongeleerd","ongelimiteerd","ongelinieerd","ongematteerd","ongemeend","ongemeubileerd","ongemonteerd","ongemotiveerd","ongemotoriseerd","ongenuanceerd","ongeoefend","ongeopend","ongeordend","ongeorganiseerd","ongepaneerd","ongepermitteerd","ongeprepareerd","ongepubliceerd","ongeraffineerd","ongerealiseerd","ongeregistreerd","ongereglementeerd","ongereguleerd","ongesigneerd","ongespecificeerd","ongestoffeerd","ongestructureerd","ongestudeerd","ongesubsidieerd","ongevaccineerd","ongewapend","onsamenhangend","onuitgenodigd","onuitgevoerd","onvermogend","onwelgezind","opeenvolgend","opvliegend","opvolgend","orthodox-gereformeerd","overtuigend","overwegend","overweldigend","plaatsvervangend","prangend","raadgevend","redengevend","rentegevend","rolbevestigend","roodgeverfd","rustgevend","samenhangend","schermdragend","schrikaanjagend","slechtgekleed","sneldrogend","statusverhogend","stilzwijgend","supergezond","tegemoetkomend","tergend","toegevend","toonaangevend","tussenliggend","uitdagend","uitgekiend","uitgeregend","uitgerekend","uitnodigend","vakoverstijgend","veelzeggend","vigerend","vleesvervangend","vliegend","volgend","voorbijgestreefd","vraaggestuurd","vreesaanjagend","Wajonggerechtigd","waterbergend","watergekoeld","welgekend","welgemeend","werkgelegenheidsbevorderend","wetgevend","winstgevend","witgehandschoend","witgepleisterd","witgeschilderd","witgeverfd","zelfcorrigerend","zelfdragend","zelfreinigend","zelfvernietigend","zelfverzorgend","zieltogend","zingevend","zoetgeurend","zogenaamd","zogenoemd","zwaargehavend","zwaargewapend","zwaargewond","zwaarwegend","zwartgeverfd","zwijgend","doelgericht","ontwikkelingsgericht","zwartgerokt","arbeidsmarktgericht","functiegericht","goedgemutst","kindgericht","aanbodgericht","aangedampt","actiegericht","arbeidsongeschikt","brongericht","buurtgericht","cliëntgericht","competentiegericht","consumentgericht","divergent","doelgroepgericht","doodongerust","effectgericht","ervaringsgericht","exportgericht","groepsgericht","ingemaakt","ingeroest","innovatiegericht","intelligent","klantgericht","kortgerokt","maatschappijgericht","marktgericht","mensgericht","nagelvast","natuurgericht","niet-gericht","ongekuist","ongericht","onuitgebracht","onuitgepakt","onuitgewerkt","oplossingsgericht","persoonsgericht","praktijkgericht","prestatiegericht","probleemgericht","procesgericht","productgericht","publieksgericht","resultaatgericht","roodgelakt","taakgericht","themagericht","toekomstgericht","toepassingsgericht","vakgericht","voortgezet","vraaggericht","wijkgericht","witgekalkt","witgelakt","zelfgemaakt","zwartgelakt","morgennacht","negenduizend","negenentwintigduizend","negenhonderd","negenhonderdduizend","negentienduizend","negentienhonderd","negentigduizend","morgenochtend","desgevallend","morgenavond","zogezegd","nergensland","ontbijtbord","onthaalbeleid","onthaalkind","ontmoedigingsbeleid","ontmoetingsavond","ontwapeningsakkoord","ontwerpakkoord","ontwerplandbouwakkoord","ontwerpwedstrijd","ontwikkelingsbeleid","ontwikkelingshulpbeleid","ontwikkelingsland","ontbeend","ontbrekend","onthullend","onthutsend","ontkennend","ontluisterend","ontoereikend","ontslagnemend","ontsmettend","ontspannend","ontstekingsremmend","ontstellend","ontwapenend","ontwijkend","ontwikkeld","ontzagwekkend","ontzettend","ontbijt","onthardingszout","ontzet","ontbijtbuffet","ontbindingsrecht","ontdekkingstocht","onterecht","ontkoppelingsbesluit","ontmijningsdienst","ontslagbesluit","ontslagdecreet","ontslagrecht","ontvangst","ontwerpbesluit","ontwerpfout","ontwerpgrondwet","ontwerpopdracht","ontwerprapport","ontwerpwet","ontwikkelingspot","ontwikkelingsproject","herdershond","herenakkoord","herenblad","herfstavond","herfstblad","herfstdraad","herfstmaand","herfstochtend","herfstwind","herkeuringsraad","heroïnehond","herseninhoud","herstelbeleid","hervormingsbeleid","herfst","hermafrodiet","hert","heraut","herfstlucht","heraanplant","herdenkingsbijeenkomst","herdenkingsconcert","herdenkingsfeest","heremietkreeft","herfstnacht","herfsttint","herinneringskunst","herkomst","heroïnespuit","heroïnetransport","heroïnevangst","herroepingsrecht","hersenkracht","hersenvlucht","hersenvocht","hersteldienst","herstelrecht","hervormingsproject","erwt","ernst","erbovenuit","ereambt","eregast","erepunt","erfenisrecht","erfrecht","ergotherapeut","ernaast","eronderuit","eropuit","ertussenuit","eruit","ervanuit","erytrocyt","eredivisiewedstrijd","erelid","erfgoedbeleid","erkenningsbeleid","errond","ervaringswereld","gebaart","gebeurt","gebiedt","gebood","gedenkt","gedraagt","geeuwt","gehoorzamt","geilt","geldt","geelt","gelooft","geneest","geniet","genoot","gerust","geurt","geeft","besnuffelt","bedeelt","bedelt","bekeert","beugelt","beamt","beantwoordt","beargumenteert","beatblogt","becijfert","becommentariërt","beconcurreert","bedaart","bedelft","bedenkt","bederft","bedient","bediscussiërt","bedoelt","bedraagt","bedreigt","bedriegt","bedrijft","bedroeft","bedwingt","beëindigt","beeldbelt","beetneemt","beft","begaat","begeleidt","begeert","begeeft","begint","begraaft","begrijpt","begroeit","behaalt","behandelt","behangt","beheert","behoedt","behoeft","behoort","behoudt","beïnvloedt","bekent","bekeurt","bekijkt","beklaagt","bekleedt","beklemt","beklimt","bekomt","bekritiseert","bekroont","belandt","beledigt","belegt","belemmert","beleeft","belt","beloont","belooft","belparkeert","beluistert","bemeesteert","bemeubelt","bemoedigt","bemoeit","benadert","benauwt","beneemt","bengelt","benieuwt","benoemt","beogt","beoordeelt","bepaalt","bepoteelt","bereidt","berekent","berooft","beschaamt","beschaaft","beschermt","beschildert","beschouwt","beschrijft","beschuldigt","beslaat","besloot","besnijdt","bespaart","bespeurt","bespioneert","bespreekt","bespringt","bestaat","bestempelt","bestrijdt","bestreed","bestudeert","bestuurt","beswaffeelt","betekent","betert","betont","betonneert","betovert","betreedt","betreft","betrekt","betreurt","betwijfelt","beult","bevalt","beeft","bevindt","bevoordeliigt","bevordert","bevraagt","bevriest","bewapent","beweert","bewijst","bewondert","bewoont","bewonersparkeert","bezaait","bezeert","beziet","bezat","bezoekt","bezorgt","bezuinigt","bezweert","verlaat","verliet","verschaalt","verspringt","vertelt","veraangenaamt","verabsoluteert","verachtvoudiigt","veradeemt","verafgoodt","verafschuwt","veralgemeent","verandert","verankert","verantwoordt","verarmt","verbabbelt","verbaliseert","verbant","verbaast","verbeeldt","verbeidt","verbergt","verbetert","verbeuzelt","verbiedt","verbood","verbijstert","verbindt","verblijft","verblindt","verbouwt","verbrandt","verbreekt","verdappert","verdedigt","verdeelt","verdenkt","verdient","verdort","verdooft","verdraait","verdraagt","verdrijft","verdringt","verdrinkt","verdroogt","verdubbelt","verdwaalt","verdwijnt","vereenvoudigt","vet","verenigt","vereert","vergaat","vergadeert","vergelijkt","vergt","vergeet","vergat","vergeeft","vergiftigt","vergoedt","vergrendelt","verhaalt","verhangt","verheldert","verheugt","verhindert","verhoogt","verhongert","verhoudt","verhuist","verhuurt","verifiërt","verjaagt","verkent","verkeert","verkiest","verklaart","verkleedt","verkleint","verkleurt","verknoeit","verkoopt","verkreukelt","verkrijgt","verlaagt","verlamt","verlangt","verleidt","verleent","verlengt","verliest","verloocheent","verloopt","verlooft","verluiert","verlummelt","vermagert","vermaalt","vermangelt","vermeldt","vermengt","vermenigvuldigt","vermijdt","vermindert","vermoedt","vermoeit","vermolmt","vermomt","vermoordt","vernauwt","verneemt","vernevelt","vernielt","vernietigt","vernieuwt","vernikkelt","vernoemt","vernummert","veronaangenaamt","veronachtzaamt","veronderstelt","verontheiliigt","verontreinigt","verontschuldigt","veroordeelt","veroorlooft","verootmoediigt","veropenbaart","verordonneert","verovert","verpandt","verpaupert","verpietert","verplegt","verplettert","verpulvert","verraadt","verried","verrechtvaardiigt","verregeent","verreist","verrekeent","verrijdt","verrijst","verroert","verrolt","verronselt","verruigt","verruilt","verruuwt","verscheurt","verschijnt","verschilt","verschimmelt","verschoont","verschraalt","verschrijft","verschroeit","verschrompelt","verschuilt","versiert","versimpelt","versjachert","versjouwt","verslaat","verslechtert","versleutelt","verslijt","versleet","verslindt","verslond","versluiert","versluist","versmaadt","versmalt","versmoort","versnelt","versnijdt","versnippert","versobert","versoepelt","versombert","verspeelt","verspeent","verspert","verspiedt","verspilt","verspint","versplintert","verspreidt","verstaat","verstond","verstaalt","verstart","verstelt","versteent","versterft","versteviigt","verstijft","verstilt","verstomt","verstoort","verstoot","verstiet","verstouwt","verstramt","verstrengt","verstrijkt","verstrooit","verstuift","verstuurt","verstuuwt","versuikert","versukkelt","vertaalt","vertedert","vertegenwoordigt","vertekeent","verteert","vertienvoudiigt","vertilt","vertimmert","vertint","vertoeft","vertoont","vertoornt","vertraagt","vertreedt","vertroebelt","vertroetelt","vertrouwt","vertwijfelt","vervaagt","vervaalt","vervalt","vervangt","vervelt","verft","verveent","verviervoudiigt","vervijfvoudiigt","vervliegt","vervloeit","vervluchtiigt","vervoedeert","vervoegt","vervoert","vervolgt","vervollediigt","vervordert","vervormt","vervreemdt","vervroegt","vervuilt","vervult","verwaait","verwaardiigt","verwaarloost","verwarmt","verwart","verwaseemt","verwatert","verwedt","verwelkoomt","verweert","verwerpt","verwerft","verweeft","verwijdt","verwijdert","verwijlt","verwijft","verwikkelt","verwildert","verwint","verwintert","verwisselt","verwittiigt","verwondt","verwondert","verwoont","verwoordt","verwringt","verwurgt","verzaagt","verzandt","verzegelt","verzegt","verzeilt","verzekert","verzelfstandiigt","verzendt","verzengt","verzesvoudiigt","verzilvert","verzinnebeeldt","verzint","verzoekt","verzoent","verzoolt","verzuilt","verzuurt","verzusteert","verzwagert","verzwaart","verzwelgt","verzwendelt","verzweert","verzwijgt","ontbiedt","ontbood","ontbeet","ontbindt","ontbolstert","ontbraamt","ontbreekt","ontcijfert","ontdoet","ontdeed","ontdooit","ontdubbelt","onteert","onterft","ontgaat","ontgeldt","ontglijdt","ontgloeit","ontgraaft","ontgrendelt","ontgroeit","ontgroent","onthaalt","onthalst","onthardt","onthaart","ontheft","ontheiligt","onthoofdt","onthoudt","onthield","onthult","ontkent","ontketeent","ontkiemt","ontkleurt","ontkoomt","ontkoppelt","ontlaadt","ontleent","ontleert","ontloopt","ontluist","ontmengt","ontmijnt","ontmoedigt","ontmythologiseert","ontneemt","ontradicaliseert","ontroert","ontrommeelt","ontruimt","ontslaat","ontspant","ontspult","ontstaat","ontstond","ontsteekt","ontvangt","ontvoert","ontvolgt","ontvoogdt","ontvriendt","ontvriest","ontwerpt","ontwijkt","ontwikkelt","ontzwavelt","herdenkt","herdacht","ergert","ekent","eruitzit","ervaart","erft"],X=["aaneengedraaid","aaneengeschakeld","aanschouwd","aanvaard","achtergebleven","achtergelaten","achterhaald","achteromgekeken","achteropgekomen","achteruitgegaan","achtervolgd","ademgehaald","bedolven","bedongen","bedorven","bedragen","bedreven","bedrogen","bedropen","bedwongen","beetgenomen","begeven","begonnen","begraven","begrepen","behangen","behouden","bekeken","beklommen","bekomen","bekropen","beleden","belezen","benomen","beraden","beschenen","beschoten","beschreven","beslagen","beslopen","besloten","besneden","besproken","besprongen","bestegen","bestolen","bestorven","bestreden","bestreken","betreden","betroffen","betrokken","bevallen","bevochten","bevolen","bevonden","bevroren","bewezen","bewogen","bezeten","bezien","beziggehouden","bezonnen","bezweken","bezworen","bijeengehouden","bijeengeroepen","blootgelegd","blootgesteld","bovengehaald","brandgesticht","buitengesloten","buitgemaakt","deelgenomen","dichtgebonden","dichtgedaan","diepgevroren","doodgegaan","doorbladerd","doorboord","doorbroken","doordacht","doordrongen","doorgrond","doorkruist","doorlopen","doorsneden","doorstaan","doorverteld","doorzien","doorzocht","drooggelegd","dwarsgezeten","ervaren","flauwgevallen","gebakken","gebannen","gebarsten","gebeden","gebersten","gebeten","geblazen","gebleken","gebleven","geblonken","geboden","gebogen","gebonden","geboren","geborgen","geborsten","gebraden","gebroken","gebrouwen","gedaan","gedoken","gedolven","gedongen","gedragen","gedreten","gedreven","gedrongen","gedronken","gedropen","gedwongen","gefloten","gegeten","gegeven","gegleden","geglommen","gegolden","gegoten","gegraven","gegrepen","gehangen","gehesen","geheven","geholpen","gehouden","gehouwen","gekeken","geklommen","geklonken","gekloven","geknepen","gekomen","gekorven","gekozen","gekregen","gekresen","gekreten","gekrompen","gekrooien","gekropen","gekunnen","gekweten","gelachen","geladen","gelaten","geleden","gelegen","geleken","gelezen","gelogen","geloken","gelopen","gemalen","gemeden","gemeten","gemoeten","gemogen","gemolken","genegen","genezen","genomen","genoten","geprezen","geraden","gereden","geregen","gereten","gerezen","geroepen","geroken","geschapen","gescheiden","geschenen","gescheten","gescholden","gescholen","geschonden","geschonken","geschoren","geschoten","geschoven","geschreden","geschreven","geschrokken","geslagen","geslapen","geslepen","gesleten","geslonken","geslopen","gesloten","gesmeten","gesmolten","gesneden","gesnoten","gesnoven","gespannen","gespeten","gespleten","gesponnen","gespoten","gesproken","gesprongen","gesproten","gestegen","gestoken","gestolen","gestonken","gestoten","gestoven","gestreden","gestreken","getreden","getroffen","getrokken","gevallen","gevangen","gevangengenomen","gevaren","gevezen","gevlochten","gevloden","gevlogen","gevloten","gevochten","gevonden","gevouwen","gevreten","gevroren","gewassen","geweken","geweten","geweven","gewezen","gewogen","gewonden","gewonnen","geworden","geworpen","geworven","gewoven","gewreten","gewreven","gewrongen","gezegen","gezeken","gezeten","gezien","gezoden","gezogen","gezonden","gezongen","gezonken","gezonnen","gezopen","gezouten","gezwegen","gezwolgen","gezwollen","gezwommen","gezwonden","gezworen","gezworven","hardgelopen","herladen","hernomen","herwonnen","herzien","huisgehouden","kennisgemaakt","klaargekomen","kortgesloten","kwaadgesproken","kwijtgeraakt","kwijtgescholden","langsgekomen","leeggelopen","leeggemaakt","lesgegeven","liefgehad","lipgelezen","meebetaald","misbruikt","misleid","mislukt","misprezen","nabewerkt","nedergedaald","omarmd","omfloerst","omhelsd","omkleed","omklemd","ommuurd","omringd","omschreven","omsingeld","omsloten","omvat","omvergeworpen","omwikkeld","omwonden","omzeild","omzoomd","omzworven","onderbouwd","onderbroken","onderdrukt","ondergaan","ondergraven","onderhandeld","onderhouden","onderkend","ondermijnd","ondernomen","onderscheiden","onderschept","ondersteund","onderstreept","ondertekend","onderverdeeld","ondervonden","ondervraagd","onderwezen","onderworpen","onderzocht","ontbeten","ontboden","ontbonden","ontbroken","ontdoken","ontgonnen","onthouden","ontkomen","ontladen","ontloken","ontlopen","ontnomen","ontraden","ontslagen","ontsloten","ontspannen","ontsprongen","ontsproten","ontstoken","onttrokken","ontvangen","ontweken","schoongemaakt","schoongewassen","stilgestaan","tandengepoetst","tegemoetgekomen","teleurgesteld","teloorgegaan","terechtgekomen","terechtgesteld","teweeggebracht","thuisbezorgd","thuisgekomen","toebehoord","toevertrouwd","tussengekomen","tussengeworpen","uitbesteed","uitbetaald","uitvergroot","uitverkocht","valsgespeeld","verbannen","verbleven","verboden","verbogen","verbonden","verborgen","verbroken","verdragen","verdreven","verdrongen","verdronken","verdroten","verdwenen","vergeleken","vergeten","vergeven","vergleden","vergolden","vergoten","vergrepen","verhangen","verheven","verholpen","verhouden","verkozen","verkregen","verladen","verlaten","verlopen","verloren","vermeden","vermogen","vernomen","verraden","verrezen","verscheiden","verschenen","verscholen","verschoten","verschoven","verschreven","verschrokken","verslagen","verslapen","versleten","verslonden","versmolten","verstoten","verstreken","vertrokken","vervallen","vervangen","vervlogen","verweten","verweven","verwezen","verworpen","verworven","verwrongen","verzonden","verzonken","verzonnen","verzopen","verzouten","verzwonden","volbracht","voldaan","voleindigd","volhard","volmaakt","volstaan","voltooid","voltrokken","voorbehouden","voorkomen","voorspeld","voorzien","wederhaald","weergalmd","weerhouden","weerkaatst","weerlegd","weerstaan"],{getWords:Z,matchRegularParticiples:ee}=n.languageProcessing,{directPrecedenceException:re,values:ne}=n.languageProcessing,{Clause:te}=ne,{getClausesSplitOnStopWords:oe,createRegexFromArray:de}=n.languageProcessing,ae={Clause:class extends te{constructor(e,r){super(e,r),this._participles=function(e){const r=Z(e),n=[/^(ge|be|ont|ver|her|er)\S+([dt])($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi,/^(aan|af|bij|binnen|los|mee|na|neer|om|onder|samen|terug|tegen|toe|uit|vast)(ge)\S+([dtn])($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi];return r.filter((e=>0!==ee(e,n).length||(0,K.includes)(X,e)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getParticiples().filter((e=>!(0,K.includes)(Q,e)&&!this.hasNonParticipleEnding(e)&&!re(this.getClauseText(),e,q)));this.setPassive(e.length>0)}hasNonParticipleEnding(e){return/\S+(heid|teit|tijd)($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi.test(e)}},regexes:{auxiliaryRegex:de(["word","wordt","worden","werd","werden","wordend"]),stopwordRegex:de(G)}};function le(e){return oe(e,ae)}const{exceptionListHelpers:{checkIfWordEndingIsOnExceptionList:se,checkIfWordIsOnListThatCanHavePrefix:ie}}=n.languageProcessing;function ge(e,r){const n=r.find((r=>-1!==e.search(new RegExp(r[0]))));return void 0!==n&&(e=e.replace(new RegExp(n[0]),n[1])),e}function be(e,r,n){const t=ie(e,r.getVowelDoubling,n),o=function(e,r,n){if(se(e,r.endingMatch)||ie(e,r.verbs,n)||r.exactMatch.includes(e))return!0}(e,r.noVowelDoubling,n),d=function(e){return e.charAt(e.length-4)!==e.charAt(e.length-3)}(e),a=function(e,r){return-1===e.search(new RegExp(r))}(e,r.noVowelDoubling.rule);return t||!o&&d&&a}const ve=function(e){let r=e.search(/[aeiouyèäüëïöáéíóú][^aeiouyèäüëïöáéíóú]/);return-1!==r&&(r+=2),-1!==r&&r<3&&(r=3),r},ue=function(e,r,n,t){const o=function(e,r,n){const t=Object.entries(r);for(const r of t){const t=r[1].suffixes.find((r=>new RegExp(r).exec(e)));if(t){const o=new RegExp(t).exec(e),d=o[o.length-1],a=e.lastIndexOf(d);if(-1!==n&&a>=n)return{suffixIndex:a,stemModification:r[1].stemModification}}}}(e,r,n);return void 0!==o&&(e=function(e,r,n,t,o){return"hedenToHeid"===t?ge(e,o.regularStemmer.stemModifications.hedenToHeid):(e=e.substring(0,n),"changeIedtoId"===t?ge(e,o.regularStemmer.stemModifications.iedToId):"changeInktoIng"===t&&e.endsWith("ink")?ge(e,o.regularStemmer.stemModifications.inkToIng):"vowelDoubling"===t&&be(e,o.regularStemmer.stemModifications.exceptionsStemModifications,o.pastParticipleStemmer.compoundVerbsPrefixes)?ge(e,o.regularStemmer.stemModifications.doubleVowel):e)}(e,0,o.suffixIndex,o.stemModification,t)),e},ce=function(e,r,n,t){const o=Object.entries(r);for(const r of o)e=ue(e,r[1],n,t);return e},{regexHelpers:{searchAndReplaceWithRegex:he,doesWordMatchRegex:me},exceptionListHelpers:{checkIfWordEndingIsOnExceptionList:we,checkIfWordIsOnListThatCanHavePrefix:ke}}=n.languageProcessing,pe=function(e,r,n){if(me(n,r[0])){const t=n.replace(new RegExp(r[0]),r[1]);if(be(t,e.regularStemmer.stemModifications.exceptionsStemModifications,e.pastParticipleStemmer.compoundVerbsPrefixes)){return he(t,e.regularStemmer.stemModifications.doubleVowel)||t}return t}return null},fe=function(e,r){const n=r.ambiguousTAndDEndings.tOrDArePartOfStem;let t=he(e,n.firstTOrDPartOfStem);if(t)return t;if(n.verbsDenShouldBeStemmed.includes(e))return e.slice(0,-3);if(we(e,n.wordsStemOnlyEnEnding.endingMatch)||ke(e,n.wordsStemOnlyEnEnding.verbs,r.pastParticipleStemmer.compoundVerbsPrefixes)||me(e,n.denEnding)){if(t=e.slice(0,-2),be(t,r.regularStemmer.stemModifications.exceptionsStemModifications,r.pastParticipleStemmer.compoundVerbsPrefixes)){return he(t,r.regularStemmer.stemModifications.doubleVowel)||t}return t}const o=n.deEnding;if(t=pe(r,o,e),t)return t;const d=n.teAndTenEndings;return t=pe(r,d,e),t||null};function ye(e,r){if(we(r,e.ambiguousTAndDEndings.wordsTShouldBeStemmed))return r.slice(0,-1);if(me(r,e.ambiguousTAndDEndings.tOrDArePartOfStem.tEnding))return r;return fe(r,e)||null}const{flattenSortLength:je}=n.languageProcessing,ze=function(e,r,n){const t=je(n).find((r=>e.startsWith(r)));"string"==typeof t&&(e=e.slice(t.length));for(let n=0;n1?n+t[0]:t[0]}}return null},Se=function(e,r){for(let n=0;nt.startsWith(e))).some((e=>!0===e))&&t.endsWith("end")&&!r.includes(t)?ge(t.slice(0,-3),n):null};function Ve(e,r){if(r.endsWith("heid")||r.endsWith("teit")||r.endsWith("tijd")||Q.includes(r))return"";if(Te(e.pastParticipleStemmer.inseparableCompoundVerbsNotToBeStemmed,r))return r;let n=Me(e,r);return n||(n=Fe(e.pastParticipleStemmer.inseparableCompoundVerbs,r),n||(n=Ie(e.pastParticipleStemmer.compoundVerbsPrefixes.inseparable,e.pastParticipleStemmer.pastParticiplesEndingOnEnd,e.regularStemmer.stemModifications.finalChanges,r),n||(n=Oe(e,r),n||null)))}const{exceptionListHelpers:{checkIfWordEndingIsOnExceptionList:Ae,checkIfWordIsOnListThatCanHavePrefix:De},stemHelpers:{removeSuffixFromFullForm:Ce,removeSuffixesFromFullForm:Re}}=n.languageProcessing,Ne=function(e,r){let n=function(e,r){for(const n of e.stemExceptions.removeSuffixesFromFullForms){const e=Re(n.forms,n.suffixes,r);if(e)return e}for(const n of e.stemExceptions.removeSuffixFromFullForms){const e=Ce(n.forms,n.suffix,r);if(e)return e}}(r,e);return n?be(n,r.regularStemmer.stemModifications.exceptionsStemModifications,r.pastParticipleStemmer.compoundVerbsPrefixes)?(n=ge(n,r.regularStemmer.stemModifications.doubleVowel),ge(n,r.regularStemmer.stemModifications.finalChanges)):ge(n,r.regularStemmer.stemModifications.finalChanges):null};const{exceptionListHelpers:{checkIfWordEndingIsOnExceptionList:Le,checkIfWordIsOnListThatCanHavePrefix:He}}=n.languageProcessing,$e=function(e,r,n){const t=e.stemExceptions.wordsNotToBeStemmedExceptions,o=e.stemExceptions.removeSuffixesFromFullForms[1].forms,d=e.ambiguousTAndDEndings.tOrDArePartOfStem.doNotStemTOrD;if(Ve(e,n)||ye(e,n)||He(n,t.verbs,e.pastParticipleStemmer.compoundVerbsPrefixes)||Le(n,t.endingMatch)||t.exactMatch.includes(n)||o.includes(r)||Pe(e,n)||r.endsWith("heid")||Le(r,d))return!0};function qe(e,r,n){return $e(e,r,n)?null:r.slice(0,-1)}const{flattenSortLength:_e,exceptionListHelpers:{checkExceptionListWithTwoStems:Ge}}=n.languageProcessing,Je=function(e,r){for(const n of Object.keys(e))for(const t of e[n]){const e=(0,K.flatten)(Object.values(t));if(e.includes(r))return e[0]}},{baseStemmer:Ue}=n.languageProcessing;function Ye(e){const r=(0,K.get)(e.getData("morphology"),"nl",!1);return r?e=>function(e,r){const n=function(e,r){let n=Pe(r,e);if(n)return n;if(n=Ve(r,e),n)return n;const t=r.stemExceptions.wordsNotToBeStemmedExceptions;if(De(e,t.verbs,r.pastParticipleStemmer.compoundVerbsPrefixes)||Ae(e,t.endingMatch)||t.exactMatch.includes(e))return e;const o=r.ambiguousTAndDEndings.otherTAndDEndings;for(const t of o)if(e.endsWith(t)&&(n=ye(r,e),n))return n;return n=Ne(e,r),n||function(e,r){e=ge(e,r.regularStemmer.stemModifications.IAndYToUppercase);const n=ve(e),t=r.regularStemmer.suffixes;return ge(e=ce(e,t,n,r),r.regularStemmer.stemModifications.finalChanges)}(e,r)}(e,r);let t=Ge(r.stemExceptions.stemmingExceptionsWithMultipleStems.stemmingExceptionsWithTwoStems,n);if(t)return t;if(t=function(e,r){let n=_e(e.pastParticipleStemmer.compoundVerbsPrefixes).find((e=>r.startsWith(e))),t="";e.stemExceptions.stemmingExceptionsWithMultipleStems.strongAndIrregularVerbs.doNotStemPrefix.find((e=>r.endsWith(e)))?n=null:n&&(t=r.slice(n.length,r.length),t.length>2?r=t:n=null);const o=e.stemExceptions.stemmingExceptionsWithMultipleStems.strongAndIrregularVerbs.strongVerbStems,d=[o.irregularStrongVerbs,o.regularStrongVerbs,o.bothRegularAndIrregularStrongVerbs];for(let e=0;e{"use strict";var a={d:(t,i)=>{for(var e in i)a.o(i,e)&&!a.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:i[e]})},o:(a,t)=>Object.prototype.hasOwnProperty.call(a,t),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},t={};a.r(t),a.d(t,{default:()=>ha});const i=window.yoast.analysis,e=["il","lo","la","i","gli","le","uno","un","una","due","tre","quattro","cinque","sei","sette","otto","nove","dieci","questo","questa","quello","quella","questi","queste","quelli","quelle","codesto","codesti","codesta","codeste"],r=["abbastanza","acciocché","acciocchè","adesso","affinché","affinchè","allora","almeno","alquanto","altrettanto","altrimenti","analogamente","anche","ancora","antecedentemente","anzi","anzitutto","apertamente","appena","assai","attualmente","benché","benchè","beninteso","bensì","brevemente","bruscamente","casomai","celermente","certamente","certo","chiaramente","ciononostante","cioé","cioè","comparabilmente","come","complessivamente","completamente","comunque","concisamente","concludendo","conformemente","congiuntamente","conseguentemente","considerando","considerato","considerevolmente","contemporaneamente","continuamente","contrariamente","controbilanciato","così","cosicché","cosicchè","dapprima","dato","davvero","definitivamente","dettagliatamente","differentemente","diversamente","dopo","dopodiché","dopodichè","durante","dunque","eccetto","eccome","effettivamente","egualmente","elencando","enfaticamente","eppure","esaurientemente","esplicitamente","espressamente","estesamente","evidentemente","finalmente","finché","finchè","fino","finora","fintanto","fintanto che","fintantoché","fintantochè","fondamentalmente","frattanto","frequentemente","generalmente","già","gradualmente","illustrando","immantinente","immediatamente","importantissimo","incontestabilmente","incredibilmente","indipendentemente","indiscutibilmente","indubbiamente","infatti","infine","innanzitutto","innegabilmente","inoltre","insomma","intanto","interamente","istantaneamente","invece","logicamente","lentamente","ma","malgrado","marcatamente","memorabile","mentre","motivatamente","naturalmente","né","nè","neanche","neppure","nonché","nonchè","nondimeno","nonostante","notevolmente","occasionalmente","oltretutto","onde","onestamente","ossia","ostinatamente","ovvero","ovviamente","parimenti","particolarmente","peraltro","perché","perchè","perciò","perlomeno","però","pertanto","pesantemente","piuttosto","poi","poiché","poichè","praticamente","precedentemente","preferibilmente","precisamente","prematuramente","presto","prima","primariamente","primo","principalmente","prontamente","proporzionalmente","pure","purché","purchè","quando","quanto","quantomeno","quindi","raramente","realmente","relativamente","riassumendo","riformulando","ripetutamente","saltuariamente","schiettamente","sebbene","secondariamente","secondo","sempre","sennò","seguente","sensibilmente","seppure","seriamente","siccome","sicuramente","significativamente","similmente","simultaneamente","singolarmente","sinteticamente","solitamente","solo","soltanto","soprattutto","sopravvalutato","sorprendentemente","sostanzialmente","sottolineando","sottovalutato","specialmente","specificamente","specificatamente","subitamente","subito","successivamente","successivo","talmente","terzo","totalmente","tranne","tuttavia","ugualmente","ulteriormente","ultimamente","veramente","verosimilmente","visto"],s=r.concat(["a breve","a causa","a causa di","a condizione che","a conseguenza","a conti fatti","a differenza di","a differenza del","a differenza della","a differenza dei","a differenza degli","a differenza delle","a dire il vero","a dire la verità","a dirla tutta","a dispetto di","a lungo","a lungo termine","a maggior ragione","a meno che non","a parte","a patto che","a prescindere","a prima vista","a proposito","a qualunque costo","a quanto","a quel proposito","a quel tempo","a quell'epoca","a questo fine","a questo proposito","a questo punto","a questo riguardo","a questo scopo","a riguardo","a seguire","a seguito","a sottolineare","a tal fine","a tal proposito","a tempo debito","a tutti gli effetti","a tutti i costi","a una prima occhiata","ad eccezione di","ad esempio","ad essere maliziosi","ad essere sinceri","ad ogni buon conto","ad ogni costo","ad ogni modo","ad una prima occhiata","adesso che","al che","al contrario","al contrario di","al fine di","al fine di fare","al giorno d'oggi","al momento","al momento giusto","al momento opportuno","al più presto","al posto di","al suo posto","al termine","all'epoca","all'infuori di","all'inizio","all'opposto","all'ultimo","alla fine","alla fine della fiera","alla luce","alla luce di","alla lunga","alla moda","alla stessa maniera","allo scopo di","allo stesso modo","allo stesso tempo","anch'esso","anch'io","anche se","ancora più","ancora di più","assumendo che","bisogna chiarire che","bisogna considerare che","causato da","ciò nondimeno","ciò nonostante","col tempo","con il tempo","come a dire","come abbiamo dimostrato","come è stato notato","come è stato detto","come è stato dimostrato","come hanno detto","come ho detto","come ho dimostrato","come ho notato","come potete notare","come potete vedere","come puoi notare","come puoi vedere","come si è dimostrato","come si può vedere","come si può notare","come sopra indicato","comunque sia","con attenzione","con enfasi","con il risultato che","con l'obiettivo di","con ostinazione","con questa intenzione","con questa idea","con queste idee","con questo in testa","con questo scopo","così che","così da","d'altra parte","d'altro canto","d'altro lato","d'altronde","d'ora in avanti","d'ora in poi","da allora","da quando","da quanto","da quel momento","da quella volta","da questo momento in poi","da questo momento","da qui","da ultimo","da un certo punto di vista","da un lato","da una parte","dall'altro lato","dall'epoca","dal che","dato che","dato per assunto che","davanti a","del tutto","dell'epoca","detto questo","di certo","di colpo","di conseguenza","di fatto","di fronte","di fronte a","di lì a poco","di punto in bianco","di quando in quando","di quanto non sia","di quel tempo","di qui a","di rado","di seguito","di si","di sicuro","di solito","di tanto in tanto","di tutt'altra pasta","di quando in quando","differente da","diversamente da","diverso da","dopotutto","dovuto a","e anche","e inoltre","entro breve","fermo restando che","faccia a faccia","fin da","fin dall'inizio","fin quando","finché non","finchè non","fin dal primo momento","fin dall'inizio","fino a","fino a questo momento","fino ad oggi","fino ai giorni nostri","fino adesso","fino a un certo punto","fino adesso","fra quanto","il prima possibile","in aggiunta","in altre parole","in altri termini","in ambo i casi","in breve","in caso di","in conclusione","in conformità","in confronto","in confronto a","in conseguenza","in considerazione","in considerazione di","in definitiva","in dettaglio","importante rendersi conto","in effetti","in entrambi i casi","in fin dei conti","in generale","in genere","in linea di massima","in poche parole","il più possibile","in maggior parte","in maniera analoga","in maniera convincente","in maniera esauriente","in maniera esaustiva","in maniera esplicita","in maniera evidente","in maniera incontestabile","in maniera indiscutibile","in maniera innegabile","in maniera significativa","in maniera simile","in modo allusivo","in modo analogo","in modo che","in modo convincente","in modo da","in modo identico","in modo notevole","in modo significativo","in modo significativo","in modo simile","in ogni caso","in ogni modo","in ogni momento","in parte considerevole","in parti uguali","in particolare","in particolare per","in particolare","in più","in pratica","in precedenza","in prima battuta","in prima istanza","in primo luogo","in rapporto","in qualche modo","in qualsiasi modo","in qualsiasi momento","in qualunque modo","in qualunque momento","in quarta battuta","in quarta istanza","in quarto luogo","in quel caso","in quelle circostanze","in questa occasione","in questa situazione","in questo caso","in questo caso particolare","in questo istante","in questo momento","in rare occasioni","in realtà","in seconda battuta","in seconda istanza","in secondo luogo","in seguito","in sintesi","in sostanza","in tempo","in terza battuta","in terza istanza","in terzo luogo","in totale","in tutto","in ugual maniera","in ugual misura","in ugual modo","in ultima analisi","in ultima istanza","in un altro caso","in una parola","in verità","insieme a","insieme con","invece che","invece di","la prima cosa da considerare","la prima cosa da tenere a mente","lo stesso","mentre potrebbe essere vero","motivo per cui","motivo per il quale","ne consegue che","ne deriva che","nei dettagli","nel caso","nel caso che","nel caso in cui","nel complesso","nel corso del","nel corso di","nel frattempo","nel lungo periodo","nel mentre","nell'eventualità che","nella misura in cui","nella speranza che","nella stessa maniera","nella stessa misura","nello specifico","nello stesso modo","nello stesso momento","nello stesso stile","non appena","non per essere maliziosi","non più da","nonostante ciò","nonostante tutto","ogni qualvolta","ogni tanto","ogni volta","oltre a","oltre a ciò","ora che","passo dopo passo","per causa di","per certo","per chiarezza","per chiarire","per come","per concludere","per conto di","per contro","per cui","per davvero","per di più","per dirla in altro modo","per dirla meglio","per dirla tutta","per es.","per esempio","per essere sinceri","per far vedere","per farla breve","per finire","per l'avvenire","per l'ultima volta","per la maggior parte","per la stessa ragione","per la verità","per lo più","per mettere in luce","per metterla in altro modo","per non dire di","per non parlare di","per ora","per ovvi motivi","per paura di","per paura dei","per paura delle","per paura degli","per prima cosa","per quanto","per questa ragione","per questo motivo","per riassumere","per sottolineare","per timore","per trarre le conclusioni","per ultima","per ultime","per ultimi","per ultimo","per via di","perché si","perchè si","perfino se","piano piano","più di ogni altra cosa","più di tutto","più facilmente","più importante","più tardi","poco a poco","poco dopo","prendiamo il caso di","presto o tardi","prima che","prima di","prima di ogni cosa","prima di tutto","prima o dopo","prima o poi","questo è probabilmente vero","questo potrebbe essere vero","restando inteso che","riassumendo","quanto prima","questa volta","se confrontato con","se e solo se","se no","seduta stante","sempreché","semprechè","sempre che","senz'altro","senza alcun riguardo","senza dubbio","senz'ombra di dubbio","senza ombra di dubbio","senza riguardo per","senza tregua","senza ulteriore ritardo","sia quel che sia","solo se","sotto questa luce","sperando che","sta volta","su tutto","subito dopo","sul serio","tanto per cominciare","tanto quanto","tra breve","tra l'altro","tra poco","tra quanto","tutte le volte","tutti insieme","tutto a un tratto","tutto ad un tratto","tutto d'un tratto","tutto considerato","tutto sommato","un passo alla volta","un tempo","una volta","una volta ogni tanto","unito a","va chiarito che","va considerato che","vada come vada","vale a dire","visto che"]);function o(a){let t=a;return a.forEach((i=>{(i=i.split("-")).length>0&&i.filter((t=>!a.includes(t))).length>0&&(t=t.concat(i))})),t}const n=["il","i","la","le","lo","gli","un","uno","una"],c=["due","tre","quattro","cinque","sette","otto","nove","dieci","undici","dodici","tredici","quattordici","quindici","sedici","diciassette","diciotto","diciannove","venti","cento","mille","mila","duemila","tremila","quattromila","cinquemila","seimila","settemila","ottomila","novemila","diecimila","milione","milioni","miliardo","miliardi"],l=["prima","primi","prime","secondo","seconda","secondi","seconde","terzo","terza","terzi","terze","quarto","quarta","quarti","quarte","quinto","quinta","quinti","quinte","sesto","sesta","sesti","seste","settimo","settima","settimi","settime","ottavo","ottava","ottavi","ottave","nono","nona","noni","none","decimo","decima","decimi","decime","undicesimo","undicesima","undicesimi","undicesime","dodicesimo","dodicesima","dodicesimi","dodicesime","tredicesimo","tredicesima","tredicesimi","tredicesime","quattordicesimo","quattordicesima","quattordicesimi","quattordicesime","quindicesimo","quindicesima","quindicesimi","quindicesime","sedicesimo","sedicesima","sedicesimi","sedicesime","diciassettesimo","diciassettesima","diciassettesimi","diciassettesime","diciannovesimo","diciannovesima","diciannovesimi","diciannovesime","ventesimo","ventesima","ventesimi","ventesime"],p=["io","tu","egli","esso","lui","ella","essa","lei","noi","voi","essi","esse","loro"],m=["mi","ti","si","ci","vi","li","me","te","se","glie","glielo","gliela","glieli","gliele","gliene","ce","ve"],d=["sé"],u=["ciò","codesto","codesta","codesti","codeste","colei","colui","coloro","costei","costui","costoro","medesimo","medesima","medesimi","medesime","questo","questa","questi","queste","quello","quella","quelli","quelle","quel","quei","quegli"],g=["mio","mia","miei","mie","tuo","tua","tuoi","tue","suo","sua","suoi","sue","nostro","nostra","nostri","nostre","vostro","vostra","vostri","vostre"],z=["affatto","alcun","alcuna","alcune","alcuni","alcuno","bastantemente","grandemente","massimamente","meno","minimamente","molta","molte","molti","moltissimo","molto","nessun","nessuna","nessuno","niente","nulla","ogni","più","po'","poca","poche","pochi","poco","pochissime","pochissimi","qualche","qualsiasi","qualunque","quintali","rara","rarissima","rarissimo","raro","spesso","spessissimo","sufficientemente","taluno","taluna","taluni","talune","tanta","tante","tanti","tantissime","tantissimi","tanto","tonnellate","troppa","troppe","troppi","troppo","tutta","tutte","tutti","tutto"],f=["alcunché","alcunchè","altro","altra","altri","altre","certa","certi","certe","checché","checchè","chicchessia","chiunque","ciascuno","ciascuna","ciascun","diverso","diversa","diversi","diverse","parecchio","parecchia","parecchi","parecchie","qualcosa","qualcuno","qualcuna","vario","varia","vari","varie"],v=["che","cosa","cui","qual","quale","quali"],b=["chi","quanta","quante","quanti","quanto"],h=["com'è","com'era","com'erano","donde","d'onde","dove","dov'è","dov'era","dov'erano","dovunque"],q=["ne"],w=["accanto","altrove","attorno","dappertutto","giù","là","laggiù","lassù","lì","ovunque","qua","quaggiù","quassù","qui"],y=["vengano","vengo","vengono","veniamo","veniate","venimmo","venisse","venissero","venissi","venissimo","veniste","venisti","venite","veniva","venivamo","venivano","venivate","venivi","venivo","venne","vennero","venni","verrà","verrai","verranno","verrebbe","verrebbero","verrei","verremmo","verremo","verreste","verresti","verrete","verrò","viene","vieni"],x=["venire","venir"],B=["abbi","abbia","abbiamo","abbiano","abbiate","abbiente","avemmo","avendo","avente","avesse","avessero","avessi","avessimo","aveste","avesti","avete","aveva","avevamo","avevano","avevate","avevi","avevo","avrà","avrai","avranno","avrebbe","avrebbero","avrei","avremmo","avremo","avreste","avresti","avrete","avrò","avuto","ebbe","ebbero","ebbi","ha","hai","hanno","ho","l'abbi","l'abbia","l'abbiamo","l'abbiano","l'abbiate","l'abbiente","l'avemmo","l'avendo","l'avente","l'avesse","l'avessero","l'avessi","l'avessimo","l'aveste","l'avesti","l'avete","l'aveva","l'avevamo","l'avevano","l'avevate","l'avevi","l'avevo","l'avrà","l'avrai","l'avranno","l'avrebbe","l'avrebbero","l'avrei","l'avremmo","l'avremo","l'avreste","l'avresti","l'avrete","l'avrò","l'avuto","l'ebbe","l'ebbero","l'ebbi","l'ha","l'hai","l'hanno","l'ho","possa","possano","possiamo","possiate","posso","possono","poté","potei","potemmo","potendo","potente","poterono","potesse","potessero","potessi","potessimo","poteste","potesti","potete","potette","potettero","potetti","poteva","potevamo","potevano","potevate","potevi","potevo","potrà","potrai","potranno","potrebbe","potrebbero","potrei","potremmo","potremo","potreste","potresti","potrete","potrò","potuto","può","puoi","voglia","vogliamo","vogliano","vogliate","voglio","vogliono","volemmo","volendo","volente","volesse","volessero","volessi","volessimo","voleste","volesti","volete","voleva","volevamo","volevano","volevate","volevi","volevo","volle","vollero","volli","voluto","vorrà","vorrai","vorranno","vorrebbe","vorrebbero","vorrei","vorremmo","vorremo","vorreste","vorresti","vorrete","vorrò","vuoi","vuole","debba","debbano","debbono","deva","deve","devi","devo","devono","dobbiamo","dobbiate","dové","dovei","dovemmo","dovendo","doverono","dovesse","dovessero","dovessi","dovessimo","doveste","dovesti","dovete","dovette","dovettero","dovetti","doveva","dovevamo","dovevano","dovevate","dovevi","dovevo","dovrà","dovrai","dovranno","dovrebbe","dovrebbero","dovrei","dovremmo","dovremo","dovreste","dovresti","dovrete","dovrò","dovuto","sa","sai","sanno","sapemmo","sapendo","sapesse","sapessero","sapessi","sapessimo","sapeste","sapesti","sapete","sapeva","sapevamo","sapevano","sapevate","sapevi","sapevo","sappi","sappia","sappiamo","sappiano","sappiate","saprà","saprai","sapranno","saprebbe","saprebbero","saprei","sapremmo","sapremo","sapreste","sapresti","saprete","saprò","saputo","seppe","seppero","seppi","so","soglia","sogliamo","sogliano","sogliate","soglio","sogliono","solesse","solessero","solessi","solessimo","soleste","solete","soleva","solevamo","solevano","solevate","solevi","solevo","suoli","sta","stai","stando","stanno","stante","starà","starai","staranno","staremo","starete","starò","stava","stavamo","stavano","stavate","stavi","stavo","stemmo","stessero","stessimo","steste","stesti","stette","stettero","stetti","stia","stiamo","stiano","stiate","sto"],F=["avere","l'avere","aver","l'aver","potere","poter","volere","voler","dovere","dover","sapere","saper","solere","stare","star"],S=["è","e'","era","erano","eravamo","eravate","eri","ero","essendo","essente","fosse","fossero","fossi","fossimo","foste","fosti","fu","fui","fummo","furono","sarà","sarai","saranno","sarebbe","sarebbero","sarei","saremmo","saremo","sareste","saresti","sarete","sarò","sei","sia","siamo","siano","siate","siete","sii","sono","stata","state","stati","stato"],k=["essere","esser"],P=["di","del","dello","della","dei","degli","delle","a","ad","al","allo","alla","ai","agli","alle","da","dal","dallo","dalla","dai","dagli","dalle","in","nel","nello","nella","nei","negli","nelle","con","col","collo","colla","coi","cogli","colle","su","sul","sullo","sulla","sui","sugli","sulle","per","pel","pello","pella","pei","pegli","tra","fra","attraverso","circa","contro","davanti","dentro","dietro","entro","escluso","fuori","insieme","intorno","lontano","lungo","mediante","oltre","presso","rasente","riguardo","senza","sopra","sotto","tramite","vicino"],C=["e","ed","o","oppure"],W=["tale","l'uno","l'altro","tali","dall'altra"],R=["anziché","anzichè","fuorché","fuorchè","giacché","giacchè","laddove","modo","ove","qualora","quantunque","volta"],O=["dice","dicono","diceva","dicevano","disse","dissero","detto","domanda","domandano","domandava","domandavano","domandò","domandarono","domandato","afferma","affermato","aggiunge","aggiunto","ammette","ammesso","annuncia","annunciato","assicura","assicurato","chiede","chiesto","commentato","conclude","concluso","continua","continuato","denuncia","denunciato","dichiara","dichiarato","esordisce","esordito","inizia","iniziato","precisato","prosegue","proseguito","racconta","raccontato","recita","recitato","replica","replicato","risponde","risposto","rimarca","rimarcato","rivela","rivelato","scandisce","scandito","segnala","segnalato","sottolinea","sottolineato","spiega","spiegato"],j=["affermare","aggiungere","ammettere","annunciare","assicurare","chiedere","commentare","concludere","continuare","denunciare","dichiarare","esordire","iniziare","precisare","proseguire","raccontare","recitare","replicare","rispondere","rimarcare","rivelare","scandire","segnalare","sottolineare","spiegare"],E=["addirittura","assolutamente","ben","estremamente","mica","nemmeno","quasi"],T=["fa","fa'","faccia","facciamo","facciano","facciate","faccio","facemmo","facendo","facente","facesse","facessero","facessi","facessimo","faceste","facesti","faceva","facevamo","facevano","facevate","facevi","facevo","fai","fanno","farà","farai","faranno","farebbe","farebbero","farei","faremmo","faremo","fareste","faresti","farete","farò","fate","fatto","fece","fecero","feci","fo"],A=["fare"],M=["anteriore","anteriori","precedente","precedenti","facile","facili","facilissimo","facilissima","facilissimi","facilissime","semplice","semplici","semplicissima","semplicissimo","semplicissimi","semplicissime","semplicemente","rapido","rapida","rapidi","rapide","veloce","veloci","differente","difficile","difficili","difficilissimo","difficilissima","difficilissimi","difficilissime","basso","bassa","bassi","basse","alto","alta","alti","alte","normale","normali","normalmente","corto","corta","corti","corte","breve","brevi","recente","recenti","totale","totali","completo","completa","completi","complete","possibile","possibili","ultimo","ultima","ultimi","ultime","differenti","simile","simili","prossimo","prossima","prossimi","prossime","giusto","giusta","giusti","giuste","giustamente","cosiddetto","bene","meglio","benissimo","male","peggio","malissimo","comunemente","constantemente","direttamente","esattamente","facilmente","generalmente","leggermente","personalmente","recentemente","sinceramente","solamente","avanti","indietro"],L=["nuovo","nuova","nuovi","nuove","vecchio","vecchia","vecchi","vecchie","bello","bella","belli","belle","bei","begli","bellissimo","bellissima","bellissimi","bellissime","buono","buona","buoni","buone","buonissimo","buonissima","buonissimi","buonissime","grande","grandi","grandissimo","grandissima","grandissimi","grandissime","lunga","lunghi","lunghe","piccolo","piccola","piccoli","piccole","piccolissimo","piccolissima","piccolissimi","piccolissime","proprio","propria","propri","proprie","solito","solita","soliti","solite","stesso","stessa","stessi","stesse"],N=["accidenti","acciderba","ah","aah","ahi","ahia","ahimé","bah","beh","boh","ca","caspita","chissà","de'","diamine","ecco","eh","ehi","eeh","ehilà","ehm","gna","ih","magari","macché","macchè","mah","mhm","nca","neh","oibò","oh","ohe","ohé","ohilá","ohibò","ohimé","okay","ok","olà","poh","pota","puah","sorbole","to'","toh","ts","uff","uffa","uh","uhi"],$=["cc","g","hg","hl","kg","l","prs","pz","q.b.","qb","ta","tz"],_=["minuto","minuti","ora","ore","giorno","giorni","giornata","giornate","settimana","settimane","mese","mesi","anno","anni","oggi","domani","ieri","stamattina","stanotte","stasera","tardi"],D=["aspetto","aspetti","caso","casi","cose","idea","idee","istanza","maniera","oggetto","oggetti","parte","parti","persona","persone","pezzo","pezzi","punto","punti","sorta","sorte","tema","temi","volte"],G=["sì","no","non","€","euro","euros","ecc","eccetera"],I=(o(M),o([].concat(l,j,x,F,k,A,L)),o([].concat(n,P,C,u,E,z,g)),o([].concat(r,p,m,d,N,c,y,B,S,O,T,f,W,R,v,b,h,w,G,q,$,_,D)),o([].concat(n,P,m,g,f,c,l,T,A,O,v,b,d,h))),J=o([].concat(B,F)),U=o([].concat(n,c,l,u,g,p,m,d,z,f,b,h,v,q,w,y,x,B,F,S,k,P,C,W,R,O,j,r,["eventualmente","forse","mai","probabilmente"],E,T,A,N,M,L,$,D,G,_,["sig.na","sig.ra","sig","sigg","dr","dr.ssa","dott","dott.ssa","prof","prof.ssa","gent","gent.mo","gent.mi","gent.ma","gent.me","egr","egr.i","egr.ia","egr.ie","preg.mo","preg.mo","preg.ma","preg.me","ill","ill.mo","ill.mi","ill.ma","ill.me","cav","on","spett"])),V=["a condizione che","a meno che non","a patto che","a seconda che","acché","affinché","al fine di","allorché","allorquando","anche se","anziché","avvegnaché","basta que","benché","beninteso que","chi","cui","dal momento che","dopo che","dove","finché non","fintantoché","i quali","il quale","in caso","in modo che","la quale","le quali","malgrado","mentre","nel caso in cui","nel eventualità che","nonostante che","ogni volta che","per il fatto che","perché","piuttosto che","piuttosto di","poiche","prima che","purché","qualora","quando","quantunque","quello che","sebbene","senza che","siccome","tranne che","una volta che"],H=[["né","né"],["non","ma"],["non prima","che"],["non prima","di"],["non solo","ma anche"],["o","o"],["se","allora"],["se","o"],["sia","che"]],K=JSON.parse('{"vowels":"aeiouyàèéìîïòù","deviations":{"vowels":[{"fragments":["a[íúeo]","e[íúao]","o[íúaeè]","í[aeo]","ú[aeo]","ai[aeou]","àii","aiì","au[eé]","ei[aàeèé]","èia","ia[èiì]","iài","oi[aàeèo]","òia","óio","uí","ui[aàó]","ùio","ouï","coo[cmnpr]","lcool","coòf","[aeuioìùèéàò]y[aeuioíìùèàó]","ìa$","èa$"],"countModifier":1},{"fragments":["aoi","aoì","ioe","riae","ïa$"],"countModifier":1}],"words":{"full":[{"word":"via","syllables":2},{"word":"guaime","syllables":3},{"word":"guaina","syllables":3},{"word":"coke","syllables":1},{"word":"frame","syllables":1},{"word":"goal","syllables":1},{"word":"live","syllables":1},{"word":"mouse","syllables":1},{"word":"coon","syllables":1}],"fragments":{"global":[{"word":"mayoyào","syllables":4},{"word":"eye-liner","syllables":3},{"word":"scooner","syllables":2},{"word":"cocoon","syllables":2},{"word":"silhouette","syllables":4},{"word":"circuíto","syllables":4},{"word":"cruento","syllables":3},{"word":"cruènto","syllables":3},{"word":"rituale","syllables":4},{"word":"duello","syllables":3},{"word":"fuorviante","syllables":4},{"word":"league","syllables":1},{"word":"leader","syllables":2},{"word":"appeal","syllables":2},{"word":"backstage","syllables":2},{"word":"badge","syllables":1},{"word":"baseball","syllables":2},{"word":"beauty","syllables":2},{"word":"bondage","syllables":2,"notFollowedBy":["s"]},{"word":"break","syllables":1},{"word":"brokerage","syllables":3},{"word":"business","syllables":2},{"word":"cache","syllables":2,"notFollowedBy":["s","r"]},{"word":"cashmere","syllables":2},{"word":"challenge","syllables":2,"notFollowedBy":["s","r"]},{"word":"charleston","syllables":2},{"word":"cheap","syllables":1},{"word":"cottage","syllables":2,"notFollowedBy":["s"]},{"word":"cruise","syllables":1,"notFollowedBy":["s","r"]},{"word":"device","syllables":2,"notFollowedBy":["s"]},{"word":"downgrade","syllables":2,"notFollowedBy":["d"]},{"word":"download","syllables":2},{"word":"drive","syllables":1,"notFollowedBy":["r"]},{"word":"endorsement","syllables":3},{"word":"drive","syllables":1,"notFollowedBy":["r"]},{"word":"executive","syllables":4},{"word":"firmware","syllables":2},{"word":"fobia","syllables":3},{"word":"float","syllables":1},{"word":"freak","syllables":1},{"word":"game","syllables":1,"notFollowedBy":["r"]},{"word":"guideline","syllables":2},{"word":"hardware","syllables":2},{"word":"homeless","syllables":2},{"word":"hardware","syllables":1,"notFollowedBy":["r"]},{"word":"hardware","syllables":1,"notFollowedBy":["r"]},{"word":"hardware","syllables":1,"notFollowedBy":["r"]},{"word":"hospice","syllables":2,"notFollowedBy":["s"]},{"word":"impeachment","syllables":3},{"word":"jeans","syllables":1},{"word":"jukebox","syllables":2},{"word":"leasing","syllables":2},{"word":"lease","syllables":1,"notFollowedBy":["s"]},{"word":"lounge","syllables":1,"notFollowedBy":["r","s"]},{"word":"magazine","syllables":3},{"word":"notebook","syllables":2},{"word":"office","syllables":2,"notFollowedBy":["r","s"]},{"word":"online","syllables":2},{"word":"offline","syllables":2},{"word":"overcoat","syllables":3},{"word":"offside","syllables":2,"notFollowedBy":["r"]},{"word":"overdrive","syllables":3},{"word":"oversize","syllables":3},{"word":"pacemaker","syllables":3},{"word":"package","syllables":2,"notFollowedBy":["r","s"]},{"word":"pancake","syllables":2},{"word":"performance","syllables":3},{"word":"premium","syllables":3},{"word":"ragtime","syllables":2},{"word":"reading","syllables":2},{"word":"residence","syllables":3,"notFollowedBy":["s"]},{"word":"roaming","syllables":2},{"word":"rollerblade","syllables":3,"notFollowedBy":["r"]},{"word":"royalty","syllables":3},{"word":"shake","syllables":1,"notFollowedBy":["r"]},{"word":"shale","syllables":1},{"word":"shampooing","syllables":3},{"word":"shareware","syllables":2},{"word":"shearling","syllables":2},{"word":"sidecar","syllables":2},{"word":"hardware","syllables":1,"notFollowedBy":["r"]},{"word":"skate","syllables":1,"notFollowedBy":["n","r"]},{"word":"trial","syllables":2},{"word":"toast","syllables":1},{"word":"texture","syllables":2},{"word":"testimonial","syllables":5},{"word":"teaser","syllables":2},{"word":"sweater","syllables":2},{"word":"suspense","syllables":2,"notFollowedBy":["r"]},{"word":"subroutine","syllables":3},{"word":"steadicam","syllables":3},{"word":"spread","syllables":1},{"word":"speaker","syllables":2},{"word":"board","syllables":1},{"word":"sneaker","syllables":2},{"word":"smartphone","syllables":2},{"word":"slide","syllables":1,"notFollowedBy":["r"]},{"word":"skyline","syllables":2},{"word":"skinhead","syllables":2},{"word":"update","syllables":2,"notFollowedBy":["r"]},{"word":"upgrade","syllables":2,"notFollowedBy":["r"]},{"word":"upload","syllables":2},{"word":"vintage","syllables":2},{"word":"wakeboard","syllables":2},{"word":"website","syllables":2},{"word":"welfare","syllables":2},{"word":"yeah","syllables":1},{"word":"yearling","syllables":2}],"atEnd":[{"word":"byte","syllables":1,"alsoFollowedBy":["s"]},{"word":"bite","syllables":1,"alsoFollowedBy":["s"]},{"word":"beat","syllables":1,"alsoFollowedBy":["s"]},{"word":"coach","syllables":1},{"word":"line","syllables":1,"alsoFollowedBy":["s"]}],"atBeginning":[{"word":"cheese","syllables":1},{"word":"head","syllables":1},{"word":"streak","syllables":1}],"atBeginningOrEnd":[{"word":"team","syllables":1},{"word":"stream","syllables":1}]}}}}'),Q={recommendedLength:25},X=["abalienat","abbacchiat","abbacinat","abbadat","abbagliat","abbaiat","abballat","abbambinat","abbancat","abbandonat","abbarbagliat","abbarbat","abbarcat","abbaruffat","abbassat","abbatacchiat","abbattut","abbatuffolat","abbelit","abbellat","abbellit","abbendat","abbeverat","abbiadat","abbicat","abbigliat","abbinat","abbindolat","abbioccat","abbiosciat","abbisciat","abbittat","abboccat","abboffat","abbominat","abbonacciat","abbonat","abbonit","abbordat","abborracciat","abborrat","abborrit","abbottinat","abbottonat","abbozzacchiat","abbozzat","abbozzolat","abbracciat","abbraciat","abbrancat","abbreviat","abbriccat","abbrigliat","abbrivat","abbriviat","abbrividit","abbronzat","abbrostolat","abbrostolit","abbruciacchiat","abbruciat","abbrunat","abbrunit","abbruscat","abbrusciat","abbrustiat","abbrustolat","abbrustolit","abbrutit","abbruttit","abbuffat","abbuiat","abbuonat","abburattat","abbuzzit","abdicat","abdott","abiettat","abilitat","abissat","abitat","abituat","abiurat","abolit","abominat","abondat","aborrit","abortit","abras","abrogat","abusat","accaffat","accagionat","accagliat","accalappiat","accalcat","accaldat","accallat","accalorat","accalorit","accambiat","accampat","accampionat","accanalat","accanat","accaneggiat","accanit","accantonat","accaparrat","accapezzat","accapigliat","accapottat","accappiat","accappiettat","accapponat","accappucciat","accaprettat","accareggiat","accarezzat","accarnat","accarpionat","accartocciat","accasat","accasciat","accasellat","accasermat","accastellat","accastellinat","accatarrat","accatastat","accattat","accattivat","accavalcat","accavalciat","accavallat","accavezzat","accecat","acceffat","accelerat","accellerat","accennat","accensat","accentat","accentrat","accentuat","acceppat","accerchiat","accercinat","accertat","acces","accessoriat","accettat","acchetat","acchiappat","acchiocciolat","acchitat","acchiudut","acciabattat","acciaiat","acciambellat","acciarpat","acciecat","accigliat","acciglionat","accignut","accincignat","accint","acciocchit","acciottolat","accipigliat","accismat","accis","acciucchit","acciuffat","accivettat","acclamat","acclarat","acclimatat","acclus","accoccat","accoccolat","accoccovat","accodat","accollat","accoltellat","accolt","accomandat","accomiatat","accommiatat","accomodat","accompagnat","accomunat","acconciat","acconigliat","accontat","accontentat","accoppat","accoppiat","accorat","accorciat","accorcit","accordat","accordellat","accorpat","accort","accosciat","accostat","accostumat","accotonat","accottimat","accovacciat","accovat","accovonat","accozzat","accreditat","accresciut","accrespat","accucciat","accucciolat","accudit","acculat","acculturat","accumulat","accumunat","accusat","acetificat","acetilat","acetit","acidat","acidificat","acidulat","acquadernat","acquarellat","acquartierat","acquat","acquattat","acquerellat","acquetat","acquietat","acquisit","acquistat","acromatizzat","acuit","acuminat","acutizzat","adacquat","adagiat","adattat","addaziat","addebbiat","addebitat","addecimat","addensat","addentat","addentellat","addentrat","addestrat","addett","addiacciat","addimandat","addimesticat","addimorat","addimostrat","addipanat","addirizzat","additat","additivat","addizionat","addobbat","addocilit","addogliat","addolcat","addolciat","addolcit","addolorat","addomandat","addomesticat","addoppiat","addormentat","addossat","addott","addottorat","addottrinat","addrizzat","adduat","addugliat","adeguat","adempit","adempiut","adequat","aderizzat","adescat","adibit","adirat","adit","adiuvat","adizzat","adocchiat","adombrat","adonat","adonestat","adontat","adoperat","adoprat","adorat","adornat","adottat","adsorbit","aduggiat","adugnat","adulat","adulterat","adunat","adunghiat","adusat","aerat","aereat","aerotrainat","aerotrasportat","affabulat","affaccendat","affacchinat","affacciat","affagottat","affaldat","affamat","affamigliat","affannat","affardellat","affascinat","affastellat","affaticat","affattucchiat","affatturat","affermat","afferrat","affettat","affezionat","affiancat","affiatat","affibbiat","affidat","affienat","affievolit","affigliat","affigurat","affilat","affilettat","affiliat","affinat","affiochit","affiorat","affisat","affissat","affiss","affittat","affittit","afflitt","afflosciat","affocat","affogat","affogliat","affollat","affoltat","affondat","afforcat","afforestat","afforzat","affossat","affralit","affrancat","affrant","affratellat","affrenat","affrenellat","affrescat","affrettat","affrittellat","affrontat","affumat","affumicat","affumigat","affuocat","affusolat","africanizzat","ageminat","agevolat","aggallat","agganciat","aggangherat","aggarbat","aggattonat","aggavignat","aggelat","aggettivat","agghiacciat","agghiadat","agghiaiat","agghindat","aggiaccat","aggiogat","aggiornat","aggirat","aggiucchit","aggiudicat","aggiuntat","aggiunt","aggiustat","agglomerat","agglutinat","aggomitolat","aggottat","aggradit","aggraffat","aggranchiat","aggranchit","aggrandit","aggrappat","aggraticciat","aggravat","aggredit","aggregat","aggrevat","aggricciat","aggrinzat","aggrinzit","aggrommat","aggrondat","aggroppat","aggrottat","aggrovigliat","aggrumat","aggruppat","aggruzzolat","agguagliat","agguantat","agguardat","agguatat","aggueffat","agitat","agognat","agrarizzat","aguatat","agucchiat","agunat","agurat","aguzzat","aitat","aiutat","aizzat","alat","alberat","albergat","alcalinizzat","alchilat","alchimiat","alchimizzat","alcolizzat","alcoolizzat","alenat","alesat","alettat","alfabetat","alfabetizzat","alidit","alienat","alimentat","allacciat","allagat","allappat","allargat","allascat","allattat","alleat","allegat","alleggerit","alleggiat","allegorizzat","alleluiat","allenat","allenit","allentat","allertat","allessat","allestit","allettat","allevat","alleviat","allibat","allibit","allibrat","allicciat","allietat","allindat","allineat","allis","allocat","allogat","alloggiat","allontanat","allottat","allucchettat","allucciolat","allucinat","allumat","alluminat","alluminiat","allungat","allupat","allus","alluzzat","alogenat","alonat","alpeggiat","alterat","alternat","alzat","amalgamat","amareggiat","amaricat","amat","ambientat","ambiguat","ambit","americanizzat","amicat","ammaccat","ammaestrat","ammainat","ammalat","ammaliat","ammalinconit","ammaltat","ammanettat","ammanicat","ammanierat","ammanigliat","ammannat","ammannellat","ammannit","ammansat","ammansit","ammantat","ammantellat","ammarat","ammarezzat","ammassat","ammassellat","ammassicciat","ammatassat","ammattonat","ammazzat","ammelmat","ammencit","ammendat","ammennicolat","ammess","ammetat","ammezzit","amministrat","amminutat","ammirat","ammiserit","ammobiliat","ammodernat","ammodernizzat","ammogliat","ammoinat","ammollat","ammollit","ammonit","ammonticchiat","ammonticellat","ammorbat","ammorbidat","ammorbidit","ammorsat","ammortat","ammortit","ammortizzat","ammorzat","ammosciat","ammoscit","ammostat","ammotinat","ammucchiat","ammulinat","ammusat","ammutat","ammutinat","amnistiat","amoracciat","ampiat","ampliat","amplificat","amputat","anagrammat","analizzat","anamorfizzat","anastomizzat","anatematizzat","anatomizzat","anchilosat","ancis","ancorat","andicappat","anellat","anemizzat","anestetizzat","angariat","anglicizzat","angolat","angosciat","angustiat","animat","annacquat","annaffiat","annasat","annaspat","annaspicat","annebbiat","annegat","annerat","annerit","anness","annestat","annichilat","annichilit","annidat","annientat","annitrit","annobilit","annodat","annodicchiat","annoiat","annotat","annottat","annottolat","annoverat","annullat","annunciat","annunziat","annusat","annuvolat","anodizzat","anonimizzat","antecedut","antepost","antergat","anticheggiat","antichizzat","anticipat","anticonosciut","antidatat","antivedut","antivist","antologizzat","antropizzat","antropomorfizzat","aocchiat","aombrat","aonestat","aontat","apert","apocopat","apologizzat","apostatat","apostrofat","appaciat","appacificat","appagat","appaiat","appalesat","appallottolat","appaltat","appanettat","appannat","apparat","apparecchiat","apparentat","apparigliat","apparit","appartat","appassionat","appastat","appastellat","appellat","appennellat","appercepit","appertizzat","appesantit","appesit","appes","appestat","appetit","appezzat","appiacevolit","appianat","appiastrat","appiatat","appiattat","appiattit","appiccat","appiccicat","appiccolit","appiedat","appigionat","appigliat","appinzat","appiombat","appioppat","appisolat","applaudit","applicat","appoderat","appoggiat","appollaiat","appoppat","apportat","appostat","appost","appratit","appresentat","appres","appressat","apprestat","apprettat","apprezzat","approcciat","approfittat","approfondat","approfondit","approntat","appropinquat","appropriat","approssimat","approvat","approvisionat","approvvigionat","appruat","appulcrat","appuntat","appuntellat","appuntit","appurat","appuzzat","arabescat","arabizzat","arat","arbitrat","arborat","arcaizzat","arcat","architettat","archiviat","arcuat","ardit","areat","argentat","arginat","argomentat","arguit","arianizzat","arieggiat","armat","armonizzat","aromatizzat","arpeggiat","arpionat","arponat","arrabattat","arraffat","arraffiat","arrandellat","arrangiat","arrapat","arrapinat","arrappat","arrazzat","arrecat","arredat","arreggimentat","arrembat","arrenat","arresis","arres","arrestat","arretrat","arricchit","arricciat","arricciolat","arriffat","arringat","arrischiat","arrisicat","arris","arrocat","arroccat","arrochit","arrogat","arrolat","arroncat","arronzat","arrosat","arrossat","arrostat","arrostit","arrotat","arrotolat","arrotondat","arrovellat","arroventat","arroventit","arrovesciat","arrubinat","arruffat","arruffianat","arrugginit","arruncigliat","arruolat","arruvidit","arsicciat","ars","artefatt","articolat","artigliat","asces","asciat","asciolvut","asciugat","ascoltat","ascos","ascost","ascritt","asfaltat","asfissiat","aspers","aspettat","aspirat","asportat","aspreggiat","assaettat","assaggiat","assalit","assaltat","assaporat","assaporit","assassinat","assecondat","assecurat","assediat","asseggiat","assegnat","assembiat","assemblat","assembrat","assemprat","assentat","asserit","asserragliat","asservit","assestat","assetat","assettat","asseverat","assibilat","assicurat","assiderat","assiemat","assiepat","assillat","assimigliat","assimilat","assiomatizzat","assis","assistit","associat","assodat","assoggettat","assolcat","assoldat","assolt","assolutizzat","assomat","assommat","assonat","assonnat","assopit","assorbit","assordat","assordit","assortit","assottigliat","assuefatt","assunt","asteggiat","astenut","asters","astratt","astrett","atomizzat","atrofizzat","atrovat","attaccat","attagliat","attanagliat","attardat","attediat","atteggiat","attempat","attendat","attentat","attenuat","attenut","attergat","atterrat","atterrit","atterzat","attes","attestat","atticizzat","attillat","attint","attirat","attivat","attivizzat","attizzat","attorcigliat","attorniat","attort","attoscat","attossicat","attraccat","attrappit","attratt","attraversat","attrezzat","attribuit","attristat","attristit","attruppat","attualizzat","attuat","attuffat","attutat","attutit","auggiat","augumentat","augurat","aulit","aumentat","aunghiat","ausat","auscultat","auspicat","autenticat","autentificat","autoaccusat","autoaffondat","autoalimentat","autoassolt","autocandidat","autocensurat","autocitat","autocommiserat","autoconsumat","autoconvint","autodefinit","autodenunciat","autodistrutt","autofinanziat","autogestit","autogovernat","autografat","autoincensat","autointersecat","autoinvitat","autolesionat","autolimitat","automaticizzat","automatizzat","automotivat","autonominat","autoproclamat","autoprodott","autoprotett","autopubblicat","autopubblicizzat","autoregolamentat","autoregolat","autoridott","autoriparat","autorizzat","autosomministrat","autosostenut","autosuggestionat","autotassat","autotrapiantat","autotrasportat","autovalutat","avallat","avampat","avanzat","avariat","avint","aviolanciat","aviotrasportat","avocat","avolterat","avuls","avutacel","avut","avvallat","avvalorat","avvals","avvantaggiat","avvelat","avvelenat","avventat","avventurat","avverat","avversat","avvertit","avvezzat","avviat","avvicendat","avvicinat","avvignat","avvilit","avviluppat","avvinat","avvinchiat","avvinghiat","avvint","avvisat","avvistat","avvitat","avviticchiat","avvitit","avvivat","avvolt","avvoltolat","aziendalizzat","azionat","azotat","azzannat","azzardat","azzeccat","azzerat","azzimat","azzittat","azzittit","azzoppat","azzoppit","azzuffat","azzurrat","bacat","baccagliat","bacchettat","bacchiat","baciat","badat","bagnat","baipassat","balbettat","balcanizzat","ballat","baloccat","balzat","banalizzat","bancat","bandit","bannat","baraccat","barattat","barbarizzat","barcamenat","bardat","barellat","barrat","barricat","basat","basciat","basculat","bassat","bastat","bastionat","bastit","bastonat","battezzat","battut","bazzicat","beatificat","beat","beccat","beccheggiat","becchettat","beffat","beffeggiat","bendat","benedett","beneficat","benvolut","berlusconizzat","bersagliat","bestemmiat","bevut","biadat","bianchettat","bianchit","biascicat","biasimat","biasmat","bidonat","biennalizzat","biforcat","bigiat","bilanciat","binat","bindolat","biodegradat","biografat","bipartit","bisbigliat","biscottat","bisecat","bisellat","bisognat","bissat","bistrat","bistrattat","bitumat","bituminat","blandit","bleffat","blindat","bloccat","bloggat","bluffat","bobinat","boccheggiat","bocciat","boicottat","bollat","bollit","bombardat","bombat","bonderizzat","bonificat","bootat","borbottat","bordat","boriat","borrat","borseggiat","braccat","bracciat","bramat","bramit","brancicat","brandeggiat","brandit","brasat","bravat","brevettat","breviat","brillantat","brillat","brinat","broccat","brocciat","broccolat","brontolat","bronzat","brucat","bruciacchiat","bruciat","brunit","bruscat","bruschinat","brutalizzat","bruttat","bucat","bucherellat","bufat","buffat","bufferizzat","buggerat","bugnat","bulicat","bulinat","bullettat","bullonat","burattat","burlat","burocratizzat","burrificat","buscat","buttat","butterat","bypassat","cablat","cabrat","cacat","cacciat","cadenzat","cadmiat","caducat","cagat","caggiat","cagionat","cagliat","calafatat","calamitat","calandrat","calat","calcat","calciat","calcificat","calcolat","caldeggiat","calettat","calibrat","calmat","calmierat","calpestat","calumat","calunniat","calzat","cambiat","camerat","campionat","campit","camuffat","canalizzat","cancellat","cancerizzat","candeggiat","candidat","candit","canforat","cangiat","cannat","canneggiat","cannibalizzat","cannoneggiat","canonizzat","cantat","canterellat","canticchiat","cantilenat","canzonat","caolinizzat","capacitat","capeggiat","capillarizzat","capitalizzat","capitanat","capitaneggiat","capit","capitozzat","capivolt","caponat","capotat","capottat","capovolt","capponat","captat","caramellat","caramellizzat","caratat","caratterizzat","carbonizzat","carbossilat","carburat","carcat","carcerat","cardat","carenat","carezzat","cariat","caricat","caricaturat","caricaturizzat","carotat","carpionat","carpit","carreggiat","carrozzat","cartavetrat","carteggiat","cartellinat","cartografat","cartolarizzat","cartonat","cascolat","cassat","cass","castigat","castrat","casualizzat","catabolizzat","catalizzat","catalogat","catapultat","catechizzat","categorizzat","cateterizzat","catramat","cattolicizzat","catturat","causat","cautelat","cauterizzat","cauzionat","cavalcat","cavatasel","cavat","cazzat","cazziat","cazzottat","cedrat","cedut","celat","celebrat","cellofanat","cementat","cementificat","cennat","censit","censurat","centellat","centellinat","centimetrat","centinat","centralizzat","centrat","centrifugat","centuplicat","cerat","cercat","cerchiat","cernut","certificat","cesellat","cessat","cestinat","cheratinizzat","chetat","chiamat","chiappat","chiarificat","chiarit","chiaroscurat","chiavat","chiazzat","chiest","chilificat","chilometrat","chimificat","chinat","chinizzat","chiodat","chiosat","chius","choccat","ciancicat","cianfrinat","cianfrugliat","ciangottat","ciattat","cibat","cicatrizzat","ciccat","cicchettat","ciclizzat","ciclostilat","cifrat","cilindrat","cimat","cimentat","cincischiat","cinematografat","cintat","cint","cioncat","ciondolat","circolat","circoncint","circoncis","circondat","circondott","circonfless","circonfluit","circonfus","circonscritt","circonvenut","circoscritt","circostanziat","circuit","circumcint","circumnavigat","citat","ciucciat","ciurmat","civettat","civilizzat","clamat","classat","classicizzat","classificat","cliccat","climatizzat","clivat","clonat","cloroformizzat","clorurat","clusterizzat","co-dirett","coacervat","coadiuvat","coagulat","coalizzat","coartat","coccolat","codificat","coeditat","coesistit","cofinanziat","cofirmat","cofondat","cogestit","cogitat","coglionat","cognosciut","coibentat","coincis","cointeressat","cointestat","coinvolt","cokificat","colat","colettat","collassat","collaudat","collazionat","collegat","collettivizzat","collezionat","collimat","colliquat","collis","collocat","colluttat","colmat","colonizzat","colorat","colorit","colorizzat","colpevolizzat","colpit","coltellat","coltivat","colt","coltrat","comandat","combattut","combinat","comburut","comicizzat","cominciat","commemorat","commendat","commensurat","commentat","commercializzat","commess","comminat","commiserat","commissariat","commissionat","commisurat","commoss","commutat","comodat","compaginat","comparit","compartimentalizzat","compartit","compassionat","compatibilizzat","compatit","compattat","compendiat","compenetrat","compensat","comperat","compiaciut","compiant","compilat","compitat","compiut","complessat","complessificat","compless","completat","complicat","complimentat","comportat","compostat","compost","comprat","compravendut","compres","compress","compromess","comprovat","compulsat","compunt","computat","computerizzat","comunicat","comunistizzat","concatenat","concedut","concelebrat","concentrat","concepit","concertat","concess","concettat","concettualizzat","conchius","conciat","conciliat","concimat","concitat","conclamat","conclus","concordat","concott","concretat","concretizzat","conculcat","concupit","condannat","condensat","condit","condivis","condizionat","condolut","condonat","condott","confatt","confederat","conferit","confermat","confessat","confettat","confezionat","conficcat","confidat","configurat","confinat","confint","confiscat","confitt","conformat","confortat","confricat","confrontat","confus","confutat","congedat","congegnat","congelat","congestionat","congetturat","congiunt","conglobat","conglomerat","conglutinat","congratulat","congregat","conguagliat","coniat","coniugat","connaturat","conness","connotat","connumerat","conosciut","conquistat","consacrat","consapevolizzat","consegnat","conseguit","consentit","conservat","considerat","consigliat","consistit","consociat","consolat","consolidat","consorziat","conspars","conspers","constatat","constrett","construit","consultat","consumat","consunt","contabilizzat","contagiat","containerizzat","contaminat","contat","contattat","conteggiat","contemperat","contemplat","contentat","contenut","contes","contestat","contestualizzat","contingentat","continuat","contornat","contort","contrabbandat","contraccambiat","contraddett","contraddistint","contradett","contraffatt","contrappesat","contrappost","contrappuntat","contrariat","contrassegnat","contrastat","contrat","contrattaccat","contrattat","contratt","contravvals","contristat","controbattut","controbilanciat","controdatat","controfirmat","controindicat","controllat","controminat","contronotat","contropropost","controprovat","controquerelat","controsoffittat","controstampat","controventat","conturbat","contus","convalidat","convenut","convenzionat","convertit","convint","convitat","convocat","convogliat","convolt","coobat","cooptat","coordinat","coperchiat","copert","copiaincollat","copiat","copolimerizzat","coppellat","coprodott","corazzat","corbellat","corcat","cordonat","coreografat","coricat","cornificat","coronat","corredat","correlat","corresponsabilizzat","corrett","corricchiat","corrispost","corroborat","corros","corrott","corrucciat","corrugat","cors","corteat","corteggiat","cortocircuitat","coruscat","cosat","coscritt","cospars","cospers","costatat","costeggiat","costellat","costernat","costicchiat","costipat","costituit","costituzionalizzat","costrett","costruit","costudit","cotonat","cott","covat","coventrizzat","coverchiat","craccat","creat","credut","cremat","crepat","cresciut","cresimat","crespat","criminalizzat","crioconcentrat","criptat","cristallizzat","cristianizzat","criticat","crittat","crittografat","crivellat","crocchiat","crocefiss","crocefitt","crocifiss","crocifitt","crogiolat","cromat","cronicizzat","cronometrat","crostat","crucciat","crucifiss","crucifitt","cuccat","cucinat","cucit","cullat","cumulat","cuntat","curat","curvat","curvat","custodit","customizzat","damascat","damaschinat","damat","dannat","danneggiat","danzat","dardeggiat","datat","dat","dattilografat","dattiloscritt","daziat","deacidificat","deattivat","debbiat","debellat","debilitat","decaffeinat","decaffeinizzat","decalcat","decalcificat","decantat","decapat","decapitat","decappottat","decarbossilat","decarburat","decatizzat","decelerat","decentralizzat","decentrat","decerebrat","decernut","decespugliat","deciferat","decifrat","decimalizzat","decimat","decis","declamat","declassat","declassificat","declinat","declorat","decodificat","decolonizzat","decolorat","decompartimentat","decompilat","decompost","decompress","deconcentrat","decondizionat","decongelat","decongestionat","decontaminat","decontestualizzat","decontratt","decorat","decorticat","decostruit","decrementat","decretat","decriminalizzat","decriptat","decrittat","decuplicat","decurtat","dedicat","dedott","defacciat","defalcat","defascistizzat","defecat","defenestrat","deferit","defilat","definit","defiscalizzat","defitt","deflazionat","deflemmat","deflorat","defogliat","defoliat","deforestat","deformat","defosforat","defosforilat","deframmentat","defraudat","degassat","degassificat","deglutit","degnat","degradat","degustat","deidratat","deidrogenat","deificat","deindicizzat","deindustrializzat","deionizzat","delegat","delegificat","delegittimat","delibat","deliberat","delimitat","delineat","delirat","deliziat","delocalizzat","delucidat","delus","demagnetizzat","demandat","demanializzat","demarcat","demeritat","demers","demetallizzat","demilitarizzat","demineralizzat","demistificat","demitizzat","democratizzat","demodulat","demolit","demoltiplicat","demonetat","demonetizzat","demonizzat","demoralizzat","demors","demotivat","denaturalizzat","denaturat","denazificat","denazionalizzat","denicotinizzat","denigrat","denitrificat","denocciolat","denominat","denotat","dentellat","denuclearizzat","denudat","denunciat","denunziat","deodorat","deossidat","deossigenat","deostruit","depauperat","depenalizzat","depennat","depilat","depint","depistat","deplorat","depolarizzat","depolimerizzat","depoliticizzat","depolverizzat","deportat","depositat","depost","depotenziat","depravat","deprecat","depredat","depress","depressurizzat","deprezzat","deprivat","deprotonat","depuls","depurat","dequalificat","deratizzat","derattizzat","dereferenziat","deregolamentat","deregolat","derequisit","deresponsabilizzat","deris","derubat","derubricat","desacralizzat","desalat","desalinizzat","descolarizzat","descritt","desecretat","desegretat","deselezionat","desensibilizzat","desessualizzat","desiat","desiderat","designat","desinat","desirat","desolat","desolforat","desonorizzat","desorbit","desossidat","desquamat","destabilizzat","destagionalizzat","destalinizzat","destatalizzat","destatizzat","destat","destinat","destituit","destoricizzat","destreggiat","destrutt","destrutturat","desunt","detassat","detenut","deteriorat","determinat","deters","detestat","detonat","detort","detossificat","detratt","detronizzat","dettagliat","dettat","dett","deturpat","deumidificat","devastat","deventat","deviat","deviscerat","devitalizzat","devitaminizzat","devolut","dezippat","diaframmat","diagnosticat","diagonalizzat","diagrammat","dializzat","dialogat","dialogizzat","diazotat","dibattut","diboscat","dichiarat","diesat","diesizzat","difes","diffamat","differit","diffidat","diffrant","diffratt","diffus","digerit","digitalizzat","digitat","digiunt","digrassat","digrignat","digrossat","dilacerat","dilaniat","dilapidat","dilatat","dilavat","dilazionat","dileggiat","dileguat","dilettat","dilett","diliscat","dilucidat","diluit","dilungat","dimagrat","dimandat","dimenat","dimensionat","dimenticat","dimerizzat","dimess","dimezzat","diminuit","dimissionat","dimostrat","dimunt","dinamizzat","dinoccat","dipanat","dipelat","dipint","diplomat","dipost","diradat","diramat","dirett","direzionat","dirimut","diroccat","dirottat","dirott","dirozzat","disabilitat","disabituat","disaccentat","disaccoppiat","disaccordat","disacerbat","disacidat","disacidificat","disacidit","disaerat","disaffezionat","disaggregat","disalberat","disallineat","disamat","disambiguat","disaminat","disamorat","disancorat","disanimat","disappannat","disapplicat","disappres","disapprovat","disarcionat","disarmat","disarticolat","disascost","disassemblat","disassuefatt","disatomizzat","disattes","disattivat","disattrezzat","disavvezzat","disboscat","disbrigat","discacciat","discalzat","discantat","discaricat","discernut","disces","disceverat","dischiest","dischius","discint","disciolt","disciplinat","discolorat","discolpat","discommess","discompagnat","discompost","disconclus","disconfitt","discongiunt","disconness","disconosciut","discopert","discordat","discosces","discostat","discreditat","discresciut","discriminat","discritt","discucit","discuoiat","discuss","disdegnat","disdettat","disdett","diseccat","diseccitat","diseducat","disegnat","diserbat","diseredat","disertat","disert","disfatt","disgelat","disgiunt","disgraziat","disgregat","disgustat","disidentificat","disiderat","disidratat","disillus","disimballat","disimparat","disimpegnat","disimpress","disincagliat","disincantat","disincentivat","disincrostat","disindustrializzat","disinfestat","disinfettat","disinflazionat","disinformat","disingannat","disingranat","disinibit","disinnamorat","disinnescat","disinnestat","disinquinat","disinserit","disinstallat","disintasat","disintegrat","disinteressat","disintes","disintossicat","disinvestit","disinvolt","disistimat","dislocat","dismess","disobbedit","disobbligat","disonorat","disordinat","disorganizzat","disorientat","disormeggiat","disossat","disossidat","disostruit","disotterrat","disparit","dispensat","dispent","disperdut","dispers","dispes","dispiegat","dispint","dispogliat","dispost","dispregiat","disprezzat","dispromess","disproporzionat","disputat","disqualificat","disrott","dissacrat","dissalat","dissaldat","dissanguat","dissecat","disseccat","disselciat","dissellat","disseminat","dissepolt","disseppellit","dissequestrat","disserrat","dissestat","dissetat","dissezionat","dissigillat","dissimulat","dissipat","dissociat","dissodat","dissolt","dissomigliat","dissotterrat","dissuas","dissuggellat","distaccat","distanziat","distes","distillat","distint","distolt","distort","distratt","distrett","distribuit","districat","distrigat","distrutt","disturbat","disubbidit","disumanat","disumanizzat","disunit","disusat","disvedut","disvelat","disvestit","disviat","disvist","disvolt","disvolut","dittongat","divallat","divaricat","divelt","diversificat","divertit","divezzat","divinat","divincolat","divinizzat","divis","divolt","divorat","divorziat","divulgat","documentat","dogat","dogmatizzat","dolcificat","dollarizzat","dolorat","dolut","domandat","domat","domesticat","domiciliat","dominat","donat","dondolat","dopat","doppiat","dorat","dosat","dotat","dovut","dragat","drammatizzat","drappeggiat","drenat","dribblat","drizzat","drogat","dugliat","duplicat","duramificat","ebraizzat","eccedut","eccepit","eccettuat","eccitat","echeggiat","eclissat","economizzat","edificat","editat","edott","educat","edulcorat","effettuat","efficientat","effigiat","effint","effluit","effus","egemonizzat","eguagliat","eiettat","elaborat","elargit","elasticizzat","elementarizzat","elemosinat","elencat","elett","elettrificat","elettrizzat","elettrocoagulat","elettrolizzat","elevat","eliminat","elis","elitrasportat","ellenizzat","elogiat","elucidat","elucubrat","eluit","elus","emanat","emancipat","emarginat","embricat","emendat","emess","emozionat","empit","empiut","emulat","emulsionat","emunt","encomiat","endocitat","energizzat","enfatizzat","enfiat","entusiasmat","enucleat","enumerat","enunciat","epicureggiat","epurat","equalizzat","equilibrat","equipaggiat","equiparat","eradicat","eras","ereditat","erett","erogat","eroicizzat","eros","erotizzat","erpicat","ers","erudit","eruttat","esacerbat","esagerat","esagitat","esalat","esaltat","esaminat","esasperat","esaudit","esaurit","esautorat","esborsat","esclamat","esclus","escogitat","escomiat","escoriat","escoss","escuss","esecrat","esecutat","eseguit","esemplificat","esentat","esercitat","esfoliat","esibit","esilarat","esiliat","esimut","esitat","esonerat","esorbitat","esorcizzat","esortat","espans","espars","esperimentat","esperit","espettorat","espiantat","espiat","espirat","espletat","esplicat","esplicitat","esplorat","esplos","esportat","espost","espress","espropriat","espugnat","espuls","espunt","espurgat","essiccat","essut","estasiat","estenuat","esterificat","esteriorizzat","esterminat","esternalizzat","esternat","estes","estimat","estint","estirpat","estivat","estort","estradat","estraniat","estrapolat","estratt","estremizzat","estrinsecat","estromess","estrus","estubat","esulcerat","esultat","esumat","eterificat","eterizzat","eternat","eternizzat","etichettat","etossilat","euforizzat","europeizzat","evacuat","evangelizzat","evas","evet","evidenziat","evint","evirat","eviscerat","evitat","evocat","evolt","evolut","evuls","fabbricat","faccettat","facilitat","fagocitat","falciat","falcidiat","fallit","falsat","falsificat","familiarizzat","fanatizzat","fantasticat","farcit","farfugliat","fasciat","fascicolat","fascistizzat","fattacel","fatt","fattorizzat","fatturat","favellat","favoreggiat","favorit","faxat","fecondat","fedecommess","federalizzat","federat","felicitat","felpat","feltrat","femminilizzat","fendut","ferit","fermat","fermentat","ferrat","fertilizzat","fess","fessurat","festeggiat","festonat","feudalizzat","fiaccat","fiammeggiat","fiancheggiat","ficcat","fidanzat","fidat","fidecommess","fidelizzat","figliat","figurat","filat","filettat","filmat","filosofat","filtrat","finalizzat","finanziat","finital","finit","finlandizzat","fintat","fint","fiocinat","fiondat","fiorettat","firmat","fiscalizzat","fischiat","fischiettat","fissat","fissionat","fitt","fiutat","flagellat","flaggat","flambat","flangiat","flemmatizzat","fless","flippat","flottat","fluidificat","fluidizzat","fluorizzat","fluorurat","focalizzat","focheggiat","foderat","foggiat","fognat","folgorat","follat","fomentat","fonat","fondat","foracchiat","foraggiat","forat","forestat","forfettizzat","forgiat","formalizzat","format","formattat","formilat","formulat","fornit","fortificat","forviat","forwardat","forzat","fosfatat","fosforat","fosforilat","fossilizzat","fotocompost","fotocopiat","fotografat","fottut","fracassat","fraintes","framess","frammentat","frammess","frammezzat","frammischiat","franceseggiat","francesizzat","frangiat","frant","frantumat","frappat","frappost","fraseggiat","frastagliat","frastornat","fratturat","frazionat","freddat","fregat","fregiat","frenat","frequentat","fresat","frettat","friendzonat","fritt","frizionat","frodat","frollat","fronteggiat","frugat","fruit","frullat","frusciat","frustat","frustrat","fruttat","fucilat","fucinat","fugat","fuggit","fulminat","fumat","fumigat","funestat","funt","funzionat","fuoriuscit","fuorviat","fus","fustellat","fustigat","gabbat","gabellat","gallat","gallicizzat","gallonat","galvanizzat","gambizzat","garantit","garnettat","garrotat","garzat","gasat","gassat","gassificat","gazat","gelatinizzat","gelat","gelificat","gemellat","gemicat","geminat","generalizzat","generat","gentrificat","genufless","geometrizzat","georeferenziat","gerarchizzat","germanizzat","gestit","gettat","gettonat","ghermit","ghettizzat","ghigliottinat","ghindat","gibollat","gingillat","ginnat","giocat","gioit","gionglat","giovaneggiat","giovat","girandolat","girat","giudicat","giulebbat","giuntat","giunt","giuracchiat","giurat","giustappost","giustificat","giustiziat","glamourizzat","glassat","glissat","globalizzat","gloriat","glorificat","glossat","godronat","godut","goffrat","gommat","gonfiat","googlat","gottat","governat","gradinat","gradit","gradualizzat","graduat","graffat","graffiat","graffit","graficat","grafitat","gramolat","granagliat","grandinat","granellat","granit","granulat","graticciat","graticolat","gratificat","gratinat","grattat","grattugiat","gravat","graziat","grecheggiat","grecizzat","gremit","gridat","griffat","grigliat","grippat","groccat","grondat","grugat","grugnit","guadagnat","gualcit","guardat","guarit","guarnit","guastat","guatat","guerreggiat","gufat","guidat","gustat","hackerat","handicappat","ibernat","ibridat","idealizzat","ideat","identificat","ideologizzat","idolatrat","idoleggiat","idratat","idrogenat","idrolizzat","iettat","igienizzat","ignifugat","ignorat","illanguidit","illeggiadrit","illividit","illuminat","illus","illustrat","imbacuccat","imbaldanzit","imballat","imbalsamat","imbambolat","imbandierat","imbandit","imbarbarit","imbarcat","imbarilat","imbastardit","imbastit","imbattut","imbavagliat","imbeccat","imbellettat","imbellit","imbestialit","imbestiat","imbevut","imbiaccat","imbiancat","imbianchit","imbibit","imbiettat","imbiondit","imbizzarrit","imboccat","imbonit","imborghesit","imboscat","imboschit","imbottat","imbottigliat","imbottit","imbozzimat","imbracat","imbracciat","imbragat","imbrancat","imbrattat","imbrecciat","imbrigliat","imbrillantinat","imbroccat","imbrodat","imbrogliat","imbronciat","imbruttit","imbucat","imbudellat","imbullettat","imbullonat","imburrat","imbussolat","imbustat","imbutit","imitat","immagazzinat","immaginat","immalinconit","immatricolat","immedesimat","immers","immess","immischiat","immiserit","immobilizzat","immolat","immortalat","immunizzat","immusonit","impaccat","impacchettat","impacciat","impadronit","impaginat","impagliat","impalat","impalcat","impallat","impallinat","impalmat","impaludat","impanat","impaniat","impannat","impantanat","impaperat","impapocchiat","impappinat","imparentat","imparruccat","impartit","impastat","impasticcat","impasticciat","impastocchiat","impastoiat","impataccat","impattat","impaurit","impavesat","impeciat","impedicat","impedit","impegnat","impegolat","impelagat","impellicciat","impennacchiat","impennat","impensierit","impepat","imperlat","impermalit","impermeabilizzat","imperniat","impersonat","impersonificat","impestat","impetrat","impiallacciat","impiantat","impiastrat","impiastricciat","impiccat","impicciat","impicciolit","impiccolit","impidocchiat","impiegat","impietosit","impietrit","impigliat","impigrit","impilat","impillaccherat","impinguat","impint","impinzat","impiombat","impipat","impiumat","implementat","implicat","implorat","impollinat","impolpat","impoltronit","impolverat","impomatat","imporcat","imporporat","importat","importunat","impossessat","impossibilitat","impostat","impost","impratichit","impregnat","impres","impressionat","impress","imprestat","impreziosit","imprigionat","impromess","improntat","improsciuttit","impugnat","impuntit","impunturat","impupat","imputat","impuzzolentit","inabilitat","inabissat","inacerbit","inacetit","inacidit","inacutit","inaffiat","inalat","inalberat","inalveat","inalzat","inamidat","inanellat","inarcat","inargentat","inaridit","inasprit","inastat","inattivat","inaugurat","incacchiat","incalcinat","incalorit","incalzat","incamerat","incamiciat","incamminat","incanaglit","incanalat","incannat","incannucciat","incaponit","incappottat","incappucciat","incaprettat","incapricciat","incapsulat","incarcerat","incardinat","incaricat","incarnat","incarrozzat","incartat","incartocciat","incartonat","incasellat","incasinat","incassat","incastellat","incastonat","incastrat","incatenat","incatramat","incattivit","incavat","incavigliat","incavolat","incazzat","incellofanat","incendiat","incenerit","incensat","incentivat","incentrat","inceppat","incerat","incernierat","incerottat","inces","incettat","inchiappettat","inchiavardat","inchiest","inchinat","inchiodat","inchiostrat","incipriat","incis","incistat","incitat","inciuccat","incivilit","inclinat","inclus","incoccat","incocciat","incoiat","incollat","incolonnat","incolpat","incominciat","incomodat","incontrat","incoraggiat","incordat","incornat","incorniciat","incoronat","incorporat","incott","incravattat","incrementat","increspat","incretinit","incriminat","incrinat","incrociat","incrostat","incrudelit","incrudit","incruscat","incubat","inculat","inculcat","incuneat","incuoiat","incuorat","incupit","incuriosit","incurvat","incuss","indagat","indebitat","indebolit","indemaniat","indennizzat","indett","indicat","indicizzat","indignat","indirett","indirizzat","indispettit","indispost","individualizzat","individuat","indolenzit","indorat","indossat","indott","indottom","indottrinat","indovinat","indugiat","indult","indurat","indurit","industrializzat","industriat","inebetit","inebriat","inerit","inerpicat","infagottat","infamat","infangat","infarcit","infarinat","infastidit","infatuat","infeltrit","inferit","inferocit","infert","infervorat","infestat","infettat","infeudat","infiacchit","infialat","infialettat","infiammat","infiascat","infibulat","inficiat","infilat","infiltrat","infilzat","infingardit","infinocchiat","infint","infioccat","infiocchettat","infiochit","infiorat","infirmat","infischiat","infiss","infittit","inflazionat","infless","inflitt","influenzat","infocat","infoderat","infognat","infoibat","infoltit","inforcat","informatizzat","informat","informicolat","informicolit","infornaciat","infornat","infortunat","infoscat","infossat","infradiciat","inframess","inframezzat","inframmess","inframmezzat","infrancesat","infrappost","infrascat","infrattat","infreddat","infronzolat","infuocat","infurbit","infuriat","ingabbiat","ingaggiat","ingagliardit","ingannat","ingarbugliat","ingavonat","ingegnat","ingegnerizzat","ingelosit","ingemmat","ingenerat","ingentilit","ingerit","ingessat","inghiaiat","inghiottit","inghirlandat","ingiallit","ingigantit","inginocchiat","ingioiellat","ingiunt","ingiuriat","inglesizzat","inglobat","ingoffit","ingoiat","ingolfat","ingollat","ingolosit","ingombrat","ingommat","ingorgat","ingozzat","ingranat","ingrandit","ingrassat","ingraticciat","ingraticolat","ingravidat","ingraziat","ingraziosit","ingrigit","ingrommat","ingrossat","ingrullit","inguaiat","inguainat","ingualdrappat","inguantat","ingurgitat","inibit","iniettat","inimicat","inizializzat","iniziat","inmillat","innacquat","innaffiat","innalzat","innamorat","innastat","innervat","innervosit","innescat","innestat","innevat","innocentat","innocuizzat","innovat","inoculat","inoltrat","inondat","inorgoglit","inorpellat","inorridit","inquadrat","inquietat","inquisit","insabbiat","insacchettat","insalat","insaldat","insalivat","insanguinat","insaponat","insaporit","inscatolat","inscenat","inscritt","insecchit","insediat","insegnat","inseguit","insellat","inselvatichit","inserit","insidiat","insignit","insilat","insinuat","insolentit","insonnolit","insonorizzat","insordit","insospettit","insozzat","inspessit","inspirat","installat","instaurat","insterilit","instillat","instituit","instradat","insudiciat","insufflat","insultat","insuperbit","intabaccat","intabarrat","intaccat","intagliat","intarsiat","intasat","intascat","intavolat","integrat","intelaiat","intelat","intellettualizzat","intenebrat","intenerit","intensificat","intentat","intepidit","intercalat","intercambiat","intercettat","intercis","interclus","intercollegat","interconness","interconvertit","interdett","interessat","interfacciat","interfogliat","interfoliat","interiorizzat","interlacciat","interlineat","intermess","intermezzat","internalizzat","internat","internazionalizzat","interpellat","interpenetrat","interpolat","interpost","interpretat","interpunt","interrat","interrogat","interrott","intersecat","intervallat","intervistat","intes","intessut","intestardit","intestat","intiepidit","intimat","intimidit","intimorit","intint","intirizzit","intitolat","intonacat","intonat","intontit","intorbidat","intorbidit","intorpidit","intortat","intossicat","intralciat","intramess","intramezzat","intrappolat","intrapres","intrattenut","intravedut","intravist","intravvedut","intravvist","intrecciat","intricat","intrigat","intrinsecat","intrippat","intris","introdott","introfless","introiettat","introitat","intromess","intronat","intronizzat","intrudut","intrufolat","intrugliat","intruppat","intrus","intubat","intubettat","intuit","inumat","inumidit","inurbat","inutilizzat","invaghit","invaginat","invalidat","invasat","invas","invelenit","inventariat","inventat","invenut","inverdit","invergat","inverniciat","investigat","investit","invetriat","inviat","invidiat","invigorit","inviluppat","invischiat","invitat","invocat","invogliat","involat","involgarit","involtat","involt","inzaccherat","inzeppat","inzigat","inzolfat","inzuccat","inzuccherat","inzuppat","iodurat","ionizzat","ipertrofizzat","ipnotizzat","ipostatizzat","ipotecat","ipotizzat","iridat","irradiat","irraggiat","irreggimentat","irretit","irrigat","irrigidit","irris","irritat","irrobustit","irrogat","irrorat","irrugginit","irruvidit","ischeletrit","iscritt","islamizzat","isolat","isomerizzat","ispanizzat","ispessit","ispezionat","ispirat","issat","istallat","istanziat","istaurat","isterilit","istigat","istillat","istituit","istituzionalizzat","istoriat","istradat","istruit","istupidit","italianeggiat","italianizzat","iterat","iudicat","killerat","labbreggiat","labializzat","laccat","lacerat","laconizzat","lacrimat","ladroneggiat","lagnat","lagrimat","laicizzat","lambiccat","lambit","lamentat","laminat","lanciat","lapidat","lappat","lardat","lardellat","largit","larvat","lascat","lasciat","lastricat","latinizzat","laudat","laureat","lavat","lavorat","leccat","legalizzat","legat","leggicchiat","leggiucchiat","legittimat","legittimizzat","legnat","lemmatizzat","lenit","lesinat","lesionat","les","lessat","lett","levat","levigat","liberalizzat","liberat","licenziat","lievitat","liftat","lignificat","limat","limitat","linciat","linearizzat","lineat","linkat","liofilizzat","liquefatt","liquidat","lisat","lisciat","lisciviat","listat","litografat","livellat","lizzat","lobotomizzat","localizzat","locat","lodat","logorat","lordat","lottat","lottizzat","lubrificat","lucchettat","lucidat","lucrat","lumeggiat","luppolizzat","lusingat","lussat","lustrat","macadamizzat","macchiat","macchinat","macellat","macerat","macinat","maciullat","maggesat","maggiorat","magnat","magnetizzat","magnificat","maiolicat","maledett","malfatt","malignat","malmenat","malmess","maltat","maltrattat","malvedut","malversat","malvist","malvolut","mandat","mandrinat","manducat","maneggiat","manganat","manganellat","mangiat","mangiucchiat","manifatturat","manifestat","manimess","manipolat","manlevat","manomess","manoscritt","manovrat","mansuefatt","mantecat","mantenutas","mantenut","manualizzat","manutenut","mappat","marcat","marchiat","marcit","marezzat","marginalizzat","marginat","margottat","marimess","marinat","maritat","marmorizzat","marnat","marocchinat","martellat","martellinat","martirizzat","martoriat","mascherat","maschiat","maschiettat","mascolinizzat","massacrat","massaggiat","massellat","massicciat","massificat","massimat","massimizzat","mastectomizzat","masterizzat","masticat","masturbat","matematizzat","materializzat","matricolat","mattonat","maturat","mazziat","mazzolat","meccanizzat","medagliat","mediat","medicalizzat","medicat","meditat","membrat","memorizzat","menat","mendicat","menomat","mentovat","menzionat","meravigliat","mercanteggiat","mercerizzat","mercificat","meriat","meridionalizzat","meritat","merlat","merlettat","mers","mesciat","mesciut","mescolat","mescut","mesmerizzat","messaggiat","mess","messoc","mestat","mesticat","mestruat","metabolizzat","metaforeggiat","metaforizzat","metallizzat","metamorfizzat","metamorfosat","metanizzat","metilat","metodizzat","microfilmat","microfonat","microminiaturizzat","micronizzat","mietut","migliorat","militarizzat","millantat","millimetrat","mimat","mimeografat","mimetizzat","minacciat","minat","minchionat","mineralizzat","miniat","miniaturizzat","minimizzat","minuit","minuzzat","miracolat","miscelat","mischiat","misconosciut","missat","mistificat","misturat","misurat","miticizzat","mitigat","mitizzat","mitragliat","mitrat","mixat","mobiliat","mobilitat","mobilizzat","modanat","modellat","modellizzat","moderat","modernizzat","modificat","modulat","molat","molestat","mollat","molleggiat","moltiplicat","monacat","mondat","mondializzat","monetarizzat","monetat","monetizzat","monitorat","monitorizzat","monocromatizzat","monopolizzat","monottongat","montat","monumentalizzat","mordenzat","mordicchiat","mormorat","morphat","morsicat","morsicchiat","mors","mortasat","mortificat","moss","mostrat","motivat","motorizzat","motteggiat","movimentat","mozzat","mugolat","mulcit","multat","multiplexat","mummificat","municipalizzat","munit","munt","murat","musat","musicat","mussat","mutat","mutilat","mutizzat","mutuat","nappat","narcotizzat","narrativizzat","narrat","nasalizzat","nascos","nascost","nastrat","naturaleggiat","naturalizzat","nauseat","naverat","navicat","navigat","nazificat","nazionalizzat","nebulizzat","necessitat","necrosat","necrotizzat","negat","negativizzat","neglett","negoziat","negreggiat","neologizzat","nerbat","nericat","nettat","neutralizzat","nevat","nevicat","nevischiat","nevrotizzat","nichelat","niellat","ninfeggiat","ninnat","ninnolat","nitratat","nitrificat","nobilitat","noiat","noleggiat","nomat","nominalizzat","nominat","normalizzat","normat","notat","notificat","notiziat","notricat","noverat","nuclearizzat","nudricat","nullificat","numerat","numerizzat","nuotat","nutrit","obbiettat","obbliat","obbligat","oberat","obiettat","obiettivat","obiettivizzat","obiurgat","obliat","obliterat","obnubilat","occasionat","occhieggiat","occidentalizzat","occis","occlus","occultat","occupat","ocheggiat","odiat","odorat","odorizzat","offerit","offert","offes","officiat","offiziat","offuscat","ofiziat","oggettivat","oggettivizzat","oggettualizzat","oliat","olit","olografat","oltraggiat","oltrapassat","oltrepassat","omaggiat","ombrat","ombreggiat","omess","omogeneizzat","omogenizzat","omologat","ondat","ondulat","onestat","onnubilat","onorat","opacat","opacizzat","operat","opinat","oppiat","oppignorat","oppilat","oppost","oppress","oppugnat","oprat","opsonizzat","optat","opzionat","orbitat","orchestrat","ordinat","ordit","orecchiat","organat","organicat","organizzat","orgasmat","orientalizzat","orientat","originat","origliat","orizzontat","orlat","orlettat","ormat","ormeggiat","ornat","orpellat","orrat","orripilat","ortogonalizzat","osannat","osat","osculat","oscurat","ospedalizzat","ospitat","ossedut","ossequiat","osservat","ossessionat","ossidat","ossificat","ossitonizzat","ostacolat","osteggiat","ostentat","ostinat","ostracizzat","ostruit","ottemperat","ottenebrat","ottenut","ottimalizzat","ottimat","ottimizzat","ottonat","ottriat","ottuplicat","otturat","ottus","ottuss","ovalizzat","ovariectomizzat","ovattat","overcloccat","ovrat","ovviat","ozieggiat","ozonizzat","pacat","pacciamat","pacificat","padroneggiat","paganizzat","pagat","paginat","palafittat","palatalizzat","palat","palesat","palettat","palettizzat","palificat","palleggiat","pallettizzat","palpat","palpeggiat","panat","panneggiat","panoramicat","pappat","paracadutat","parafat","paraffinat","parafrasat","paragonat","paragrafat","paralizzat","parallelizzat","parametrat","parametrizzat","parassitat","parat","parcat","parcellizzat","parcheggiat","pareggiat","parificat","parkerizzat","parlat","parlucchiat","parodiat","partecipat","particolareggiat","particolarizzat","partizionat","partorit","parzializzat","pasciut","pascolat","passat","passeggiat","passionat","passivat","pasticciat","pastorizzat","pasturat","patinat","patit","patrocinat","patteggiat","pattugliat","pattuit","paventat","pavesat","pavimentat","pavoneggiat","pazziat","pedinat","pedonalizzat","peggiorat","pelat","pellettizzat","penalizzat","penetrat","pennellat","pensat","pensionat","pentit","pepat","peptonizzat","peragrat","percentualizzat","percepit","percolat","percors","percoss","perdonat","perdott","perdut","perequat","perfatt","perfezionat","perforat","performat","perit","periziat","perlustrat","permeat","permess","perorat","perpetrat","perpetuat","perplimut","perquisit","perscrutat","perseguitat","perseguit","pers","personalizzat","personificat","persuas","perturbat","pervas","pervertit","pesat","pescat","pestat","petrarcheggiat","pettegolat","pettinat","piagat","piaggiat","piallat","pianeggiat","pianificat","piantat","piantatal","piantat","piant","piantonat","piantumat","piastrellat","piatit","piazzat","picchettat","picchiat","picchierellat","picchiettat","picconat","piegat","pieghettat","pietrificat","pigiat","pigliat","pigmentat","pignorat","pigolat","pilotat","pimentat","pint","pinzat","piombat","piovigginat","piovut","pipat","pippat","piratat","pirogenat","pisciat","pitoccat","pittat","pitturat","pizzicat","pizzicottat","placat","placcat","plagiat","plasmat","plasticat","plastificat","platinat","plissettat","pluralizzat","poetat","poeticizzat","poggiat","polarizzat","poligrafat","polimerizzat","politicizzat","polverizzat","pomiciat","pompat","ponderat","ponzat","popolarizzat","popolat","poppat","porcellanat","porfirizzat","portat","portes","port","porzionat","posat","posdatat","positivizzat","posizionat","pospost","possedut","postat","postdatat","posteggiat","posticipat","postillat","post","postsincronizzat","postulat","potabilizzat","potat","potenziat","potut","pralinat","praticat","preaccennat","preannunciat","preannunziat","preavvertit","preavvisat","precaricat","precedut","precettat","precint","precisat","preclus","precompilat","precompress","preconfezionat","preconizzat","preconosciut","precors","precostituit","predat","predefinit","predestinat","predeterminat","predett","predicat","predigerit","predilett","predispost","preelett","preesistut","prefabbricat","prefat","prefatt","prefazionat","preferit","prefigurat","prefinanziat","prefissat","prefiss","preformat","pregat","pregiat","pregiudicat","pregustat","preimpregnat","prelevat","premeditat","premescolat","premess","premiat","premonit","premunit","premurat","premut","prenotat","preoccupat","preordinat","preparat","prepensionat","prepigmentat","prepost","preprogrammat","preraffreddat","prerefrigerat","preregistrat","preregolat","preriscaldat","pres","presagit","presaput","presasel","prescelt","prescritt","presedut","presegnalat","preselezionat","presentat","presentit","preservat","presidiat","presiedut","pres","pressat","press","pressurizzat","prestabilit","prestampat","prestat","prestigiat","presunt","presuppost","pretermess","pretes","pretrattat","prevaricat","prevedut","prevendut","preventivat","prevenut","previst","prezzat","prezzolat","principiat","privatizzat","privat","privilegiat","problematizzat","procacciat","processat","proclamat","procrastinat","procreat","procurat","prodigat","prodott","profanat","proferit","professat","professionalizzat","profetat","profetizzat","profferit","profilat","profondat","profumat","profus","progettat","prognosticat","programmat","proibit","proiettat","proletarizzat","prolungat","promanat","promess","promoss","promozionat","promulgat","pronosticat","pronunciat","pronunziat","propagandat","propagat","propagginat","propalat","propinat","propiziat","proporzionat","propost","propugnat","propuls","prorogat","prosciolt","prosciugat","proscritt","proseguit","prospettat","prosternat","prostes","prostituit","prostrat","prosunt","protes","protestat","protett","protocollat","protonat","protratt","protrus","provat","provedut","provincializzat","provist","provocat","provvedut","provvist","psicanalizzat","psichiatrizzat","psicoanalizzat","psicologizzat","pubblicat","pubblicizzat","puddellat","pugnalat","pulit","pungolat","punit","puntat","punteggiat","puntellat","punt","puntualizzat","punzecchiat","punzonat","purgat","purificat","putit","putrefatt","putrit","quadrat","quadrettat","quadriennalizzat","quadruplicat","qualificat","quantificat","quantizzat","querelat","questuat","quetat","quietanzat","quietat","quintessenziat","quintuplicat","quotat","quotizzat","rabberciat","rabboccat","rabbonit","rabbuffat","rabuffat","raccapezzat","raccapricciat","raccattat","raccerchiat","racces","racchetat","racchius","raccolt","raccolt","raccomandat","raccomodat","raccontat","raccorciat","raccorcit","raccordat","raccostat","raccozzat","racemizzat","racimolat","radazzat","raddensat","raddobbat","raddolcit","raddoppiat","raddott","raddrizzat","radiat","radicalizzat","radioassistit","radioattivat","radiocomandat","radiodiffus","radiografat","radioguidat","radiolocalizzat","radiomarcat","radiotelegrafat","radiotrasmess","radunat","raffazzonat","raffermat","raffigurat","raffilat","raffinat","rafforzat","raffreddat","raffrenat","raffrescat","raffrontat","raggelat","raggentilit","ragghiat","raggirat","raggiunt","raggiustat","raggomitolat","raggranchiat","raggranchit","raggranellat","raggrinzat","raggrinzit","raggrumat","raggruppat","raggruzzolat","ragguagliat","ralingat","rallegrat","rallentat","ramat","ramazzat","rammagliat","rammaricat","rammemorat","rammendat","rammentat","rammodernat","rammollit","rammorbidit","rampognat","randellat","randomizzat","rannicchiat","rannuvolat","ranzat","rapat","rapinat","rapit","rappacificat","rappat","rappattumat","rappezzat","rapportat","rappresantat","rappresentat","rappres","rarefatt","rasat","raschiat","raschiettat","rasentat","ras","raspat","rassegnat","rasserenat","rassettat","rassicurat","rassodat","rassomigliat","rassottigliat","rassunt","rastrellat","rastremat","rateat","rateizzat","ratificat","ratinat","rattizzat","rattoppat","rattort","rattrappit","rattristat","rattristit","raunat","ravvalorat","ravvedut","ravviat","ravvicinat","ravviluppat","ravvisat","ravvist","ravvivat","ravvolt","ravvoltolat","razionalizzat","razionat","razziat","razzolat","realizzat","reassunt","recapitat","recat","recedut","recensit","recepit","recidivat","recintat","recint","reciprocat","recis","recitat","reclamat","reclamizzat","reclinat","reclus","reclutat","recuperat","redarguit","redatt","redazzat","reddut","redent","redistribuit","redott","referenziat","refertat","refilat","refless","reflettut","refrant","refrigerat","regalat","regimat","regimentat","regionalizzat","registrat","regolamentat","regolarizzat","regolat","reidratat","reificat","reimbarcat","reimmers","reimmess","reimparat","reimpastat","reimpiantat","reimpiegat","reimportat","reimpostat","reincarcerat","reincaricat","reincarnat","reincis","reincontrat","reindirizzat","reindustrializzat","reinfettat","reingaggiat","reinizializzat","reinnestat","reinoltrat","reinscritt","reinsediat","reinserit","reinstallat","reinstaurat","reintegrat","reinterpretat","reintitolat","reintrodott","reinventat","reinvestit","reiterat","relativizzat","relazionat","relegat","remixat","remunerat","renderizzat","reperit","repertat","replicat","repress","repuls","reputat","requisit","resciss","resecat","resettat","residuat","resinificat","res","resolat","resolt","respint","respirat","responsabilizzat","respost","restaurat","restituit","resunt","resuscitat","reticolat","retinat","retribuit","retrocedut","retrocess","retrodatat","rettificat","rett","reumatizzat","revisionat","revocat","riabbassat","riabbellit","riabbonat","riabbottonat","riabbracciat","riabilitat","riabitat","riabituat","riaccadut","riaccasat","riacces","riaccettat","riacchiappat","riacciuffat","riaccolt","riaccomodat","riaccompagnat","riaccordat","riaccostat","riaccreditat","riacquisit","riacquistat","riacutizzat","riadattat","riaddestrat","riaddormentat","riadoperat","riaffacciat","riaffermat","riafferrat","riaffiorat","riaffittat","riaffrontat","riagganciat","riaggiornat","riaggiustat","riaggravat","riaggregat","riagguantat","rialimentat","riallacciat","riallargat","riallineat","riallocat","riallungat","rialzat","riamat","riambientat","riammalat","riammess","riammodernat","riammogliat","rianimat","rianness","riannodat","riannunciat","riapert","riappacificat","riappaltat","riapparecchiat","riapparit","riappes","riappiccicat","riapplicat","riappres","riapprodat","riappropriat","riapprovat","riarmat","riarrangiat","riarredat","riascoltat","riasfaltat","riassalit","riassaporat","riassegnat","riassemblat","riassestat","riassettat","riassicurat","riassociat","riassopit","riassorbit","riassunt","riattaccat","riattat","riattes","riattint","riattivat","riattizzat","riattraversat","riaumentat","riavut","riavventat","riavvertit","riavviat","riavvicinat","riavvint","riavvisat","riavvistat","riavvolt","riazzuffat","ribaciat","ribadit","ribaltat","ribassat","ribattezzat","ribattut","ribellat","ribenedett","ribevut","ributtat","ricacciat","ricalat","ricalcat","ricalcificat","ricalcitrat","ricalcolat","ricalibrat","ricamat","ricambiat","ricanalizzat","ricandidat","ricantat","ricapitalizzat","ricapitolat","ricaricat","ricategorizzat","ricattat","ricavat","ricelebrat","ricercat","ricetrasmess","ricettat","ricevut","richiamat","richiest","richius","riciclat","ricint","ricircolat","riclassificat","ricodificat","ricollegat","ricollocat","ricolmat","ricolonizzat","ricolorat","ricolorit","ricoltivat","ricombinat","ricominciat","ricommess","ricomparit","ricompattat","ricompensat","ricomperat","ricompilat","ricompiut","ricompost","ricomprat","ricompress","ricomunicat","riconcedut","riconcess","riconciliat","ricondizionat","ricondott","riconfermat","riconfezionat","riconfigurat","riconfortat","riconfus","ricongelat","ricongiunt","riconness","riconosciut","riconquistat","riconsacrat","riconsegnat","riconsiderat","riconsigliat","riconsolat","ricontat","ricontattat","ricontrattat","ricontratt","ricontrollat","riconvalidat","riconvenut","riconvertit","riconvint","riconvocat","riconvogliat","ricopert","ricopiat","ricordat","ricoricat","ricorrett","ricospars","ricostituit","ricostrett","ricostruit","ricott","ricoverat","ricreat","ricristallizzat","ricrocifiss","ricucit","ricuperat","ricusat","ridat","ridecorat","ridefinit","ridenominat","ridestat","rideterminat","ridett","ridicolizzat","ridigitat","ridimensionat","ridipint","ridisces","ridisciolt","ridisciplinat","ridiscuss","ridisegnat","ridisfatt","ridispost","ridistes","ridistint","ridistribuit","ridivis","ridomandat","ridonat","ridondat","ridorat","ridotat","ridott","ridovut","riecheggiat","riedificat","rieducat","rielaborat","rielett","riemess","riempit","riempiut","rientrat","riepilogat","riequilibrat","riequipaggiat","riesaminat","rieseguit","riesercitat","riesplos","riesportat","riespost","riespress","riespuls","riestes","riesumat","rietichettat","rievaporat","rievocat","rifabbricat","rifasciat","rifatt","rifendut","riferit","rifermat","rifermentat","rifess","rificcat","rifilat","rifiltrat","rifinanziat","rifinit","rifirmat","rifischiat","rifiss","rifiutat","rifless","riflettut","rifocillat","rifoderat","rifondat","riforestat","riforgiat","riformat","riformattat","riformulat","rifornit","rifrant","rifritt","rifrugat","rifuggit","rifugiat","rifus","rigassificat","rigat","rigelat","rigenerat","rigettat","righettat","rigiocat","rigirat","rigiudicat","rigiunt","rigodut","rigonfiat","rigovernat","riguadagnat","riguardat","rigurgitat","rilanciat","rilasciat","rilassat","rilavat","rilavorat","rilegat","rilett","rilevat","rilocalizzat","rimagliat","rimandat","rimaneggiat","rimangiat","rimappat","rimarcat","rimarchiat","rimarginat","rimaritat","rimasticat","rimat","rimbacuccat","rimbaldanzit","rimbarcat","rimbeccat","rimbecillit","rimbellit","rimbiancat","rimbiondit","rimboccat","rimbombat","rimborsat","rimboscat","rimboschit","rimbrottat","rimediat","rimembrat","rimemorat","rimenat","rimeritat","rimescolat","rimess","rimestat","rimilitarizzat","rimirat","rimischiat","rimisurat","rimodellat","rimodernat","rimodulat","rimondat","rimontat","rimorchiat","rimors","rimoss","rimostrat","rimotivat","rimpacchettat","rimpadronit","rimpaginat","rimpagliat","rimpannucciat","rimpastat","rimpatriat","rimpiallacciat","rimpiant","rimpiattat","rimpiazzat","rimpicciolit","rimpiccolit","rimpiegat","rimpinguat","rimpinzat","rimpolpat","rimpossessat","rimpress","rimproverat","rimuginat","rimunerat","rimunt","rimusicat","rimutat","rinarrat","rinascost","rincalcat","rincalzat","rincamminat","rincantucciat","rincarat","rincarcerat","rincarnat","rincentrat","rinchiest","rinchiodat","rinchius","rincitrullit","rincivilit","rincoglionit","rincollat","rincominciat","rincontrat","rincoraggiat","rincorat","rincorporat","rincors","rincretinit","rincrudit","rinculcat","rincuorat","rindossat","rindurit","rinegoziat","rinfacciat","rinfagottat","rinfiammat","rinfiancat","rinfilat","rinfittit","rinfocolat","rinfoderat","rinforzat","rinfrancat","rinfrant","rinfrescat","rinfus","ringagliardit","ringalluzzit","ringiovanit","ringiovenit","ringoiat","ringorgat","ringraziat","ringuainat","rinnamorat","rinnegat","rinnestat","rinnovat","rinnovellat","rinociut","rinomat","rinominat","rinormalizzat","rinquadrat","rinsaccat","rinsaldat","rinsanguat","rinselvatichit","rinselvat","rinserrat","rintanat","rintasat","rintascat","rintavolat","rintenerit","rinterrat","rinterrogat","rintes","rintiepidit","rintoccat","rintonacat","rintontit","rintorpidit","rintracciat","rintrodott","rintronat","rintuzzat","rinunciat","rinunziat","rinutrit","rinvangat","rinvasat","rinvenut","rinverdit","rinvestit","rinviat","rinvigorit","rinvilit","rinvitat","rinvoltat","rinvolt","rinvoltolat","rinzaffat","rinzeppat","riobbligat","rioccupat","rioffert","rioffes","rioperat","riordinat","riorganizzat","riorientat","riosservat","riottenut","riottimizzat","riotturat","ripagat","riparametrizzat","riparat","ripartit","ripassat","ripercors","ripercoss","riperdut","ripers","ripesat","ripescat","ripestat","ripetut","ripianat","ripianificat","ripiantat","ripiant","ripicchiat","ripiegat","ripigliat","ripint","ripiovut","ripitturat","riplasmat","ripolarizzat","ripopolat","riportat","riport","riposat","riposizionat","ripossedut","ripost","ripotut","ripresentat","ripres","riprestat","ripretes","riprincipiat","ripristinat","riprivatizzat","riprodott","riprogettat","riprogrammat","ripromess","ripropost","riprotett","riprovat","riprovvedut","riprovvist","ripubblicat","ripudiat","ripugnat","ripulit","ripuntat","ripunt","ripurgat","riputat","riquadrat","riqualificat","rires","rirott","risaldat","risalit","risaltat","risalutat","risanat","risaput","risarcit","riscalat","riscaldat","riscattat","riscelt","risces","rischiarat","rischiat","risciacquat","risciolt","riscommess","riscontat","riscontrat","risconvolt","riscopert","riscoppiat","riscors","riscoss","riscritt","risecat","risedut","risegat","risegnat","riselciat","riselezionat","riseminat","risentit","riseppellit","riserbat","riservat","risicat","risigillat","risistemat","ris","risoffiat","risoggiunt","risolat","risolidificat","risollevat","risolt","risommat","risommers","risonat","risorpassat","risospes","risospint","risottomess","risparmiat","rispars","rispecchiat","rispedit","rispent","rispers","rispettat","rispiegat","rispint","rispolverat","risposat","rispost","rissat","ristabilit","ristagnat","ristampat","ristaurat","ristes","ristilizzat","ristorat","ristrett","ristrutt","ristrutturat","ristuccat","ristudiat","risucchiat","risultat","risuolat","risuonat","risuscitat","risvegliat","risvolt","ritagliat","ritarat","ritardat","ritemprat","ritentat","ritenut","riters","rites","ritint","ritirat","ritoccat","ritolt","ritort","ritracciat","ritradott","ritrascors","ritrascritt","ritrasferit","ritrasformat","ritrasmess","ritraspost","ritrattat","ritratt","ritrovat","ritualizzat","rituffat","riudit","riunificat","riunit","riusat","riutilizzat","rivaccinat","rivaleggiat","rivalorizzat","rivals","rivalutat","rivangat","rivedut","rivelat","rivendicat","rivendut","riverberat","riverit","riverniciat","riversat","rivestit","rivettat","rivint","rivisitat","rivissut","rivist","rivitalizzat","rivivificat","rivoltat","rivolt","rivoltolat","rivolut","rivoluzionat","rizappat","rizzat","robotizzat","rodat","rogat","rollat","romanizzat","romanticizzat","romanzat","roncolat","rosicat","rosicchiat","ros","rosolat","rotacizzat","rotat","roteat","rotolat","rottamat","rott","rovesciat","rovinat","rovistat","rubacchiat","rubat","rullat","ruminat","ruotat","russificat","ruzzolat","sabbiat","sabotat","saccarificat","saccheggiat","sacralizzat","sacramentat","sacrificat","saettat","saggiat","sagginat","sagomat","salamoiat","salariat","salassat","salat","saldat","salificat","salinizzat","salit","salmeggiat","salmistrat","salpat","saltat","salutat","salvaguardat","salvat","sanat","sancit","sanforizzat","sanificat","sanitizzat","santificat","sanzionat","saponificat","saput","sarchiat","sarchiellat","sartiat","satellizzat","satinat","satireggiat","satisfatt","satollat","saturat","saziat","sbaccellat","sbaciucchiat","sbafat","sbaffat","sbalestrat","sballat","sballottat","sballottolat","sbalordit","sbalzat","sbancat","sbandat","sbandierat","sbandit","sbaraccat","sbaragliat","sbarazzat","sbarbat","sbarcat","sbardat","sbarrat","sbassat","sbastit","sbatacchiat","sbattezzat","sbattut","sbeccat","sbeffeggiat","sbellicat","sbendat","sbertucciat","sbiadit","sbiancat","sbianchit","sbiellat","sbiettat","sbigottit","sbilanciat","sbirbat","sbirciat","sbizzarrit","sbloccat","sbobinat","sboccat","sbocconcellat","sbollentat","sbolognat","sborniat","sborsat","sboscat","sbottonat","sbozzat","sbozzimat","sbozzolat","sbracat","sbracciat","sbraciat","sbraitat","sbranat","sbrancat","sbrattat","sbreccat","sbriciolat","sbrigat","sbrigliat","sbrinat","sbrindellat","sbrodolat","sbrogliat","sbronzat","sbruffat","sbucciat","sbudellat","sbuffat","sbugiardat","sbullettat","sbullonat","sburrat","scacazzat","scacchiat","scacciat","scaccolat","scadenzat","scafat","scaffalat","scagionat","scagliat","scaglionat","scalat","scalcat","scalcinat","scaldat","scalettat","scalfat","scalfit","scalmanat","scaloppat","scalpat","scalpellat","scalpellinat","scaltrit","scalzat","scambiat","scamiciat","scamosciat","scamozzat","scampat","scampatal","scampat","scamuffat","scanalat","scancellat","scandagliat","scandalizzat","scandit","scannat","scannellat","scannerat","scannerizat","scannerizzat","scansat","scansionat","scapecchiat","scapezzat","scapicollat","scapigliat","scapitozzat","scapocchiat","scappat","scappellat","scappottat","scapricciat","scapsulat","scarabocchiat","scaracchiat","scaraventat","scarcerat","scardassat","scardat","scardinat","scaricat","scarificat","scarmigliat","scarnat","scarnificat","scarnit","scarrellat","scarrocciat","scarrozzat","scarruffat","scartabellat","scartat","scartavetrat","scartinat","scartocciat","scassat","scassinat","scatenat","scattat","scavalcat","scavallat","scavat","scavezzat","scazzottat","scekerat","scelt","scempiat","sceneggiat","scernut","scervellat","sces","sceverat","schedat","schedulat","scheggiat","scheletrit","schematizzat","schermat","schermit","schermografat","schernit","schiacciat","schiaffat","schiaffeggiat","schiantat","schiarit","schiavardat","schiavizzat","schiccherat","schierat","schifat","schinciat","schioccat","schiodat","schiumat","schius","schivat","schizzat","schizzettat","sciabolat","sciabordat","sciacquat","scialacquat","sciamanizzat","sciamannat","sciancat","sciancrat","scimmieggiat","scimmiottat","scint","scioccat","sciolinat","sciolt","sciorinat","scippat","sciroppat","sciss","sciupacchiat","sciupat","sclamat","sclerosat","sclerotizzat","scoccat","scocciat","scodat","scodellat","scoiat","scolarizzat","scolat","scollacciat","scollat","scollegat","scolorat","scolorit","scolpat","scolpit","scombaciat","scombinat","scombussolat","scommess","scomodat","scompaginat","scompagnat","scompartit","scompattat","scompensat","scompiacut","scompigliat","scompost","scomputat","scomunicat","sconcertat","sconciat","sconclus","sconfessat","sconficcat","sconfitt","sconfortat","sconfus","scongelat","scongiurat","sconness","sconosciut","sconquassat","sconsacrat","sconsigliat","sconsolat","scontat","scontentat","scontornat","scontort","scontrat","sconvolt","scopat","scoperchiat","scopert","scopiazzat","scoraggiat","scoraggit","scorat","scorazzat","scorciat","scorcit","scordat","scoreggiat","scorificat","scornat","scorniciat","scoronat","scorporat","scorrazzat","scorreggiat","scorrett","scors","scortat","scortecciat","scorticat","scort","scorzat","scosces","scosciat","scoss","scostat","scostolat","scotennat","scoticat","scotolat","scotomizzat","scottat","scott","scovat","scovert","scozzat","scozzonat","screditat","scremat","screpolat","screziat","scribacchiat","scriminat","scristianizzat","scritt","scritturat","scroccat","scrocchiat","scrollat","scrostat","scrutat","scrutinat","scucit","scudisciat","scuffiat","sculacciat","sculettat","scuoiat","scuriosat","scurit","scusat","sdaziat","sdebitat","sdegnat","sdemanializzat","sdentat","sdilinquit","sdoganat","sdolut","sdoppiat","sdraiat","sdrammatizzat","sdrucit","secat","seccat","secernut","secolarizzat","secondat","secretat","secret","sedat","sedentarizzat","sedott","segat","seghettat","segmentat","segnalat","segnat","segnoreggiat","segregat","segretat","seguitat","seguit","selciat","selezionat","sellat","sembrat","sementat","semicint","seminat","semplificat","senilizzat","sensibilizzat","sensorizzat","sentenziat","sentit","sentitasel","sentit","sentit","separat","sepolt","seppellit","sequenziat","sequestrat","serbat","serrat","servit","servoassistit","sessualizzat","sestuplicat","setacciat","setificat","settat","settorializzat","settuplicat","seviziat","sezionat","sfaccettat","sfagliat","sfaldat","sfalsat","sfamat","sfanalat","sfangat","sfarinat","sfasat","sfasciat","sfatat","sfatt","sfavillat","sfavorit","sfegatat","sfeltrat","sfendut","sferragliat","sferrat","sferzat","sfess","sfiancat","sfiatat","sfiat","sfibbiat","sfibrat","sfidat","sfiduciat","sfigurat","sfilat","sfilettat","sfinit","sfioccat","sfiorat","sfittat","sfocat","sfociat","sfoderat","sfogat","sfoggiat","sfogliat","sfollat","sfoltit","sfondat","sforacchiat","sforat","sforbiciat","sformat","sfornaciat","sfornat","sfornit","sforzat","sfottut","sfracellat","sfrangiat","sfrascat","sfratat","sfrattat","sfrecciat","sfregat","sfregiat","sfrenat","sfrisat","sfrondat","sfrucugliat","sfruculiat","sfruttat","sfumat","sfuocat","sgamat","sganasciat","sganciat","sgarbugliat","sgattaiolat","sgelat","sghiacciat","sgocciolat","sgolat","sgomberat","sgombrat","sgomentat","sgominat","sgomitat","sgomitolat","sgonfiat","sgorbiat","sgottat","sgovernat","sgozzat","sgraffiat","sgraffignat","sgranat","sgranchit","sgranellat","sgrassat","sgravat","sgretolat","sgridat","sgrommat","sgrondat","sgroppat","sgrossat","sgrovigliat","sgrugnat","sguainat","sgualcit","sguanciat","sguarnit","sguinzagliat","sgusciat","shakerat","shoccat","shuntat","sigillat","siglat","significat","signoreggiat","silenziat","silicizzat","sillabat","sillogizzat","silurat","simboleggiat","simbolizzat","simmetrizzat","simpatizzat","simulat","sincerat","sincopat","sincretizzat","sincronizzat","sindacalizzat","sindacat","singolarizzat","sinistrat","sinizzat","sinterizzat","sintetizzat","sintonizzat","siringat","sistematizzat","sistemat","situat","slabbrat","slacciat","slamat","slanciat","slappolat","slargat","slavizzat","slegat","slentat","slinguat","slogat","sloggat","sloggiat","slombat","slungat","smaccat","smacchiat","smagliat","smagnetizzat","smagrit","smaliziat","smallat","smaltat","smaltit","smammat","smanacciat","smangiat","smantellat","smarcat","smarginat","smarrit","smascellat","smascherat","smaterializzat","smattonat","smembrat","smentit","smerciat","smerdat","smerigliat","smerlat","smerlettat","smessal","smess","smezzat","smidollat","smielat","smilitarizzat","sminat","sminuit","sminuzzat","smistat","smitizzat","smobiliat","smobilitat","smobilizzat","smoccolat","smollicat","smonacat","smontat","smorbat","smorzat","smoss","smozzicat","smunt","smurat","smussat","smutandat","snaturat","snazionalizzat","snebbiat","snellit","snervat","snidat","sniffat","snobbat","snocciolat","snodat","snudat","sobbarcat","sobbollit","sobillat","socchius","soccors","soddisfatt","sodisfatt","sodomizzat","sofferit","soffermat","soffert","soffiat","soffocat","soffregat","soffritt","soffus","sofisticat","soggettivat","soggettivizzat","sogghignat","soggiogat","soggiunt","sogguardat","sognat","solarizzat","solcat","soleggiat","solennizzat","solfeggiat","solfitat","solfonat","solforat","solidificat","solit","sollazzat","sollecitat","solleticat","sollevat","solt","solubilizzat","solut","soluzionat","solvatat","somatizzat","someggiat","somigliat","sommat","sommers","sommess","somministrat","sommoss","sonat","sondat","sonorizzat","sopit","soppalcat","soppesat","soppiantat","sopportat","soppost","soppress","sopraddotat","sopraeccitat","sopraedificat","sopraelevat","sopraffat","sopraffatt","sopraggiunt","sopraintes","soprammess","soprannominat","soprapost","soprappres","soprascritt","sopraspes","soprassaturat","soprassedut","sopravanzat","sopravvalutat","sopravvedut","sopravvint","sopravvist","sopreccitat","sopredificat","soprelevat","soprintes","sorbettat","sorbit","sorgiunt","sormontat","sorpassat","sorpres","sorras","sorrett","sorseggiat","sorteggiat","sortit","sorvegliat","sorvolat","soscritt","sospes","sospettat","sospint","sospirat","sostantivat","sostanziat","sostentat","sostenut","sostituit","sottaciut","sotterrat","sottes","sottintes","sottoalimentat","sottocapitalizzat","sottodivis","sottoespost","sottofirmat","sottolineat","sottomess","sottomurat","sottopagat","sottopassat","sottopost","sottorappresentat","sottoris","sottoscritt","sottostimat","sottosviluppat","sottotitolat","sottovalutat","sottratt","soverchiat","sovesciat","sovietizzat","sovracapitalizzat","sovraccaricat","sovradimensionat","sovraeccitat","sovraespost","sovraffaticat","sovraffollat","sovraggiunt","sovraimpost","sovraintes","sovralimentat","sovramodulat","sovrappopolat","sovrappost","sovrariscaldat","sovrasaturat","sovrascritt","sovrastampat","sovrastat","sovrastimat","sovrautilizzat","sovreccitat","sovrespost","sovrimpost","sovrintes","sovvenut","sovvenzionat","sovvertit","spaccat","spacchettat","spacciat","spaginat","spaiat","spalancat","spalat","spalcat","spalleggiat","spalmat","spammat","spampanat","spampinat","spanat","spanciat","spandut","spannat","spannocchiat","spans","spantanat","spant","spaparacchiat","spaparanzat","spappolat","sparat","sparecchiat","sparigliat","sparit","sparlat","sparpagliat","spartit","spassat","spassatosel","spastoiat","spaurat","spaurit","spaventat","spazializzat","spaziat","spazieggiat","spazientit","spazzat","spazzolat","specchiat","specializzat","specificat","specillat","specolat","spedit","spegnat","spelacchiat","spelat","spellat","spennacchiat","spennat","spennellat","spent","spenzolat","sperat","sperimentat","spernacchiat","speronat","sperperat","spersonalizzat","sperticat","spesat","spes","spessit","spettacolarizzat","spettinat","spezzat","spezzettat","spezziat","spezzonat","spiaccicat","spianat","spiantat","spiat","spiattellat","spiazzat","spiccat","spicciat","spiccicat","spicciolat","spicconat","spidocchiat","spiegat","spiegazzat","spietrat","spifferat","spigionat","spignorat","spigolat","spigrit","spillat","spilluzzicat","spiluccat","spint","spintonat","spiombat","spiralizzat","spirantizzat","spirat","spiritualizzat","spiumat","spizzicat","spodestat","spoetizzat","spogliat","spolettat","spoliat","spoliticizzat","spollonat","spolmonat","spolpat","spoltronit","spolverat","spolverizzat","spompat","spompinat","sponsorizzat","spopolat","spoppat","sporcat","sportat","sport","sposat","spossedut","spossessat","spostat","spost","sprangat","sprecat","spregiat","spremut","spretat","sprezzat","sprigionat","sprimacciat","spromess","spronat","sprotett","sprovincializzat","sprovvedut","sprovvist","spruzzat","spugnat","spulat","spulciat","spuntat","spuntellat","spupazzat","spurgat","sputacchiat","sputat","sputtanat","squadernat","squadrat","squagliat","squagliatasel","squagliat","squalificat","squamat","squarciat","squartat","squassat","squattrinat","squilibrat","squinternat","sradicat","srotolat","srugginit","stabbiat","stabilit","stabilizzat","stabulat","staccat","stacciat","staffat","staffilat","staggiat","staggit","stagionat","stagliat","stagnat","stamburat","stampat","stampigliat","stanat","stancat","standardizzat","stangat","stanziat","stappat","starat","starnazzat","stasat","statalizzat","statizzat","statuit","stazzat","stazzonat","steccacciat","steccat","stecchit","stecconat","stemperat","stempiat","stenografat","stereotipat","sterilit","sterilizzat","sterminat","sterpat","sterrat","sterzat","stes","stigliat","stigmatizzat","stilat","stilettat","stilizzat","stillat","stimat","stimolat","stint","stipat","stipendiat","stipulat","stiracchiat","stirat","stivat","stizzit","stoccat","stolt","stomacat","stonat","stondat","stoppat","stordit","storicizzat","stornat","storpiat","stortat","stort","stozzat","strabenedett","strabuzzat","stracannat","straccat","stracciat","stracott","strafogat","stragodut","stralciat","stralodat","stralunat","stramaledett","stramortit","strangolat","straniat","stranit","straorzat","strapagat","strapazzat","straperdut","strapers","strappat","strasaput","strascicat","strascinat","strasformat","stratificat","strattonat","stravaccat","stravint","stravolt","stravolut","straziat","stregat","stremat","stressat","striat","stridulat","strigat","strigliat","strillat","striminzit","strimpellat","strinat","stringat","strisciat","stritolat","strizzat","strofinat","strombat","strombazzat","stroncat","stronzat","stropicciat","stroppat","stroppiat","strozzat","struccat","strumentalizzat","strumentat","strusciat","strutt","strutturalizzat","strutturat","stuccat","studiacchiat","studiat","stuellat","stufat","stupefatt","stupit","stuprat","sturat","stutat","stuzzicat","suas","subaffittat","subappaltat","subbiat","subdelegat","subissat","subit","sublicenziat","sublimat","sublocat","subodorat","subordinat","subornat","suburbanizzat","sucat","succhiat","succhiellat","succiat","succint","succis","suddistint","suddivis","suffissat","suffiss","suffragat","suffumicat","suffus","suggellat","suggerit","suggestionat","suicidat","sunteggiat","sunt","suolat","suonat","superat","superpagat","superraffreddat","supervalutat","supervisionat","supplicat","supplit","supportat","suppost","suppurat","surclassat","surfat","surgelat","surraffreddat","surriscaldat","surrogat","survoltat","suscitat","susseguit","sussidiat","sussunt","sussurrat","suturat","svaccat","svagat","svaligiat","svalutat","svapat","svariat","svasat","svecchiat","svegliat","svelat","svelenit","sveltit","svelt","svenat","svendut","sventagliat","sventat","sventolat","sventrat","sverginat","svergognat","svergolat","sverminat","sverniciat","svestit","svettat","svezzat","sviat","svignatosel","svigorit","svilit","svillaneggiat","sviluppat","svinat","svincolat","sviolinat","svirgolat","svirilizzat","svisat","sviscerat","svitat","sviticchiat","svolat","svolazzat","svolt","svolut","svuotat","tabuizzat","tabulat","taccat","taccheggiat","tacciat","tacitat","taciut","tagliat","taglieggiat","tagliuzzat","talebanizzat","tallonat","tampinat","tamponat","tangut","tannat","tappat","tappezzat","tarat","tardat","targat","tariffat","tarlat","tarmat","taroccat","tarpat","tartagliat","tartassat","tartufat","tassat","tassellat","tastat","tasteggiat","tatuat","tecnicizzat","tecnologizzat","tedeschizzat","tediat","teflonat","telecomandat","telecontrollat","telediffus","telefonat","telegrafat","teleguidat","telematizzat","telemetrat","teleradiotrasmess","teletrasmess","teletrasportat","tematizzat","temperat","tempestat","tempificat","templatizzat","temporizzat","temprat","temut","tentat","tenut","teologizzat","teorizzat","tepefatt","terebrat","terminat","termostatat","terrazzat","terrificat","terrorizzat","ters","terzarolat","terziarizzat","terziat","tesat","tesaurizzat","tes","tesserat","testat","testificat","testimoniat","timbrat","tindalizzat","tinteggiat","tint","tipicizzat","tipizzat","tippat","tiranneggiat","tirat","titillat","titolat","toccat","toelettat","tollerat","tolt","tonalizzat","tonificat","tonneggiat","tonsurat","torchiat","tormentat","tornit","torrefatt","tort","tortoreggiat","torturat","tosat","toscaneggiat","toscanizzat","tostat","totalizzat","traboccat","trabuccat","tracannat","tracciat","tradit","tradott","trafficat","trafilat","trafitt","traforat","trafugat","traghettat","traguardat","trainat","tralasciat","tralignat","tramandat","tramat","trambasciat","tramess","tramestat","tramezzat","tramortit","tramutat","tranciat","trangugiat","tranquillat","tranquillizzat","transatt","transces","transcodificat","transcors","transcritt","transennat","transfluit","transfus","transistorizzat","translitterat","transpost","transricevut","transustanziat","transvedut","transvist","trapanat","trapassat","trapiantat","traportat","trapost","trappost","trapuntat","trapunt","trarott","trasandat","trasbordat","trascelt","trasces","trascinat","trascors","trascritt","trascurat","trasdott","trasferit","trasfigurat","trasformat","trasfus","trasgredit","traslat","traslitterat","traslocat","trasmess","trasmutat","trasparit","traspirat","trasportat","traspost","trastullat","trasudat","trasvolat","trasvolt","trattat","tratteggiat","trattenut","tratt","traumatizzat","travagliat","travalicat","travasat","travedut","traversat","travestit","traviat","travisat","travist","travolt","trebbiat","triangolat","tribbiat","tribolat","tributat","triennalizzat","trimestralizzat","trincat","trincerat","trinciat","tripartit","triplicat","trisecat","trisezionat","tritat","triturat","trivellat","trollat","trombat","troncat","tropicalizzat","trovat","truccat","trucidat","truffat","tuffat","tumefatt","tumulat","turat","turbat","turlupinat","tutelat","twittat","ubbidit","ubbligat","ubicat","ubidit","ubiquitinat","ubriacat","uccellat","uccellinat","uccis","udit","ufficializzat","ufficiat","uggit","ugnat","uguagliat","ulcerat","ulit","ulolat","ultimat","ultracentrifugat","ululat","umanat","umanizzat","umettat","umidificat","umidit","umiliat","uncinat","unguentat","unificat","uniformat","unit","univerbat","universaleggiat","universalizzat","untat","unt","uperizzat","urbanizzat","urgenzat","urlat","urtacchiat","urtat","urticchiat","usat","usciolat","usolat","ustionat","usucapit","usurat","usurpat","utilitat","utilizzat","vaccinat","vagabondeggiat","vagellat","vagheggiat","vagillat","vagliat","valcat","valicat","validat","valorizzat","vals","valutat","vanagloriat","vanat","vandalizzat","vangat","vangelizzat","vanificat","vanit","vantaggiat","vantat","vaporat","vaporizzat","varat","varcat","variat","vasectomizzat","vaticinat","vedovat","vedut","vegetat","veggiat","vegliat","veicolat","velarizzat","velat","velettat","velinat","vellicat","vellutat","velocizzat","vendemmiat","vendicat","vendicchiat","venducchiat","vendut","venerat","vengiat","ventagliat","ventilat","ventolat","verbalizzat","vergat","vergheggiat","vergognat","vergolat","verificat","verminat","vernalizzat","verniciat","verrinat","versat","verseggiat","versificat","verticalizzat","vessat","vestit","vestit","vetrificat","vetrinat","vetrioleggiat","vettovagliat","vezzeggiat","viaggiat","vicinat","vicitat","videochattat","videochiamat","videocomunicat","videoregistrat","videotrasmess","vidimat","vigilat","vigliat","vigoreggiat","vigorit","vilificat","vilipes","villaneggiat","vincolat","vint","violat","violentat","violinat","virgolat","virgoleggiat","virgolettat","virilizzat","virtualizzat","visionat","visitat","vissut","vistat","vist","visualizzat","vitaliziat","vitalizzat","vitaminizzat","vittimizzat","vituperat","vivacizzat","vivandat","vivificat","vivisezionat","viziat","vocabolarizzat","vocalizzat","vocat","vociferat","volantinat","volatilizzat","volgarizzat","volicchiat","volpeggiat","voltat","volt","voltolat","volturat","voluminizzat","volut","volutoc","vomitat","vorat","votat","vulcanizzat","vuotat","wappat","wikificat","xerocopiat","zaffat","zampat","zampettat","zampillat","zannat","zappat","zappettat","zapponat","zavorrat","zeppat","zigrinat","zigzagat","zimbellat","zincat","zinnat","zipolat","zippat","zirlat","zittit","zizzagat","zoccolat","zollat","zombat","zonat","zonizzat","zoppat","zoppeggiat","zoppicat","zucconat","zufolat","zumat","zuppat"],{getWords:Y}=i.languageProcessing;const{directPrecedenceException:Z,precedenceException:aa,values:ta}=i.languageProcessing,{Clause:ia}=ta,ea=["fui","fu","fosti","fummo","foste","furono","stato","stati","stata","state","venire","vengo","vieni","viene","veniamo","venite","vengono","venivo","venivi","veniva","venivamo","venivate","venivano","verrò","verrai","verrà","verremo","verrete","verranno","venni","venisti","venne","venimmo","veniste","vennero","verrei","verresti","verrebbe","verremmo","verreste","verrebbero","venga","veniamo","venite","vengano","veniate","venissi","venisse","venissimo","veniste","venissero","andare","vado","vai","va","andiamo","andate","vanno","andavo","andavi","andava","andavamo","andavate","andavano","vada","andiate","andante","andato","andassi","andasse","andassimo","andaste","andassero","andai","andasti","andò","andammo","andarono","andrò","andrai","andrà","andremo","andrete","andranno","andrei","andresti","andrebbe","andremmo","andreste","andrebbero","vadano","andando"],{createRegexFromArray:ra,getClauses:sa}=i.languageProcessing,oa={Clause:class extends ia{constructor(a,t){super(a,t),this._participles=function(a){return Y(a).filter((a=>function(a){return["a","o","e","i"].some((t=>{if(a.length>3&&a.endsWith(t)){const t=a.slice(0,-1);return X.includes(t)}}))}(a)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const a=this.getClauseText(),t=this.getParticiples().filter((t=>!Z(a,t,I)&&!aa(a,t,J)));this.setPassive(t.length>0)}},stopwords:V,auxiliaries:ea,regexes:{auxiliaryRegex:ra(ea),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi,followingAuxiliaryExceptionRegex:ra(["il","i","la","le","lo","gli","uno","una"]),directPrecedenceExceptionRegex:ra(["mi","ti","si","ci","vi"])}};function na(a){return sa(a,oa)}const ca=window.lodash,{createSingleRuleFromArray:la,createRulesFromArrays:pa}=i.languageProcessing;function ma(a,t){return t.externalStemmer.vowels.includes(a)}function da(a,t){for(let i=0;ifunction(a,t){const i=ua(a,t.irregularPluralNounsAndAdjectives);if(i)return i;const e=ua(a,t.irregularVerbs);if(e)return e;if((a=function(a,t){a=function(a,t){const i=pa(t.externalStemmer.preProcessing.acuteReplacements,"gi");for(const t of i)a=a.replace(t.reg,t.repl);return a}(a=a.toLowerCase(),t);const i=la(t.externalStemmer.preProcessing.quReplacement,"g");return a=function(a,t){return a.replace(new RegExp(t.externalStemmer.preProcessing.vowelMarking,"g"),((a,t,i,e)=>t+i.toUpperCase()+e))}(a=a.replace(i.reg,i.repl),t),a}(a,t)).length<3)return a;const{r1:r,r2:s,rv:o}=function(a,t){let i=a.length,e=a.length,r=a.length;for(let e=0;e3&&(r=ma(a[1],t)?ma(a[0],t)&&ma(a[1],t)?function(a,t,i){const e=a.length;for(let i=2;i{"use strict";var a={d:(d,e)=>{for(var i in e)a.o(e,i)&&!a.o(d,i)&&Object.defineProperty(d,i,{enumerable:!0,get:e[i]})},o:(a,d)=>Object.prototype.hasOwnProperty.call(a,d),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},d={};a.r(d),a.d(d,{default:()=>Ca});const e=window.yoast.analysis,i=["el","los","la","las","un","una","unas","unos","uno","dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","este","estos","esta","estas","ese","esos","esa","esas","aquel","aquellos","aquella","aquellas","esto","eso","aquello"],r=["además","adicional","así","asimismo","aún","aunque","ciertamente","como","concluyendo","conque","contrariamente","cuando","decididamente","decisivamente","después","diferentemente","efectivamente","entonces","especialmente","específicamente","eventualmente","evidentemente","finalmente","frecuentemente","generalmente","igualmente","lógicamente","luego","mas","mientras","pero","por","porque","posteriormente","primero","principalmente","pronto","próximamente","pues","raramente","realmente","seguidamente","segundo","semejantemente","si","siguiente","sino","súbitamente","supongamos","también","tampoco","tercero","verbigracia","vice-versa","ya"],s=r.concat(["a causa de","a continuación","a diferencia de","a fin de cuentas","a la inversa","a la misma vez","a más de","a más de esto","a menos que","a no ser que","a pesar de","a pesar de eso","a pesar de todo","a peser de","a propósito","a saber","a todo esto","ahora bien","al contrario","al fin y al cabo","al final","al inicio","al mismo tiempo","al principio","ante todo","antes bien","antes de","antes de nada","antes que nada","aparte de","as así como","así como","así mismo","así pues","así que","así y todo","aún así","claro está que","claro que","claro que sí","como caso típico","como decíamos","como era de esperar","como es de esperar","como muestra","como resultado","como se ha notado","como sigue","comparado con","con el objeto de","con el propósito de","con que","con relación a","con tal de que","con todo","dado que","de ahí","de cierta manera","de cualquier manera","de cualquier modo","de ello resulta que","de este modo","de golpe","de hecho","de igual manera","de igual modo","de igualmanera","de la manera siguiente","de la misma forma","de la misma manera","de manera semejante","del mismo modo","de modo que","de nuevo","de otra manera","de otro modo","de pronto","de qualquier manera","de repente","de suerte que","de tal modo","de todas formas","de todas maneras","de todos modos","de veras","debido a","debido a que","del mismo modo","dentro de poco","desde entonces","después de","después de todo","ejemplo de esto","el caso es que","en aquel tiempo","en cambio","en cierto modo","en comparación con","en conclusión","en concreto","en conformidad con","en consecuencia","en consiguiente","en contraste con","en cualquier caso","en cuanto","en cuanto a","en definitiva","en efecto","en el caso de que","en este sentido","en fin","en fin de cuentas","en general","en lugar de","en otras palabras","en otro orden","en otros términos","en particular","en primer lugar","en primer término","en primera instancia","en realidad","en relación a","en relación con","en representación de","en resumen","en resumidas cuentas","en segundo lugar","en seguida","en síntesis","en suma","en todo caso","en último término","en verdad","en vez de","en virtud de","entre ellas figura","entre ellos figura","es cierto que","es decir","es evidente que","es incuestionable","es indudable","es más","está claro que","esto indica","excepto si","generalmente por ejemplo","gracias a","hasta aquí","hasta cierto punto","hasta el momento","hay que añadir","igual que","la mayor parte del tiempo","la mayoría del tiempo","lo que es peor","más tarde","mejor dicho","mientras tanto","mirándolo todo","nadie puede ignorar","no faltaría más","no obstante","o sea","otra vez","otro aspecto","para ilustrar","para concluir","para conclusión","para continuar","para empezar","para finalizar","para mencionar una cosa","para que","para resumir","para terminar","pongamos por caso","por añadidura","por cierto","por consiguiente","por ejemplo","por el consiguiente","por el contrario","por el hecho que","por eso","por esta razón","por esto","por fin","por la mayor parte","por lo general","por lo que","por lo tanto","por otro lado","por otra parte","por otro lado","por supuesto","por tanto","por último","por un lado","por una parte","primero que nada","primero que todo","pues bien","puesto que","rara vez","resulta que","sea como sea","seguidamente entre tanto","si bien","siempre que","siempre y cuando","sigue que","sin duda","sin embargo","sin ir más lejos","sobre todo","supuesto que","tal como","tales como","tan pronto como","tanto como","una vez","ya que"]);function n(a){let d=a;return a.forEach((e=>{(e=e.split("-")).length>0&&e.filter((d=>!a.includes(d))).length>0&&(d=d.concat(e))})),d}const o=["el","la","los","las","un","una","unos","unas"],c=["dos","tres","cuatro","cinco","seis","siete","ocho","nueve","diez","once","doce","trece","catorce","quince","dieciseis","diecisiete","dieciocho","diecinueve","veinte","cien","centena","mil","millon","millones"],t=["primera","segunda","tercera","cuarto","cuarta","quinto","quinta","sexto","sexta","septimo","septima","octavo","octava","noveno","novena","décimo","décima","vigésimo","vigésima","primeros","primeras","segundos","segundas","terceros","terceras","cuartos","cuartas","quintos","quintas","sextos","sextas","septimos","septimas","octavos","octavas","novenos","novenas","décimos","décimas","vigésimos","vigésimas"],l=["yo","yos","yoes","tú","él","ella","ello","nosotros","nosotras","vosotros","vosotras","ustedes","ellos","ellas"],u=["me","te","lo","se","nos","os","les"],m=["mí","ti","ud","uds","usted"],p=["conmigo","contigo","consigo"],b=["este","ese","aquel","esta","esa","aquella","estos","esos","aquellos","estas","esas","aquellas","esto","eso","aquello"],g=["mi","mis","mío","míos","mía","mías","nuestro","nuestros","nuestra","nuestras","tuyo","tuyos","tuya","tuyas","tu","tus","vuestro","vuestros","vuestra","vuestras","suyo","suyos","suya","suyas","su","sus"],z=["bastante","bastantes","mucho","muchas","mucha","muchos","más","muchísimo","muchísima","muchísimos","muchísimas","demasiado","demasiada","demasiados","demasiadas","poco","poca","pocos","pocas","menos","poquísimo","poquísima","poquísimos","poquísimas","demás","otros","otras","todo","toda","todos","todas"],f=["alguien","algo","algún","alguno","alguna","algunos","algunas","nadie","nada","ningún","ninguno","ninguna","ningunos","ningunas","tanto","tantos","tanta","tantas"],v=["cuyas","cual"],h=["cuyo"],j=["comoquiera","cualesquiera","cualquier","cuanta","cuantas","cuanto","cuantos","cuál","cuáles","cuánta","cuántas","cuánto","cuántos","cómo","dondequiera","dónde","quien","quienes","quienquiera","quién","quiénes","qué"],q=["allí","ahí","allá","aquí","acá","adónde","delante","detrás","debajo","adelante","atrás","adentro","afuera"],x=["he","has","ha","hay","hemos","habéis","han","hube","hubiste","hubo","hubimos","hubisteis","hubieron","había","habías","habíamos","habíais","habían","habría","habrías","habríais","habrían","habré","habrás","habrá","habremos","habréis","habrán","haya","hayas","hayamos","hayáis","hayan","hubiera","hubieras","hubiéramos","hubierais","hubieran","hubiese","hubieses","hubiésemos","hubieseis","hubiesen","hubiere","hubieres","hubiéremos","hubiereis","hubieren","habed","habido","debo","debes","debe","debemos","debéis","deben","debí","debiste","debió","debimos","debisteis","debieron","debía","debías","debíamos","debíais","debían","debería","deberías","deberíamos","deberíais","deberían","deberé","deberás","deberá","deberemos","deberéis","deberán","deba","debas","debamos","debáis","deban","debiera","debieras","debiéramos","debierais","debieran","debiese","debieses","debiésemos","debieseis","debiesen","debiere","debieres","debiéremos","debiereis","debieren","debed","debido","empiezo","empiezas","empieza","empezáis","empiezan","empecé","empezaste","empezó","empezamos","empezasteis","empezaron","empezaba","empezabas","empezábamos","empezabais","empezaban","empezaría","empezarías","empezaríamos","empezaríais","empezarían","empezaré","empezarás","empezará","empezaremos","empezaréis","empezarán","empiece","empieces","empecemos","empecéis","empiecen","empezara","empezaras","empezáramos","empezarais","empezaran","empezase","empezases","empezásemos","empezaseis","empezasen","empezare","empezares","empezáremos","empezareis","empezaren","empezad","empezado","comienzo","comienzas","comienza","comenzamos","comenzáis","comienzan","comencé","comenzaste","comenzó","comenzasteis","comenzaron","comenzaba","comenzabas","comenzábamos","comenzabais","comenzaban","comenzaría","comenzarías","comenzaríamos","comenzaríais","comenzarían","comenzaré","comenzarás","comenzará","comenzaremos","comenzaréis","comenzarán","comience","comiences","comencemos","comencéis","comiencen","comenzara","comenzaras","comenzáramos","comenzarais","comenzaran","comenzase","comenzases","comenzásemos","comenzaseis","comenzasen","comenzare","comenzares","comenzáremos","comenzareis","comenzaren","comenzad","comenzado","sigo","sigues","sigue","seguimos","seguis","siguen","seguí","seguiste","siguió","seguisteis","siguieron","seguía","seguías","seguíamos","seguíais","seguían","seguiría","seguirías","seguiríamos","seguiríais","seguirían","seguiré","seguirás","seguirá","seguiremos","seguiréis","seguirán","siga","sigas","sigamos","sigáis","sigan","siguiera","siguieras","siguiéramos","siguierais","siguieran","siguiese","siguieses","siguiésemos","siguieseis","siguiesen","siguiere","siguieres","siguiéremos","siguiereis","siguieren","seguid","seguido","tengo","tienes","tiene","tenemos","tenéis","tienen","tuve","tuviste","tuvo","tuvimos","tuvisteis","tuvieron","tenía","tenías","teníamos","teníais","tenían","tendría","tendrías","tendríamos","tendríais","tendrían","tendré","tendrás","tendrá","tendremos","tendréis","tendrán","tenga","tengas","tengamos","tengáis","tengan","tuviera","tuvieras","tuviéramos","tuvierais","tuvieran","tuviese","tuvieses","tuviésemos","tuvieseis","tuviesen","tuviere","tuvieres","tuviéremos","tuviereis","tuvieren","ten","tened","tenido","ando","andas","andamos","andáis","andan","anduve","anduviste","anduvo","anduvimos","anduvisteis","anduvieron","andaba","andabas","andábamos","andabais","andaban","andaría","andarías","andaríamos","andaríais","andarían","andaré","andarás","andará","andaremos","andaréis","andarán","ande","andes","andemos","andéis","anden","anduviera","anduvieras","anduviéramos","anduvierais","anduvieran","anduviese","anduvieses","anduviésemos","anduvieseis","anduviesen","anduviere","anduvieres","anduviéremos","anduviereis","anduvieren","andad","andado","quedo","quedas","queda","quedamos","quedáis","quedan","quedé","quedasteis","quedaron","quedaba","quedabas","quedábamos","quedabais","quedaban","quedaría","quedarías","quedaríamos","quedaríais","quedarían","quedaré","quedarás","quedará","quedaremos","quedaréis","quedarán","quede","quedes","quedemos","quedéis","queden","quedara","quedaras","quedáramos","quedarais","quedaran","quedase","quedases","quedásemos","quedaseis","quedasen","quedare","quedares","quedáremos","quedareis","quedaren","quedad","quedado","hallo","hallas","halla","hallamos","halláis","hallan","hallé","hallaste","halló","hallasteis","hallaron","hallaba","hallabas","hallábamos","hallabais","hallaban","hallaría","hallarías","hallaríamos","hallaríais","hallarían","hallaré","hallarás","hallará","hallaremos","hallaréis","hallarán","halle","halles","hallemos","halléis","hallen","hallara","hallaras","halláramos","hallarais","hallaran","hallase","hallases","hallásemos","hallaseis","hallasen","hallare","hallares","halláremos","hallareis","hallaren","hallad","hallado","vengo","vienes","viene","venimos","venis","vienen","vine","viniste","vino","vinimos","vinisteis","vinieron","venía","vanías","verníamos","veníais","venían","vendría","vendrías","vendríamos","vendíais","vendrían","vendré","vendrás","vendrá","vendremos","vendréis","vendrán","venga","vengas","vengamos","vengáis","vengan","viniera","vinieras","viniéramos","vinierais","vinieran","viniese","vinieses","viniésemos","vinieseis","viniesen","viniere","vinieres","viniéremos","viniereis","vinieren","ven","venid","venido","abro","abres","abre","abrismos","abrís","abren","abrí","abriste","abrió","abristeis","abrieron","abría","abrías","abríais","abrían","abriría","abrirías","abriríamos","abriríais","abrirían","abriré","abrirás","abrirá","abriremos","abriréis","abrirán","abra","abras","abramos","abráis","abran","abriera","abrieras","abriéramos","abrierais","abrieran","abriese","abrieses","abriésemos","abrieseis","abriesen","abriere","abrieres","abriéremos","abriereis","abrieren","abrid","abierto","voy","vas","va","vamos","vais","van","iba","ibas","íbamos","ibais","iban","iría","irías","iríamos","iríais","irían","iré","irás","irá","iremos","iréis","irán","vaya","vayas","vayamos","vayáis","vayan","ve","id","ido","acabo","acabas","acaba","acabamos","acabáis","acaban","acabé","acabaste","acabó","acabasteis","acabaron","acababa","acababas","acabábamos","acababais","acababan","acabaría","acabarías","acabaríamos","acabaríais","acabarían","acabaré","acabarás","acabará","acabaremos","acabaréis","acabarán","acabe","acabes","acabemos","acabéis","acaben","acabara","acabaras","acabáramos","acabarais","acabaran","acabase","acabases","acabásemos","acabaseis","acabasen","acabare","acabares","acabáremos","acabareis","acabaren","acabad","acabado","llevo","llevas","lleva","llevamos","lleváis","llevan","llevé","llevaste","llevó","llevasteis","llevaron","llevaba","llevabas","llevábamos","llevabais","llevaban","llevaría","llevarías","llevaríamos","llevaríais","llevarían","llevaré","llevarás","llevará","llevaremos","llevaréis","llevarán","lleve","lleves","llevemos","llevéis","lleven","llevara","llevaras","lleváramos","llevarais","llevaran","llevase","llevases","llevásemos","llevaseis","llevasen","llevare","llevares","lleváremos","llevareis","llevaren","llevad","llevado","alcanzo","alcanzas","alcanza","alcanzamos","alcanzáis","alcanzan","alcancé","alcanzaste","alcanzó","alcanzasteis","alcanzaron","alcanzaba","alcanzabas","alcanzábamos","alcanzabais","alcanzaban","alcanzaría","alcanzarías","alcanzaríamos","alcanzaríais","alcanzarían","alcanzaré","alcanzarás","alcanzará","alcanzaremos","alcanzaréis","alcanzarán","alcance","alcances","alcancemos","alcancéis","alcancen","alcanzara","alcanzaras","alcanzáramos","alcanzarais","alcanzaran","alcanzase","alcanzases","alcanzásemos","alcanzaseis","alcanzasen","alcanzare","alcanzares","alcanzáremos","alcanzareis","alcanzaren","alcanzad","alcanzado","digo","dices","dice","decimos","decís","dicen","dije","dijiste","dijo","dijimos","dijisteis","dijeron","decía","decías","decíamos","decíais","decían","diría","dirías","diríamos","diríais","dirían","diré","dirás","dirá","diremos","diréis","dirán","diga","digas","digamos","digáis","digan","dijera","dijeras","dijéramos","dijerais","dijeran","dijese","dijeses","dijésemos","dijeseis","dijesen","dijere","dijeres","dijéremos","dijereis","dijeren","di","decid","dicho","continúo","continúas","continúa","continuamos","continuáis","continúan","continué","continuaste","continuó","continuasteis","continuaron","continuaba","continuabas","continuábamos","continuabais","continuaban","continuaría","continuarías","continuaríamos","continuaríais","continuarían","continuaré","continuarás","continuará","continuaremos","continuaréis","continuarán","continúe","continúes","continuemos","continuéis","continúen","continuara","continuaras","continuáramos","continuarais","continuaran","continuase","continuases","continuásemos","continuaseis","continuasen","continuare","continuares","continuáremos","continuareis","continuaren","continuad","continuado","resulto","resultas","resulta","resultamos","resultáis","resultan","resulté","resultaste","resultó","resultasteis","resultaron","resultaba","resultabas","resultábamos","resultabais","resultaban","resultaría","resultarías","resultaríamos","resultaríais","resultarían","resultaré","resultarás","resultará","resultaremos","resultaréis","resultarán","resulte","resultes","resultemos","resultéis","resulten","resultara","resultaras","resultáramos","resultarais","resultaran","resultase","resultases","resultásemos","resultaseis","resultasen","resultare","resultares","resultáremos","resultareis","resultaren","resultad","resultado","puedo","puedes","puede","podemos","podéis","pueden","pude","pudiste","pudo","pudimos","pudisteis","pudieron","podía","podías","podíamos","podíais","podían","podría","podrías","podríamos","podríais","podrían","podré","podrás","podrá","podremos","podréis","podrán","pueda","puedas","podamos","podáis","puedan","pudiera","pudieras","pudiéramos","pudierais","pudieran","pudiese","pudieses","pudiésemos","pudieseis","pudiesen","pudiere","pudieres","pudiéremos","pudiereis","pudieren","poded","podido","quiero","quieres","quiere","queremos","queréis","quieren","quise","quisiste","quiso","quisimos","quisisteis","quisieron","quería","querías","queríamos","queríais","querían","querría","querrías","querríamos","querríais","querrían","querré","querrás","querrá","querremos","querréis","querrán","quiera","quieras","queramos","queráis","quieran","quisiera","quisieras","quisiéramos","quisierais","quisieran","quisiese","quisieses","quisiésemos","quisieseis","quisiesen","quisiere","quisieres","quisiéremos","quisiereis","quisieren","quered","querido","sabes","sabe","sabemos","sabéis","saben","supe","supiste","supo","supimos","supisteis","supieron","sabía","sabías","sabíamos","sabíais","sabían","sabría","sabrías","sabríamos","sabríais","sabrían","sabré","sabrás","sabrá","sabremos","sabréis","sabrán","sepa","sepas","sepamos","sepáis","sepan","supiera","supieras","supiéramos","supierais","supieran","supiese","supieses","supiésemos","supieseis","supiesen","supiere","supieres","supiéremos","supiereis","supieren","sabed","sabido","suelo","sueles","suele","solemos","soléis","suelen","solí","soliste","solió","solimos","solisteis","solieron","solía","solías","solíamos","solíais","solían","solería","solerías","soleríamos","soleríais","solerían","soleré","solerás","solerá","soleremos","soleréis","solerán","suela","suelas","solamos","soláis","suelan","soliera","solieras","soliéramos","solierais","solieran","soliese","solieses","soliésemos","solieseis","soliesen","soliere","solieres","soliéremos","soliereis","solieren","soled","solido","necesito","necesitas","necesitamos","necesitáis","necesitan","necesité","necesitaste","necesitó","necesitasteis","necesitaron","necesitaba","necesitabas","necesitábamos","necesitabais","necesitaban","necesitaría","necesitarías","necesitaríamos","necesitaríais","necesitarían","necesitaré","necesitarás","necesitará","necesitaremos","necesitaréis","necesitarán","necesite","necesites","necesitemos","necesitéis","necesiten","necesitara","necesitaras","necesitáramos","necesitarais","necesitaran","necesitase","necesitases","necesitásemos","necesitaseis","necesitasen","necesitare","necesitares","necesitáremos","necesitareis","necesitaren","necesita","necesitad","necesitado"],y=["haber","deber","empezar","comenzar","seguir","tener","andar","quedar","hallar","venir","abrir","ir","acabar","llevar","alcanzar","decir","continuar","resultar","poder","querer","saber","soler","necesitar"],w=["estoy","estás","está","estamos","estáis","están","estuve","estuviste","estuvo","estuvimos","estuvisteis","estuvieron","estuba","estabas","estábamos","estabais","estaban","estraría","estarías","estaríamos","estaríais","estarían","estaré","estarás","estará","estaremos","estaréis","estarán","esté","estés","estemos","estéis","estén","estuviera","estuviese","estuvieras","estuviéramos","estuvierais","estuvieran","estuvieses","estuviésemos","estuvieseis","estuviesen","estuviere","estuvieres","estuviéremos","estuviereis","estuvieren","estad","estado"],k=["soy","eres","es","somos","sois","son","fui","fuiste","fuimos","fuisteis","fueron","era","eras","éramos","erais","eran","sería","serías","seríamos","seríais","serían","seré","serás","seremos","seréis","serán","sea","seas","seamos","seáis","sean","fueras","fuéramos","fuerais","fueran","fuese","fueses","fuésemos","fueseis","fuesen","fuere","fueres","fuéremos","fuereis","fueren","sé","sed","sido"],S=["estar"],P=["ser"],T=["a","ante","abajo","adonde","al","allende","alrededor","amén","antes","arriba","aun","bajo","cabe","cabo","con","contigo","contra","de","dejante","del","dentro","desde","donde","durante","en","encima","entre","excepto","fuera","hacia","hasta","incluso","mediante","más","opuesto","par","para","próximo","salvo","según","sin","so","sobre","tras","versus","vía"],O=["cerca"],W=["o","y","entonces","e","u","ni","bien","ora"],R=["igual"],E=["apenas","segun","que"],C=["apunto","apunta","confieso","confiesa","confesaba","revelado","revelo","revela","revelaba","declarado","declaro","declara","declaba","señalo","señala","señalaba","declaraba","comento","comenta"],A=["muy","tan","completamente","suficiente","tal","tales"],L=["hago","haces","hace","hacemos","hacéis","hacen","hice","hiciste","hizo","hicimos","hicisteis","hicieron","hacía","hacías","hacíamos","hacíais","hacían","haría,","harías","haríamos","haríais","harían","haré","harás","hará","haremos","haréis","harán","haga","hagas","hagamos","hagáis","hagan","hiciera","hicieras","hiciéramos","hicierais","hicieran","hiciese","hicieses","hiciésemos","hicieseis","hiciesen","hiciere","hicieres","hiciéremos","hiciereis","hicieren","haz","haced","hecho","parezco","pareces","parece","parecemos","parecéis","parecen","parecí","pareciste","pareció","parecimos","parecisteis","parecieron","parecía","parecías","parecíamos","parecíais","parecían","parecería","parecerías","pareceríamos","pareceríais","parecerían","pareceré","parecerás","parecerá","pareceremos","pareceréis","parecerán","parezca","parezcas","parezcamos","parezcáis","parezcan","pareciera","parecieras","pareciéramos","parecierais","parecieran","pareciese","parecieses","pareciésemos","parecieseis","pareciesen","pareciere","parecieres","pareciéremos","pareciereis","parecieren","pareced","parecido","iba","ibais","iban","ibas","id","ido","iremos","irá","irán","irás","iré","iréis","iría","iríais","iríamos","irían","irías","va","vais","vamos","van","vas","vaya","vayamos","vayan","vayas","vayáis","ve","voy","yendo","íbamos"],M=["hacer","parecer","ir"],F=["enfrente","claro","bueno","mejor","mejores","buena","buenos","buenas","óptimo","óptimos","óptimas","bonísimo","bonísima","bonísimos","bonísimas","buenísimo","buenísima","buenísimos","buenísimas","buenérrimo","buenérrima","buenérrimos","buenérrimas","nuevo","nueva","nuevos","nuevas","novísimo","novísima","novísimos","novísimas","nuevísimo","nuevísima","nuevísimos","nuevísimas","viejo","viejos","vieja","viejas","anterior","grande","gran","grandes","mayores","mayor","máximo","máxima","grandísimo","grandísima","máximos","máximas","grandísimos","grandísimas","fácil","fáciles","rápido","rápida","rápidos","rápidas","lejos","lejas","lejote","lejotes","difícil","difíciles","propio","propios","propia","propias","largo","larga","largos","largas","bajos","baja","bajas","inferior","ínfimo","ínfima","ínfimos","ínfimas","bajísimo","bajísima","bajísimos","bajísimas","alto","alta","altos","altas","superior","superiores","supremo","suprema","supremos","supremas","sumo","suma","sumos","sumas","altísimo","altísima","altísimos","altísimas","regular","regulares","normal","pequeño","pequeña","pequeños","pequeñas","menor","pequeñísimo","pequeñísima","pequeñísimos","pequeñísimas","mínimo","mínima","mínimos","mínimas","diminuta","diminuto","diminutas","diminutos","chiquitito","chiquititos","chiquitita","chiquititas","corta","corto","cortas","cortos","principal","principales","mismo","mismos","misma","mismas","capaz","capaces","cierta","cierto","ciertas","ciertos","certísimos","certísimas","ciertísimo","ciertísima","ciertísimos","ciertísimas","llamado","llamada","llamados","llamadas","mayormente","reciente","recientes","completa","completo","completas","completos","absoluta","absoluto","absolutas","absolutos","últimamente","posible","común","comúnes","comúnmente","constantemente","continuamente","directamente","fácilmente","casi","ligeramente","estima","estimada","estimado","aproximada","aproximadamente","última","últimas","último","últimos","diferente","diferentes","similar","mal","malo","malos","mala","malas","peor","pésimo","pésima","malísimo","malísima","pésimos","pésimas","malísimos","malísimas","perfectamente","excelente","final","general"],N=["ah","eh","ejem","ele","achís","adiós","agur","ajá","ajajá","ala","alá","albricias","aleluya","alerta","alirón","aló","amalaya","ar","aro","arrarray","arre","arsa","atatay","aúpa","ax","ay","ayayay","bah","banzai","barajo","bla","bravo","buf","bum","ca","caguendiós","canastos","caracho","caracoles","carajo","caramba","carape","caray","cáscaras","cáspita","cataplum","ce","chao","chau","che","chis","chist","chitón","cho","chucho","chus","cielos","clo","coche","cochi","cojones","concho","coño","córcholis","cuchí","cuidado","cuz","demonio","demontre","despacio","diablo","diantre","dios","ea","epa","equilicuá","estúpido","eureka","evohé","exacto","fantástico","firmes","fo","forte","gua","gualá","guarte","guay","hala","hale","he","hi","hin","hola","hopo","huesque","huiche","huichó","huifa","hurra","huy","ja","jajajá","jajay","jaque","jau","jo","jobar","joder","jolín","jopo","leñe","listo","malhayas","mamola","mecachis","miéchica","mondo","moste","mutis","nanay","narices","oh","ojalá","ojo","okay","ole","olé","órdiga","oste","ostras","ox","oxte","paf","pardiez","paso","pucha","puf","puff","pumba","puñeta","quia","quiúbole","recórcholis","rediez","rediós","salve","sanseacabó","sniff","socorro","ta","tararira","tate","tururú","uf","uh","ui","upa","uste","uy","victoria","vítor","viva","za","zambomba","zapateta","zape","zas"],B=["kg","mg","gr","g","km","m","l","ml","cl"],D=["minuto","minutos","hora","horas","día","días","semana","semanas","mes","meses","año","años","hoy","mañana","ayer"],_=["cosa","cosas","manera","maneras","caso","casos","pieza","piezas","vez","veces","parte","partes","porcentaje","instancia","aspecto","aspectos","punto","puntos","objeto","objectos","persona","personas"],I=["no","euros","sí","síes","noes"],V=(n(F),n([].concat(t,y,S,P,M)),n([].concat(o,T,W,b,A,z,g)),n([].concat(r,l,u,m,p,N,c,x,w,k,C,L,f,R,E,v,h,j,q,I,O,B,D,_)),n([].concat(o,T,u,g,f,j,c,t,L,M,C,v,h,p,m,O))),J=n([].concat(w,S)),G=n([].concat(o,c,t,b,g,l,p,m,u,z,f,v,h,j,q,O,x,y,w,k,S,P,T,W,R,E,C,r,["básicamente","esencialmente","primeramente","siempre","nunca","ahora","quizá","acaso","inclusive","probablemente","verdaderamente","seguramente","jamás","obviamente","indiscutiblement","inmediatamente","previamente"],A,L,M,N,F,B,_,I,D,["sra","sras","srta","sr","sres","dra","dr","profa","prof"],["jr","sr"])),H=["pero","ora","aunque","aun","mientras","porque","apenas","si","antes","después","cómo","como","empero","que","cuanto","cuando","cual","cuales","quién","quien","quienes","dónde","adónde","cuyo","cuyos","cuya","cuyas"],K=[["de un lado","de otra parte"],["de un lado","de otro"],["no","sino que"],["no","sino"],["por un lado","por otro lado"],["por una parte","por otra parte"],["por una parte","por otra"],["tanto","como"],["bien","bien"]],Q=JSON.parse('{"vowels":"aeiouáéíóúü","deviations":{"vowels":[{"fragments":["i[ií]","[íú][aeo]","o[aáeéíóú]","uu","flu[iea]","ru[ie]","eio","eu[aá]","oi[aó]","[iu]ei","ui[éu]","^anti[aeoá]","^zoo","coo","microo"],"countModifier":1},{"fragments":["[eéó][aáeéíoóú]"],"countModifier":1},{"fragments":["[aáü][aáeéiíoóú]","eoi","oeu","[eu]au"],"countModifier":1}],"words":{"full":[{"word":"scooter","syllables":2},{"word":"y","syllables":1},{"word":"beat","syllables":1},{"word":"via","syllables":2},{"word":"ok","syllables":2}],"fragments":{"global":[{"word":"business","syllables":2},{"word":"coach","syllables":1},{"word":"reggae","syllables":2},{"word":"mail","syllables":1},{"word":"airbag","syllables":2},{"word":"affaire","syllables":2},{"word":"training","syllables":2},{"word":"hawaian","syllables":3},{"word":"saharaui","syllables":3},{"word":"nouveau","syllables":2},{"word":"chapeau","syllables":2},{"word":"free","syllables":1},{"word":"green","syllables":1},{"word":"jeep","syllables":1},{"word":"toffee","syllables":2},{"word":"tweet","syllables":1},{"word":"tweed","syllables":1},{"word":"semiautomátic","syllables":6},{"word":"estadou","syllables":4},{"word":"broadway","syllables":2},{"word":"board","syllables":1},{"word":"load","syllables":1},{"word":"roaming","syllables":2},{"word":"heavy","syllables":2},{"word":"break","syllables":1}]}}}}'),U={recommendedLength:25},X=["ababillad","abacorad","abadernad","abajad","abalanzad","abaldonad","abalead","abaluartad","abanad","abancalad","abanderad","abanderizad","abandonad","abanicad","abañad","abaratad","abarbetad","abarcad","abarload","abarquillad","abarracad","abarrad","abarrotad","abastad","abastardad","abastecid","abastionad","abatanad","abatatad","abatid","abatojad","abdicad","abducid","abejead","abejonead","abejorread","abeldad","abemolad","aberrad","abetunad","abiert","abigarrad","abisagrad","abismad","abjurad","ablacionad","ablandad","abluid","abnegad","abobad","abocad","abocetad","abochornad","abocinad","abofad","abofetead","abogad","abolid","abollad","abombad","abominad","abonad","abordad","aborrascad","aborrecid","aborregad","abortad","abotagad","abotargad","abotonad","abovedad","aboyad","abracad","abrasad","abrazad","abrevad","abreviad","abribonad","abrigad","abrillantad","abrochad","abrogad","abroncad","abrotoñad","abrumad","abscedid","abscondid","absolutizad","absorbid","abstenid","abstergid","abstraíd","absuelt","abuchead","abultad","abundad","abuñolad","aburguesad","aburrid","aburujad","abusad","acabad","acaballad","acachetead","academizad","acaecid","acairelad","acalambrad","acalenturad","acallad","acalmad","acalorad","acamad","acampad","acampanad","acanalad","acantilad","acantonad","acañonead","acaparad","acaramelad","acardenalad","acariciad","acarread","acartonad","acastillad","acatad","acatarrad","acaudillad","accedid","accesad","accidentad","accionad","acechad","acedad","aceitad","acelerad","acendrad","acensad","acensuad","acentuad","acepillad","aceptad","acerad","acercad","acerrojad","acertad","acervad","acetad","acetificad","acezad","achacad","achaflanad","achantad","achaparrad","achatad","achatarrad","achicad","achicharrad","achicopalad","achinad","achispad","achocolatad","acholad","achorad","achuchad","acibarad","acicalad","acicatead","acidificad","acidulad","aciemad","acitronad","aclamad","aclarad","aclimatad","acobardad","acobijad","acodad","acoderad","acogid","acogotad","acojinad","acojonad","acolad","acolchad","acolchonad","acolitad","acollad","acollarad","acometid","acomodad","acompañad","acompasad","acomplejad","acondicionad","aconductad","acongojad","aconsejad","acontecid","acopiad","acoplad","acoquinad","acorad","acorazad","acorchad","acordad","acordonad","acorralad","acorrid","acortad","acosad","acostad","acostumbrad","acotad","acotejad","acotolad","acovachad","acrecentad","acrecid","acreditad","acreíd","acremad","acrianzad","acribillad","acriminad","acrisolad","acristalad","activad","actuad","actualizad","acuantiad","acuarelad","acuartelad","acuatizad","acuchillad","acuciad","acuclillad","acudid","acuerpad","acuitad","aculad","aculebrad","aculturad","acumulad","acunad","acuñad","acurrucad","acusad","adamad","adamascad","adaptad","adarvad","adecentad","adecuad","adehesad","adelantad","adelgazad","ademad","adentrad","aderezad","adestrad","adeudad","adherid","adiad","adicionad","adiestrad","adietad","adinerad","adivinad","adjetivad","adjudicad","adjuntad","administrad","admirad","admitid","adobad","adocenad","adoctrinad","adolecid","adoptad","adoquinad","adorad","adormecid","adormid","adormilad","adornad","adosad","adquirid","adscript","adscrit","aducid","adueñad","adujad","adulad","adulterad","adurid","advenid","adverad","adversad","advertid","advocad","adyacid","aerad","aerografiad","aerotransportad","afamad","afanad","afantasmad","afead","afectad","afeitad","afelpad","afeminad","aferrad","afianzad","aficionad","afiebrad","afilad","afiliad","afiligranad","afinad","afincad","afirmad","aflamencad","afligid","aflojad","aflorad","afluid","aforad","aforrad","afortunad","afrancesad","afrentad","africanizad","afrontad","agachad","agarrad","agarrotad","agasajad","agavillad","agazapad","agenciad","agendad","agermanad","aggiornad","agigantad","agilipollad","agilizad","agitad","agitanad","aglomerad","aglutinad","agobiad","agolpad","agonizad","agorad","agostad","agotad","agraciad","agradad","agradecid","agrandad","agravad","agraviad","agredid","agregad","agremiad","agriad","agrietad","agringad","agripad","agrisad","agrumad","agrupad","aguad","aguaitad","aguantad","aguapad","aguardad","agudizad","agüevad","aguijad","aguijonead","aguisad","agüitad","agujerad","agujeread","agusanad","aguzad","ahajad","ahechad","aherrojad","aherrumbrad","ahijad","ahilad","ahincad","ahinojad","ahitad","ahogad","ahondad","ahorcad","ahorcajad","ahormad","ahorquillad","ahorrad","ahuecad","ahumad","ahusad","ahuyentad","airad","airead","aislad","ajad","ajamonad","ajardinad","ajetread","ajuarad","ajuntad","ajustad","ajusticiad","alabad","alabead","alaciad","alambicad","alambrad","alampad","alancead","alardead","alargad","alarmad","albead","albergad","alboread","alborotad","alborozad","alburead","alcahuetead","alcalinizad","alcanforad","alcantarillad","alcanzad","alcoholad","alcoholizad","alcorzad","alead","aleatorizad","alebrestad","aleccionad","alechugad","alegad","alegorizad","alegrad","alejad","alelad","alentad","alertad","aletargad","aletead","alevantad","alfabetizad","alfalfad","alfombrad","algodonad","alhajad","aliad","alicatad","alienad","aligerad","alijad","alijarad","alimentad","alindad","alinead","aliñad","alisad","alistad","aliviad","alivianad","allanad","allegad","almacenad","almagrad","almenad","almendrad","almibarad","almidonad","almizclad","almohadillad","almohazad","almorzad","alocad","alojad","alongad","alquilad","alquitarad","alquitranad","altead","alterad","altercad","alternad","aluciflipad","alucinad","aludid","alumbrad","alunizad","aluzad","alzad","amacollad","amad","amadrinad","amaestrad","amagad","amainad","amaitinad","amalgamad","amamantad","amancebad","amancillad","amanecid","amanerad","amansad","amanzanad","amañad","amarad","amargad","amariconad","amarillead","amarillecid","amarizad","amarrad","amartelad","amartillad","amartizad","amasad","amasijad","ambicionad","ambientad","amblad","ambulad","amedrentad","amelcochad","amenazad","amenguad","amenizad","americanizad","ameritad","amerizad","ametrallad","amigad","amilanad","aminorad","amistad","amnistiad","amoblad","amodorrad","amohinad","amojamad","amojonad","amolad","amoldad","amonad","amonedad","amonestad","amontonad","amoratad","amordazad","amorrad","amortajad","amortiguad","amortizad","amoscad","amostazad","amotinad","amovid","amparad","ampliad","amplificad","ampollad","amputad","amueblad","amurad","amurallad","amurrad","amusgad","anadead","analizad","anarquizad","anastomosad","anatematizad","anchad","anclad","ancorad","andad","andaluzad","andamiad","aneblad","anegad","anestesiad","anexad","anexionad","anglicanizad","anglificad","angostad","angulad","angustiad","anhelad","anidad","anihilad","anillad","animad","animalizad","aniñad","aniquilad","anisad","anochecid","anodizad","anonadad","anonimizad","anotad","anoticiad","anquilosad","ansiad","antagonizad","antecedid","antecogid","antedatad","antedich","antepagad","antepasad","antepuest","antevenid","antevist","anticipad","anticuad","antiguad","antojad","antologad","antologizad","antropizad","antropomorfizad","anualizad","anublad","anudad","anulad","anunciad","añadid","añejad","añorad","añublad","añudad","aojad","aovad","apabullad","apacentad","apachad","apachurrad","apaciguad","apadrinad","apagad","apalabrad","apalancad","apalead","apalizad","apanad","apandad","apaniguad","apantallad","apañad","apapachad","aparad","aparatad","aparcad","aparead","aparecid","aparejad","aparentad","apartad","apasionad","apatrullad","apayasad","apead","apechugad","apedazad","apedrad","apedread","apegad","apelad","apellidad","apelmazad","apelotad","apelotonad","apenad","apencad","apercibid","aperrad","aperread","apersonad","apertrechad","aperturad","apesadumbrad","apesarad","apestad","apetecid","apiadad","apilad","apiñad","apiolad","apipad","apisonad","aplacad","aplanad","aplanchad","aplastad","aplatanad","aplaudid","aplazad","aplegad","aplicad","aplomad","apocad","apocopad","apodad","apoderad","apolillad","apoltronad","apoquinad","aporread","aportad","aposentad","apostad","apostatad","apostillad","apostrofad","apoyad","apreciad","aprehendid","apremiad","aprendid","apresad","aprestad","apresurad","apretad","apretujad","apriscad","aprisionad","aprobad","aproblemad","aprontad","apropiad","apropriad","aprovechad","aprovisionad","aproximad","aptad","apuest","apuntad","apuntalad","apuntillad","apuñalad","apurad","aquejad","aquerenciad","aquietad","aquilatad","arabizad","arad","arañad","araucanizad","arbitrad","arbolad","arborizad","archivad","arcillad","ardid","arenad","arengad","argentad","argüendead","argüid","argumentad","arietad","armad","armonizad","aromad","aromatizad","arpegiad","arponad","arponead","arquead","arrabalizad","arracimad","arraigad","arramblad","arramplad","arrancad","arranchad","arrasad","arrastrad","arread","arrebañad","arrebatad","arrebolad","arrebujad","arreciad","arrecid","arredrad","arregazad","arreglad","arrejuntad","arrellanad","arremangad","arrematad","arremedad","arremetid","arremolinad","arrempujad","arrendad","arrepentid","arrestad","arriad","arribad","arriesgad","arrimad","arrinconad","arriostrad","arriscad","arrobad","arrodillad","arrogad","arrojad","arrollad","arromad","arropad","arrostrad","arroyad","arruad","arrugad","arruinad","arrullad","arrumad","arrumbad","articulad","artillad","aruñad","asad","asaetead","asalariad","asaltad","ascendid","asead","asechad","asediad","asegurad","asemejad","asenderead","asentad","asentid","aserrad","aserruchad","asesinad","asesorad","asestad","aseverad","asfaltad","asfixiad","asid","asignad","asilad","asilvestrad","asimilad","asistid","asociad","asolad","asolead","asomad","asombrad","asonantad","asordad","aspad","asperjad","aspirad","asquead","astillad","astreñid","astringid","astriñid","asturianizad","asumid","asustad","atacad","atad","atajad","atalayad","atañid","atarantad","atarazad","ataread","atarragad","atarugad","atascad","ataviad","atemorizad","atemperad","atenacead","atenazad","atendid","atenid","atentad","atenuad","aterid","aterrad","aterrazad","aterrizad","aterrorizad","atesad","atesorad","atestad","atestiguad","atezad","atiborrad","atiesad","atildad","atinad","atirantad","atisbad","atizad","atollad","atolondrad","atomizad","atontad","atorad","atorgad","atormentad","atornillad","atorrad","atosigad","atracad","atragantad","atraíd","atraillad","atrancad","atrapad","atrasad","atravesad","atreguad","atrevid","atribuid","atribulad","atrincherad","atrofiad","atrojad","atronad","atropad","atropellad","atufad","aturad","aturdid","aturrullad","aturullad","atusad","audicionad","auditad","augmentad","augurad","aullad","aumentad","aunad","aupad","aureolad","auscultad","ausentad","auspiciad","autenticad","autentificad","autoabastecid","autoadiestrad","autoadministrad","autoafirmad","autoaislad","autoalimentad","autoanalizad","autoaplicad","autoasignad","autobautizad","autobloquead","autobombead","autocalificad","autocensurad","autocompletad","autoconducid","autoconsiderad","autoconsumid","autoconvocad","autocoronad","autocorregid","autocremad","autodeclarad","autodefendid","autodefinid","autodelatad","autodenominad","autodescartad","autodescript","autodescrit","autodestruid","autodeterminad","autodirigid","autodisuelt","autoeditad","autoeliminad","autoengañad","autoensamblad","autoevacuad","autoevaluad","autoexcluid","autoexigid","autoexiliad","autoexplotad","autofinanciad","autogestionad","autogobernad","autografiad","autoidentificad","autoimpuest","autoinculpad","autoinmolad","autolesionad","autolimitad","automarginad","automatizad","automedicad","automejorad","automutilad","autonombrad","autonomizad","autopagad","autoparodiad","autopreparad","autopresentad","autoproclamad","autoproducid","autoprogramad","autopromocionad","autopropagad","autoprotegid","autopublicad","autoreconocid","autoregulad","autorizad","autorrealizad","autorreconocid","autorregulad","autorreportad","autorreproducid","autorretratad","autosabotead","autotitulad","auxiliad","avalad","avalentad","avalorad","avaluad","avanzad","avasallad","avecinad","avecindad","avellanad","avenid","aventad","aventajad","aventurad","averad","avergonzad","averiad","averiguad","avezad","aviad","avinagrad","avisad","avispad","avistad","avituallad","avivad","avizorad","avocad","avulsionad","ayudad","ayunad","ayuntad","ayustad","azadonad","azafranad","azarad","azogad","azolvad","azorad","azotad","azucarad","azufrad","azulad","azulead","azulejad","azuzad","babead","babosead","bachaquead","bachead","badajead","bailad","bailotead","bajad","bajonead","balacead","balad","balancead","balbucead","balbucid","balcanizad","balconead","baldad","baldead","balead","balizad","balotad","balsead","bambolead","banalizad","bancad","bancarizad","bandead","banderillead","banead","banquetead","bañad","baptizad","baquetead","baquiad","barajad","barajead","baratad","barbad","barbarizad","barbechad","barbotad","barbotead","baremad","barequead","barloventead","barnizad","barrad","barread","barrenad","barretead","barrid","barritad","barruntad","basad","basculad","bastad","bastardead","bastid","bastonead","basuread","batallad","batead","batid","bautizad","baylad","beatificad","bebid","becad","becerread","bendecid","bendit","beneficiad","berread","besad","besucad","besuquead","bichead","bifurcad","bilateralizad","binad","bioacumulad","bioconcentrad","biodegradad","biodiversificad","biofortificad","biografiad","biosintetizad","birlad","bisad","bisbisad","bisecad","biselad","bizcad","bizmad","bizquead","blandead","blandid","blanquead","blanquecid","blasfemad","blasonad","blindad","blocad","blofead","bloguead","bloquead","bobead","bobinad","bochad","bocinad","bofetead","bogad","boicotead","bojad","bojead","bolead","boletead","boletinad","bolivianizad","bolsead","bombardead","bombead","bonificad","bootead","boquead","borbollad","borbotad","borbotead","bordad","bordead","bordonead","borrad","borrajead","borronead","bosad","bosquejad","bostezad","botad","botanizad","botead","botonad","botonead","boxead","boyad","bracead","bramad","brasead","bread","bregad","brezad","bridad","brillad","brincad","brindad","britanizad","brizad","bromead","broncead","brotad","brujulead","bruñid","brutalizad","bucead","buelt","bufad","bufonead","buitread","bulead","bullid","burbujead","burilad","burlad","burocratizad","buscad","buzad","buzonead","bypasead","cabalgad","cabecead","cabestrad","cabestread","cabid","cabildead","cabizbajad","cablead","cablegrafiad","cabrahigad","cabread","cabrestead","cabrillead","cabriolad","cabriolead","çabullid","caçad","cacaread","cachad","cachead","cachetead","cachimbead","cachiporread","cachondead","cachuread","caducad","cafichad","cafichead","cagad","caíd","cairelad","cajonead","calabriad","calad","calafatead","calcad","calcetad","calcificad","calcinad","calculad","caldead","calefaccionad","calefactad","calendarizad","calentad","calibrad","calificad","caligrafiad","callad","callejead","calmad","calumniad","calzad","cambalachad","cambalachead","cambiad","camelad","caminad","camorread","camotead","campad","campanead","campead","campeonad","camuflad","camuflajead","canalizad","cancanead","cancelad","cancerad","candad","candidatad","candidatead","candidatizad","canead","canibalizad","canjead","canonizad","cansad","cantad","cantead","cantinflead","canturread","canturriad","cañonead","caotizad","capacitad","capad","capead","capitalizad","capitanead","capitulad","capolad","capotad","capotead","capsulad","captad","capturad","capuzad","caracolead","caracterizad","caramelizad","caratulad","carbonad","carbonead","carbonizad","carburad","carburizad","carcajead","carcomid","cardad","caread","carecid","carenad","cargad","cariad","caricaturad","caricaturizad","cariciad","carminad","carnavalead","carnavalizad","carnead","carnetizad","carpid","carraspead","carretead","carrilead","carrozad","cartead","cartelizad","carteread","cartografiad","casad","cascabelead","cascad","castañead","castañetead","castellanizad","castigad","castrad","catabolizad","catad","catalanizad","catalizad","catalogad","catapultad","catead","categorizad","catequizad","cativad","catolizad","caucionad","causad","cautelad","cauterizad","cautivad","cavad","cavilad","cazad","cebad","cecead","cedid","cedulad","cegad","cejad","celad","celebrad","cementad","cenad","cencerread","cendrad","censad","censurad","centellad","centellead","centrad","centralizad","centrifugad","centuplicad","ceñid","cepillad","cercad","cercenad","cerchad","cerciorad","cerdead","cernid","cerrad","certificad","cesad","cesantead","cespitad","chachad","chacharead","chacotead","chafad","chafardead","chalad","chamarilead","chambead","champurrad","chamullad","chamuscad","chamuyad","chancead","chancletead","chanelad","changuead","chantajead","chantead","chapad","chapalead","chapead","chapotead","chapucead","chapurrad","chapurread","chapuzad","chaquetead","charlad","charlatanead","charlotead","charolad","charquead","chascad","chasquead","chatead","chavetead","checad","chequead","chicanead","chichad","chicharrad","chicotead","chiflad","chillad","chinchad","chinead","chingad","chinguead","chipead","chiquead","chirlad","chirriad","chismead","chismorread","chismosead","chispad","chispead","chisporrotead","chistad","chivad","chivatead","chocad","chochead","chollad","chopead","choread","chorizad","chorread","chotad","chotead","chufad","chulead","chupad","chupetead","churrascad","churrasquead","churruscad","chusmead","chutad","chuzad","ciad","ciberacosad","cicatrizad","cifrad","cilindrad","cimad","cimblad","cimbrad","cimbread","cimentad","cincelad","cinchad","cinematografiad","cinglad","cintilad","circuid","circulad","circuncidad","circundad","circunferid","circunnavegad","circunscript","circunscrit","circunstanciad","circunvalad","circunvenid","circunvolad","ciscad","citad","ciudadanizad","civilizad","cizallad","cizañad","cizañead","clamad","clamoread","claread","clarificad","clasificad","claudicad","clausurad","clavad","clavetead","clicad","climatizad","cliquead","clocad","clonad","cloquead","clorad","clorinad","cloroformizad","coaccionad","coactuad","coadyuvad","coagulad","coaligad","coanimad","coartad","coauspiciad","cobijad","cobrad","cocead","cocid","cocinad","cocread","codead","codesarrollad","codescubiert","codiciad","codificad","codirigid","coeditad","coescript","coescrit","coestructurad","coevolucionad","coexistid","cofabricad","cofinanciad","cofundad","cogid","cogitad","cogobernad","cohabitad","cohechad","cohesionad","cohibid","cohondid","cohonestad","coimead","coincidid","cojead","colaborad","colad","colapsad","colchad","colead","coleccionad","colectad","colectivizad","colegiad","colegid","coleguead","colgad","colidid","coligad","colimad","colindad","colisionad","colmad","colmatad","colocad","colonizad","colorad","coloread","colorid","coludid","columbrad","columpiad","comadread","comandad","combad","combatid","combinad","comedid","comentad","comenzad","comerciad","comercializad","cometid","comid","comisad","comisariad","comiscad","comisionad","comisquead","compactad","compadecid","compadrad","compadread","compaginad","comparad","comparecid","compartid","compartimentad","compartimentalizad","compasad","compatibilizad","compelid","compendiad","compenetrad","compensad","competid","compilad","compinchad","complacid","complejizad","complementad","completad","complicad","complotad","comportad","compostad","comprad","comprehendid","comprendid","comprimid","comprobad","comprometid","compuest","compulsad","compungid","compurgad","computad","computarizad","computerizad","comulgad","comunicad","comunitarizad","concadenad","concatenad","concebid","concedid","concelebrad","concentrad","conceptuad","conceptualizad","concernid","concertad","concesionad","conchabad","concienciad","concientizad","conciliad","concitad","concluid","concordad","concretad","concretizad","conculcad","concurrid","concursad","condecorad","condenad","condensad","condesad","condescendid","condich","condicionad","condimentad","condolid","condonad","conducid","conectad","conexionad","confabulad","confeccionad","confederad","conferenciad","conferid","confesad","confiad","configurad","confinad","confirmad","confiscad","confitad","conflictuad","confligid","confluid","conformad","confortad","confraternizad","confrontad","confundid","congelad","congeniad","congestionad","conglomerad","congojad","congraciad","congratulad","congregad","conhortad","conjeturad","conjugad","conjuntad","conjurad","conllevad","conmemorad","conmensurad","conminad","conmocionad","conmovid","conmutad","connaturalizad","connotad","conocid","conquistad","consagrad","conseguid","consejad","consensuad","consentid","conservad","considerad","consignad","consistid","consolad","consolidad","consonad","consorciad","conspirad","constad","constatad","constelad","consternad","constipad","constitucionalizad","constituid","constreñid","construid","consultad","consumad","consumid","contabilizad","contactad","contad","contagiad","contaminad","contemplad","contemporizad","contendid","contenid","contentad","contestad","contextuad","contextualizad","continuad","contonead","contornad","contornead","contorsionad","contraargumentad","contraatacad","contrabalancead","contrabandead","contrademandad","contradich","contragolpead","contrahech","contraíd","contraindicad","contramandad","contramarchad","contrapesad","contraprogramad","contrapuest","contrapuntead","contrargumentad","contrariad","contrarrestad","contrastad","contratacad","contratad","contravenid","contribuid","contristad","controlad","controvertid","contundid","conturbad","contusionad","convalecid","convalidad","convencid","convenid","convergid","conversad","convertid","convidad","convivid","convocad","convulsionad","conzederad","cooperad","cooperativizad","cooptad","coordenad","coordinad","coorganizad","copad","copatrocinad","copead","copetead","copiad","copilotad","copresentad","copresidid","coproducid","coprotagonizad","copulad","coquetead","coquificad","corcovead","coread","coreografiad","corlad","corlead","cornead","coronad","corporizad","corregid","correlacionad","correspondid","corresponsabilizad","corretead","corrid","corroborad","corroíd","corrompid","corrugad","cortad","cortejad","cortocircuitad","corvad","coscad","cosechad","cosid","cosificad","cosmetizad","cosquillead","costad","costead","cotejad","cotillead","cotizad","cotorread","crackead","cranead","cread","crecid","creíd","cremad","creosotad","crepitad","crespad","crevad","criad","cribad","criminad","criminalizad","crinad","criogenizad","criopreservad","crismad","crispad","cristalizad","cristianad","cristianizad","cristinead","criticad","croad","cromad","cronificad","cronometrad","crotorad","crotoread","crucificad","crujid","cruzad","cuadrad","cuadriculad","cuadriplicad","cuadruplicad","cuajad","cualificad","cuantificad","cuantizad","cuartead","cuartelad","cuatriplicad","cubanizad","cubicad","cubiert","cubijad","cuchad","cucharead","cuchichead","cuchuchead","cueread","cuerpead","cuestionad","cuetead","cuidad","cuitad","culead","culebread","culiad","culminad","culpabilizad","culpad","cultivad","culturad","culturalizad","culturizad","cumplid","cumplimentad","cumulad","cundid","cunead","cuñad","cuotead","curad","curiosead","currad","currelad","cursad","curtid","curvad","curvead","custodiad","customizad","dactilografiad","dad","damnificad","danzad","dañad","dañinead","darlusad","datad","datead","deambulad","debatid","debelad","debid","debilitad","debitad","debutad","decaíd","decantad","decapad","decapitad","decebid","decelerad","decepcionad","decidid","decimalizad","declamad","declarad","declinad","decodificad","decolad","decolorad","decomisad","decomisionad","deconstruid","decorad","decrecid","decrementad","decretad","decuplad","decuplicad","decusad","dedead","dedicad","deducid","defecad","defeccionad","defendid","defenestrad","defensad","deferid","definid","deflagrad","deflectad","deflorad","defoliad","deforestad","deformad","defosforilad","defraudad","degenerad","deglutid","degollad","degradad","degustad","deificad","dejad","delaminad","delatad","delegad","deleitad","deletread","deleznad","delgazad","deliberad","delimitad","delinead","delinquid","delirad","deludid","demacrad","demandad","demaquillad","demarcad","demarrad","demediad","demeritad","democratizad","demodulad","demolid","demonizad","demorad","demostrad","demudad","denegad","denigrad","denodad","denominad","denostad","denotad","densificad","dentad","dentellead","dentrad","denudad","denunciad","deparad","departid","depauperad","dependid","depilad","deplorad","deportad","depositad","depravad","deprecad","depreciad","depredad","deprimid","depuest","depurad","deputad","derechizad","derelinquid","derivad","derogad","derramad","derrapad","derrelinquid","derrengad","derretid","derribad","derrocad","derrochad","derrot","derrotad","derruid","derrumbad","desabastecid","desabejad","desabotonad","desabrid","desabrigad","desabrochad","desacatad","desacelerad","desacertad","desacomodad","desaconsejad","desacoplad","desacordad","desacostumbrad","desacralizad","desacreditad","desactivad","desactualizad","desaduanizad","desafectad","desafiad","desafilad","desafiliad","desafinad","desaforad","desagotad","desagradad","desagradecid","desagraviad","desagregad","desaguad","desahijad","desahogad","desahuciad","desainad","desairad","desajustad","desalad","desalentad","desalinead","desalinizad","desaliñad","desalmacenad","desalojad","desalquilad","desamad","desamarrad","desambiguad","desamistad","desamortizad","desamparad","desandad","desangrad","desanimad","desanudad","desapalancad","desaparead","desaparecid","desapasionad","desapegad","desaplicad","desaprendid","desaprobad","desaprovechad","desarbolad","desarchivad","desarenad","desarmad","desarraigad","desarreglad","desarrollad","desarropad","desarrugad","desarticulad","desasid","desasnad","desasosegad","desatad","desatascad","desatendid","desatentad","desatinad","desatornillad","desatracad","desatraillad","desatrancad","desautorizad","desavenid","desayunad","desazolvad","desazonad","desballestad","desbancad","desbandad","desbarajustad","desbaratad","desbarrad","desbarrancad","desbastad","desbloquead","desbocad","desbordad","desbotonad","desbravad","desbrozad","descabalgad","descabellad","descabezad","descachad","descachimbad","descaecid","descafeinad","descalabrad","descalibrad","descalificad","descalzad","descambiad","descaminad","descampad","descansad","descapitalizad","descarad","descarapelad","descarbonatad","descarbonizad","descarboxilad","descargad","descarnad","descarriad","descarrilad","descartad","descasad","descascarad","descascarillad","descastad","descatalogad","descendid","descentrad","descentralizad","desceñid","descerebrad","descerrajad","descertificad","deschavad","deschongad","descifrad","desclasad","desclasificad","desclavad","descobijad","descocad","descocid","descodificad","descogid","descogollad","descohesionad","descojonad","descolgad","descollad","descolocad","descolonizad","descombrad","descomedid","descomid","descompensad","descompilad","descompresionad","descomprimid","descompuest","descomulgad","desconcentrad","desconceptuad","desconcertad","desconchad","desconectad","desconfiad","descongelad","descongestionad","desconocid","desconsagrad","desconsiderad","desconsolad","desconsolidad","descontad","descontaminad","descontentad","descontextualizad","descontinuad","descontracturad","descontratad","descontrolad","desconvenid","desconvocad","descoordinad","descorazonad","descorchad","descordad","descornad","descorrid","descortezad","descosid","descostillad","descoyuntad","descreíd","descriminalizad","descript","descrit","descruzad","descuadrad","descuajad","descualificad","descuartizad","descubiert","descuidad","desdeñad","desdibujad","desdich","desdoblad","desdolarizad","desdorad","desdramatizad","desead","desecad","desechad","desembalad","desembalsad","desembarazad","desembarcad","desembargad","desembarrancad","desembocad","desembolsad","desembolsillad","desemborrachad","desembozad","desembragad","desembrollad","desembrujad","desembuchad","desempacad","desempalmad","desempañad","desempaquetad","desempatad","desempedrad","desempeñad","desempolvad","desenamorad","desencabestrad","desencadenad","desencajad","desencallad","desencaminad","desencantad","desencasillad","desencerrad","desenchufad","desenclavad","desencontrad","desencorsetad","desencorvad","desencriptad","desendeudad","desenfadad","desenfardelad","desenfocad","desenfrenad","desenfundad","desenganchad","desengañad","desengrasad","desenlazad","desenmarañad","desenmascarad","desenojad","desenredad","desenrollad","desenroscad","desensamblad","desensibilizad","desensillad","desentendid","desenterrad","desentonad","desentrañad","desentubad","desentumecid","desenvainad","desenvuelt","desequilibrad","desertad","desertificad","desertizad","desescalad","desescolarizad","desescombrad","desesperad","desesperanzad","desestabilizad","desestacionalizad","desestimad","desestimulad","desestresad","desestructurad","desfalcad","desfallecid","desfasad","desfascistizad","desfavorecid","desfigurad","desfilad","desfinanciad","desflecad","desflorad","desfogad","desfondad","desforzad","desfragmentad","desgajad","desganad","desgañitad","desgarrad","desgastad","desglasad","desglosad","desgobernad","desgonzad","desgraciad","desgranad","desgravad","desguanguañad","desguarnecid","desguazad","desgubernamentalizad","desguinzad","deshabilitad","deshabitad","deshabituad","deshebrad","deshech","deshelad","desheredad","deshidratad","deshidrogenizad","deshilachad","deshilad","deshilvanad","deshinchad","deshojad","deshonorad","deshonrad","deshuesad","deshumanizad","deshumidificad","desidentificad","desideologizad","designad","desilusionad","desimpresionad","desimputad","desincentivad","desincorporad","desincronizad","desincrustad","desindustrializad","desinfectad","desinflad","desinflamad","desinformad","desinhibid","desinsectad","desinstalad","desintegrad","desinteresad","desintoxicad","desinvertid","desionizad","desistid","desjarretad","desjudicializad","deslastrad","deslavad","deslazad","deslegitimad","desleíd","deslenguad","desliad","desligad","deslindad","deslizad","deslocalizad","deslomad","deslucid","deslumbrad","deslustrad","desmadejad","desmadrad","desmalezad","desmandad","desmantelad","desmaquillad","desmarcad","desmarimbad","desmasculinizad","desmaterializad","desmayad","desmedid","desmedrad","desmejorad","desmelenad","desmembrad","desmentid","desmenuzad","desmerecid","desmeritad","desmesurad","desmigad","desmigajad","desmilitarizad","desminad","desmitificad","desmochad","desmoldad","desmonetizad","desmontad","desmonterad","desmoralizad","desmoronad","desmotad","desmotivad","desmovilizad","desmuert","desnacid","desnacionalizad","desnatad","desnaturalizad","desnivelad","desnortad","desnucad","desnuclearizad","desnudad","desnutrid","desobedecid","desobligad","desobstruid","desoccidentalizad","desocupad","desodorizad","desoíd","desolad","desoldad","desollad","desorbitad","desordenad","desorejad","desorganizad","desorientad","desornamentad","desosad","desosegad","desovad","desovillad","desoxigenad","despabilad","despachad","despachurrad","despampanad","despanzurrad","desparasitad","desparecid","desparpajad","desparramad","despartidizad","despatarrad","despechad","despedazad","despedid","despegad","despeinad","despejad","despellejad","despelotad","despeluzad","despenad","despenalizad","despeñad","despepitad","desperad","despercudid","desperdiciad","desperdigad","desperecid","desperezad","despersonalizad","despertad","despezad","despicad","despiezad","despilfarrad","despintad","despiojad","despistad","desplantad","desplazad","desplegad","desplomad","desplumad","despoblad","despoetizad","despojad","despolarizad","despolitizad","despollad","despolvad","despolvoread","desportillad","desposad","desposeíd","despotizad","despotricad","despreciad","desprecintad","desprendid","despreocupad","desprestigiad","desprivatizad","desprofesionalizad","desprogramad","desprotegid","desprotonad","desproveíd","desprovist","despuntad","desquebrajad","desquiciad","desquitad","desrabad","desrabotad","desratizad","desregulad","desregularizad","destacad","destapad","destartalad","destazad","destechad","destejid","destellad","destemplad","destendid","destensad","desteñid","desternillad","desterrad","destetad","destilad","destinad","destituid","destocad","destorcid","destornillad","destorvad","destrabad","destrancad","destratad","destrenzad","destrepad","destripad","destrocad","destronad","destroncad","destrozad","destruid","destupid","desturcad","desubicad","desunid","desuscript","desuscrit","desvaíd","desvainad","desvalijad","desvalorizad","desvanecid","desvariad","desvasad","desvelad","desvenad","desvencijad","desventad","desventajad","desventrad","desvertebrad","desvestid","desviad","desvinculad","desvirgad","desvirtuad","desvivid","detallad","detectad","detenid","detentad","detergid","deteriorad","determinad","detestad","detonad","detoxificad","detraíd","deturpad","devaluad","devanad","devastad","develad","devengad","devenid","devid","devisad","devorad","devuelt","dexad","dezmad","diabolizad","diafragmad","diagnosticad","diagonalizad","diagramad","dializad","dialogad","diamantad","dibujad","dich","dicotomizad","dictad","dictaminad","dietad","diezmad","difamad","diferenciad","diferid","dificultad","difractad","difuminad","difundid","digerid","digitad","digitalizad","dignad","dignificad","dilapidad","dilatad","diligenciad","dilucidad","diluid","dimanad","dimensionad","dimerizad","dimidiad","dimisionad","dimitid","dinamitad","dinamizad","diñad","diplomad","dippead","diptongad","diputad","direccionad","dirigid","dirimid","discad","discapacitad","discernid","disciplinad","discontinuad","discordad","discrepad","discretead","discriminad","disculpad","discurrid","discursad","discursead","discutid","disecad","diseccionad","disectad","diseminad","disentid","diseñad","disertad","disfamad","disfrazad","disfrutad","disgregad","disgustad","disimulad","disipad","dislocad","disminuid","disociad","disonad","disparad","disparatad","dispensad","dispensarizad","dispersad","dispuest","disputad","distad","distanciad","distendid","distilad","distinguid","distorsionad","distraíd","distribuid","disturbad","disuadid","disuelt","divagad","divergid","diversificad","divertid","dividid","divinad","divinizad","divisad","divorciad","divulgad","doblad","doblegad","dobletead","doctorad","doctrinad","documentad","dogmatizad","dolad","dolarizad","dolid","domad","domeñad","domesticad","domiciliad","dominad","donad","doñead","dopad","dorad","dormid","dormitad","dosificad","dotad","dovelad","draftead","dragad","dragonead","dramatizad","drapead","drenad","driblad","driblead","drogad","dubdad","duchad","dudad","dulcificad","duplicad","durad","echad","eclipsad","eclosionad","economizad","ecualizad","edificad","editad","editorializad","educad","educid","edulcorad","efectivizad","efectuad","efeminad","eficientad","eficientizad","efundid","egresad","ejecutad","ejecutoriad","ejemplarizad","ejemplificad","ejercid","ejercitad","elaborad","elect","electoralizad","electrificad","electrizad","electrocutad","elegid","elevad","elidid","eligid","elijad","eliminad","elogiad","elongad","elucidad","elucubrad","eludid","eluid","emanad","emancipad","emasculad","embadurnad","embaíd","embalad","embaldosad","embalsad","embalsamad","embanderad","embarazad","embarcad","embargad","embarrad","embarrancad","embarullad","embasad","embastad","embaucad","embaulad","embazad","embebecid","embebid","embejucad","embelecad","embelesad","embellecid","embestid","embetunad","emblanquecid","embobad","embocad","embodegad","embolad","embolizad","embolsad","embolsillad","embonad","emboquillad","emborrachad","emborronad","emboscad","embotad","embotellad","embovedad","embozad","embozalad","embragad","embravecid","embrazad","embread","embretad","embriagad","embridad","embrollad","embromad","embrujad","embrutecid","embuchad","embullad","embustead","embustid","embutid","emendad","emergid","emigrad","emitid","emocionad","empacad","empachad","empadronad","empalad","empalagad","empalidecid","empalizad","empalmad","empanad","empanizad","empantanad","empañad","empapad","empapelad","empapuciad","empapuzad","empaquetad","emparedad","emparejad","emparentad","emparrillad","empastad","empastillad","empatad","empatizad","empavad","empavesad","empecid","empecinad","empedernid","empedrad","empelad","empellad","empellid","empenachad","empeñad","empeorad","empequeñecid","emperad","emperejilad","emperifollad","emperrad","empezad","empiltrad","empinad","empingorotad","empitonad","emplatad","emplazad","emplead","emplomad","emplumad","empobrecid","empoderad","empodrecid","empollad","empolvad","emponzoñad","empotrad","empozad","emprendid","empreñad","emprestad","emproblemad","empujad","empuñad","emputad","emputecid","emulad","emulgid","emulsificad","emulsionad","emungid","enajenad","enalmagrad","enaltecid","enamorad","enamoriscad","enarbolad","enarcad","enardecid","enarenad","enastad","enbiad","encabad","encabalgad","encabestrad","encabezad","encabritad","encabronad","encachimbad","encadenad","encajad","encajonad","encalabozad","encalabrinad","encalad","encallad","encallecid","encalmad","encalzad","encamad","encaminad","encandilad","encanecid","encantad","encañonad","encaperuzad","encapotad","encaprichad","encapsulad","encapuchad","encapuzad","encarad","encaramad","encarcelad","encarecid","encargad","encariñad","encarnad","encarnecid","encarnizad","encarrilad","encartad","encasillad","encasquetad","encasquillad","encastad","encastillad","encastrad","encatusad","encausad","encauzad","encebad","enceguecid","encelad","encenagad","encendid","encenizad","encerad","encerrad","encestad","encetad","enchachad","enchapad","enchapopotad","encharcad","enchilad","enchinad","enchiquerad","enchironad","enchuecad","enchufad","enchuflad","enchulad","encimad","encintad","enclaustrad","enclavad","encofrad","encogid","encolad","encolerizad","encolumnad","encomendad","encomenzad","encomiad","enconad","enconchad","encontrad","encoñad","encopetad","encorajinad","encorazad","encordad","encornudad","encorsetad","encorvad","encostad","encostalad","encrespad","encriptad","encuadernad","encuadrad","encuartelad","encubad","encubertad","encubiert","encuclillad","encuerad","encuestad","enculad","encumbrad","encunetad","encurtid","endechad","endemoniad","enderezad","endeudad","endiablad","endilgad","endiñad","endiosad","endomingad","endosad","endrogad","endulzad","endurecid","enemistad","energizad","enervad","enfadad","enfangad","enfardad","enfatizad","enfebrecid","enfermad","enfervorizad","enfeudad","enfilad","enflacad","enflaquecid","enflorad","enfocad","enforcad","enfoscad","enfrascad","enfrenad","enfrentad","enfriad","enfrontad","enfundad","enfurecid","enfurruñad","engalanad","engalgad","engallad","enganchad","engangrenad","engañad","engarruchad","engarzad","engastad","engatillad","engatusad","engavetad","engendrad","englobad","engolfad","engolondrinad","engolosinad","engomad","engominad","engordad","engranad","engrandad","engrandecid","engrapad","engrasad","engravecid","engreíd","engrillad","engrilletad","engrosad","engrudad","engruesad","engrupid","enguacalad","enguantad","enguatad","enguirnaldad","engullid","enharinad","enhebrad","enherbolad","enhilad","enhornad","enjabonad","enjaezad","enjaguad","enjalbegad","enjalmad","enjambrad","enjaretad","enjaulad","enjoyad","enjuagad","enjugad","enjuiciad","enjuncad","enjutad","enlaciad","enladrillad","enlatad","enlazad","enlentecid","enlenzad","enlistad","enlodad","enloquecid","enlosad","enlozad","enlucid","enlutad","enmaderad","enmadrad","enmallad","enmanillad","enmarañad","enmarcad","enmarrocad","enmascarad","enmasillad","enmendad","enmohecid","enmoquetad","enmudecid","enmugrad","ennegrecid","ennoblecid","enojad","enorgullecid","enquistad","enrabietad","enracimad","enraizad","enramad","enranciad","enrarecid","enrasad","enratonad","enredad","enrejad","enrevesad","enrielad","enripiad","enriquecid","enriscad","enristrad","enrocad","enrojecid","enrolad","enrollad","enronquecid","enroscad","enrostrad","enrubiad","enrumbad","enrutad","ensalzad","ensamblad","ensanchad","ensangrentad","ensañad","ensartad","ensayad","ensebad","ensecad","enseñad","enseñoread","ensillad","ensimismad","ensoberbecid","ensobrad","ensogad","ensombrecid","ensoñad","ensopad","ensordecid","ensortijad","ensuciad","entablad","entablillad","entallad","entapizad","entecad","entendid","entenebrecid","enterad","entercad","enternecid","enterrad","entesad","entibiad","entiesad","entintad","entoldad","entomatad","entonad","entontecid","entorchad","entornad","entorpecid","entortijad","entrabad","entrad","entramad","entrampad","entrañad","entreabiert","entrecerrad","entrechocad","entrecomillad","entrecortad","entrecruzad","entredich","entregad","entrelazad","entremetid","entremezclad","entrenad","entreoíd","entresacad","entretejid","entretenid","entrevenid","entreverad","entrevist","entrevistad","entripad","entristecid","entrojad","entrometid","entronad","entroncad","entronizad","entropezad","entrujad","entubad","entumecid","entunicad","enturbiad","entusiasmad","enumerad","enunciad","envainad","envalentonad","envanecid","envarad","envasad","envejecid","envenenad","envergad","envergonzad","envestid","enviad","enviciad","envidad","envidiad","envigad","envilecid","enviscad","enviudad","envuelt","enyerbad","enyesad","enzacatad","enzarzad","epatad","epitomad","equidistad","equilibrad","equipad","equiparad","equivalid","equivocad","erguid","erigid","erizad","erogad","erosionad","erotizad","errad","erradicad","eructad","erupcionad","esbarad","esbozad","escabechad","escabiad","escabullid","escachad","escaecid","escalad","escaldad","escalentad","escalfad","escalofriad","escalonad","escamad","escamotead","escampad","escanciad","escandalizad","escandid","escanead","escapad","escaquead","escarabajead","escaramuzad","escarapelad","escarbad","escarchad","escardad","escariad","escarificad","escarmenad","escarmentad","escarnecid","escarpad","escasead","escatimad","escavad","escayolad","escenificad","escenografiad","escindid","esclarecid","esclavizad","esclerosad","esclerotizad","escobad","escobillad","escocid","escodad","escofinad","escogid","escolarizad","escoltad","escombrad","escondid","escoplead","escorad","escoriad","escorzad","escotad","escrachad","escript","escrit","escriturad","escrudiñad","escrupulizad","escrutad","escuadrad","escuadronad","escuchad","escudad","escudriñad","esculpid","escupid","escurrid","escusad","esencializad","esfollad","esforzad","esfumad","esgrafiad","esgrimid","esguazad","eslabonad","esleíd","esmaltad","esmerad","esmerilad","esmorecid","esnifad","espabilad","espachurrad","espaciad","espacializad","espantad","españolizad","esparcid","espartad","especiad","especializad","especificad","especulad","espejead","espeluznad","esperad","esperanzad","espesad","espetad","espiad","espichad","espigad","espinad","espirad","espiritualizad","esplanad","esplendid","esplicad","espolead","espoliad","espolvoread","esponjad","esponsorizad","espontanead","esposad","espresad","esprintad","espulgad","espumad","espumead","esputad","esquematizad","esquiad","esquilad","esquilmad","esquinad","esquinzad","esquivad","estabilizad","establecid","estabulad","estacad","estacionad","estacionalizad","estad","estafad","estallad","estampad","estampillad","estancad","estandarizad","estañad","estaquillad","estarcid","estatizad","estatuid","estelarizad","estendid","esterad","estercolad","estereotipad","esterificad","esterilizad","estetizad","estibad","estigmatizad","estilad","estilizad","estimad","estimulad","estipulad","estirad","estofad","estoquead","estorbad","estornudad","estozolad","estragad","estrangulad","estratificad","estrechad","estregad","estrellad","estremecid","estrenad","estreñid","estresad","estriad","estribad","estropead","estruchad","estructurad","estrujad","estucad","estudiad","esvarad","eterizad","eternizad","etimologizad","etiquetad","etoxilad","europeizad","euscaldunizad","euskaldunizad","evacuad","evadid","evaluad","evanescid","evangelizad","evaporad","evidenciad","eviscerad","evitad","evocad","evolucionad","exacerbad","exagerad","exaltad","examinad","exasperad","excarcelad","excavad","excedid","exceptuad","excitad","exclamad","exclaustrad","excluid","excomulgad","excoriad","excretad","exculpad","excusad","execrad","executad","exentad","exercitad","exfiltrad","exfoliad","exhalad","exhibid","exhortad","exhumad","exigid","exilad","exiliad","eximid","existid","existimad","exonerad","exorcizad","exornad","expandid","expansionad","expatriad","expectad","expectorad","expedicionad","expedid","expedientad","expeditad","expelid","expendid","experienciad","experimentad","expiad","expirad","explanad","explayad","explicad","explicitad","explorad","explosionad","explotad","expoliad","exponenciad","exportad","expresad","exprimid","expropiad","expuest","expugnad","expulsad","expurgad","extasiad","extendid","extenuad","exteriorizad","exterminad","externad","externalizad","extinguid","extirpad","extorsionad","extractad","extraditad","extraíd","extralimitad","extrañad","extrapolad","extravasad","extraviad","extremad","extrudid","extruid","extubad","exudad","exulcerad","exultad","eyaculad","eyectad","fabricad","fabulad","fachad","facilitad","factorizad","facturad","facultad","faenad","fagocitad","fajad","falagad","falcacead","faldead","fallad","fallecid","fallid","falsad","falsead","falsificad","faltad","familiarizad","fanatizad","fanfarronead","fantasead","fantasiad","fantasmead","farandulead","fardad","farfullad","farolead","farread","fascinad","fastidiad","fatigad","favelizad","favorecid","fech","fechad","fecundad","fecundizad","fedatad","fedatead","federad","federalizad","felicitad","femad","feminizad","fenecid","feriad","fermentad","ferrad","fertilizad","fervorizad","festejad","festinad","festonad","festonead","fetichizad","fiad","fibrilad","ficad","ficcionad","ficcionalizad","fichad","fidelizad","figurad","fijad","filad","fildead","filetead","filiad","filmad","filosofad","filtrad","finad","finalizad","financiad","fincad","fingid","finid","finiquitad","fintad","firmad","fiscalizad","fisgad","fisgonead","fisionad","fisurad","flagelad","flambead","flamead","flanquead","flaquead","flechad","fletad","flexead","flexibilizad","flexionad","flipad","flirtead","flojead","florad","floread","florecid","floretead","flotad","fluctuad","fluid","fluidizad","fluorad","focalizad","foguead","folgad","foliad","follad","folletead","fomentad","fondead","forcejad","forcejead","forestad","forjad","formad","formalizad","formatead","formulad","fornicad","forrad","forrajead","fortalecid","fortificad","forzad","fosfatad","fosfatizad","fosforecid","fosforescid","fosforilad","fosilizad","fotocopiad","fotografiad","fotoshopead","fracasad","fraccionad","fracturad","fragilizad","fragmentad","fraguad","franelead","frangid","franjead","franquead","franquiciad","frasead","fraternizad","frecuentad","fregad","fregotead","freíd","frenad","frentead","fresad","frezad","friccionad","frisad","frit","fritad","frivolizad","frizad","frotad","fructificad","fruid","fruncid","frustrad","frutad","fufad","fugad","fulgid","fulgurad","fulminad","fumad","fumblead","fumigad","funad","funcionad","fundad","fundamentad","fundid","fungid","fuñid","furtad","furulad","fusilad","fusionad","fustigad","gafad","gaguead","galantead","galardonad","galguead","gallardead","gallead","gallofead","galonead","galopad","galopead","galvanizad","gamberread","gambetead","ganad","gandujad","gandulead","gangrenad","ganguead","gañid","garabatead","garantid","garantizad","garapiñad","garbad","garchad","gargarizad","garlad","garpad","garrapatead","garrapiñad","garronead","garrotead","gasead","gasificad","gastad","gatead","gatillad","gayad","gelatinizad","gelificad","gemid","geminad","generad","generalizad","genotipad","gentrificad","geobloquead","geolocalizad","georeferenciad","georreferenciad","gerenciad","germanizad","germinad","gestad","gesticulad","gestionad","gibad","gilipollead","gimotead","girad","giroelongad","gitanead","glasead","globalizad","gloriad","glorificad","glosad","glotalizad","glotonead","gobernad","golead","golfead","golosead","golpead","golpetead","googlead","gorgotead","gorjead","gorread","gorronead","gostead","gotead","gozad","grabad","gradad","graduad","graffitead","graficad","grafitead","granad","granead","granizad","granjead","granulad","grapad","gratificad","gratinad","gravad","gravitad","graznad","grillad","griñotad","gripad","gritad","gruñid","guacaread","guadañad","guapead","guarachead","guardad","guarecid","guarid","guarnecid","guarnid","guasapead","guataquead","guayad","guerread","guglead","guiad","guillotinad","guinchad","guindad","guiñad","guionad","guionizad","guisad","guitarread","gulusmead","gustad","habid","habilitad","habitad","habituad","hablad","hacendad","hachad","hacinad","hackead","halad","halagad","hallad","halogenad","hamacad","hamaquead","hambread","hanguead","haraganead","hartad","hastiad","hech","hechizad","hedid","hegemonizad","helad","helenizad","helitransportad","henchid","hendid","heñid","herbad","herborizad","heredad","herid","hermanad","hermandad","hermetizad","hermosead","herniad","herrad","herrumbrad","hervid","hesitad","hibernad","hibridad","hidratad","hidrogenad","hidrolizad","higienizad","hilad","hilvanad","hincad","hinchad","hipad","hiperactivad","hiperbolizad","hipertrofiad","hiperventilad","hipnotizad","hipotecad","hipotetizad","hisopad","hispanizad","hispid","historiad","hocicad","hociquead","hojaldrad","hojead","holgad","holgazanead","hollad","hombread","homenajead","homogeneizad","homologad","homosexualizad","honestad","honorad","honrad","horadad","horizontalizad","hormigonad","hormiguead","hornead","horripilad","horrorizad","hospedad","hospitalizad","hostiad","hostigad","hostilizad","hozad","huevead","huid","humad","humanad","humanizad","humead","humectad","humedecid","humidificad","humillad","hundid","hurgad","huronead","hurtad","husmad","husmead","idead","idealizad","identificad","ideologizad","idiotizad","idolatrad","ignorad","igualad","ilegalizad","ilegitimad","iludid","iluminad","ilusionad","ilustrad","imaginad","imanad","imantad","imbecilizad","imbricad","imbuid","imitad","impacientad","impactad","impagad","impartid","impedid","impelid","impendid","imperad","impermeabilizad","impersonalizad","impetrad","implantad","implementad","implicad","implorad","implosionad","importad","importunad","imposibilitad","impostad","imprecad","impregnad","impres","impresionad","imprimad","imprimid","improbad","improvisad","impuest","impugnad","impulsad","impurificad","imputad","inactivad","inadmitid","inaugurad","incapacitad","incardinad","incautad","incendiad","incensad","incentivad","incidentad","incidid","incinerad","incitad","inclinad","incluid","incoad","incomodad","incomunicad","inconformad","incordiad","incorporad","incrementad","increpad","incriminad","incrustad","incubad","inculcad","inculpad","incumbid","incumplid","incurrid","incursionad","indagad","indemnizad","independizad","indexad","indicad","indiciad","indigestad","indignad","indisciplinad","indispuest","individualizad","indizad","inducid","indultad","industriad","industrializad","inejecutad","inervad","infamad","infantilizad","infartad","infatuad","infeccionad","infectad","inferid","infestad","infeudad","inficionad","infiltrad","inflacionad","inflad","inflamad","infligid","influenciad","influid","informad","informalizad","informatizad","infraccionad","infraexplotad","infrautilizad","infravalorad","infringid","infundid","infusionad","ingeniad","ingerid","ingresad","ingurgitad","inhabilitad","inhalad","inhibid","inhumad","iniciad","inicializad","injerid","injertad","injuriad","inmatriculad","inmigrad","inmiscuid","inmolad","inmortalizad","inmovilizad","inmunizad","inmutad","innovad","inobservad","inoculad","inquietad","inquinad","inquirid","inscript","inscrit","inseminad","insensibilizad","inserid","insertad","insidiad","insinuad","insistid","insolentad","insonorizad","inspeccionad","inspirad","instad","instalad","instanciad","instaurad","instigad","instilad","institucionalizad","instituid","instruid","instrumentad","instrumentalizad","insubordinad","insuflad","insultad","insumid","insurreccionad","integrad","inteligid","intencionad","intendid","intensificad","intentad","interaccionad","interactuad","intercalad","intercambiad","intercedid","interceptad","intercomunicad","interconectad","interconvertid","interdich","interesad","interferid","interfoliad","intergradad","interiorizad","interlocutad","intermediad","intermezclad","internacionalizad","internad","internalizad","interoperad","interpelad","interpolad","interpretad","interpuest","interrelacionad","interrogad","interrumpid","intersecad","intersectad","intervenid","intestad","intimad","intimidad","intitulad","intoxicad","intranquilizad","intricad","intrigad","intrincad","introducid","intrusad","intubad","intuid","inundad","inutilizad","invadid","invaginad","invalidad","invenid","inventad","inventariad","invernad","invertid","investid","investigad","inviabilizad","invisibilizad","invitad","invocad","involucionad","involucrad","inyectad","iñocid","ionizad","irisad","ironizad","irradiad","irrespetad","irrigad","irritad","irrogad","irrumpid","islamizad","italianizad","iterad","itinerad","izad","jabonad","jactad","jadead","jalad","jalbegad","jalead","jalonad","jalonead","jaquead","jaquid","jaranead","jaspead","jech","jerarquizad","jeringad","jibarizad","jimad","jinetead","jiñad","jodid","jonronead","jorobad","josead","jotead","jubilad","judaizad","judicializad","jugad","juguetead","jumad","juntad","jurad","juramentad","justad","justificad","justipreciad","juzgad","labializad","laborad","labrad","laburad","lacad","lacead","lacerad","lacrad","lacrimad","lactad","ladead","ladrad","lagartead","lagrimad","lagrimead","laicizad","lalad","lambid","lambiscad","lamentad","lamid","laminad","lampad","lampasead","lancead","languidecid","lanzad","lapidad","lapizad","laquead","largad","lascad","lastimad","lastrad","lateralizad","latid","latinad","latinizad","laudad","lauread","lavad","laxad","lazad","lechad","legad","legalizad","legislad","legitimad","legitimizad","leíd","lematizad","lengüetead","lentificad","leñad","lesead","lesionad","leudad","levad","levantad","levigad","levitad","lexicalizad","liad","libad","liberad","liberalizad","libertad","librad","licenciad","licitad","licuad","liderad","lideread","liderizad","lidiad","ligad","lignificad","lijad","likead","limad","limitad","limosnead","limpiad","linchad","lindad","linead","linealizad","liofilizad","liquenizad","liquidad","lisiad","lisonjead","listad","litad","litigad","litografiad","lixiviad","llagad","llamad","llamead","llavead","llegad","llenad","llevad","llorad","lloriquead","llovid","lloviznad","load","lobotomizad","localizad","locutad","logad","lograd","loguead","lonchead","loncotead","loquead","lotead","lotificad","lubricad","lubrificad","luchad","lucid","lucrad","ludid","ludificad","lustrad","luxad","macad","macerad","machacad","machad","machetead","machihembrad","machucad","macizad","macollad","maculad","madread","madrugad","madurad","magancead","magnetizad","magnificad","magread","magulad","magullad","maicead","majad","malabaread","malacostumbrad","malbaratad","malcriad","maldecid","maldit","malead","maleducad","maleficiad","malentendid","malfuncionad","malgastad","malherid","maliciad","malinformad","malinterpretad","mallad","malmatad","malograd","malparad","malparid","malpuest","malquerid","malquistad","maltead","maltraíd","maltratad","malvendid","malversad","malvivid","mamad","mamonead","mampostead","manad","mancad","manchad","mancillad","mancomunad","mancornad","mandad","mandatad","mandonead","mandrilad","manducad","manead","manejad","mangad","mangonead","manguead","maniatad","manifestad","maniobrad","manipulad","manosead","manotead","mantead","mantenid","manufacturad","manumitid","manuscript","manuscrit","manutenid","mañanead","mapead","mapuchizad","maquead","maquetad","maquilad","maquillad","maquinad","maravillad","marcad","marchad","marchitad","maread","marginad","marginalizad","maridad","marinad","mariposead","mariscad","marmolead","marrad","martillad","martillead","martirizad","masacrad","masad","masajead","mascad","mascujad","masculinizad","mascullad","masificad","masterizad","masticad","masturbad","matad","matasellad","matead","materializad","matizad","matonead","matraquead","matriculad","matrimoniad","maullad","maximizad","mayad","mazad","maznad","mead","mecanizad","mecanografiad","mecatead","mechad","mecid","mediad","mediatizad","medicad","medicalizad","medicinad","medid","meditad","medrad","mejorad","melad","melezinad","melgad","mellad","membretad","memorad","memorializad","memorizad","menad","mencionad","mendigad","menead","menguad","menoscabad","menospreciad","mensajead","menstruad","mensurad","mentad","mentalizad","mentid","mentorizad","menudead","menuzad","mercad","mercadead","mercantilizad","mercerizad","merecid","merendad","merengad","meritad","mermad","merodead","mesad","mestizad","mesturad","mesurad","metabolizad","metaforizad","metalizad","metamorfizad","metamorfosead","metastatizad","metastizad","meteorizad","metid","metilad","metodizad","metrificad","mexicanizad","mezclad","mezquinad","microfilmad","microfinanciad","microperforad","microscopiad","mielinizad","migad","migrad","militad","militarizad","mimad","mimeografiad","mimetizad","mimid","minad","mineralizad","miniad","miniaturizad","minimalizad","minimizad","ministerializad","ministrad","minorad","minusvalorad","mirad","misad","misionad","mistificad","mitificad","mitigad","mixturad","mocad","mochad","mochilead","mocionad","modelad","modelizad","moderad","modernizad","modificad","modorrad","modulad","modularizad","mofad","mojad","mojonad","mojonead","molad","moldad","moldead","moldurad","molestad","molid","molinad","momificad","mondad","monetarizad","monetizad","monitoread","monitorizad","monologad","monopolizad","montad","mopead","moquead","morad","moralizad","mordid","mordiscad","mordisquead","morfad","morigerad","morread","mortificad","moscad","mosquead","mostrad","mostread","motead","motejad","motivad","motorizad","movid","movilizad","mudad","muert","muertead","muestread","mufad","mugid","mulcid","muletead","mulgid","mullid","multad","multiplexad","multiplicad","mundializad","municionad","municipalizad","munid","muñid","murad","murmurad","musealizad","musicad","musicalizad","musid","musitad","mutad","mutilad","nacid","nacionalizad","nadad","nalguead","narcotizad","narrad","nasalizad","naturalizad","naufragad","navalizad","navegad","nebulizad","necead","necesitad","negad","negligid","negociad","negread","negrecid","negrificad","neocolonizad","neutralizad","nevad","neviscad","nidificad","nimbad","ningunead","niquelad","nitrificad","nivelad","nixtamalizad","nombrad","nominad","nominalizad","noquead","normad","normalizad","normativizad","notad","notariad","notarizad","noticiad","notificad","novad","novelad","novelizad","noviad","nublad","nuclead","nudrid","nukead","nulificad","numerad","nutrid","ñangotad","ñoñead","obcecad","obedecid","obispad","objetad","objetivad","obligad","obliterad","obnubilad","obrad","obscurecid","obsequiad","observad","obsesionad","obstaculizad","obstad","obstinad","obstruid","obtenid","obturad","obviad","ocasionad","occidentalizad","ocluid","ocultad","ocupad","ocurrid","odiad","ofendid","ofertad","oficiad","oficializad","ofrecid","ofrendad","ofuscad","oíd","ojead","okupad","olead","olfatead","olid","oliscad","olisquead","olvidad","ominad","omitid","ondead","ondulad","opacad","operad","operativizad","opinad","opositad","opresad","oprimid","optad","optimad","optimizad","opuest","opugnad","orad","oralizad","orbitad","ordenad","ordeñad","oread","organizad","orientad","orientalizad","originad","orillad","orinad","orlad","ornad","ornamentad","orquestad","ortigad","osad","oscilad","oscurecid","osead","osificad","ostentad","otad","otead","otorgad","ovacionad","ovad","ovillad","ovulad","oxead","oxidad","oxigenad","pacid","pacificad","pactad","padecid","pagad","paginad","pajaread","pajaronead","pajead","palabread","paladead","palatalizad","palead","paletizad","paliad","palidecid","paliquead","pallad","palmad","palmead","palmotead","palpad","palpitad","pandead","paniaguad","papad","parabolizad","parad","parafrasead","paralelad","paralelizad","paralizad","parametrad","parametrizad","parangonad","parapetad","parapetead","parasitad","parcelad","parchad","parchead","parcializad","paread","parecid","parid","parlad","parlamentad","parlotead","parodiad","parpad","parpadead","parquead","parquizad","partead","particionad","participad","particularizad","partid","partidizad","pasad","pasead","pasmad","pastad","pastead","pastelead","pasterizad","pasteurizad","pastoread","patalead","patead","patentad","patentizad","patinad","patologizad","patrimonializad","patrocinad","patronead","patrullad","patullad","pauperizad","pausad","pautad","pavimentad","pavonad","pavonead","payasead","peatonalizad","pecad","pechad","pedalead","pedid","pedorread","pegad","pegotead","peíd","peinad","pelad","pelead","pelechad","peletizad","peligrad","pellizcad","pelotead","peluquead","penad","penalizad","pendejead","pendid","pendonead","penetrad","penitenciad","pensad","pensionad","pepead","pepenad","peraltad","percatad","perchad","percibid","percolad","percudid","percutad","percutid","perdid","perdonad","perdurad","perecead","perecid","peregrinad","perennizad","perfeccionad","perfilad","perforad","performad","perfumad","pergeñad","periclitad","perifonead","perimetrad","periodizad","peritad","perjudicad","perjurad","perlad","permanecid","permeabilizad","permead","permitid","permutad","pernead","pernoctad","peronizad","perorad","perpetrad","perpetuad","perquirid","perread","perseguid","perseverad","persignad","persistid","personad","personalizad","personificad","persuadid","pertenecid","pertenid","pertrechad","perturbad","pervertid","pervivid","pesad","pescad","pescuecead","pespuntad","pespuntead","pesquisad","pestañead","petad","petardead","petead","peticionad","petrificad","photoshopead","piad","piafad","pialad","picad","pichad","pichicatead","pichulead","picotead","pifead","pifiad","pigmentad","pignorad","pilad","pillad","pilotad","pilotead","pimplad","pincelad","pinchad","pingad","pintad","pintarrajead","pintead","pintorread","pintorretead","pinzad","pipad","pipiad","piquetead","pirad","piratead","pirograbad","piropead","pirrad","pisad","pisotead","pispad","pispead","pistead","pitad","pitchead","pitorread","pivotad","pivotead","pixelad","pizcad","placad","placead","placid","plagad","plagiad","planchad","planchead","planead","planificad","planillad","plantad","plantead","plañid","plasmad","plastificad","platead","platicad","plebiscitad","plegad","pleitead","plisad","plorad","pluralizad","pluriemplead","plurinacionalizad","poblad","pochad","pochead","podad","podemizad","podid","podrid","poetizad","polarizad","polemizad","policromad","polid","polimerizad","polinizad","politiquead","politizad","pololead","ponchad","ponderad","pontificad","ponzoñad","popularizad","pordiosead","porfiad","pormenorizad","portad","portead","posad","poseíd","posesionad","posibilitad","posicionad","positivad","pospuest","postead","postensad","postergad","postpuest","postrad","postulad","posturead","potabilizad","potad","potenciad","potencializad","practicad","pread","preagrupad","prealimentad","preanunciad","preaprobad","prearmad","preavisad","prebendad","precalentad","precalificad","precargad","precarizad","precautelad","precavid","precedid","preceptuad","preciad","precintad","precipitad","precisad","precocid","precocinad","precompilad","precomprad","preconcebid","preconfigurad","preconizad","preconocid","preconstituid","preconvocad","predad","predestinad","predeterminad","predicad","predich","prediseñad","predispuest","predominad","preelaborad","preenvasad","preestablecid","preestrenad","preferid","prefigurad","prefijad","preformad","pregad","pregonad","preguntad","pregustad","preinscript","preinscrit","preinstalad","prejubilad","prejuiciad","prejuzgad","preludiad","premeditad","premiad","premostrad","premuert","prenasalizad","prendad","prendid","prensad","preñad","preocupad","preordenad","prepagad","preparad","prepintad","preponderad","preprogramad","presagiad","prescindid","prescript","prescrit","preseleccionad","presenciad","presentad","presentid","preservad","presidid","presionad","presolicitad","prestad","prestigiad","presumid","presupuest","presupuestad","presurizad","pretendid","pretensad","preterid","pretermitid","pretextad","prevalecid","prevalid","prevaricad","prevenid","previsionad","previst","previsualizad","primad","principalizad","principiad","pringad","priorizad","privad","privatizad","privilegiad","probad","problematizad","procedid","procesad","procesionad","proclamad","procrastinad","procread","procurad","prodigad","producid","profanad","proferid","profesad","profesionalizad","profetizad","profugad","profundad","profundizad","programad","progresad","prohibid","prohijad","proletarizad","proliferad","prologad","prolongad","promediad","promesad","prometid","promiscuad","promocionad","promovid","promulgad","pronominalizad","pronosticad","pronunciad","propagad","propalad","propasad","propendid","propiciad","propinad","proporcionad","propuest","propugnad","propulsad","prorratead","prorrogad","prorrumpid","proscript","proscrit","proseguid","prospectad","prosperad","prosternad","prostituid","protagonizad","protegid","protestad","protocolizad","protonad","prototipad","protruid","proveíd","provenid","provincializad","provisionad","provist","provocad","proyectad","psicoanalizad","publicad","publicitad","puentead","puest","pugnad","pujad","pulid","pulimentad","pulsad","pulsead","pululad","pulverizad","punchad","puncionad","pungid","punid","puntad","puntead","puntuad","puntualizad","punzad","punzonad","puñad","puñetead","purgad","purificad","purpurad","putañead","putead","puyad","quebrad","quebrantad","quedad","quejad","quelad","quemad","querellad","querid","quietad","quilatad","quimbad","quintaesenciad","quintuplicad","quitad","rabead","rabiad","racanead","racializad","raciocinad","racionad","racionalizad","radiad","radicad","radicalizad","radiodifundid","radiografiad","rafaguead","raíd","rajad","rajuñad","ralbad","ralead","ralentizad","rallad","ramblead","ramificad","ramonead","rancad","ranchad","ranchead","randomizad","rankead","ranquead","ranurad","rapad","rapead","rapiñad","raptad","raquead","rarificad","rasad","rascad","rascañad","rascuñad","rasgad","rasguead","rasguñad","raspad","rasquetead","rasterizad","rastrad","rastread","rastrillad","rasurad","ratead","ratificad","ratonad","rayad","razonad","reabastecid","reabiert","reabsorbid","reaccionad","reacomodad","reacondicionad","reactivad","reactualizad","readaptad","readecuad","readiestrad","readmitid","readquirid","reafirmad","reagrupad","reajustad","realimentad","realinead","realistad","realizad","realojad","realquilad","realzad","reanimad","reanudad","reaparecid","reaplicad","reaprendid","reaprovechad","reaprovisionad","reargüid","rearmad","rearticulad","reasegurad","reasentad","reasfaltad","reasignad","reasumid","reatad","reautorizad","reavivad","rebajad","rebalancead","rebalsad","rebanad","rebañad","rebasad","rebatad","rebatid","rebautizad","rebelad","reblandecid","rebobinad","rebordad","rebordead","rebosad","rebotad","rebozad","rebramad","rebrillad","rebrincad","rebrotad","rebullid","rebuscad","rebuznad","recabad","recaíd","recalad","recalcad","recalculad","recalendarizad","recalentad","recalibrad","recalificad","recamad","recapacitad","recapitalizad","recapitulad","recapturad","recargad","recatad","recatead","recategorizad","recauchutad","recaudad","recebid","recelad","recentad","recentralizad","recepcionad","receptad","recercad","recertificad","recesad","recetad","rechazad","rechinad","rechistad","recibid","reciclad","reciprocad","recirculad","recitad","reclamad","reclasificad","reclinad","recluid","reclutad","recobrad","recochinead","recocid","recocinad","recodad","recodificad","recogid","recolad","recolectad","recolegid","recolocad","recolonizad","recombinad","recomendad","recomenzad","recompensad","recompilad","recomprad","recompuest","reconcentrad","reconceptualizad","reconciliad","reconcomid","reconducid","reconectad","reconfigurad","reconfirmad","reconfortad","reconocid","reconquistad","reconsagrad","reconsiderad","reconstituid","reconstruid","recontad","recontextualizad","recontratad","reconvenid","reconvertid","recopilad","recordad","recorrid","recortad","recosid","recostad","recovad","recread","recrecid","recriad","recriminad","recristalizad","recrudecid","rectificad","rectorad","recuadrad","recubiert","recudid","reculad","recuperad","recurrid","recurvad","recusad","redactad","redargüid","redecorad","rededicad","redefinid","redemocratizad","redenominad","redensificad","redescript","redescrit","redescubiert","redesignad","redibujad","redich","redimensionad","redimid","redireccionad","redirigid","rediscutid","rediseñad","redistribuid","redituad","redoblad","redondead","reducid","redundad","reedificad","reeditad","reeducad","reelaborad","reelect","reelegid","reembarcad","reembolsad","reemitid","reemplazad","reemprendid","reenamorad","reencaminad","reencantad","reencarnad","reencauzad","reencontrad","reencuadernad","reenergizad","reenfocad","reenganchad","reensamblad","reenterrad","reentrad","reentrenad","reenvasad","reenviad","reequilibrad","reequipad","reescript","reescrit","reestabilizad","reestablecid","reestatizad","reestilizad","reestrenad","reestructurad","reevaluad","reexaminad","reexpedid","refaccionad","refacturad","refanfinflad","referenciad","referid","refigurad","refilad","refinad","refinanciad","reflectad","reflejad","reflexionad","reflotad","refluid","refocilad","reforestad","reforjad","reformad","reformalizad","reformatead","reformulad","reforzad","refotografiad","refractad","refregad","refreíd","refrenad","refrendad","refrescad","refrigerad","refrit","refugiad","refulgid","refundad","refundid","refunfuñad","refutad","regad","regalad","regalonead","regañad","regatead","regazad","regenerad","regentad","regentead","regid","regimentad","regionalizad","registrad","reglad","reglamentad","regobernad","regocijad","regodead","regoldad","regrabad","regresad","reguetonead","regulad","regularizad","regurgitad","rehabilitad","rehech","rehidratad","rehilad","rehogad","rehuid","rehundid","rehusad","reíd","reimaginad","reimplantad","reimpres","reimprimid","reimpuest","reimpulsad","reinad","reinaugurad","reincidid","reincorporad","reindustrializad","reingresad","reiniciad","reinscript","reinscrit","reinsertad","reinstalad","reinstaurad","reinstitucionalizad","reintegrad","reintensificad","reintentad","reinterpretad","reintroducid","reinventad","reinvertid","reiterad","reivindicad","rejuvenecid","relacionad","relajad","relamid","relampaguead","relanzad","relatad","relativizad","relegad","relegitimad","releíd","relevad","religad","relinchad","rellamad","rellenad","relocalizad","relojead","reluchad","relucid","relumbrad","remachad","remad","remangad","remansad","remanufacturad","remarcad","remasterizad","rematad","rembolsad","remecid","remedad","remediad","rememorad","remendad","remezclad","remirad","remitid","remixad","remodelad","remojad","remolcad","remoldead","remolinead","remolonead","remontad","remordid","remotorizad","removid","remozad","remplazad","rempujad","remudad","remunerad","remusgad","renacid","renacionalizad","renderizad","rendid","renegad","renegociad","renguead","renombrad","renovad","renquead","rentabilizad","rentad","renumerad","renunciad","reñid","reocupad","reordenad","reorganizad","reorientad","repagad","repanchigad","repantigad","repantingad","reparad","repartid","repasad","repatead","repatriad","repautad","repavimentad","repechad","repelad","repelid","repensad","repentizad","repercutid","reperfilad","repescad","repetid","repicad","repintad","repiquetead","repisad","replantad","replantead","replegad","repletad","replicad","repoblad","repolarizad","repolitizad","repollad","reportad","reportead","reposad","reposicionad","repostad","repostead","repostulad","repotenciad","repreguntad","reprehendid","reprendid","represad","represaliad","representad","reprimid","reprobad","reprocesad","reprochad","reproducid","reprogramad","reptad","republicad","repudiad","repuest","repugnad","repujad","repulsad","repuntad","reputad","requebrad","requemad","requerid","requintad","requisad","resabid","resacad","resaltad","resanad","resarcid","resbalad","rescaldad","rescatad","rescindid","rescript","resecad","resellad","resemblad","resembrad","resentid","reseñad","reservad","resetead","resfriad","resguardad","residenciad","residid","resignad","resignificad","resincronizad","resintonizad","resistid","resituad","resobad","resocializad","resollad","resonad","resondrad","resoplad","resorbid","respaldad","respectad","respetad","respingad","respirad","resplandecid","respondid","responsabilizad","resquebrad","resquebrajad","restablecid","restad","restallad","restañad","restaurad","restead","restituid","restregad","restringid","restructurad","resucitad","resuelt","resultad","resumid","resurgid","retad","retardad","retemblad","retemplad","retenid","reteñid","retimbrad","retipificad","retirad","retitulad","retocad","retomad","retoñad","retorcid","retornad","retortijad","retozad","retractad","retraducid","retraíd","retranquead","retransmitid","retrasad","retrasmitid","retratad","retrepad","retribuid","retroalimentad","retrocad","retrocedid","retrogradad","retroiluminad","retrotraíd","retrovendid","retrucad","retuitead","retumbad","retundid","retwitead","retwittead","reubicad","reunid","reunificad","reurbanizad","reusad","reutilizad","revacunad","revalidad","revalorad","revalorizad","revaluad","revelad","revencid","revendid","revenid","reventad","reverberad","reverdecid","reverenciad","reversad","reversionad","revertid","revesad","revestid","revictimizad","revinculad","revirad","revisad","revisionad","revisitad","revist","revistad","revitalizad","revivid","revivificad","revocad","revolad","revolcad","revolead","revolotead","revolucionad","revuelt","rezad","rezagad","rezongad","rezumad","rezurcid","ribetead","ridiculizad","rielad","rifad","rilad","rimad","rimbombad","ringad","ripead","ripiad","ripostad","ritualizad","rivalizad","rizad","robad","robotizad","robustecid","rochad","rociad","rockanrolead","rockead","rodad","rodead","rogad","roíd","rojead","rolad","romancead","romanizad","romantizad","romanzad","rompid","roncad","rondad","ronead","ronronead","ronzad","rootead","roquead","roscad","rosead","rostizad","rot","rotad","rotomoldead","rotulad","roturad","rozad","ruborizad","rubricad","rugad","rugid","ruinad","rulad","rumbead","rumbiad","rumiad","rumorad","rumoread","runrunead","ruralizad","rusificad","rusticad","rutead","rutilad","sabid","sablead","saboread","saborizad","sabotead","sacad","sacarificad","sachad","saciad","sacodid","sacralizad","sacramentad","sacrificad","sacudid","saetad","saetead","sahumad","sajad","salad","salariad","saldad","salid","salinizad","salivad","sallad","salmodiad","salpicad","salpimentad","salpresad","salsead","saltad","saltead","saludad","salvad","salvaguardad","sambenitad","samplead","sanad","sancionad","sancochad","sandunguead","sanead","sangrad","sanitizad","sanjad","santificad","santiguad","sapead","saponificad","saquead","sargentead","sarmentad","satanizad","satinad","satirizad","satisfech","saturad","sazonad","secad","seccionad","secretad","secretead","sectorizad","secuenciad","secuestrad","secularizad","secundad","sedad","sedentarizad","sedimentad","seducid","segad","segmentad","segregad","seguid","segundad","segurad","seleccionad","selfiad","sellad","semaforizad","semblad","sembrad","semejad","sementad","sensibilizad","sentad","sentenciad","sentid","señad","señalad","señalizad","señoread","separad","sepultad","sequestrad","serenad","seriad","serializad","serigrafiad","sermonead","serpead","serpentead","serrad","serruchad","servid","sesead","sesgad","sesionad","sestead","setead","sexad","sextuplicad","sexualizad","shockead","sicoanalizad","sid","sigilad","signad","significad","silabad","silabead","silbad","silenciad","siluetead","simbolizad","simpatizad","simplificad","simulad","simultanead","sincerad","sincopad","sincretizad","sincronizad","sindicad","sindicalizad","singad","singularizad","sinonimizad","sinterizad","sintetizad","sintonizad","sirgad","sisad","sisead","sistematizad","sitiad","situad","sobad","sobajad","sobornad","sobrad","sobreactuad","sobrealimentad","sobreasad","sobrecalentad","sobrecargad","sobrecogid","sobreconsumid","sobrecumplid","sobredemandad","sobredeterminad","sobredimensionad","sobredorad","sobredosificad","sobreentendid","sobreescript","sobreescrit","sobreestimad","sobreestimulad","sobreexcitad","sobreexplotad","sobreexpresad","sobreexpuest","sobregirad","sobregrabad","sobreimpres","sobreimprimid","sobreinfectad","sobrellenad","sobrellevad","sobremedicad","sobrenadad","sobrentendid","sobrepasad","sobrepoblad","sobreprotegid","sobrepuest","sobrepujad","sobrerreaccionad","sobrerrepresentad","sobresalid","sobresaltad","sobresaturad","sobrescript","sobrescrit","sobreseíd","sobrestimad","sobrevalorad","sobrevaluad","sobrevenid","sobrevirad","sobrevivid","sobrevolad","socarrad","socavad","sociabilizad","socializad","socorrid","sodomizad","sofisticad","sofocad","sofreíd","sofrenad","sofrit","soguead","sojuzgad","solad","solapad","solarizad","solazad","soldad","solead","solemnizad","solevad","solfead","solicitad","solid","solidad","solidarizad","solidificad","soliviantad","sollozad","soltad","solubilizad","solucionad","solventad","somatizad","sombrad","sombread","sometid","somorgujad","sompesad","sonad","sondad","sondead","sonorizad","sonreíd","sonrojad","sonrosad","sonsacad","soñad","sopad","sopesad","soplad","soportad","sorbid","sorprendid","sortead","sosegad","soslayad","sospechad","sostenid","sotad","soterrad","stalkead","suavizad","subalimentad","subalquilad","subalternizad","subarrendad","subastad","subclasificad","subcontratad","subdividid","subducid","subentendid","subestimad","subid","sublevad","sublimad","subministrad","subordinad","subrayad","subrogad","subsanad","subscript","subscrit","subseguid","subsidiad","subsistid","substanciad","substantivad","substituid","substraíd","subsumid","subtendid","subtitulad","subutilizad","subvaluad","subvencionad","subvenid","subvertid","subvirad","subyacid","subyugad","succionad","sucedid","sucitad","sucumbid","sudad","suelt","sufijad","sufragad","sufrid","sugerid","sugestionad","suicidad","sujetad","sujuzgad","sulcad","sulfatad","sulfurad","sumad","sumariad","sumergid","sumid","suministrad","supeditad","superad","superimpuest","superpoblad","superpuest","supervalorad","supervenid","supervigilad","supervisad","supervivid","suplantad","suplementad","suplicad","suplid","suprimid","supuest","supurad","suputad","surcad","surcid","surfead","surgid","surtid","suscitad","suscript","suscrit","suspendid","suspirad","sustanciad","sustantivad","sustentad","sustituid","sustraíd","susurrad","sutilizad","suturad","tabicad","tablad","tabletead","tabulad","tachad","tachonad","tacid","tacklead","taclead","taconead","tajad","talad","taladrad","tallad","tambalead","tamboread","tamborilead","tamizad","tamponad","tangad","tanquead","tantead","tañid","tapad","tapead","tapiad","tapiscad","tapizad","taponad","taponead","taquead","taquillad","taracead","tarad","tararead","tardad","tarifad","tarificad","tarjad","tartamudead","tasad","tascad","tatemad","tatuad","taxiad","teatralizad","techad","teclead","tecnificad","tejad","tejid","telefonead","telegrafiad","teleportad","teletrabajad","teletransportad","televisad","telonead","temad","tematizad","temblad","temblequead","temid","temperad","templad","temporizad","tendid","tenid","tensad","tensionad","tentad","teñid","teorizad","tercerizad","terciad","terciarizad","tergiversad","terminad","ternad","terracead","terraformad","terraplenad","territorializad","tertuliad","tesad","testad","testead","testificad","testiguad","testimoniad","textead","texturizad","tictaquead","tijeretead","tildad","timad","timbead","timbrad","timonead","tincad","tintad","tintinead","tinturad","tipad","tipead","tipificad","tipologizad","tirad","tiranizad","tiritad","tironead","tirotead","titilad","titrad","titubad","titubead","titulad","titularizad","tiznad","tocad","togad","toldad","tolerad","tollid","tomad","tongonead","tonificad","tonsurad","tontead","topad","topead","topetad","toquetead","torcid","toread","tormientad","tornad","tornead","torpedead","torrad","torturad","tosid","tostad","totalizad","toxificad","trabad","trabajad","trabucad","traccionad","traducid","traficad","tragad","traicionad","traíd","trajead","trajinad","tramad","tramitad","trampead","trancad","tranquead","tranquilizad","transad","transbordad","transcendid","transcodificad","transcript","transcrit","transcurrid","transfectad","transferid","transfigurad","transformad","transfundid","transgredid","transicionad","transigid","transistorizad","transitad","transladad","transliterad","translocad","translucid","transmigrad","transmitid","transmutad","transparentad","transpirad","transplantad","transportad","transpuest","transtornad","transustanciad","transvasad","transversalizad","tranzad","trapacead","trapalead","trapead","trapichead","traquetead","trasbordad","trascendid","trascript","trascrit","trascurrid","trasegad","trasferid","trasfigurad","trasformad","trasgredid","trashumad","trasladad","traslapad","trasliterad","trasluchad","traslucid","trasmigrad","trasmitid","trasmontad","trasmutad","trasnochad","trasoíd","traspalad","traspapelad","trasparentad","traspasad","traspillad","traspirad","trasplantad","trasportad","traspuest","trasquilad","trastabillad","trastabillead","trastead","trastocad","trastornad","trastrabillad","trastrocad","trasudad","trasuntad","trasvasad","tratad","traumad","traumatizad","travestid","trazad","trebejad","trechad","trefilad","tremid","tremolad","trenad","trenzad","trepad","trepanad","trepidad","triangulad","tribulad","tributad","tricotad","trillad","trinad","trincad","trinchad","triplicad","triptongad","tripulad","triscad","trisecad","tristead","triturad","triunfad","trivializad","trocad","trocead","trolead","trompetead","trompezad","trompicad","tronad","troncad","tronchad","tropezad","tropicalizad","troquelad","trotad","trovad","trozad","trucad","trucidad","trufad","truncad","truquead","tugurizad","tuitead","tullid","tumbad","tumultuad","tunad","tundid","tunead","tunelad","tupid","turbad","turbinad","turboalimentad","turbocargad","turistead","turistificad","turnad","turquead","tusad","tutead","tutelad","twitead","twittead","ubicad","ufanad","ulcerad","ultimad","ultracentrifugad","ultrajad","ululad","uncid","ungid","unid","unificad","uniformad","uniformizad","universalizad","untad","upad","urbanizad","urdid","urgid","uruguayizad","usad","ustedead","usucapid","usufructuad","usurpad","utilizad","vacacionad","vacad","vaciad","vacilad","vacunad","vadead","vagabundead","vagad","vaguead","valid","validad","vallad","valorad","valorizad","valsad","valuad","vampirizad","vanagloriad","vandalizad","vapead","vaporizad","vapulead","varad","varead","variad","vascularizad","vaticinad","vectorizad","vedad","vegetad","vehiculad","vehiculizad","vejad","velad","velarizad","velicad","venadead","vencid","vendad","vendid","vendimiad","venenciad","venerad","vengad","venid","ventad","ventead","ventilad","ventosead","veranead","verbalizad","verberad","verdead","verdeguead","verguead","verificad","versad","versead","versificad","versionad","versionead","vertebrad","verticalizad","vertid","vestid","vetad","vetead","vezad","viabilizad","viajad","viboread","vibrad","vichead","viciad","victimad","victimizad","victoread","videograbad","vidriad","vigilad","vigorizad","vilipendiad","vinculad","vindicad","vinificad","violad","violentad","virad","viralizad","virtualizad","visad","visibilizad","visionad","visitad","vislumbrad","visoriad","vist","visualizad","vitalizad","vitoread","vitrificad","vituperad","vivad","vivaquead","vivenciad","vivid","vivificad","vocalizad","vocead","vociferad","volad","volantead","volatilizad","volcad","volead","voltead","voltejead","vomitad","vosead","votad","voznad","vuelt","vulcanizad","vulgarizad","vulnerad","wasapead","whatsappead","wikificad","xerocopiad","xerografiad","yacid","yantad","yapad","yerad","yermad","yirad","yodurad","yugulad","yuxtapuest","zabordad","zabullid","zafad","zaherid","zamarread","zambullid","zampad","zancadillead","zancajead","zanganead","zanjad","zanquead","zapad","zapatead","zapead","zarandead","zarpad","zascandilead","zigzaguead","zombificad","zonificad","zorread","zozobrad","zumbad","zurcid","zuread","zurrad","zurriad","zurrid","zuzad"],{getWords:Y}=e.languageProcessing;const{precedenceException:Z,directPrecedenceException:$,values:aa}=e.languageProcessing,da=aa.Clause,ea=["ser","soy","eres","es","somos","sois","son","fui","fuiste","fue","fuimos","fuisteis","fueron","era","eras","era","éramos","erais","eran","sería","serías","seríamos","seríais","serían","seré","serás","será","seremos","seréis","serán","seas","sea","seamos","seáis","sean","fuera","fueras","fuéramos","fuerais","fueran","fuese","fueses","fuésemos","fueseis","fuesen","fuere","fueres","fuéremos","fuereis","fueren","sé","sed","siendo","sido"],{createRegexFromArray:ia,getClauses:ra}=e.languageProcessing,sa={Clause:class extends da{constructor(a,d){super(a,d),this._participles=function(a){return Y(a).filter((a=>function(a){return["a","o","as","os"].some((d=>{if(a.length>3&&a.endsWith(d)){const e=a.slice(0,-d.length);return X.includes(e)}}))}(a)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const a=this.getClauseText(),d=this.getParticiples().filter((d=>!$(a,d,V)&&!Z(a,d,J)));this.setPassive(d.length>0)}},stopwords:H,auxiliaries:ea,regexes:{auxiliaryRegex:ia(ea),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi,followingAuxiliaryExceptionRegex:ia(["el","la","los","las","una"])}};function na(a){return ra(a,sa)}const oa=window.lodash,ca=function(a,d="i"){return a.map((a=>function(a,d="i"){return 2===a.length?{reg:new RegExp(a[0],d),repl:a[1]}:3===a.length?{reg:new RegExp(a[0],d),repl1:a[1],repl2:a[2]}:null}(a,d)))};function ta(a,d){if(-1!==a.search(new RegExp(d[0])))return a.replace(new RegExp(d[0]),d[1])}const{buildFormRule:la,createRulesFromArrays:ua,findMatchingEndingInArray:ma}=e.languageProcessing,pa=function(a){return/[aeiouáéíóú]/gi.test(a)},ba=function(a){const d=["á","é","í","ó","ú"],e=["a","e","i","o","u"];for(let i=0;i3&&(i=pa(a[1])?pa(a[0])&&pa(a[1])?function(a,d){const e=a.length;for(let d=2;dfunction(a,d){a.toLowerCase();const e=fa(a,d.exceptionStemsWithFullForms);if(e)return e;if(d.wordsThatLookLikeButAreNot.nonPluralsOnS.includes(a))return ba(a);if(a.length<2)return ba(a);const[i,r,s]=wa(a);let n=a.slice(i),o=a.slice(r),c=a.slice(s);const t=a,l=va(a,n);if(l!==a)return ba(l);(a=ka(a,c,d))!==t&&(n=a.slice(i),o=a.slice(r),c=a.slice(s));const u=a;a=Sa(a,o);const m=ha(a,n,d.menteStemming);if(m!==a)return ba(m);const p=ja(a,n,d.superlativesStemming);if(p!==a)return ba(p);const b=qa(a,d.diminutivesStemming);if(b!==a)return ba(b);a!==u&&(c=a.slice(s));const g=a;let z=!1;const f=d.wordsThatLookLikeButAreNot.notVerbForms;if(u===g){let d=a;a.endsWith("s")&&(d=a.slice(0,-1)),f.includes(d)?(a=d,z=!0):a=ya(a,g,c,s)}c=a.slice(s),a=Pa(a,c,s);const v=xa(a,d.stemsThatBelongToOneWord);if(v)return v;if(!z){const e=function(a,d){const e=d.verbStemModifications,i=ta(a,e.quToC);if(i)return ta(i,e.ueToOSimple)||i;const r=function(a,d){if(d.includes(null))return a;for(let e=0;e{"use strict";var e={d:(d,n)=>{for(var t in n)e.o(n,t)&&!e.o(d,t)&&Object.defineProperty(d,t,{enumerable:!0,get:n[t]})},o:(e,d)=>Object.prototype.hasOwnProperty.call(e,d),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},d={};e.r(d),e.d(d,{default:()=>Fe});const n=window.yoast.analysis,t=["the","a","an","one","two","three","four","five","six","seven","eight","nine","ten","this","that","these","those"],i=["am","is","are","was","were","been","get","gets","got","gotten","be","she's","he's","it's","i'm","we're","they're","you're","that's","isn't","weren't","wasn't","aren't"],a=["being","getting","having","what's"],r=i.concat(a),o=["accordingly","additionally","afterward","afterwards","albeit","also","although","altogether","another","basically","because","before","besides","but","certainly","chiefly","comparatively","concurrently","consequently","contrarily","conversely","correspondingly","despite","doubtedly","during","e.g.","earlier","emphatically","equally","especially","eventually","evidently","explicitly","finally","firstly","following","formerly","forthwith","fourthly","further","furthermore","generally","hence","henceforth","however","i.e.","identically","indeed","initially","instead","last","lastly","later","lest","likewise","markedly","meanwhile","moreover","nevertheless","nonetheless","nor","notwithstanding","obviously","occasionally","otherwise","overall","particularly","presently","previously","rather","regardless","secondly","shortly","significantly","similarly","simultaneously","since","so","soon","specifically","still","straightaway","subsequently","surely","surprisingly","than","then","thereafter","therefore","thereupon","thirdly","though","thus","till","undeniably","undoubtedly","unless","unlike","unquestionably","until","when","whenever","whereas","while","whether","if","actually"],s=o.concat(["above all","after all","after that","all in all","all of a sudden","all things considered","analogous to","although this may be true","analogous to","another key point","as a matter of fact","as a result","as an illustration","as can be seen","as has been noted","as I have noted","as I have said","as I have shown","as long as","as much as","as opposed to","as shown above","as soon as","as well as","at any rate","at first","at last","at least","at length","at the present time","at the same time","at this instant","at this point","at this time","balanced against","being that","by all means","by and large","by comparison","by the same token","by the time","compared to","be that as it may","coupled with","different from","due to","equally important","even if","even more","even so","even though","first thing to remember","for example","for fear that","for instance","for one thing","for that reason","for the most part","for the purpose of","for the same reason","for this purpose","for this reason","from time to time","given that","given these points","important to realize","in a word","in addition","in another case","in any case","in any event","in brief","in case","in conclusion","in contrast","in detail","in due time","in effect","in either case","in essence","in fact","in general","in light of","in like fashion","in like manner","in order that","in order to","in other words","in particular","in reality","in short","in similar fashion","in spite of","in sum","in summary","in that case","in the event that","in the final analysis","in the first place","in the fourth place","in the hope that","in the light of","in the long run","in the meantime","in the same fashion","in the same way","in the second place","in the third place","in this case","in this situation","in time","in truth","in view of","inasmuch as","most compelling evidence","most important","must be remembered","not only","not to mention","note that","now that","of course","on account of","on balance","on condition that","on one hand","on the condition that","on the contrary","on the negative side","on the other hand","on the positive side","on the whole","on this occasion","once","once in a while","only if","owing to","point often overlooked","prior to","provided that","seeing that","so as to","so far","so long as","so that","sooner or later","such as","summing up","take the case of","that is","that is to say","then again","this time","to be sure","to begin with","to clarify","to conclude","to demonstrate","to emphasize","to enumerate","to explain","to illustrate","to list","to point out","to put it another way","to put it differently","to repeat","to rephrase it","to say nothing of","to sum up","to summarize","to that end","to the end that","to this end","together with","under those circumstances","until now","up against","up to the present time","vis a vis","what's more","while it may be true","while this may be true","with attention to","with the result that","with this in mind","with this intention","with this purpose in mind","without a doubt","without delay","without doubt","without reservation","according to","no sooner"]);function u(e){let d=e;return e.forEach((n=>{(n=n.split("-")).length>0&&n.filter((d=>!e.includes(d))).length>0&&(d=d.concat(n))})),d}const l=["the","an","a"],c=["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","hundred","hundreds","thousand","thousands","million","millions","billion","billions"],h=["first","second","third","fourth","fifth","sixth","seventh","eighth","ninth","tenth","eleventh","twelfth","thirteenth","fourteenth","fifteenth","sixteenth","seventeenth","eighteenth","nineteenth","twentieth"],p=["i","you","he","she","it","we","they"],m=["me","him","us","them"],f=["this","that","these","those"],g=["my","your","his","her","its","their","our","mine","yours","hers","theirs","ours"],b=["all","some","many","lot","lots","ton","tons","bit","no","every","enough","little","much","more","most","plenty","several","few","fewer","kind","kinds"],w=["myself","yourself","himself","herself","itself","oneself","ourselves","yourselves","themselves"],y=["none","nobody","everyone","everybody","someone","somebody","anyone","anybody","nothing","everything","something","anything","each","other","whatever","whichever","whoever","whomever","whomsoever","whosoever","others","neither","both","either","any","such"],v=["one's","nobody's","everyone's","everybody's","someone's","somebody's","anyone's","anybody's","nothing's","everything's","something's","anything's","whoever's","others'","other's","another's","neither's","either's"],z=["which","what","whose"],k=["who","whom"],x=["where","how","why","whether","wherever","whyever","wheresoever","whensoever","howsoever","whysoever","whatsoever","whereso","whomso","whenso","howso","whyso","whoso","whatso"],q=["therefor","therein","hereby","hereto","wherein","therewith","herewith","wherewith","thereby"],j=["there","here","whither","thither","hither","whence","thence"],P=["always","once","twice","thrice"],L=["can","cannot","can't","could","couldn't","could've","dare","dares","dared","do","don't","does","doesn't","did","didn't","done","have","haven't","had","hadn't","has","hasn't","i've","you've","we've","they've","i'd","you'd","he'd","she'd","it'd","we'd","they'd","would","wouldn't","would've","may","might","must","need","needn't","needs","ought","shall","shalln't","shan't","should","shouldn't","will","won't","i'll","you'll","he'll","she'll","it'll","we'll","they'll","there's","there're","there'll","here's","here're","there'll"],E=["appear","appears","appeared","become","becomes","became","come","comes","came","keep","keeps","kept","remain","remains","remained","stay","stays","stayed","turn","turns","turned"],W=["doing","daring","having","appearing","becoming","coming","keeping","remaining","staying","saying","asking","stating","seeming","letting","making","setting","showing","putting","adding","going","using","trying","containing"],R=["in","from","with","under","throughout","atop","for","on","of","to","aboard","about","above","abreast","absent","across","adjacent","after","against","along","alongside","amid","mid","among","apropos","apud","around","as","astride","at","ontop","afore","tofore","behind","ahind","below","ablow","beneath","neath","beside","between","atween","beyond","ayond","by","chez","circa","spite","down","except","into","less","like","minus","near","nearer","nearest","anear","notwithstanding","off","onto","opposite","out","outen","over","past","per","pre","qua","sans","sithence","through","thru","truout","toward","underneath","up","upon","upside","versus","via","vis-à-vis","without","ago","apart","aside","aslant","away","withal","towards","amidst","amongst","midst","whilst"],$=["back","within","forward","backward","ahead"],F=["and","or","and/or","yet"],T=["sooner","just","only"],I=["if","even"],S=["say","says","said","claimed","ask","asks","asked","stated","explain","explains","explained","think","thinks","talks","talked","announces","announced","tells","told","discusses","discussed","suggests","suggested","understands","understood"],C=["again","definitely","eternally","expressively","instead","expressly","immediately","including","instantly","namely","naturally","next","notably","now","nowadays","ordinarily","positively","truly","ultimately","uniquely","usually","almost","maybe","probably","granted","initially","too","actually","already","e.g","i.e","often","regularly","simply","optionally","perhaps","sometimes","likely","never","ever","else","inasmuch","provided","currently","incidentally","elsewhere","particular","recently","relatively","f.i","clearly","apparently"],O=["highly","very","really","extremely","absolutely","completely","totally","utterly","quite","somewhat","seriously","fairly","fully","amazingly"],H=["seem","seems","seemed","let","let's","lets","make","makes","made","want","showed","shown","go","goes","went","gone","take","takes","took","taken","put","puts","use","used","try","tries","tried","mean","means","meant","called","based","add","adds","added","contain","contains","contained","consist","consists","consisted","ensure","ensures","ensured"],A=["new","newer","newest","old","older","oldest","previous","good","well","better","best","big","bigger","biggest","easy","easier","easiest","fast","faster","fastest","far","hard","harder","hardest","least","own","large","larger","largest","long","longer","longest","low","lower","lowest","high","higher","highest","regular","simple","simpler","simplest","small","smaller","smallest","tiny","tinier","tiniest","short","shorter","shortest","main","actual","nice","nicer","nicest","real","same","able","certain","usual","so-called","mainly","mostly","recent","anymore","complete","lately","possible","commonly","constantly","continually","directly","easily","nearly","slightly","somewhere","estimated","latest","different","similar","widely","bad","worse","worst","great","specific","available","average","awful","awesome","basic","beautiful","busy","current","entire","everywhere","important","major","multiple","normal","necessary","obvious","partly","special","last","early","earlier","earliest","young","younger","youngest"],B=["oh","wow","tut-tut","tsk-tsk","ugh","whew","phew","yeah","yea","shh","oops","ouch","aha","yikes"],M=["tbs","tbsp","spk","lb","qt","pk","bu","oz","pt","mod","doz","hr","f.g","ml","dl","cl","l","mg","g","kg","quart"],N=["seconds","minute","minutes","hour","hours","day","days","week","weeks","month","months","year","years","today","tomorrow","yesterday"],U=["thing","things","way","ways","matter","case","likelihood","ones","piece","pieces","stuff","times","part","parts","percent","instance","instances","aspect","aspects","item","items","idea","theme","person","instance","instances","detail","details","factor","factors","difference","differences"],V=["not","yes","sure","top","bottom","ok","okay","amen","aka","etc","etcetera","sorry","please"],_=["jr","sr"],D=(u([].concat(h,W,A)),u([].concat(l,R,F,f,O,b,g)),u([].concat(o,P,p,m,w,B,c,i,L,E,S,H,y,T,I,z,k,x,j,V,$,q,M,N,U)),u([].concat(l,R,f,g,h,W,b))),J=u([].concat(L,E,S,H)),G=(u([].concat(l,c,h,f,g,w,p,m,b,y,W,v,z,k,x,q,j,P,$,i,a,L,E,R,F,T,I,S,o,C,O,H,B,A,M,V,_)),u([].concat(l,c,h,f,g,w,p,m,b,y,W,v,z,k,x,q,j,P,$,i,a,L,E,R,F,T,I,S,o,C,O,H,B,A,M,U,V,N,["ms","mss","mrs","mr","dr","prof"],_))),K=["to","which","who","whom","that","whose","after","although","as","because","before","even if","even though","if","in order that","inasmuch","lest","once","provided","since","so that","than","though","till","unless","until","when","whenever","where","whereas","wherever","whether","while","why","by the time","supposing","no matter","how","what","won't","do","does","–","and","but","or"],Q=[["both","and"],["not only","but also"],["neither","nor"],["either","or"],["not","but"]],X=JSON.parse('{"vowels":"aeiouy","deviations":{"vowels":[{"fragments":["cial","tia","cius","giu","ion","[^bdnprv]iou","sia$","[^aeiuot]{2,}ed$","[aeiouy][^aeiuoyts]{1,}e$","[a-z]ely$","[cgy]ed$","rved$","[aeiouy][dt]es?$","eau","ieu","oeu","[aeiouy][^aeiouydt]e[sd]?$","[aeouy]rse$","^eye"],"countModifier":-1},{"fragments":["ia","iu","ii","io","[aeio][aeiou]{2}","[aeiou]ing","[^aeiou]ying","ui[aeou]"],"countModifier":1},{"fragments":["^ree[jmnpqrsx]","^reele","^reeva","riet","dien","[aeiouym][bdp]le$","uei","uou","^mc","ism$","[^l]lien","^coa[dglx].","[^gqauieo]ua[^auieo]","dn\'t$","uity$","ie(r|st)","[aeiouw]y[aeiou]","[^ao]ire[ds]","[^ao]ire$"],"countModifier":1},{"fragments":["eoa","eoo","ioa","ioe","ioo"],"countModifier":1}],"words":{"full":[{"word":"business","syllables":2},{"word":"coheiress","syllables":3},{"word":"colonel","syllables":2},{"word":"heiress","syllables":2},{"word":"i.e","syllables":2},{"word":"shoreline","syllables":2},{"word":"simile","syllables":3},{"word":"unheired","syllables":2},{"word":"wednesday","syllables":2}],"fragments":{"global":[{"word":"coyote","syllables":3},{"word":"graveyard","syllables":2},{"word":"lawyer","syllables":2}]}}}}'),Y=window.lodash,Z=["ablebodied","abovementioned","absentminded","accoladed","accompanied","acculturized","accursed","acerated","acerbated","acetylized","achromatised","achromatized","acidified","acned","actualised","adrenalised","adulated","adversed","aestheticised","affectioned","affined","affricated","aforementioned","agerelated","aggrieved","airbed","aircooled","airspeed","alcoholized","alcoved","alkalised","allianced","aluminized","alveolated","ambered","ammonified","amplified","anagrammatised","anagrammatized","anathematised","aniseed","ankled","annualized","anonymised","anthologized","antlered","anucleated","anviled","anvilshaped","apostrophised","apostrophized","appliqued","apprized","arbitrated","armored","articled","ashamed","assented","atomised","atrophied","auricled","auriculated","aurified","autopsied","axled","babied","backhoed","badmannered","badtempered","balustered","baned","barcoded","bareboned","barefooted","barelegged","barnacled","based","bayoneted","beadyeyed","beaked","beaned","beatified","beautified","beavered","bed","bedamned","bedecked","behoved","belated","bellbottomed","bellshaped","benighted","bequeathed","berried","bespectacled","bewhiskered","bighearted","bigmouthed","bigoted","bindweed","binucleated","biopsied","bioturbed","biped","bipinnated","birdfeed","birdseed","bisegmented","bitterhearted","blabbermouthed","blackhearted","bladed","blankminded","blearyeyed","bleed","blissed","blobbed","blondhaired","bloodied","bloodred","bloodshed","blueblooded","boatshaped","bobsled","bodied","boldhearted","boogied","boosed","bosomed","bottlefed","bottlefeed","bottlenecked","bouldered","bowlegged","bowlshaped","brandied","bravehearted","breastfed","breastfeed","breed","brighteyed","brindled","broadhearted","broadleaved","broadminded","brokenhearted","broomed","broomweed","buccaned","buckskinned","bucktoothed","buddied","buffaloed","bugeyed","bugleweed","bugweed","bulletined","bunked","busied","butterfingered","cabbed","caddied","cairned","calcified","canalized","candied","cannulated","canoed","canopied","canvased","caped","capsulated","cassocked","castellated","catabolised","catheterised","caudated","cellmediated","cellulosed","certified","chagrined","chambered","chested","chevroned","chickenfeed","chickenhearted","chickweed","chilblained","childbed","chinned","chromatographed","ciliated","cindered","cingulated","circumstanced","cisgendered","citrullinated","clappered","clarified","classified","clawshaped","claysized","cleanhearted","clearminded","clearsighted","cliched","clodded","cloistered","closefisted","closehearted","closelipped","closemouthed","closeted","cloudseed","clubfooted","clubshaped","clued","cockeyed","codified","coed","coevolved","coffined","coiffed","coinfected","coldblooded","coldhearted","collateralised","colonialised","colorcoded","colorised","colourised","columned","commoditized","compactified","companioned","complexioned","conceited","concerned","concussed","coneshaped","congested","contented","convexed","coralled","corymbed","cottonseed","countrified","countrybred","courtmartialled","coved","coveralled","cowshed","cozied","cragged","crayoned","credentialed","creed","crenulated","crescentshaped","cressweed","crewed","cricked","crispated","crossbarred","crossbed","crossbred","crossbreed","crossclassified","crosseyed","crossfertilised","crossfertilized","crossindexed","crosslegged","crossshaped","crossstratified","crossstriated","crotched","crucified","cruelhearted","crutched","cubeshaped","cubified","cuckolded","cucumbershaped","cumbered","cuminseed","cupshaped","curated","curded","curfewed","curlicued","curlycued","curried","curtsied","cyclized","cylindershaped","damed","dandified","dangered","darkhearted","daybed","daylighted","deacidified","deacylated","deadhearted","deadlined","deaminized","deathbed","decalcified","decertified","deckbed","declassified","declutched","decolourated","decreed","deed","deeprooted","deepseated","defensed","defied","deflexed","deglamorised","degunkified","dehumidified","deified","deled","delegitimised","demoded","demystified","denasalized","denazified","denied","denitrified","denticulated","deseed","desexualised","desposited","detoxified","deuced","devitrified","dewlapped","dezincified","diagonalised","dialogued","died","digitated","dignified","dilled","dimwitted","diphthonged","disaffected","disaggregated","disarrayed","discalced","discolorated","discolourated","discshaped","diseased","disembodied","disencumbered","disfranchised","diskshaped","disproportionated","disproportioned","disqualified","distempered","districted","diversified","diverticulated","divested","divvied","dizzied","dogged","dogsbodied","dogsled","domeshaped","domiciled","dormered","doublebarrelled","doublestranded","doublewalled","downhearted","duckbilled","eared","echeloned","eddied","edified","eggshaped","elasticated","electrified","elegized","embed","embodied","emceed","empaneled","empanelled","emptyhearted","emulsified","engined","ennobled","envied","enzymecatalysed","enzymecatalyzed","epitomised","epoxidized","epoxied","etherised","etherized","evilhearted","evilminded","exceed","excited","exemplified","exponentiated","expurgated","extravasated","extraverted","extroverted","fabled","facelifted","facsimiled","fainthearted","falcated","falsehearted","falsified","famed","fancified","fanged","fanshaped","fantasied","farsighted","fated","fatted","fazed","featherbed","fed","federalized","feeblehearted","feebleminded","feeblewitted","feed","fendered","fenestrated","ferried","fevered","fibered","fibred","ficklehearted","fiercehearted","figged","filigreed","filterfeed","fireweed","firmhearted","fissured","flanged","flanneled","flannelled","flatbed","flatfooted","flatted","flawed","flaxenhaired","flaxseed","flaxweed","flighted","floodgenerated","flowerbed","fluidised","fluidized","flurried","fobbed","fonded","forcefeed","foreshortened","foresighted","forkshaped","formfeed","fortified","fortressed","foulmouthed","foureyed","foxtailed","fractionalised","fractionalized","frankhearted","freed","freehearted","freespirited","frenzied","friezed","frontiered","fructified","frumped","fullblooded","fullbodied","fullfledged","fullhearted","funnelshaped","furnaced","gaitered","galleried","gangliated","ganglionated","gangrened","gargoyled","gasified","gaunted","gauntleted","gauzed","gavelled","gelatinised","gemmed","genderized","gentled","gentlehearted","gerrymandered","gladhearted","glamored","globed","gloried","glorified","glycosylated","goateed","gobletshaped","godspeed","goodhearted","goodhumored","goodhumoured","goodnatured","goodtempered","goosed","goosenecked","goutweed","grainfed","grammaticalized","grapeseed","gratified","graved","gravelbed","grayhaired","greathearted","greed","greenweed","grommeted","groundspeed","groved","gruffed","guiled","gulled","gumshoed","gunkholed","gussied","guyed","gyrostabilized","hackneyed","hagged","haired","halfcivilized","halfhearted","halfwitted","haloed","handballed","handfed","handfeed","hardcoded","hardhearted","hardnosed","hared","harelipped","hasted","hatred","haunched","hawkeyed","hayseed","hayweed","hearsed","hearted","heartshaped","heavenlyminded","heavyfooted","heavyhearted","heed","heired","heisted","helicoptered","helmed","helmeted","hemagglutinated","hemolyzed","hempseed","hempweed","heparinised","heparinized","herbed","highheeled","highminded","highpriced","highspeed","highspirited","hilled","hipped","hispanicised","hocked","hoed","hogweed","holstered","homaged","hoodooed","hoofed","hooknosed","hooved","horned","horrified","horseshoed","horseweed","hotbed","hotblooded","hothearted","hotted","hottempered","hued","humansized","humidified","humped","hundred","hutched","hyperinflated","hyperpigmented","hyperstimulated","hypertrophied","hyphened","hypophysectomised","hypophysectomized","hypopigmented","hypostatised","hysterectomized","iconified","iconised","iconized","ideologised","illbred","illconceived","illdefined","illdisposed","illequipped","illfated","illfavored","illfavoured","illflavored","illfurnished","illhumored","illhumoured","illimited","illmannered","illnatured","illomened","illproportioned","illqualified","illscented","illtempered","illumed","illusioned","imbed","imbossed","imbued","immatured","impassioned","impenetrated","imperfected","imperialised","imperturbed","impowered","imputed","inarticulated","inbred","inbreed","incapsulated","incased","incrustated","incrusted","indebted","indeed","indemnified","indentured","indigested","indisposed","inexperienced","infrared","intensified","intentioned","interbedded","interbred","interbreed","interluded","introverted","inured","inventoried","iodinated","iodised","irked","ironfisted","ironweed","itchweed","ivied","ivyweed","jagged","jellified","jerseyed","jetlagged","jetpropelled","jeweled","jewelled","jewelweed","jiggered","jimmyweed","jimsonweed","jointweed","joyweed","jungled","juried","justiceweed","justified","karstified","kerchiefed","kettleshaped","kibbled","kidneyshaped","kimonoed","kindhearted","kindred","kingsized","kirtled","knacked","knapweed","kneed","knobbed","knobweed","knopweed","knotweed","lakebed","lakeweed","lamed","lamellated","lanceshaped","lanceted","landbased","lapeled","lapelled","largehearted","lariated","lased","latticed","lauded","lavaged","lavendered","lawned","led","lefteyed","legitimatised","legitimatized","leisured","lensshaped","leveed","levied","lichened","lichenized","lidded","lifesized","lightfingered","lightfooted","lighthearted","lightminded","lightspeed","lignified","likeminded","lilylivered","limbed","linearised","linearized","linefeed","linseed","lionhearted","liquefied","liquified","lithified","liveried","lobbied","located","locoweed","longarmed","longhaired","longhorned","longlegged","longnecked","longsighted","longwinded","lopsided","loudmouthed","louvered","louvred","lowbred","lowpriced","lowspirited","lozenged","lunated","lyrated","lysinated","maced","macroaggregated","macrodissected","maculated","madweed","magnified","maidenweed","maladapted","maladjusted","malnourished","malrotated","maned","mannered","manuevered","manyhued","manyshaped","manysided","masted","mealymouthed","meanspirited","membered","membraned","metaled","metalized","metallised","metallized","metamerized","metathesized","meted","methylated","mettled","microbrecciated","microminiaturized","microstratified","middleaged","midsized","miffed","mildhearted","milkweed","miniskirted","misactivated","misaligned","mischiefed","misclassified","misdeed","misdemeaned","mismannered","misnomered","misproportioned","miswired","mitred","mitted","mittened","moneyed","monocled","mononucleated","monospaced","monotoned","monounsaturated","mortified","moseyed","motorised","motorized","moussed","moustached","muddied","mugweed","multiarmed","multibarreled","multibladed","multicelled","multichambered","multichanneled","multichannelled","multicoated","multidirected","multiengined","multifaceted","multilaminated","multilaned","multilayered","multilobed","multilobulated","multinucleated","multipronged","multisegmented","multisided","multispeed","multistemmed","multistoried","multitalented","multitoned","multitowered","multivalued","mummied","mummified","mustached","mustachioed","mutinied","myelinated","mystified","mythicised","naked","narcotised","narrowminded","natured","neaped","nearsighted","necrosed","nectared","need","needleshaped","newfangled","newlywed","nibbed","nimblewitted","nippled","nixed","nobled","noduled","noised","nonaccented","nonactivated","nonadsorbed","nonadulterated","nonaerated","nonaffiliated","nonaliased","nonalienated","nonaligned","nonarchived","nonarmored","nonassociated","nonattenuated","nonblackened","nonbreastfed","nonbrecciated","nonbuffered","nonbuttered","noncarbonated","noncarbonized","noncatalogued","noncatalyzed","noncategorized","noncertified","nonchlorinated","nonciliated","noncircumcised","noncivilized","nonclassified","noncoated","noncodified","noncoerced","noncommercialized","noncommissioned","noncompacted","noncompiled","noncomplicated","noncomposed","noncomputed","noncomputerized","nonconcerted","nonconditioned","nonconfirmed","noncongested","nonconjugated","noncooled","noncorrugated","noncoupled","noncreated","noncrowded","noncultured","noncurated","noncushioned","nondecoded","nondecomposed","nondedicated","nondeferred","nondeflated","nondegenerated","nondegraded","nondelegated","nondelimited","nondelineated","nondemarcated","nondeodorized","nondeployed","nonderivatized","nonderived","nondetached","nondetailed","nondifferentiated","nondigested","nondigitized","nondilapidated","nondilated","nondimensionalised","nondimensionalized","nondirected","nondisabled","nondisciplined","nondispersed","nondisputed","nondisqualified","nondisrupted","nondisseminated","nondissipated","nondissolved","nondistressed","nondistributed","nondiversified","nondiverted","nondocumented","nondomesticated","nondoped","nondrafted","nondrugged","nondubbed","nonducted","nonearthed","noneclipsed","nonedged","nonedited","nonelasticized","nonelectrified","nonelectroplated","nonelectroporated","nonelevated","noneliminated","nonelongated","nonembedded","nonembodied","nonemphasized","nonencapsulated","nonencoded","nonencrypted","nonendangered","nonengraved","nonenlarged","nonenriched","nonentangled","nonentrenched","nonepithelized","nonequilibrated","nonestablished","nonetched","nonethoxylated","nonethylated","nonetiolated","nonexaggerated","nonexcavated","nonexhausted","nonexperienced","nonexpired","nonfabricated","nonfalsified","nonfeathered","nonfeatured","nonfed","nonfederated","nonfeed","nonfenestrated","nonfertilized","nonfilamented","nonfinanced","nonfinished","nonfinned","nonfissured","nonflagellated","nonflagged","nonflared","nonflavored","nonfluidized","nonfluorinated","nonfluted","nonforested","nonformalized","nonformatted","nonfragmented","nonfragranced","nonfranchised","nonfreckled","nonfueled","nonfumigated","nonfunctionalized","nonfunded","nongalvanized","nongated","nongelatinized","nongendered","nongeneralized","nongenerated","nongifted","nonglazed","nonglucosated","nonglucosylated","nonglycerinated","nongraded","nongrounded","nonhalogenated","nonhandicapped","nonhospitalised","nonhospitalized","nonhydrated","nonincorporated","nonindexed","noninfected","noninfested","noninitialized","noninitiated","noninoculated","noninseminated","noninstitutionalized","noninsured","nonintensified","noninterlaced","noninterpreted","nonintroverted","noninvestigated","noninvolved","nonirrigated","nonisolated","nonisomerized","nonissued","nonitalicized","nonitemized","noniterated","nonjaded","nonlabelled","nonlaminated","nonlateralized","nonlayered","nonlegalized","nonlegislated","nonlesioned","nonlexicalized","nonliberated","nonlichenized","nonlighted","nonlignified","nonlimited","nonlinearized","nonlinked","nonlobed","nonlobotomized","nonlocalized","nonlysed","nonmachined","nonmalnourished","nonmandated","nonmarginalized","nonmassaged","nonmatriculated","nonmatted","nonmatured","nonmechanized","nonmedicated","nonmedullated","nonmentioned","nonmetabolized","nonmetallized","nonmetastasized","nonmetered","nonmethoxylated","nonmilled","nonmineralized","nonmirrored","nonmodeled","nonmoderated","nonmodified","nonmonetized","nonmonitored","nonmortgaged","nonmotorized","nonmottled","nonmounted","nonmultithreaded","nonmutilated","nonmyelinated","nonnormalized","nonnucleated","nonobjectified","nonobligated","nonoccupied","nonoiled","nonopinionated","nonoxygenated","nonpaginated","nonpaired","nonparalyzed","nonparameterized","nonparasitized","nonpasteurized","nonpatterned","nonphased","nonphosphatized","nonphosphorized","nonpierced","nonpigmented","nonpiloted","nonpipelined","nonpitted","nonplussed","nonpuffed","nonrandomized","nonrated","nonrefined","nonregistered","nonregulated","nonrelated","nonretarded","nonsacred","nonsalaried","nonsanctioned","nonsaturated","nonscented","nonscheduled","nonseasoned","nonsecluded","nonsegmented","nonsegregated","nonselected","nonsolidified","nonspecialized","nonspored","nonstandardised","nonstandardized","nonstratified","nonstressed","nonstriated","nonstriped","nonstructured","nonstylised","nonstylized","nonsubmerged","nonsubscripted","nonsubsidised","nonsubsidized","nonsubstituted","nonsyndicated","nonsynthesised","nontabulated","nontalented","nonthreaded","nontinted","nontolerated","nontranslated","nontunnelled","nonunified","nonunionised","nonupholstered","nonutilised","nonutilized","nonvalued","nonvaried","nonverbalized","nonvitrified","nonvolatilised","nonvolatilized","normed","nosebleed","notated","notified","nuanced","nullified","numerated","oarweed","objectified","obliqued","obtunded","occupied","octupled","odored","oilseed","oinked","oldfashioned","onesided","oophorectomized","opaqued","openhearted","openminded","openmouthed","opiated","opinionated","oracled","oreweed","ossified","outbreed","outmoded","outrigged","outriggered","outsized","outskated","outspeed","outtopped","outtrumped","outvoiced","outweed","ovated","overadorned","overaged","overalled","overassured","overbred","overbreed","overcomplicated","overdamped","overdetailed","overdiversified","overdyed","overequipped","overfatigued","overfed","overfeed","overindebted","overintensified","overinventoried","overmagnified","overmodified","overpreoccupied","overprivileged","overproportionated","overqualified","overseed","oversexed","oversimplified","oversized","oversophisticated","overstudied","oversulfated","ovicelled","ovoidshaped","ozonated","pacified","packeted","palatalized","paled","palsied","paned","panicled","parabled","parallelepiped","parallelized","parallelopiped","parenthesised","parodied","parqueted","passioned","paunched","pauperised","pedigreed","pedimented","pedunculated","pegged","peglegged","penanced","pencilshaped","permineralized","personified","petrified","photodissociated","photoduplicated","photoed","photoinduced","photolysed","photolyzed","pied","pigeoned","pigtailed","pigweed","pilastered","pillared","pilloried","pimpled","pinealectomised","pinealectomized","pinfeathered","pinnacled","pinstriped","pixellated","pixilated","pixillated","plainclothed","plantarflexed","pled","plumaged","pocked","pokeweed","polychlorinated","polyunsaturated","ponytailed","pooched","poorspirited","popeyed","poppyseed","porcelainized","porched","poshed","pottered","poxed","preachified","precertified","preclassified","preconized","preinoculated","premed","prenotified","preoccupied","preposed","prequalified","preshaped","presignified","prespecified","prettified","pried","principled","proceed","prophesied","propounded","prosed","protonated","proudhearted","proxied","pulpified","pumpkinseed","puppied","purebred","pured","pureed","purified","pustuled","putrefied","pyjamaed","quadruped","qualified","quantified","quantised","quantized","quarried","queried","questoned","quicktempered","quickwitted","quiesced","quietened","quizzified","racemed","radiosensitised","ragweed","raindrenched","ramped","rapeseed","rarefied","rarified","ratified","razoredged","reaccelerated","reaccompanied","reachieved","reacknowledged","readdicted","readied","reamplified","reannealed","reassociated","rebadged","rebiopsied","recabled","recategorised","receipted","recentred","recertified","rechoreographed","reclarified","reclassified","reconferred","recrystalized","rectified","recursed","red","redblooded","redefied","redenied","rednecked","redshifted","redweed","redyed","reed","reembodied","reenlighted","refeed","refereed","reflexed","refortified","refronted","refuged","reglorified","reimpregnated","reinitialized","rejustified","related","reliquefied","remedied","remodified","remonetized","remythologized","renotified","renullified","renumerated","reoccupied","repacified","repurified","reputed","requalified","rescinded","reseed","reshoed","resolidified","resorbed","respecified","restudied","retabulated","reticulated","retinted","retreed","retroacted","reunified","reverified","revested","revivified","rewed","ridgepoled","riffled","rightminded","rigidified","rinded","riped","rited","ritualised","riverbed","rivered","roached","roadbed","robotised","robotized","romanized","rosetted","rosined","roughhearted","rubied","ruddied","runcinated","russeted","sabled","sabred","sabretoothed","sacheted","sacred","saddlebred","sainted","salaried","samoyed","sanctified","satellited","savvied","sawtoothed","scandalled","scarified","scarped","sceptred","scissored","screed","screwshaped","scrupled","sculked","scurried","scuttled","seabed","seaweed","seed","seedbed","selfassured","selforganized","semicivilized","semidetached","semidisassembled","semidomesticated","semipetrified","semipronated","semirefined","semivitrified","sentineled","sepaled","sepalled","sequinned","sexed","shagged","shaggycoated","shaggyhaired","shaled","shammed","sharpangled","sharpclawed","sharpcornered","sharpeared","sharpedged","sharpeyed","sharpflavored","sharplimbed","sharpnosed","sharpsighted","sharptailed","sharptongued","sharptoothed","sharpwitted","sharpworded","shed","shellbed","shieldshaped","shimmied","shinned","shirted","shirtsleeved","shoed","shortbeaked","shortbilled","shortbodied","shorthaired","shortlegged","shortlimbed","shortnecked","shortnosed","shortsighted","shortsleeved","shortsnouted","shortstaffed","shorttailed","shorttempered","shorttoed","shorttongued","shortwinded","shortwinged","shotted","shred","shrewsized","shrined","shrinkproofed","sickbed","sickleshaped","sickleweed","signalised","signified","silicified","siliconized","silkweed","siltsized","silvertongued","simpleminded","simplified","singlebarreled","singlebarrelled","singlebed","singlebladed","singlebreasted","singlecelled","singlefooted","singlelayered","singleminded","singleseeded","singleshelled","singlestranded","singlevalued","sissified","sistered","sixgilled","sixmembered","sixsided","sixstoried","skulled","slickered","slipcased","slowpaced","slowwitted","slurried","smallminded","smoothened","smoothtongued","snaggletoothed","snouted","snowballed","snowcapped","snowshed","snowshoed","snubnosed","so-called","sofabed","softhearted","sogged","soled","solidified","soliped","sorbed","souled","spearshaped","specified","spectacled","sped","speeched","speechified","speed","spied","spiffied","spindleshaped","spiritualised","spirted","splayfooted","spoonfed","spoonfeed","spoonshaped","spreadeagled","squarejawed","squareshaped","squareshouldered","squaretoed","squeegeed","staled","starshaped","starspangled","starstudded","statechartered","statesponsored","statued","steadied","steampowered","steed","steelhearted","steepled","sterned","stiffnecked","stilettoed","stimied","stinkweed","stirrupshaped","stockinged","storeyed","storied","stouthearted","straitlaced","stratified","strawberryflavored","streambed","stressinduced","stretchered","strictured","strongbodied","strongboned","strongflavored","stronghearted","stronglimbed","strongminded","strongscented","strongwilled","stubbled","studied","stultified","stupefied","styed","stymied","subclassified","subcommissioned","subminiaturised","subsaturated","subulated","suburbanised","suburbanized","suburbed","succeed","sueded","sugarrelated","sulfurized","sunbed","superhardened","superinfected","supersimplified","surefooted","sweetscented","swifted","swordshaped","syllabified","syphilized","tabularized","talented","tarpapered","tautomerized","teated","teed","teenaged","teetotaled","tenderhearted","tentacled","tenured","termed","ternated","testbed","testified","theatricalised","theatricalized","themed","thicketed","thickskinned","thickwalled","thighed","thimbled","thimblewitted","thonged","thoroughbred","thralled","threated","throated","throughbred","thyroidectomised","thyroidectomized","tiaraed","ticktocked","tidied","tightassed","tightfisted","tightlipped","timehonoured","tindered","tined","tinselled","tippytoed","tiptoed","titled","toed","tomahawked","tonged","toolshed","toothplated","toplighted","torchlighted","toughhearted","traditionalized","trajected","tranced","transgendered","transliterated","translocated","transmogrified","treadled","treed","treelined","tressed","trialled","triangled","trifoliated","trifoliolated","trilobed","trucklebed","truehearted","trumpetshaped","trumpetweed","tuberculated","tumbleweed","tunnelshaped","turbaned","turreted","turtlenecked","tuskshaped","tweed","twigged","typified","ulcered","ultracivilised","ultracivilized","ultracooled","ultradignified","ultradispersed","ultrafiltered","ultrared","ultrasimplified","ultrasophisticated","unabandoned","unabashed","unabbreviated","unabetted","unabolished","unaborted","unabraded","unabridged","unabsolved","unabsorbed","unaccelerated","unaccented","unaccentuated","unacclimatised","unacclimatized","unaccompanied","unaccomplished","unaccosted","unaccredited","unaccrued","unaccumulated","unaccustomed","unacidulated","unacquainted","unacquitted","unactivated","unactuated","unadapted","unaddicted","unadjourned","unadjudicated","unadjusted","unadmonished","unadopted","unadored","unadorned","unadsorbed","unadulterated","unadvertised","unaerated","unaffiliated","unaggregated","unagitated","unaimed","unaired","unaliased","unalienated","unaligned","unallocated","unalloyed","unalphabetized","unamassed","unamortized","unamplified","unanaesthetised","unanaesthetized","unaneled","unanesthetised","unanesthetized","unangered","unannealed","unannexed","unannihilated","unannotated","unanointed","unanticipated","unappareled","unappendaged","unapportioned","unapprenticed","unapproached","unappropriated","unarbitrated","unarched","unarchived","unarmored","unarmoured","unarticulated","unascertained","unashamed","unaspirated","unassembled","unasserted","unassessed","unassociated","unassorted","unassuaged","unastonished","unastounded","unatoned","unattained","unattainted","unattenuated","unattributed","unauctioned","unaudited","unauthenticated","unautographed","unaverted","unawaked","unawakened","unawarded","unawed","unbaffled","unbaited","unbalconied","unbanded","unbanished","unbaptised","unbaptized","unbarreled","unbarrelled","unbattered","unbeaded","unbearded","unbeneficed","unbesotted","unbetrayed","unbetrothed","unbiased","unbiassed","unbigoted","unbilled","unblackened","unblanketed","unblasphemed","unblazoned","unblistered","unblockaded","unbloodied","unbodied","unbonded","unbothered","unbounded","unbracketed","unbranded","unbreaded","unbrewed","unbridged","unbridled","unbroached","unbudgeted","unbuffed","unbuffered","unburnished","unbutchered","unbuttered","uncached","uncaked","uncalcified","uncalibrated","uncamouflaged","uncamphorated","uncanceled","uncancelled","uncapitalized","uncarbonated","uncarpeted","uncased","uncashed","uncastrated","uncatalogued","uncatalysed","uncatalyzed","uncategorised","uncatered","uncaulked","uncelebrated","uncensored","uncensured","uncertified","unchambered","unchanneled","unchannelled","unchaperoned","uncharacterized","uncharted","unchartered","unchastened","unchastised","unchelated","uncherished","unchilled","unchristened","unchronicled","uncircumcised","uncircumscribed","uncited","uncivilised","uncivilized","unclarified","unclassed","unclassified","uncleaved","unclimbed","unclustered","uncluttered","uncoagulated","uncoded","uncodified","uncoerced","uncoined","uncollapsed","uncollated","uncolonised","uncolonized","uncolumned","uncombined","uncommented","uncommercialised","uncommercialized","uncommissioned","uncommitted","uncompacted","uncompartmentalized","uncompartmented","uncompensated","uncompiled","uncomplicated","uncompounded","uncomprehened","uncomputed","unconcealed","unconceded","unconcluded","uncondensed","unconditioned","unconfined","unconfirmed","uncongested","unconglomerated","uncongratulated","unconjugated","unconquered","unconsecrated","unconsoled","unconsolidated","unconstipated","unconstricted","unconstructed","unconsumed","uncontacted","uncontracted","uncontradicted","uncontrived","unconverted","unconveyed","unconvicted","uncooked","uncooled","uncoordinated","uncopyrighted","uncored","uncorrelated","uncorroborated","uncosted","uncounseled","uncounselled","uncounterfeited","uncoveted","uncrafted","uncramped","uncrannied","uncrazed","uncreamed","uncreased","uncreated","uncredentialled","uncredited","uncrested","uncrevassed","uncrippled","uncriticised","uncriticized","uncropped","uncrosslinked","uncrowded","uncrucified","uncrumbled","uncrystalized","uncrystallised","uncrystallized","uncubed","uncuddled","uncued","unculled","uncultivated","uncultured","uncupped","uncurated","uncurbed","uncurried","uncurtained","uncushioned","undamped","undampened","undappled","undarkened","undated","undaubed","undazzled","undeadened","undeafened","undebated","undebunked","undeceased","undecimalized","undeciphered","undecked","undeclared","undecomposed","undeconstructed","undedicated","undefeated","undeferred","undefied","undefined","undeflected","undefrauded","undefrayed","undegassed","undejected","undelegated","undeleted","undelimited","undelineated","undemented","undemolished","undemonstrated","undenatured","undenied","undented","undeodorized","undepicted","undeputized","underaged","underarmed","underassessed","underbred","underbudgeted","undercapitalised","undercapitalized","underdiagnosed","underdocumented","underequipped","underexploited","underexplored","underfed","underfeed","underfurnished","undergoverned","undergrazed","underinflated","underinsured","underinvested","underived","undermaintained","undermentioned","undermotivated","underperceived","underpowered","underprivileged","underqualified","underrehearsed","underresourced","underripened","undersaturated","undersexed","undersized","underspecified","understaffed","understocked","understressed","understudied","underutilised","underventilated","undescaled","undesignated","undetached","undetailed","undetained","undeteriorated","undeterred","undetonated","undevised","undevoted","undevoured","undiagnosed","undialed","undialysed","undialyzed","undiapered","undiffracted","undigested","undignified","undiluted","undiminished","undimmed","undipped","undirected","undisciplined","undiscouraged","undiscussed","undisfigured","undisguised","undisinfected","undismayed","undisposed","undisproved","undisputed","undisrupted","undissembled","undissipated","undissociated","undissolved","undistilled","undistorted","undistracted","undistributed","undisturbed","undiversified","undiverted","undivulged","undoctored","undocumented","undomesticated","undosed","undramatised","undrilled","undrugged","undubbed","unduplicated","uneclipsed","unedged","unedited","unejaculated","unejected","unelaborated","unelapsed","unelected","unelectrified","unelevated","unelongated","unelucidated","unemaciated","unemancipated","unemasculated","unembalmed","unembed","unembellished","unembodied","unemboldened","unemerged","unenacted","unencoded","unencrypted","unencumbered","unendangered","unendorsed","unenergized","unenfranchised","unengraved","unenhanced","unenlarged","unenlivened","unenraptured","unenriched","unentangled","unentitled","unentombed","unentranced","unentwined","unenumerated","unenveloped","unenvied","unequaled","unequalised","unequalized","unequalled","unequipped","unerased","unerected","uneroded","unerupted","unescorted","unestablished","unevaluated","unexaggerated","unexampled","unexcavated","unexceeded","unexcelled","unexecuted","unexerted","unexhausted","unexpensed","unexperienced","unexpired","unexploited","unexplored","unexposed","unexpurgated","unextinguished","unfabricated","unfaceted","unfanned","unfashioned","unfathered","unfathomed","unfattened","unfavored","unfavoured","unfazed","unfeathered","unfed","unfeigned","unfermented","unfertilised","unfertilized","unfilleted","unfiltered","unfinished","unflavored","unflavoured","unflawed","unfledged","unfleshed","unflurried","unflushed","unflustered","unfluted","unfocussed","unforested","unformatted","unformulated","unfortified","unfractionated","unfractured","unfragmented","unfrequented","unfretted","unfrosted","unfueled","unfunded","unfurnished","ungarbed","ungarmented","ungarnished","ungeared","ungerminated","ungifted","unglazed","ungoverned","ungraded","ungrasped","ungratified","ungroomed","ungrounded","ungrouped","ungummed","ungusseted","unhabituated","unhampered","unhandicapped","unhardened","unharvested","unhasped","unhatched","unheralded","unhindered","unhomogenised","unhomogenized","unhonored","unhonoured","unhooded","unhusked","unhyphenated","unified","unillustrated","unimpacted","unimpaired","unimpassioned","unimpeached","unimpelled","unimplemented","unimpregnated","unimprisoned","unimpugned","unincorporated","unincubated","unincumbered","unindemnified","unindexed","unindicted","unindorsed","uninduced","unindustrialised","unindustrialized","uninebriated","uninfected","uninflated","uninflected","uninhabited","uninhibited","uninitialised","uninitialized","uninitiated","uninoculated","uninseminated","uninsulated","uninsured","uninterpreted","unintimidated","unintoxicated","unintroverted","uninucleated","uninverted","uninvested","uninvolved","unissued","unjaundiced","unjointed","unjustified","unkeyed","unkindled","unlabelled","unlacquered","unlamented","unlaminated","unlarded","unlaureled","unlaurelled","unleaded","unleavened","unled","unlettered","unlicenced","unlighted","unlimbered","unlimited","unlined","unlipped","unliquidated","unlithified","unlittered","unliveried","unlobed","unlocalised","unlocalized","unlocated","unlogged","unlubricated","unmagnified","unmailed","unmaimed","unmaintained","unmalted","unmangled","unmanifested","unmanipulated","unmannered","unmanufactured","unmapped","unmarred","unmastered","unmatriculated","unmechanised","unmechanized","unmediated","unmedicated","unmentioned","unmerged","unmerited","unmetabolised","unmetabolized","unmetamorphosed","unmethylated","unmineralized","unmitigated","unmoderated","unmodernised","unmodernized","unmodified","unmodulated","unmolded","unmolested","unmonitored","unmortgaged","unmotivated","unmotorised","unmotorized","unmounted","unmutated","unmutilated","unmyelinated","unnaturalised","unnaturalized","unnotched","unnourished","unobligated","unobstructed","unoccupied","unoiled","unopposed","unoptimised","unordained","unorganised","unorganized","unoriented","unoriginated","unornamented","unoxidized","unoxygenated","unpacified","unpackaged","unpaired","unparalleled","unparallelled","unparasitized","unpardoned","unparodied","unpartitioned","unpasteurised","unpasteurized","unpatented","unpaved","unpedigreed","unpenetrated","unpenned","unperfected","unperjured","unpersonalised","unpersuaded","unperturbed","unperverted","unpestered","unphosphorylated","unphotographed","unpigmented","unpiloted","unpledged","unploughed","unplumbed","unpoised","unpolarized","unpoliced","unpolled","unpopulated","unposed","unpowered","unprecedented","unpredicted","unprejudiced","unpremeditated","unprescribed","unpressurised","unpressurized","unpriced","unprimed","unprincipled","unprivileged","unprized","unprocessed","unprofaned","unprofessed","unprohibited","unprompted","unpronounced","unproposed","unprospected","unproved","unpruned","unpublicised","unpublicized","unpublished","unpuckered","unpunctuated","unpurified","unqualified","unquantified","unquenched","unquoted","unranked","unrated","unratified","unrebuked","unreckoned","unrecompensed","unreconciled","unreconstructed","unrectified","unredeemed","unrefined","unrefreshed","unrefrigerated","unregarded","unregimented","unregistered","unregulated","unrehearsed","unrelated","unrelieved","unrelinquished","unrenewed","unrented","unrepealed","unreplicated","unreprimanded","unrequited","unrespected","unrestricted","unretained","unretarded","unrevised","unrevived","unrevoked","unrifled","unripened","unrivaled","unrivalled","unroasted","unroofed","unrounded","unruffled","unsalaried","unsalted","unsanctified","unsanctioned","unsanded","unsaponified","unsated","unsatiated","unsatisfied","unsaturated","unscaled","unscarred","unscathed","unscented","unscheduled","unschooled","unscreened","unscripted","unseamed","unseared","unseasoned","unseeded","unsegmented","unsegregated","unselected","unserviced","unsexed","unshamed","unshaped","unsharpened","unsheared","unshielded","unshifted","unshirted","unshoed","unshuttered","unsifted","unsighted","unsilenced","unsimplified","unsized","unskewed","unskinned","unslaked","unsliced","unsloped","unsmoothed","unsoiled","unsoldered","unsolicited","unsolved","unsophisticated","unsorted","unsourced","unsoured","unspaced","unspanned","unspecialised","unspecialized","unspecified","unspiced","unstaged","unstandardised","unstandardized","unstapled","unstarched","unstarred","unstated","unsteadied","unstemmed","unsterilised","unsterilized","unstickered","unstiffened","unstifled","unstigmatised","unstigmatized","unstilted","unstippled","unstipulated","unstirred","unstocked","unstoked","unstoppered","unstratified","unstressed","unstriped","unstructured","unstudied","unstumped","unsubdued","unsubmitted","unsubsidised","unsubsidized","unsubstantiated","unsubstituted","unsugared","unsummarized","unsupervised","unsuprised","unsurveyed","unswayed","unsweetened","unsyllabled","unsymmetrized","unsynchronised","unsynchronized","unsyncopated","unsyndicated","unsynthesized","unsystematized","untagged","untainted","untalented","untanned","untaped","untapered","untargeted","untarnished","untattooed","untelevised","untempered","untenanted","unterminated","untextured","unthickened","unthinned","unthrashed","unthreaded","unthrottled","unticketed","untiled","untilled","untilted","untimbered","untinged","untinned","untinted","untitled","untoasted","untoggled","untoothed","untopped","untoughened","untracked","untrammeled","untrammelled","untranscribed","untransduced","untransferred","untranslated","untransmitted","untraumatized","untraversed","untufted","untuned","untutored","unupgraded","unupholstered","unutilised","unutilized","unuttered","unvaccinated","unvacuumed","unvalidated","unvalued","unvandalized","unvaned","unvanquished","unvapourised","unvapourized","unvaried","unvariegated","unvarnished","unvented","unventilated","unverbalised","unverbalized","unverified","unversed","unvetted","unvictimized","unviolated","unvitrified","unvocalized","unvoiced","unwaged","unwarped","unwarranted","unwaxed","unweakened","unweaned","unwearied","unweathered","unwebbed","unwed","unwedded","unweeded","unweighted","unwelded","unwinterized","unwired","unwitnessed","unwonted","unwooded","unworshipped","unwounded","unzoned","uprated","uprighted","upsized","upswelled","vacuolated","valanced","valueoriented","varied","vascularised","vascularized","vasectomised","vaunted","vectorised","vectorized","vegged","verdured","verified","vermiculated","vernacularized","versified","verticillated","vesiculated","vied","vilified","virtualised","vitrified","vivified","volumed","vulcanised","wabbled","wafered","waisted","walleyed","wared","warmblooded","warmhearted","warted","waterbased","waterbed","watercooled","watersaturated","watershed","wavegenerated","waxweed","weakhearted","weakkneed","weakminded","wearied","weatherised","weatherstriped","webfooted","wedgeshaped","weed","weeviled","welladapted","welladjusted","wellbred","wellconducted","welldefined","welldisposed","welldocumented","wellequipped","wellestablished","wellfavored","wellfed","wellgrounded","wellintentioned","wellmannered","wellminded","wellorganised","wellrounded","wellshaped","wellstructured","whinged","whinnied","whiplashed","whiskered","wholehearted","whorled","widebased","wideeyed","widemeshed","widemouthed","widenecked","widespaced","wilded","wildered","wildeyed","willinghearted","windspeed","winterfed","winterfeed","winterised","wirehaired","wised","witchweed","woaded","wombed","wooded","woodshed","wooled","woolled","woollyhaired","woollystemmed","woolyhaired","woolyminded","wormholed","wormshaped","wrappered","wretched","wronghearted","ycleped","yolked","zincified","zinckified","zinkified","zombified"],ee=["arisen","awoken","reawoken","babysat","backslid","backslidden","beat","beaten","become","begun","bent","unbent","bet","bid","outbid","rebid","underbid","overbid","bidden","bitten","blown","bought","overbought","bound","unbound","rebound","broadcast","rebroadcast","broken","brought","browbeat","browbeaten","built","prebuilt","rebuilt","overbuilt","burnt","burst","bust","cast","miscast","recast","caught","chosen","clung","come","overcome","cost","crept","cut","undercut","recut","daydreamt","dealt","misdealt","redealt","disproven","done","predone","outdone","misdone","redone","overdone","undone","drawn","outdrawn","redrawn","overdrawn","dreamt","driven","outdriven","drunk","outdrunk","overdrunk","dug","dwelt","eaten","overeaten","fallen","felt","fit","refit","retrofit","flown","outflown","flung","forbidden","forecast","foregone","foreseen","foretold","forgiven","forgotten","forsaken","fought","outfought","found","frostbitten","frozen","unfrozen","given","gone","undergone","gotten","ground","reground","grown","outgrown","regrown","had","handwritten","heard","reheard","misheard","overheard","held","hewn","hidden","unhidden","hit","hung","rehung","overhung","unhung","hurt","inlaid","input","interwound","interwoven","jerry-built","kept","knelt","knit","reknit","unknit","known","laid","mislaid","relaid","overlaid","lain","underlain","leant","leapt","outleapt","learnt","unlearnt","relearnt","mislearnt","left","lent","let","lip-read","lit","relit","lost","made","premade","remade","meant","met","mown","offset","paid","prepaid","repaid","overpaid","partaken","proofread","proven","put","quick-frozen","quit","read","misread","reread","retread","rewaken","rid","ridden","outridden","overridden","risen","roughcast","run","outrun","rerun","overrun","rung","said","sand-cast","sat","outsat","sawn","seen","overseen","sent","resent","set","preset","reset","misset","sewn","resewn","oversewn","unsewn","shaken","shat","shaven","shit","shone","outshone","shorn","shot","outshot","overshot","shown","shrunk","preshrunk","shut","sight-read","slain","slept","outslept","overslept","slid","slit","slung","unslung","slunk","smelt","outsmelt","snuck","sold","undersold","presold","outsold","resold","oversold","sought","sown","spat","spelt","misspelt","spent","underspent","outspent","misspent","overspent","spilt","overspilt","spit","split","spoilt","spoken","outspoken","misspoken","overspoken","spread","sprung","spun","unspun","stolen","stood","understood","misunderstood","strewn","stricken","stridden","striven","struck","strung","unstrung","stuck","unstuck","stung","stunk","sublet","sunburnt","sung","outsung","sunk","sweat","swept","swollen","sworn","outsworn","swum","outswum","swung","taken","undertaken","mistaken","retaken","overtaken","taught","mistaught","retaught","telecast","test-driven","test-flown","thought","outthought","rethought","overthought","thrown","outthrown","overthrown","thrust","told","retold","torn","retorn","trod","trodden","typecast","typeset","upheld","upset","waylaid","wept","wet","rewet","withdrawn","withheld","withstood","woken","won","rewon","worn","reworn","wound","rewound","overwound","unwound","woven","rewoven","unwoven","written","typewritten","underwritten","outwritten","miswritten","rewritten","overwritten","wrung"],{matchRegularParticiples:de,getWords:ne}=n.languageProcessing,{precedenceException:te,directPrecedenceException:ie,values:ae}=n.languageProcessing,re=ae.Clause;function oe(e){return(e=(e=(e=(e=e.replace(/\s{2,}/g," ")).replace(/\s\.$/,".")).replace(/^\s+|\s+$/g,"")).replace(/\s。/g,"。")).replace(/。\s/g,"。")}const se=[" ","\\n","\\r","\\t"," ","۔","؟","،","؛"," ",".",",","'","(",")",'"',"+","-",";","!","?",":","/","»","«","‹","›","<",">","”","“","〝","〞","〟","‟","„"],ue=function(e){return(0,Y.includes)(se,e)};const le=function(e,d){let n=[];return(0,Y.forEach)(e,(function(e){(function(e,d){e=e.toLocaleLowerCase(),d=d.toLocaleLowerCase();const n=function(e,d=!1,n="",t=""){let i,a;return i="id"===t?'[ \\u00a0\\n\\r\\t.,()”“〝〞〟‟„"+;!¡?¿:/»«‹›'+n+"<>":'[ \\u00a0\\u2014\\u06d4\\u061f\\u060C\\u061B\\n\\r\\t.,()”“〝〞〟‟„"+\\-;!¡?¿:/»«‹›'+n+"<>",a=d?"($|((?="+i+"]))|((['‘’‛`])("+i+"])))":"($|("+i+"])|((['‘’‛`])("+i+"])))","(^|"+i+"'‘’‛`])"+e+a}((0,Y.escapeRegExp)(e));let t=d.search(new RegExp(n,"ig"));if(-1===t)return!1;t>0&&(t+=1);const i=t+e.length,a=ue(d[t-1])||0===t,r=ue(d[i])||i===d.length;return a&&r})(e=oe(e),d)&&(n=n.concat(function(e,d){let n=0;const t=e.length;let i;const a=[];for(;(i=d.indexOf(e,n))>-1;){const r=ue(d[i-1])||0===i,o=ue(d[i+t])||d.length===i+t;r&&o&&a.push({index:i,match:e}),n=i+t}return a}(e,d)))})),n},{createRegexFromArray:ce,getClauses:he}=n.languageProcessing,pe={Clause:class extends re{constructor(e,d){super(e,d),this._participles=function(e){const d=ne(e),n=[];return(0,Y.forEach)(d,(function(e){(0!==de(e,[/\w+ed($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi]).length||(0,Y.includes)(ee,e))&&n.push(e)})),n}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getClauseText(),d=this.getParticiples().filter((d=>!((0,Y.includes)(Z,d)||this.hasRidException(d)||ie(e,d,D)||te(e,d,J))));this.setPassive(d.length>0)}hasRidException(e){if("rid"===e){const e=["get","gets","getting","got","gotten"];return!(0,Y.isEmpty)((0,Y.intersection)(e,this.getAuxiliaries()))}return!1}},stopwords:K,auxiliaries:r,ingExclusions:["king","cling","ring","being","thing","something","anything"],regexes:{auxiliaryRegex:ce(r),stopCharacterRegex:/([:,]|('ll)|('ve))(?=[ \n\r\t'"+\-»«‹›<>])/gi,verbEndingInIngRegex:/\w+ing(?=$|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi},otherStopWordIndices:[]};function me(e){return pe.otherStopWordIndices=function(e){let d=e.match(pe.regexes.verbEndingInIngRegex)||[];return d=d.filter((e=>!(0,Y.includes)(pe.ingExclusions,oe(e)))),le(d,e)}(e),he(e,pe)}const{buildFormRule:fe,createRulesFromArrays:ge}=n.languageProcessing,be=function(e,d,n){return t=>{const i=t.length;return!(i1&&e.length>4&&"ing"===e.substring(e.length-3,e.length)},{buildFormRule:ke,createRulesFromArrays:xe}=n.languageProcessing;function qe(e,d){for(let n=0;n3&&"s"===e[e.length-1]}(e)?{infinitive:we(e,n),guessedForm:"s"}:ze(e)?{infinitive:we(e,t),guessedForm:"ing"}:function(e){const d=(e.match(ve)||[]).length;return(d>1||1===d&&"e"!==e.substring(e.length-3,e.length-2))&&"ed"===e.substring(e.length-2,e.length)}(e)?{infinitive:we(e,i)||e,guessedForm:"ed"}:{infinitive:e,guessedForm:"inf"}}(e,n).infinitive;r.push(o);const s=function(e,d,n){if(be("er",4,n.erExceptions)(e)){const n=ge(d.comparativeToBase);return{base:fe(e,n)||e,guessedForm:"er"}}if(be("est",5,n.estExceptions)(e)){const n=ge(d.superlativeToBase);return{base:fe(e,n)||e,guessedForm:"est"}}if(be("ly",5,n.lyExceptions)(e)){const n=ge(d.adverbToBase);return{base:fe(e,n),guessedForm:"ly"}}return{base:e,guessedForm:"base"}}(e,i,d.adjectives.stopAdjectives).base;return r.push(s),function(e){const d=(0,Y.flatten)(e);let n=d.pop();return d.forEach((e=>{const d=e.length-n.length;0===d?e.localeCompare(n)<0&&(n=e):d<0&&(n=e)})),n}(r)}const Pe=function(e,d){const n=d.nouns,t=ke(e,xe(n.regexNoun.possessiveToBase));let i,a;return(0,Y.isUndefined)(t)?(i=e,a=qe(e,n.irregularNouns)||qe(e,d.adjectives.irregularAdjectives)||function(e,d){const n=function(e,d,n){let t;if(d.forEach((function(d){d.forEach((function(n){n===e&&(t=d)}))})),(0,Y.isUndefined)(t)){const i=function(e,d){for(const e in d)d.hasOwnProperty&&(d[e]=new RegExp(d[e],"i"));return!0===d.sevenLetterHyphenPrefixes.test(e)?{normalizedWord:e.replace(d.sevenLetterHyphenPrefixes,""),prefix:e.substring(0,8)}:!0===d.sevenLetterPrefixes.test(e)?{normalizedWord:e.replace(d.sevenLetterPrefixes,""),prefix:e.substring(0,7)}:!0===d.fiveLetterHyphenPrefixes.test(e)?{normalizedWord:e.replace(d.fiveLetterHyphenPrefixes,""),prefix:e.substring(0,6)}:!0===d.fiveLetterPrefixes.test(e)?{normalizedWord:e.replace(d.fiveLetterPrefixes,""),prefix:e.substring(0,5)}:!0===d.fourLetterHyphenPrefixes.test(e)?{normalizedWord:e.replace(d.fourLetterHyphenPrefixes,""),prefix:e.substring(0,5)}:!0===d.fourLetterPrefixes.test(e)?{normalizedWord:e.replace(d.fourLetterPrefixes,""),prefix:e.substring(0,4)}:!0===d.threeLetterHyphenPrefixes.test(e)?{normalizedWord:e.replace(d.threeLetterHyphenPrefixes,""),prefix:e.substring(0,4)}:!0===d.threeLetterPrefixes.test(e)?{normalizedWord:e.replace(d.threeLetterPrefixes,""),prefix:e.substring(0,3)}:!0===d.twoLetterHyphenPrefixes.test(e)?{normalizedWord:e.replace(d.twoLetterHyphenPrefixes,""),prefix:e.substring(0,3)}:!0===d.twoLetterPrefixes.test(e)?{normalizedWord:e.replace(d.twoLetterPrefixes,""),prefix:e.substring(0,2)}:!0===d.oneLetterPrefixes.test(e)?{normalizedWord:e.replace(d.oneLetterPrefixes,""),prefix:e.substring(0,1)}:void 0}(e,n);(0,Y.isUndefined)(i)||d.forEach((function(e){e.forEach((function(d){d===i.normalizedWord&&(t=e.map((function(e){return i.prefix.concat(e)})))}))}))}return t}(e,d.irregularVerbs,d.regexVerb.verbPrefixes);return(0,Y.isUndefined)(n)?null:n[0]}(e,d.verbs)):(i=t,a=qe(t,n.irregularNouns)),a||je(i,d)},{baseStemmer:Le}=n.languageProcessing;function Ee(e){const d=(0,Y.get)(e.getData("morphology"),"en",!1);return d?e=>Pe(e,d):Le}const{formatNumber:We}=n.helpers;function Re(e){const d=206.835-1.015*e.averageWordsPerSentence-e.numberOfSyllables/e.numberOfWords*84.6;return We(d)}const{AbstractResearcher:$e}=n.languageProcessing;class Fe extends $e{constructor(e){super(e),Object.assign(this.config,{language:"en",passiveConstructionType:"periphrastic",firstWordExceptions:t,functionWords:G,stopWords:K,transitionWords:s,twoPartTransitionWords:Q,syllables:X}),Object.assign(this.helpers,{getClauses:me,getStemmer:Ee,fleschReadingScore:Re})}}(window.yoast=window.yoast||{}).Researcher=d})();js/dist/languages/el.js000064400000105547147206602470011053 0ustar00(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>C});const r=window.yoast.analysis,n={firstWords:["o","του","τον ","ο","των","τους","η","της","την","τις","το","τα","ένας","ενός","έναν","μία","μίας","μία","ένα","μια","μιας","μια","ένα","δύο","τρία","τέσσερα","πέντε ","έξι","επτά","εφτά","οκτώ","οχτώ","εννέα","εννιά","δέκα","αυτός","αυτού","αυτόν","αυτοί","αυτών","αυτούς","αυτή","αυτής","αυτή","αυτό","αυτά","εκείνος","εκείνου","εκείνον","εκείνοι","εκείνων","εκείνη","εκείνης","εκείνη","εκείνες","εκείνο","εκείνα","τέτοιος","τέτοιου","τέτοιον","τέτοιοι","τέτοιων","τέτοιους","τέτοια","τέτοιας","τέτοιαν","τέτοιες","τέτοιο","τέτοια","τόσος","τόσου","τόσον","τόσοι","τόσων","τόσους","τόση","τόσης","τόσες","τόσο","τόσα","τούτος","τούτου","τούτον","τούτοι","τούτων","τούτους","τούτη ","τούτης","τούτην ","τούτες","τούτο","τούτα","εδώ","εκεί"],secondWords:["o","του","τον ","ο","των","τους","η","της","την","τις","το","τα","που","τον","οι"]},s=["εξαιτίας","επειδή","γιατί","διότι","καθώς","ώστε","λοιπόν","αλλά","μα","όμως ","παρά","μόνο","μόλο","ωστόσο","εντούτοις","έπειτα","μολαταύτα","μάλιστα","εξάλλου","αντίθετα","απεναντίας","διαφορετικά","ειδάλλως ","ειδεμή","αλλιώς ","αλλιώτικα","πάλι","ενώ","μολονότι","αντίστροφα","αρχικά","προγουμένως","πρώτα","ύστερα","πριν","εντωμεταξύ","τέλος","όταν","καθ΄ψς","όποτε","μόλις","αργότερα","αν","δηλαδή","ειδικότερα","ήτοι","συγκεκριμένα","ειδικά","καταρχήν","κατόπιν","πρωταρχικα","συγκεφαλαιωτικά","συγκεφαλαιώνοντας","συγκεντρωτικά","συνοπτικά","επιλογικά","ανακεφαλαιώνοντας","τελικά","γενικά","ευρύτερα","επιπλέον","επιπρόσθετα","επίσης","ακόμη","πρόσθετα","όπως","ομοίως","σαν","επομένως","συνεπώς","πράγματι","βέβαια","όντως","αφού","αφότου","καταρχάς","ακολούθως","εφόσον","κυρίως","φυσικά","ασφαλώς","οπωσδήποτε","αναντίρρητα","προφανώς"],g=s.concat(["παρόλο που","ένας ακόμα λόγος","αυτό οφείλεται","αυτό εξηγείται","αυτό δικαιλογείται","η αιτία είναι","ο λόγος είναι","γι'αυτό τον λόγο","παρόλα ταύτα","ως επακόλουθο","ως αποτέλεσμα","κατά συνέπεια","έτσι που","και όμως","και γι'αυτό","σε αντίθεση","από την άλλη πλευρά","αν και","και αν","στον αντίποδα","ακόμη κι αν","παρ'όλα αυτά","στη συνέχεια","είναι γεγονός ότι","αξίζει να σημειωθεί","με άλλα λόγια","αυτό σημαίνει ότι","για παράδειγμα","παραδείγματος χάριν","λόγου χάριν","σε περίπτωση που","εκτός κι αν","εξαιτίας αυτού","με τον ίδιο τρόπο","με παρόμοιο τρόπο","με την προϋπόθεση να","υπό τον όρο να","εν κατακλείδι ","χάρη σε αυτό","από την στιγμή που","έχει μεγάλη σημασία να","είναι απαραίτητο να","είναι αναγκαίο να","είναι αξιοσημείωτο","στο μεταξύ","στην αρχή","με δεδομένο"]),o=[["όχι μόνο","αλλά και"],["όχι μόνο να μην","αλλά ούτε και να"],["από την μία","από την άλλη"],["αφενός","αφετέρου"],["μεν","δε"],["είτε","είτε"]],l=function(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}([].concat(["μιανής","στους","στον","στου","στην","στης","ένας","ενός","έναν","μίας","μιάς","την","του","τον","των","τις","της","στο","στα","μία","μια","ένα","το","η ","τα","οι","τη","ο"],["ένα","δύο ","τρία ","τέσσερα","πέντε","έξι","εφτά","οχτώ","εννιά","οκτώ","εννέα","δέκα","εκατό","χίλια","εκατομμύριο","εκατομμύρια","δισεκατομμύριο","δισεκατομμύρια","έντεκα","ένδεκα","δώδεκα","δεκατρία","δεκατέσσερα","δεκαπέντε","δεκαέξι","δεκαεπτά","δεκαοκτώ","δεκαεννέα","είκοσι"],["πρώτος","δεύτερος","τρίτος","τέταρτος","πέμπτος","έκτος","έβδομος","όγδοος","ένατος","δέκατος","πρώτη","δεύτερη","τρίτη","τέταρτη","πέμπτη","έκτη","έβδομη","όγδοη","ένατη","δέκατη","πρώτο ","δεύτερο","τρίτο","τέταρτο","πέμπτο","έκτο","έβδομο","όγδοο","ένατο","δέκατο","διπλάσιος","διπλάσια","διπλάσιο","τριπλάσιος","τριπλάσια","τριπλάσιο","διπλός","διπλή","τριπλός","τριπλή","χίλιοι","χίλιες","εκατοντάδες","χιλιάδες"],["μισός","μισή","μισό","τέταρτο","τρίτο","ολόκληρο","ολόκληρος"],["εγώ","εσύ","αυτός","αυτή","αυτό","εμείς","εσείς","αυτοί","αυτές","αυτά","αυτούς","εμένα","εσένα","αυτών","μένα","σένα","εμάς","εσάς","μου","σου","μας","σας","με","σε"],["τέτοιους","εκείνος","εκείνου","εκείνον","εκείνοι","εκείνων","εκείνης","εκείνες","τέτοιος","τέτοιου","τέτοιον","τέτοιοι","τέτοιων","τέτοιας","τέτοιαν","τέτοιες","τούτους","τούτην ","εκείνη","εκείνη","εκείνο","εκείνα","τέτοια","τέτοιο","τέτοια","τόσους","τούτος","τούτου","τούτον","τούτοι","τούτων","τούτη ","τούτης","τούτες","αυτού","αυτόν","αυτής","τόσος","τόσου","τόσον","τόσοι","τόσων","τόσης","τόσες","τούτο","τούτα","τόση","τόσο","τόσα","εκεί","εδώ"],["ποιανού","ποιανής","ποιανών","ποιους","πόσους","ποιος","ποιου","ποιον","ποιας","πόσος","πόσου","πόσον","πόσης","ποιοι","ποιων","ποιες","πόσοι","πόσων","πόσες","ποια","ποιο","πόση","πόσα","τί","τι"],["πώς","πού","πόσο","πότε"],["περισσότερο","λιγότερο","ελάχιστα","καθόλου","αρκετά","εξίσου","κάπως","τόσο ","πολύ","τόσο","πιο","όσο"],["εαυτός","εαυτού","εαυτό","εαυτούς"],["δικός","δικού","δικό","δική","δικής","τους","δικοί","δικών","δικούς","δικές","δικά"],["κάμποσου","κάμποσον","κάμποση","κάμποσης ","κάμποσο","τίποτε","καθένας","καθενός","καθένα ","καθεμία","καθεμιά","καθεμίας","καθεμιάς","καθέναν","δείνα","τάδε","μερικοί","μερικών","μερικούς","μερικές","μερικά","κάποιοι","κάποιων","κάποιους","κάποιες","κάποια","άλλοι","άλλων","αλλονών","άλλους","άλλες","άλλα","κάμποσοι","κάμποσων","κάμποσες","κάμποσα"],["σε","με","από","για","ως","πριν","προς","σαν","αντί","δίχως","έως","κατά","μετά","μέχρι","χωρίς","παρά","εναντίον","εξαιτίας","μεταξύ","ίσαμε","άνευ","αμφί","ανά","διά","εκ","εις","εξ","εκτός","εν","ένεκα","εντός","επί","λόγω","περί","πρό","συν","υπέρ","υπό","χάριν","χάρη"],["δεν","θα","δεν","μη","μην","όχι","ναι","ας","για","μα"],["να","και","που","ότι","αν","αλλά","ούτε","ουδέ","μηδέ","μήτε","ή","είτε","μα","παρά","όμως","ωστόσο","ενώ","μολονότι","μόνο","μόνο που","λοιπόν","ώστε","άρα","επομένως","οπότε","δηλαδή","πως","μην","μήπως","άμα","όταν","καθώς","αφού","αφότου","πριν","μόλις","προτού","ώσπου","ωσότου","σαν","γιατί","επειδή"],["συνηθίζεται","μπορούσαμε","ενδέχεται","εξαρτάται","εννοείται","παίρνουμε","είθισται","μπορούμε","μπορείτε","υπάρχουν","παίρνεις","παίρνετε","παίρνουν","βασικούς","μπορούμε","είμαστε","είσαστε","υπάρχει","μπορείς","μπορούν","κάνουμε","υπήρχαν","γίνεται","γινόταν","παίρνει","βάζουμε","δίνουμε","μπορεί","παίρνω","πρέπει","έχουμε","πήγαμε","πήγατε","κάνεις","κάνετε","κάνουν","έκανες","κάναμε","κάνατε","έκαναν","υπήρχε","πήραμε","πήρατε","πήρανε","ρίχνει","φάγαμε","βάζεις","βάζετε","βάζουν","έβαλες","βάλαμε","βάλατε","έβαλαν","βάλανε","δίνεις","δίνεις","δίνετε","δίνουν","έδωσες","έδωσες","δώσαμε","δώσατε","έδωσαν","δώσανε","έδινες","δίναμε","δίνατε","δίνανε","έδιναν","είχαμε","είχατε","είναι","είμαι","είσαι","είστε","ρίχνω","μπορώ","πήγες","πήγαν","κάνει","έκανα","έκανε","πήρες","πήραν","έριξα","έριξε","τρώει","τρώμε","έφαγε","βάζει","έβαλα","έβαλε","έδωσα","έδινα","έδινε","έχεις","έχετε","έχουν","είχες","είχαν","κάνω","τρώω","βάζω","δίνω","πάμε","πάει","πάμε","πάτε","πάνε","πήγα","πήγε","πήρε","έχει","είχα","είχε","πάω","έχω","πας"],["πολύ","παρά ","παρα","απίστευτα","εκπληκτικά","αναπάντεχα","αφάνταστα","πραγματικά","εντελώς","απόλυτα","καθολικά","τελείως"],["συνηθίζεται","ενδέχεται","εξαρτάται","εννοείται","είθισται","είμαστε","είσαστε","υπάρχει","μπορεί","παίρνω","πρέπει","έχουμε","είναι","είμαι","είσαι","είστε","ρίχνω","μπορώ","κάνω","τρώω","βάζω","δίνω","πάμε","πάω","έχω"],["καλός","καλά","καλή","καλύτερος","καλύτερη","σοβαρά","ωραίος","ωραία","ωραίο","απλός","απλή","απλό","περίπλοκος","περίπλοκη","περίπλοκο","μεγάλο","μεγαλύτερος","βασική","βασικός","βασικό","ουσιαστικός","κανονικός","κανονική","κανονικό","άσχημο","τρομερό","απαίσιο","αδιανόητο","μέσος","πραγματικός","πραγματική","πραγματικό","πρώην","σπάνιος","σπάνια","συνηθισμένος ","συνηθισμένη","συνηθισμένο","σχετικός","σχετική","σχετικό","καλύτερα","τέλεια","υπέροχα","έντονα","παραλίγο","απλά","κυρίως","συνήθως","ευθέως","συνεχώς","αδιάκοπα","ασταμάτητα","ατελείωτα","ατέρμονα","βασικά","ουσιαστικά","κανονικά","άσχημα","εντάξει","τελικά","φυσικά","μπροστά","πίσω","επάνω","κάτω","ευτυχώς","δυστυχώς","ξαφνικά","ειλικρινά","απροσδόκητα","απότομα","ανάμεσα","κοντά","σιμά","μακριά","δίπλα","σχετικά"],["α","αα","αχ","αι","αλί","αλίμονο","αμάν","αμέ","αμποτε","άιντε","άντε","άου","άχου","αχού","βαχ","βουρ ","βρε","ε","ει","εμ","επ","ζήτω","εύγε","μμμ","μπα","μπαμ","μπράβο","μωρέ","μωρή","ω","ου","ούου","ουστ","οιμέ","οϊμέ","ωπ","οπ","πωπω","ποπο","απαπα","ουφ","ώπα","ώπατης","όπα","όπατης","ωχ","οχ","όχου","ώχου","όφου","ποπό","πωπώ","πουφ","πριτς","πφ","ρε","σουτ","τσου","τσα","φτου","χα","χαχαχα","χμ","ωω","ωωω","ωχού","ουάου"],["γραμ.","γραμμ.","γραμμάρια","κ/γ","κ.γ.","κ.σ.","γρ.","ματσ.","κιλό","φλ.","φλυτζάνι","κούπα","ποτ.","ποτήρι","σκ.","ξύσμα","φλούδα","λίτρο","λίτρα"],["δευτερόλεπτο","δευτερόλεπτα","δεύτερα","ώρα","ώρας","τέταρτο","μισάωρο","ώρες","μέρα","μέρας","μέρες","ημέρα","ημέρες","σήμερα","αύριο","εχθές","χθές","βδομάδα","βδομάδες","βδομάδας","εβδομάδα","εβδομάδες","μισαωράκι","τεταρτάκι","δεκάλεπτο","πεντάλεπτο","φέτος","πέρσι","χρόνος","πέρυσι","χρόνου","πρόπερσι","προχθές"],["πράγμα","πράγματα","υπόθεση","περίπτωση","πρόβλημα","προβλήματα","αντικείμενο","αντικείμενα","θέμα","θέματα","περίσταση","συνθήκες","περιστάσεις","ζήτημα","ζητήματα","ζητημάτων","υποθέσεις","γεγονός","γεγονότα","κατάσταση","καταστάσεις","ουσία","τρόπος","μέθοδος","παράγοντας","παράγοντες","αιτία","επίπτωση","αιτίες","επιπτώσεις","μέρος","μέρη","άποψη","απόψεις","γνώμη","γνώμες","άτομο","άτομα","ομάδα","πραγματικότητα","διαφορά","διαφορές","ομοιότητες"],["δεσποινίς","καθηγητής","διδάκτωρ","κύριος","κύριοι","κυρίες","καθηγ","κυρία","διδα","καθ","κος","δρ","κα"],s)),c=window.lodash;function x(e,t,r,n){let s;for(let g=0;gfunction(e,t){const r=e=(e=e.replace(/[ΆΑά]/g,"α").replace(/[ΈΕέ]/g,"ε").replace(/[ΉΗή]/g,"η").replace(/[ΊΪΙίΐϊ]/g,"ι").replace(/[ΌΟό]/g,"ο").replace(/[ΎΫΥύΰϋ]/g,"υ").replace(/[ΏΩώ]/g,"ω").replace(/[Σς]/g,"σ")).toLocaleUpperCase("el"),n=t.externalStemmer.doNotStemWords;if(e.length<3||n.includes(e))return e.toLocaleLowerCase("el");e=function(e,t){const r=t.externalStemmer.step1Exceptions,n=new RegExp("(.*)("+Object.keys(r).join("|")+")$").exec(e);return null!==n&&(e=n[1]+r[n[2]]),e}(e,t),e=function(e,t){const r=t.externalStemmer.regexesStep1,n=r.regexesArrays;let s;return null!==(s=new RegExp(r.regex1a).exec(e))&&(e=s[1],new RegExp(r.regex1b).test(e)||(e+="ΑΔ")),x(e,n[0],n[1],n[2])}(e,t),e=function(e,t){const r=t.externalStemmer.regexesStep2,n=new RegExp(t.externalStemmer.vowelRegex1);let s;return null!==(s=new RegExp(r.regex2a).exec(e))&&s[1].length>4&&(e=s[1]),null!==(s=new RegExp(r.regex2b).exec(e))&&(e=s[1],(n.test(e)||e.length<2||new RegExp(r.regex2c).test(s[1]))&&(e+="Ι"),new RegExp(r.regex2d).test(s[1])&&(e+="ΑΙ")),e}(e,t),e=function(e,t){const r=new RegExp(t.externalStemmer.vowelRegex1),n=t.externalStemmer.regexesStep3;let s;return null!==(s=new RegExp(n.regex3a).exec(e))&&(e=s[1],(r.test(e)||new RegExp(n.regex3b).test(e)||new RegExp(n.regex3c).test(e))&&(e+="ΙΚ")),e}(e,t),e=function(e,t){const r=t.externalStemmer.regexesStep4,n=r.regexesArrays,s=t.externalStemmer.vowelRegex1,g=t.externalStemmer.vowelRegex2;let o;return"ΑΓΑΜΕ"===e?"ΑΓΑΜ":(e=a(e,r.regex4a),e=a(e=i(e=x(e,n.arrays1[0],n.arrays1[1],n.arrays1[2]),r.regex4b,g,r.regex4c,"ΑΝ"),r.regex4d),null!==(o=new RegExp(r.regex4e).exec(e))&&(e=o[1],(new RegExp(g).test(e)||new RegExp(r.regex4f).test(e)||new RegExp(r.regex4g).test(e))&&(e+="ΕΤ")),null!==(o=new RegExp(r.regex4h).exec(e))&&(e=o[1],new RegExp(r.regex4i).test(o[1])?e+="ΟΝΤ":new RegExp(r.regex4j).test(o[1])&&(e+="ΩΝΤ")),e=i(e=a(e=x(e,n.arrays2[0],n.arrays2[1],n.arrays2[2]),r.regex4k),r.regex4l,r.regex4m,r.regex4n,"ΗΚ"),null!==(o=new RegExp(r.regex4o).exec(e))&&(e=o[1],(new RegExp(s).test(e)||new RegExp(r.regex4p).test(o[1])||new RegExp(r.regex4q).test(o[1]))&&(e+="ΟΥΣ")),null!==(o=new RegExp(r.regex4r).exec(e))&&(e=o[1],(new RegExp(r.regex4s).test(e)||new RegExp(r.regex4t).test(e)&&!new RegExp(r.regex4u).test(e))&&(e+="ΑΓ")),e=x(e,n.arrays3[0],n.arrays3[1],n.arrays3[2]))}(e,t),e=function(e,t){const r=t.externalStemmer.regexesStep5;let n;return null!==(n=new RegExp(r.regex5a).exec(e))&&(e=n[1]+"Μ",new RegExp(r.regex5b).test(n[1])?e+="Α":new RegExp(r.regex5c).test(n[1])&&(e+="ΑΤ")),null!==(n=new RegExp(r.regex5d).exec(e))&&(e=n[1]+"ΟΥ"),e}(e,t);const s=t.externalStemmer.longWordRegex;return r.length===e.length&&(e=a(e,s)),e=function(e,t){const r=t.externalStemmer.regexesStep6;let n;return null!==(n=new RegExp(r.regex6a).exec(e))&&(new RegExp(r.regex6b).test(n[1])||(e=n[1]),new RegExp(r.regex6c).test(n[1])&&(e+="ΥΤ")),e}(e,t),e.toLocaleLowerCase("el")}(e,t):p}const{getWords:w}=r.languageProcessing,{values:R}=r.languageProcessing,{Clause:d}=R,{getClausesSplitOnStopWords:E,createRegexFromArray:f}=r.languageProcessing,m={Clause:class extends d{constructor(e,t){super(e,t),this._participles=function(e){return w(e).filter((e=>new RegExp("(ούμενους|ημένους|ούμενος|ούμενου|ούμενον|ούμενης|ούμενοι|ούμενων|ούμενες|μένους|ημένος|ημένου|ημένον|ημένοι|ημένων|ημένης|ημένες|ούμενη|ούμενο|ούμενα|μένος|μένου|μένον|μένοι|μένης|μένες|μένων|ημένη|ημένο|ημένα|μένη|μένο|μένα)$").test(e)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getParticiples();this.setPassive(e.length>0)}},regexes:{auxiliaryRegex:f(["είμαι","είσαι","είναι","είμαστε","είστε","είσαστε","ήμουν","ήσουν","ήταν","ήμαστε","ήμασταν","ήσαστε","ήσασταν"]),stopwordRegex:f(["ένα","έναν","ένας","αι","ακομα","ακομη","ακριβως","αληθεια","αληθινα","αλλα","αλλαχου","αλλες","αλλη","αλλην","αλλης","αλλιως","αλλιωτικα","αλλο","αλλοι","αλλοιως","αλλοιωτικα","αλλον","αλλος","αλλοτε","αλλου","αλλους","αλλων","αμα","αμεσα","αμεσως","αν","ανα","αναμεσα","αναμεταξυ","ανευ","αντι","αντιπερα","αντις","ανω","ανωτερω","αξαφνα","απ","απεναντι","απο","αποψε","από","αρα","αραγε","αργα","αργοτερο","αριστερα","αρκετα","αρχικα","ας","αυριο","αυτα","αυτες","αυτεσ","αυτη","αυτην","αυτης","αυτο","αυτοι","αυτον","αυτος","αυτοσ","αυτου","αυτους","αυτουσ","αυτων","αφοτου","αφου","αἱ","αἳ","αἵ","αὐτόσ","αὐτὸς","αὖ","α∆ιακοπα","βεβαια","βεβαιοτατα","γάρ","γα","γα^","γε","γι","για","γοῦν","γρηγορα","γυρω","γὰρ","δ'","δέ","δή","δαί","δαίσ","δαὶ","δαὶς","δε","δεν","δι","δι'","διά","δια","διὰ","δὲ","δὴ","δ’","εαν","εαυτο","εαυτον","εαυτου","εαυτους","εαυτων","εγκαιρα","εγκαιρως","εγω","ειθε","ειμαι","ειμαστε","ειναι","εις","εισαι","εισαστε","ειστε","ειτε","ειχα","ειχαμε","ειχαν","ειχατε","ειχε","ειχες","ει∆εμη","εκ","εκαστα","εκαστες","εκαστη","εκαστην","εκαστης","εκαστο","εκαστοι","εκαστον","εκαστος","εκαστου","εκαστους","εκαστων","εκει","εκεινα","εκεινες","εκεινεσ","εκεινη","εκεινην","εκεινης","εκεινο","εκεινοι","εκεινον","εκεινος","εκεινοσ","εκεινου","εκεινους","εκεινουσ","εκεινων","εκτος","εμας","εμεις","εμενα","εμπρος","εν","ενα","εναν","ενας","ενος","εντελως","εντος","εντωμεταξυ","ενω","ενός","εξ","εξαφνα","εξης","εξισου","εξω","επ","επί","επανω","επειτα","επει∆η","επι","επισης","επομενως","εσας","εσεις","εσενα","εστω","εσυ","ετερα","ετεραι","ετερας","ετερες","ετερη","ετερης","ετερο","ετεροι","ετερον","ετερος","ετερου","ετερους","ετερων","ετουτα","ετουτες","ετουτη","ετουτην","ετουτης","ετουτο","ετουτοι","ετουτον","ετουτος","ετουτου","ετουτους","ετουτων","ετσι","ευγε","ευθυς","ευτυχως","εφεξης","εχει","εχεις","εχετε","εχθες","εχομε","εχουμε","εχουν","εχτες","εχω","εως","εἰ","εἰμί","εἰμὶ","εἰς","εἰσ","εἴ","εἴμι","εἴτε","ε∆ω","η","ημασταν","ημαστε","ημουν","ησασταν","ησαστε","ησουν","ηταν","ητανε","ητοι","ηττον","η∆η","θα","ι","ιι","ιιι","ισαμε","ισια","ισως","ισωσ","ι∆ια","ι∆ιαν","ι∆ιας","ι∆ιες","ι∆ιο","ι∆ιοι","ι∆ιον","ι∆ιος","ι∆ιου","ι∆ιους","ι∆ιων","ι∆ιως","κ","καί","καίτοι","καθ","καθε","καθεμια","καθεμιας","καθενα","καθενας","καθενος","καθετι","καθολου","καθως","και","κακα","κακως","καλα","καλως","καμια","καμιαν","καμιας","καμποσα","καμποσες","καμποση","καμποσην","καμποσης","καμποσο","καμποσοι","καμποσον","καμποσος","καμποσου","καμποσους","καμποσων","κανεις","κανεν","κανενα","κανεναν","κανενας","κανενος","καποια","καποιαν","καποιας","καποιες","καποιο","καποιοι","καποιον","καποιος","καποιου","καποιους","καποιων","καποτε","καπου","καπως","κατ","κατά","κατα","κατι","κατιτι","κατοπιν","κατω","κατὰ","καὶ","κι","κιολας","κλπ","κοντα","κτλ","κυριως","κἀν","κἂν","λιγακι","λιγο","λιγωτερο","λογω","λοιπα","λοιπον","μέν","μέσα","μή","μήτε","μία","μα","μαζι","μακαρι","μακρυα","μαλιστα","μαλλον","μας","με","μεθ","μεθαυριο","μειον","μελει","μελλεται","μεμιας","μεν","μερικα","μερικες","μερικοι","μερικους","μερικων","μεσα","μετ","μετά","μετα","μεταξυ","μετὰ","μεχρι","μη","μην","μηπως","μητε","μη∆ε","μιά","μια","μιαν","μιας","μολις","μολονοτι","μοναχα","μονες","μονη","μονην","μονης","μονο","μονοι","μονομιας","μονος","μονου","μονους","μονων","μου","μπορει","μπορουν","μπραβο","μπρος","μἐν","μὲν","μὴ","μὴν","να","ναι","νωρις","ξανα","ξαφνικα","ο","οι","ολα","ολες","ολη","ολην","ολης","ολο","ολογυρα","ολοι","ολον","ολονεν","ολος","ολοτελα","ολου","ολους","ολων","ολως","ολως∆ιολου","ομως","ομωσ","οποια","οποιαν","οποιαν∆ηποτε","οποιας","οποιας∆ηποτε","οποια∆ηποτε","οποιες","οποιες∆ηποτε","οποιο","οποιοι","οποιον","οποιον∆ηποτε","οποιος","οποιος∆ηποτε","οποιου","οποιους","οποιους∆ηποτε","οποιου∆ηποτε","οποιο∆ηποτε","οποιων","οποιων∆ηποτε","οποι∆ηποτε","οποτε","οποτε∆ηποτε","οπου","οπου∆ηποτε","οπως","οπωσ","ορισμενα","ορισμενες","ορισμενων","ορισμενως","οσα","οσα∆ηποτε","οσες","οσες∆ηποτε","οση","οσην","οσην∆ηποτε","οσης","οσης∆ηποτε","οση∆ηποτε","οσο","οσοι","οσοι∆ηποτε","οσον","οσον∆ηποτε","οσος","οσος∆ηποτε","οσου","οσους","οσους∆ηποτε","οσου∆ηποτε","οσο∆ηποτε","οσων","οσων∆ηποτε","οταν","οτι","οτι∆ηποτε","οτου","ου","ουτε","ου∆ε","οχι","οἱ","οἳ","οἷς","οὐ","οὐδ","οὐδέ","οὐδείσ","οὐδεὶς","οὐδὲ","οὐδὲν","οὐκ","οὐχ","οὐχὶ","οὓς","οὔτε","οὕτω","οὕτως","οὕτωσ","οὖν","οὗ","οὗτος","οὗτοσ","παλι","παντοτε","παντου","παντως","παρ","παρά","παρα","παρὰ","περί","περα","περι","περιπου","περισσοτερο","περσι","περυσι","περὶ","πια","πιθανον","πιο","πισω","πλαι","πλεον","πλην","ποια","ποιαν","ποιας","ποιες","ποιεσ","ποιο","ποιοι","ποιον","ποιος","ποιοσ","ποιου","ποιους","ποιουσ","ποιων","πολυ","ποσες","ποση","ποσην","ποσης","ποσοι","ποσος","ποσους","ποτε","που","πουθε","πουθενα","ποῦ","πρεπει","πριν","προ","προκειμενου","προκειται","προπερσι","προς","προσ","προτου","προχθες","προχτες","πρωτυτερα","πρόσ","πρὸ","πρὸς","πως","πωσ","σαν","σας","σε","σεις","σημερα","σιγα","σου","στα","στη","στην","στης","στις","στο","στον","στου","στους","στων","συγχρονως","συν","συναμα","συνεπως","συνηθως","συχνα","συχνας","συχνες","συχνη","συχνην","συχνης","συχνο","συχνοι","συχνον","συχνος","συχνου","συχνους","συχνων","συχνως","σχε∆ον","σωστα","σόσ","σύ","σύν","σὸς","σὺ","σὺν","τά","τήν","τί","τίς","τίσ","τα","ταυτα","ταυτες","ταυτη","ταυτην","ταυτης","ταυτο,ταυτον","ταυτος","ταυτου","ταυτων","ταχα","ταχατε","ταῖς","τα∆ε","τε","τελικα","τελικως","τες","τετοια","τετοιαν","τετοιας","τετοιες","τετοιο","τετοιοι","τετοιον","τετοιος","τετοιου","τετοιους","τετοιων","τη","την","της","τησ","τι","τινα","τιποτα","τιποτε","τις","τισ","το","τοί","τοι","τοιοῦτος","τοιοῦτοσ","τον","τος","τοσα","τοσες","τοση","τοσην","τοσης","τοσο","τοσοι","τοσον","τοσος","τοσου","τοσους","τοσων","τοτε","του","τουλαχιστο","τουλαχιστον","τους","τουτα","τουτες","τουτη","τουτην","τουτης","τουτο","τουτοι","τουτοις","τουτον","τουτος","τουτου","τουτους","τουτων","τούσ","τοὺς","τοῖς","τοῦ","τυχον","των","τωρα","τό","τόν","τότε","τὰ","τὰς","τὴν","τὸ","τὸν","τῆς","τῆσ","τῇ","τῶν","τῷ","υπ","υπερ","υπο","υποψη","υποψιν","υπό","υστερα","φετος","χαμηλα","χθες","χτες","χωρις","χωριστα","ψηλα","ω","ωραια","ως","ωσ","ωσαν","ωσοτου","ωσπου","ωστε","ωστοσο","ωχ","ἀλλ'","ἀλλά","ἀλλὰ","ἀλλ’","ἀπ","ἀπό","ἀπὸ","ἀφ","ἂν","ἃ","ἄλλος","ἄλλοσ","ἄν","ἄρα","ἅμα","ἐάν","ἐγώ","ἐγὼ","ἐκ","ἐμόσ","ἐμὸς","ἐν","ἐξ","ἐπί","ἐπεὶ","ἐπὶ","ἐστι","ἐφ","ἐὰν","ἑαυτοῦ","ἔτι","ἡ","ἢ","ἣ","ἤ","ἥ","ἧς","ἵνα","ὁ","ὃ","ὃν","ὃς","ὅ","ὅδε","ὅθεν","ὅπερ","ὅς","ὅσ","ὅστις","ὅστισ","ὅτε","ὅτι","ὑμόσ","ὑπ","ὑπέρ","ὑπό","ὑπὲρ","ὑπὸ","ὡς","ὡσ","ὥς","ὥστε","ὦ","ᾧ","∆α","∆ε","∆εινα","∆εν","∆εξια","∆ηθεν","∆ηλα∆η","∆ι","∆ια","∆ιαρκως","∆ικα","∆ικο","∆ικοι","∆ικος","∆ικου","∆ικους","∆ιολου","∆ιπλα","∆ιχως"])}};function h(e){return E(e,m)}const S=["διαπραγματεύ","αισθάν","ανέχ","ανταγωνίζ","αντιλαμβάν","αντιστρατεύ","απεχθάν","αρν","αφουγκράζ","βαριέμαι","γεύ","δέχ","διανο","διηγ","εγγυ","καταριέμαι","λιγουρεύ","λυπάμαι","μάχ","μέμφ","μεταχειρίζ","μιμ","νυμφεύ","ονειρεύ","οραματίζ","οσμίζ","περιποι","προασπίζ","προοιωνίζ","προφασίζ","ειρωνεύ","εισηγ","εκδικ","εκμεταλλεύ","εμπιστεύ","επιβουλεύ","επικαλ","επισκέπτ","επωμίζ","ερωτεύ","ευαγγελίζ","εχθρεύ","θυμάμαι","καπηλεύ","καρπών","σέβ","σιχαίν","σκαρφίζ","σκέφτ","σπλαχνίζ","συλλογίζ","συμμερίζ","υπαινίσσ","υποκρίν","υποπτεύ","υπόσχ","υποψιάζ","φοβάμαι","χειρίζ","χρειάζ","πραγματεύ","μαθεύ","ξαναγίν","ξεκαρδίζ","ξεκουμπίζ","ξεχύν","ξημεροβραδιάζ","οδύρ","παραιτ","παραλογίζ","παραστέκ","παρεκτρέπ","πειραματίζ","περιπλαν","πολιτεύ","αγωνίζ","αθλ","ακροβολίζ","αμιλλ","αμύν","αναδιπλών","αναδύ","αναρωτιέμαι","αντιστέκ","γεύ","γκρεμοτσακίζ","διαπληκτίζ","εισέρχ","εκρήγνυμαι","εμφορ","προπορεύ","ρεύ","σκυλοβαριέμαι","σοβαρεύ","συγκρού","συμπαρατάσσ","συμπεριφέρ","συνδικαλίζ","συνεννο","συνεργάζ","υπεισέρχ","υπερηφανεύ","φαγών","φύ","χαμοκυλιέμαι","εναντιών","ενίσταμαι","επαίρ","επιτίθεμαι","ευθύν","ηγ","ηττ","ίπταμαι","καμών","καταγίν","κατάγ","κλυδωνίζ","κοκορεύ","λογοδίν","μαίν","ανεβαιν","ανεβηκα","κατεβαιν","κατέβηκα","συγχαίρ","συγχάρκα"],y=["ιόμασταν","ιόσασταν","ούμασταν","ούσασταν","ομασταν","οσασταν","όμασταν","όσασταν","ιόμαστε","ιούνται","ιόσαστε","ηθήκαμε","ηθήκατε","ιούνταν","ούμαστε","θήκαμε","θήκατε","τήκαμε","τήκατε","όμαστε","όσαστε","ηθούμε","ηθείτε","ήθηκες","ήθηκαν","ιόμουν","ιόσουν","ούνται","ούμουν","ούσουν","ούνταν","μαστε","σαστε","θούμε","θείτε","τούμε","τείτε","θηκες","θηκαν","τηκες","τηκαν","ονται","όμουν","όσουν","ονταν","ιέμαι","ιέσαι","ιέται","ιέστε","ηθείς","ηθούν","ήθηκα","ήθηκε","ιόταν","ούμαι","είσαι","είται","είστε","θείς","θούν","τείς","τούν","θηκα","θηκε","τηκα","τηκε","μουν","σουν","νταν","ομαι","εσαι","εται","εστε","όταν","ηθεί","μαι","σαι","ται","στε","θεί","τεί","ταν","ηθώ","θώ","τώ"],{getWords:b,directPrecedenceException:P}=r.languageProcessing,W=["να"];function v(e){const t=b(e);for(const r of t)for(const t of y)if(r.endsWith(t)&&r.length>4){const n=r.slice(0,-t.length);return/^(θεί|τεί)$/.test(t)?!S.includes(n)&&!P(e,r,W):!S.includes(n)}return!1}const{AbstractResearcher:j}=r.languageProcessing;class C extends j{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"el",functionWords:l,passiveConstructionType:"morphologicalAndPeriphrastic",transitionWords:g,twoPartTransitionWords:o,firstWordExceptions:n.firstWords,secondWordExceptions:n.secondWords}),Object.assign(this.helpers,{getStemmer:u,getClauses:h,isPassiveSentence:v})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/ru.js000064400001160062147206602470011073 0ustar00(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>Y});const r=window.yoast.analysis,n=["один","одна","одно","два","две","три","четыре","пять","шесть","семь","восемь","девять","десять","этот","этого","этому","этим","этом","эта","этой","эту","это","этого","этому","эти","этих","этим","этими","тот","того","тому","тем","том","та","той","ту","те","тех","тем","теми","тех","такой","такого","такому","таким","такая","такую","такое","такие","таких","таким","такими","стольких","стольким","столько","столькими","вот"],s=["безусловно","бесспорно","вероятно","вестимо","вдобавок","видимо","вишь","во-вторых","во-первых","вообще-то","впрочем","дабы","едва","ежели","если","затем ","зачем","ибо","итак","так","кабы","кажется","кажись","коли","кстати","лишь","лучше","наверно","наверное","например","небось","нежели","несомненно","но","однако","особенно","оттого","отчего","поди","пожалуй","позволь","позвольте","покамест","покуда","поскольку","потому","притом","причем","только","хотя","чтоб","чтобы","чуть","якобы"],o=s.concat(["а вдобавок","а вот","а именно","а не то","а не","а потом","а также","без всякого сомнения","без того чтобы не","без того, чтобы не","благодаря тому","более того","будто бы","будь то","буквально","в итоге","в конце концов","в общей сложности","в общем-то","в общем","в отношении того что","в отношении того, что","в принципе","в противовес тому что","в противовес тому, что","в противоположность тому","в результате","в самом деле","в свою очередь","в связи с тем что","в связи с тем","в силу того что","в силу того","в силу чего","в случа","в сравнении с тем","в сущности говоря","в сущности","в таком случае","в то время как","в то время, как","в том случае","в частности","в-третьих","ввиду того","вернее говоря","вероятнее всего","видите ли","видишь ли","вместе с тем","вместо того","вне всякого сомнения","вне сомнения","во всяком случае","воля ваша","воля твоя","вообще говоря","вопреки тому","вплоть до того","вроде того как","вроде того что","вроде того","вроде того","вследствие того что","вследствие чего","грубо говоря","да еще","да и то","дай бог память","даром что","для того чтобы","для того, чтобы","до тех пор пока","до тех пор, пока","до того как","до того, как","едва лишь","едва только","ежели бы","если угодно","жалко, что","жаль, что","за счет того что","за счет того, что","знамо дело","и вот еще","из-за того что","из-за того, что","иначе говоря","исходя из того","к вашему сведению","к несчастью","к огорчению","к примеру сказать","к примеру","к прискорбию","к радости","к слову сказать","к сожалению","к стыду своему","к стыду","к счастью","к твоему сведению","к тому же","к удивлению","к ужасу","к чести","как будто","как бы там ни было","как бы то ни было","как бы","как вам известно","как вдруг","как видите","как видишь","как видно","как водится","как выяснилось","как выясняется","как говорилось","как говорится","как если бы","как знать","как известно","как на заказ","как назло","как нарочно","как ни говори","как ни говорите","как ни странно","как оказалось","как оказывается","как полагается","как положено","как правило","как принято говорить","как принято","как сказано","как скоро","как следствие","как словно","как только","как хотите","как это ни странно","ко всему прочему","коль скоро","коль уж","коротко говоря","короче говоря","кроме всего прочего","кстати говоря","кстати сказать","лишь бы","лишь только","мало сказать","мало того","между нами говоря","между прочим","между тем как","может статься","можно подумать","мягко выражаясь","мягко говоря","на беду","на ваш взгляд","на мой взгляд","на несчастье","на основании того что","на основании того, что","на первый взгляд","на самом деле","на случай","на твой взгляд","на худой конец","надо полагать","наряду с тем что","наряду с тем","насчет того что","насчет того, что","не в пример тому как","не в пример тому, как","не то чтобы","невзирая на то","независимо от того","несмотря на то","ничего не скажешь","но вообще-то","кроме того","однако же","откровенно сказать","относительно того что","относительно того, что","перед тем","по вашему мнению","по видимости","по всей вероятности","по всей видимости","по данным","по замыслу","по идее","по крайней мере","по мере того как","по мере того, как","по мнению","по моему мнению","по обыкновению","по обычаю","по определению","по поводу того","по правде говоря","по правде сказать","по правде","по преданию","по причине того","по прогнозам","по сведениям","по своему обыкновению","по слухам","по совести говоря","по совести сказать","по совести","по сообщению","по сообщениям","по справедливости говоря","по справедливости","по сравнению","по статистике","по сути говоря","по сути дела","по сути","по существу говоря","по существу","по счастью","по твоему мнению","по чести говоря","по чести признаться","по чести сказать","по-вашему","по-видимому","по-ихнему","по-моему","по-нашему","по-твоему","под видом того что","под видом того, что","под предлогом","подобно тому","подумать только","помимо всего прочего","помимо всего","помимо того","помимо того","помимо этого","понятное дело","попросту говоря","попросту сказать","после того","потому как","потому что","правду говоря","правду сказать","правильнее говоря","прежде всего","прежде нежели","прежде чем","при всем том","при условии что","при условии, что","против обыкновения","проще говоря","проще сказать","прямо-таки как","пускай бы","равно как","ради того чтобы","разве что","разумеется","с вашего позволения","с вашего разрешения","с другой стороны","с моей точки зрения","с одной стороны","с позволения сказать","с твоего позволения","с твоего разрешения","с тем чтобы","с тех пор как","с той целью чтобы","с точки зрения","само собой разумеется","сверх того что","сверх того","сказать по правде","сказать по совести","сказать по чести","скорее всего","смотря по тому","со своей стороны","собственно говоря","совсем как","стало быть","стоит отметить","строго говоря","судя по всему","судя по тому","так или иначе","так как","так что","так чтобы","тем более что","тем не менее","тем паче что","то бишь","то есть","тогда как","только бы","только лишь","только чуть","точнее говоря","точнее сказать","точно так же","что и говорить","что ни говори","что ни говорите","чуть лишь","чуть только","шутка ли сказать","шутка ли","шутка сказать","это значит, что"]);function i(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}const c=["быть","был","была","было","были","будет","будут"],a=["мочь","мог","могла","могли","могу","можешь","может","можем","можете","могут","смочь","смогу","сможешь","сможет","сможем","сможете","смогут","решиться","решился","решилась","решились","решусь","решишься","решится","решимся","решитесь","решатся","делать","делал","делала","делало","делали","делали","делаю","делаешь","делает","делаем","делаете","делают","сделать","сделал","сделала","сделало","сделали","сделали","сделаю","сделаешь","сделает","сделаем","сделаете","сделают","иметь","имел","имела","имело","имели","имею","имеешь","имеет","имеем","имеете","имеют","следует","следовало","необходимо","необходим","необходима","необходимы","нужно","нужен","нужна","обязан","обязана","обязано","обязаны","должен","должна","должно","должны","требуется","требуются","имеется","имеются","есть","можно"],l=["появиться","появился","появилась","появилось","появились","появлюсь","появишься","появится","появимся","появитесь","появимся","появляться","появлялся","появлялась","появлялось","появлялись","появляюсь","появляешься","появляется","появляемся","появляются","появляетесь","стал","стала","стало","стану","станешь","станет","станем","станете","станут","становиться","становился","становилось","становилась","становились","становлюсь","становишься","становится","становимся","становитесь","становятся","прийти","пришел","пришёл","пришла","пришло","пришли","приду","придешь","придёшь","придет","придёт","придем","придём","придете","придёте","придут","приходить","приходил","приходила","приходило","приходили","прихожу","приходишь","приходит","приходим","приходите","происходить","происходил","происходила","происходило","происходили","происходит","происходят","держать","держал","держала","держало","держали","держу","держишь","держит","держим","держите","держут","содержать","содержал","содержала","содержало","содержали","содержу","содержишь","содержит","содержим","содержите","содержут","остаться","остался","осталась","осталось","остались","останусь","останешься","останется","останутся","останетесь","останемся","оставаться","оставался","оставалась","оставалось","оставались","остаюсь","остаешься","остаёшься","остается","остаётся","остаемся","остаёмся","остаетесь","остаётесь","остаются","изменяться","изменялся","изменялась","изменялось","изменялись","изменюсь","изменишься","изменится","изменимся","изменитесь","изменятся","успеть","успел","успела","успело","успели","успею","успеешь","успеет","успеем","успеете","успеют","заниматься","занимался","занималась","занимаюсь","занимаешься","занимается","занимаемся","занимаетесь","занимаемся","заняться","занялся","занялась","занялись","займусь","займешься","займется","займемся","займетесь","займутся","займёшься","займётся","займёмся","займётесь"],u=["сказать","сказал","сказала","сказали","говорить","говорил","говорила","говорили","говорит","говорю","говорим","говоришь","говорят","говорите","объявить","объявил","объявила","объявили","заявить","заявил","заявила","заявили","спросить","спросил","спросила","спросили","указать","указал","указала","указали","объяснить","объяснил","объяснила","объяснили","подумать","подумал","подумала","подумали","думать","думал","думала","думали","думаю","думает","думаешь","думаем","думаете","думают","рассказывать","рассказывал","рассказывала","рассказывали","рассказывают","рассказывает","рассказать","рассказал","рассказала","рассказали","обсудить","обсудил","обсудила","обсудили","предложить","предложил","предложила","предложили","понимать","понимал","понимала","понимали","понимаю","понимаешь","понимает","понимаем","понимаете","понимают","добавить","добавил","добавила","добавили","добавлю","добавишь","добавит","добавим","добавите","добавят"],f=["казаться","кажется","казалось","казалась","казался","казались","кажутся","давайте","давай","хотеть","хочу","хочешь","хочет","хотим","хотите","хотят","хотел","хотела","хотело","хотели","показать","показал","показала","показало","показали","покажу","покажешь","покажет","покажем","покажете","покажут","показывать","показывал","показывала","показывало","показывали","показываю","показываешь","показывает","показываем","показываете","показывают","идти","шел","шёл","шла","шло","шли","иду","идешь","идёшь","идет","идёт","идем","идём","идете","идёте","идут","брать","брал","брала","брало","брали","беру","берешь","берёшь","берёт","берем","берём","берёте","берут","взять","взял","взяла","взяло","взяли","возьму","возьмешь","возьмет","возьмем","возьмете","возьмут","класть","кладу","кладешь","кладет","кладёшь","кладёт","кладем","кладете","кладём","кладёте","кладут","положить","положил","положила","положило","положили","положу","положишь","положит","положим","положите","положат","использовать","использовал","использовала","использовало","использовали","использую","используешь","используем","используете","используют","пробовать","пробовал","пробовала","пробовало","пробовали","пробую","пробуешь","пробует","пробуем","пробуете","пробуют","попробовать","попробовал","попробовала","попробовало","попробовали","попробую","попробуешь","попробует","попробуем","попробуете","попробуют","иметь","имел","имела","имело","имели","имею","имеешь","имеет","имеем","имеете","имеют","означать","означал","означала","означало","означали","означает","означают","добавлять","добавлял","добавляла","добавляло","добавляли","добавляю","добавляешь","добавляет","добавляем","добавляете","добавляют","состоять","состоял","состояла","состояло","состояли","состою","состоишь","состоит","состоим","состоите","состоят","убеждаться","убедился","убедилась","убедилось","убедишься","убедится","убедимся","убедитесь","убедятся","убеждать","убедил","убедила","убедили","убедишь","убедит","убедим","убедите","убедят","являться","являлся","являлась","являлось","являлись","являюсь","являешься","является","являемся","являетесь","являются"],g=["один","одна","одно","одни","два","две","двое","двух","двоих","двум","двоим","двумя","двоими","три","трое","трех","трёх","троих","трем","трём","троим","тремя","четыре","пять","шесть","семь","восемь","девять","десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто","сто","сотни","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот","тысяча","тысячи","тысяче","тысячей","тысячам","тысячами","тысячах","тыс","миллион","миллиона","миллиону","миллионом","миллионе","миллионы","миллионов","миллионам","миллионами","миллионах","миллиард","миллиарда","миллиарду","миллиардом","миллиарде","миллиарды","миллиардов","миллиардам","миллиардами","миллиардах"],m=["первый","первого","первому","первом","первым","первая","первой","первое","первые","первых","первыми","второй","второго","второму","втором","вторым","вторая","второй","второе","вторые","вторых","вторыми","третий","третьего","третьему","третьим","третьем","третья","третьей","третье","третьи","третьих","третьими","четвертый","четвертого","четвертому","четвертым","четвертом","четвертая","четвертой","четвертое","четвертые","четвертых","четвертыми","пятый","пятого","пятому","пятом","пятым","пятая","пятое","пятые","пятых","пятыми","шестой","шестого","шестому","шестым","шестая","шестое","шестые","шестых","шестыми","седьмой","седьмого","седьмому","седьмым","седьмая","седьмое","седьмые","седьмых","седьмыми","восьмой","восьмого","восьмому","восьмым","восьмая","восьмое","восьмые","восьмых","восьмыми","девятый","девятого","девятому","девятым","девятая","девятое","девятые","девятых","девятыми","десятый","десятого","десятому","десятым","десятая","десятое","десятые","десятых","десятыми","одиннадцатый","одиннадцатого","одиннадцатому","одиннадцатым","одиннадцатая","одиннадцатое","одиннадцатые","одиннадцатых","одиннадцатыми","двенадцатый","двенадцатого","двенадцатому","двенадцатым","двенадцатая","двенадцатое","двенадцатые","двенадцатых","двенадцатыми","тринадцатый","тринадцатого","тринадцатому","тринадцатым","тринадцатая","тринадцатое","тринадцатые","тринадцатых","тринадцатыми","четырнадцатый","четырнадцатого","четырнадцатому","четырнадцатым","четырнадцатая","четырнадцатое","четырнадцатые","четырнадцатых","четырнадцатыми","пятнадцатый","пятнадцатого","пятнадцатому","пятнадцатым","пятнадцатая","пятнадцатое","пятнадцатые","пятнадцатых","пятнадцатыми","шестнадцатый","шестнадцатого","шестнадцатому","шестнадцатым","шестнадцатая","шестнадцатое","шестнадцатые","шестнадцатых","шестнадцатыми","семнадцатый","семнадцатого","семнадцатому","семнадцатым","семнадцатая","семнадцатое","семнадцатые","семнадцатых","семнадцатыми","восемнадцатый","восемнадцатого","восемнадцатому","восемнадцатым","восемнадцатая","восемнадцатое","восемнадцатые","восемнадцатых","восемнадцатыми","девятнадцатый","девятнадцатого","девятнадцатому","девятнадцатым","девятнадцатая","девятнадцатое","девятнадцатые","девятнадцатых","девятнадцатыми","двадцатый","двадцатого","двадцатому","двадцатым","двадцатая","двадцатое","двадцатые","двадцатых","двадцатыми","тридцатый","тридцатого","тридцатому","тридцатым","тридцатая","тридцатое","тридцатые","тридцатых","тридцатыми","сороковой","сорокового","сороковому","сороковым","сороковая","сороковое","сороковые","сороковых","сороковыми","пятидесятый","пятидесятого","пятидесятому","пятидесятым","пятидесятая","пятидесятое","пятидесятые","пятидесятых","пятидесятыми","шестидесятый","шестидесятого","шестидесятому","шестидесятым","шестидесятая","шестидесятое","шестидесятые","шестидесятых","шестидесятыми","семидесятый","семидесятого","семидесятому","семидесятым","семидесятая","семидесятое","семидесятые","семидесятых","семидесятыми","восьмидесятый","восьмидесятого","восьмидесятому","восьмидесятым","восьмидесятая","восьмидесятое","восьмидесятые","восьмидесятых","восьмидесятыми","девяностый","девяностого","девяностому","девяностым","девяностая","девяностое","девяностые","девяностых","девяностыми","сотый","сотого","сотому","сотым","сотая","сотое","сотые","сотых","сотыми","двухсотый","двухсотого","двухсотому","двухсотым","двухсотая","двухсотое","двухсотые","двухсотых","двухсотыми","трехсотый","трехсотого","трехсотому","трехсотым","трехсотая","трехсотое","трехсотые","трехсотых","трехсотыми","трёхсотый","трёхсотого","трёхсотому","трёхсотым","трёхсотая","трёхсотое","трёхсотые","трёхсотых","трёхсотыми","четырехсотый","четырехсотого","четырехсотому","четырехсотым","четырехсотая","четырехсотое","четырехсотые","четырехсотых","четырехсотыми","четырёхсотый","четырёхсотого","четырёхсотому","четырёхсотым","четырёхсотая","четырёхсотое","четырёхсотые","четырёхсотых","четырёхсотыми","пятисотый","пятисотого","пятисотому","пятисотым","пятисотая","пятисотое","пятисотые","пятисотых","пятисотыми","шестисотый","шестисотого","шестисотому","шестисотым","шестисотая","шестисотое","шестисотые","шестисотых","шестисотыми","семисотый","семисотого","семисотому","семисотым","семисотая","семисотое","семисотые","семисотых","семисотыми","восьмисотый","восьмисотого","восьмисотому","восьмисотым","восьмисотая","восьмисотое","восьмисотые","восьмисотых","восьмисотыми","девятисотый","девятисотого","девятисотому","девятисотым","девятисотая","девятисотое","девятисотые","девятисотых","девятисотыми","тысячный","тысячного","тысячному","тысячным","тысячная","тысячное","тысячные","тысячных","тысячными","миллионный","миллионного","миллионному","миллионным","миллионная","миллионное","миллионные","миллионных","миллионными","миллиардный","миллиардного","миллиардному","миллиардным","миллиардная","миллиардное","миллиардные","миллиардных","миллиардными"],d=["я","меня","мне","мной","мною","ты","тебя","тебе","тобой","он","его","него","ему","нему","нем","нём","им","ним","она","ее","нее","неё","её","ей","ею","ней","нею","оно","мы","нам","нас","нами","вы","вас","вам","вами","они","них","ими","ними","их"],x=["тот","тому","том","тем","того","та","той","ту","то","те","тех","теми","этот","этому","этом","этим","этого","эта","этой","эту","это","эти","этих","этими","такой","такого","такому","таким","таком","такая","такую","такое","такие","таких","такими","этакий","этакого","этакому","этаким","этаком","этакая","этакую","этакое","этакие","этаких","этакими"],S=["мой","моего","моему","моём","моим","моя","моей","мое","моё","мои","моих","моим","твой","твоего","твоему","твоём","твоем","твоим","твоя","твоей","твою","твое","твоё","твои","твоих","твоим","свой","своего","своему","своём","своем","своим","своя","своей","свою","свое","своё","свои","своих","своим","наш","нашего","нашему","нашем","наша","нашей","наше","наши","нашим","наших","ваш","вашего","вашему","вашем","ваша","вашей","ваше","ваши","вашим","ваших"],y=["некоторый","некоторого","некоторому","некоторым","некотором","некоторая","некоторую","некоторое","некоторые","некоторых","некоторыми","многие","многого","многому","многим","многом","многая","многую","многое","многие","многих","многими","много","множество","каждый","каждого","каждому","каждым","каждом","каждая","каждую","каждое","каждые","каждых","каждыми","достаточно","мало","более","больше","большинство","большинства","большинству","большинстве","несколько","нескольких","менее","меньше","наиболее","наименее","угодно","же"],b=["себя","себе"],h=["ничто","ничего","ничему","ничем","ни о чем","ни о чём","никто","никого","никому","никем","ни о ком","весь","всего","всему","всем","всём","все","всё","всех","всеми","всякий","всякого","всякому","всяким","всяком","всякая","всякой","всякую","всякое","всякие","всяких","всякими","кто-то","кого-то","кому-то","кем-то","ком-то","что-то","чего-то","чему-то","чем-то","чём-то","кто-либо","кого-либо","кому-либо","кем-либо","ком-либо","что-либо","чего-либо","чему-либо","чем-либо","чём-либо","кое-кто","кое-кого","кое-кому","кое-кем","кое-ком","кое-что","кое-чего","кое-чему","кое-чем","кое-чём","любой","любого","любому","любым","любом","любая","любую","любое","любые","любых","любыми","какой","какого","какому","каким","каком","какая","какую","какое","какие","каких","какими","какой-то","какого-то","какому-то","каким-то","каком-то","какая-то","какую-то","какое-то","какие-то","каких-то","какими-то"],p=["который","которого","которому","которым","котором","которая","которую","которое","которые","которых","которыми","чей","чьего","чьему","чьим","чьем","чьём","чья","чьей","чье","чьё","чьи","чьих","чьими"],v=["кто","кого","кому","кем","что","чего","чему","чем","чём"],w=["где","куда","откуда","как","почему","зачем","сколько","ли","когда"],O=["везде","нигде","там","здесь","повсюду"],P=["никогда","всегда","однажды","единожды","дважды","трижды","четырежды","уже"],E=["чрезвычайно","очень","крайне","абсолютно","полностью","совершенно","часто","чаще","довольно","несколько","значительно","немного","немножко","частично","просто"],W=["базовый","базового","базовому","базовым","базовом","базовая","базовой","базовое","базовые","базовых","базовым","базовыми","быстрый","быстрого","быстрому","быстрым","быстром","быстрая","быстрой","быстрое","быстрые","быстрых","быстрым","быстрыми","быстрейший","быстрейшего","быстрейшему","быстрейшим","быстрейшем","быстрейшая","быстрейшей","быстрейшее","быстрейшие","быстрейших","быстрейшим","быстрейшими","большой","большого","большому","большим","большом","большая","большое","большие","больших","большим","большими","быстрее","быстро","важный","важного","важному","важным","важном","важная","важной","важное","важные","важных","важным","важными","важнее","важно","возможный","возможного","возможному","возможным","возможном","возможная","возможной","возможное","возможные","возможных","возможным","возможными","высокий","высокого","высокому","высоким","высоком","высокая","высокой","высокое","высокие","высоких","высоким","высокими","выше","высоко","главный","главного","главному","главным","главном","главная","главной","главное","главные","главных","главным","главными","далекий","далекого","далекому","далеким","далеком","далекая","далекой","далекое","далекие","далеких","далеким","далекими","далёкий","далёкого","далёкому","далёким","далёком","далёкая","далёкой","далёкое","далёкие","далёких","далёким","далёкими","длиннее","длинный","длинного","длинному","длинным","длинном","длинная","длинной","длинное","длинные","длинных","длинным","длинными","доступный","доступного","доступному","доступным","доступном","доступная","доступной","доступное","доступные","доступных","доступным","доступными","жуткий","жуткого","жуткому","жутким","жутком","жуткая","жуткой","жуткое","жуткие","жутких","жутким","жуткими","законченный","законченного","законченному","законченным","законченном","законченная","законченной","законченное","законченные","законченных","законченным","законченными","занят","занята","заняты","занятой","занятого","занятому","занятым","занятом","занятая","занятое","занятые","занятых","занятым","занятыми","короткий","короткого","короткому","коротким","коротком","короткая","короткой","короткое","короткие","коротких","коротким","короткими","короче","кошмарный","кошмарного","кошмарному","кошмарным","кошмарном","кошмарная","кошмарной","кошмарное","кошмарные","кошмарных","кошмарным","кошмарными","красивый","красивого","красивому","красивым","красивом","красивая","красивой","красивое","красивые","красивых","красивым","красивыми","лёгкий","лёгкого","лёгкому","лёгким","лёгком","лёгкая","лёгкой","лёгкое","лёгкие","лёгких","лёгким","лёгкими","легкий","легкого","легкому","легким","легком","легкая","легкой","легкое","легкие","легких","легким","легкими","легко","легче","лучше","лучший","лучшего","лучшему","лучшим","лучшем","лучшая","лучшей","лучшее","лучшие","лучших","лучшим","лучшими","маленький","маленького","маленькому","маленьким","маленьком","маленькая","маленькой","маленькое","маленькие","маленьких","маленьким","маленькими","малюсенький","малюсенького","малюсенькому","малюсеньким","малюсеньком","малюсенькая","малюсенькой","малюсенькое","малюсенькие","малюсеньких","малюсеньким","малюсенькими","меньший","меньшего","меньшему","меньшим","меньшем","меньшая","меньшей","меньшее","меньшие","меньших","меньшим","меньшими","многочисленный","многочисленного","многочисленному","многочисленным","многочисленном","многочисленная","многочисленной","многочисленное","многочисленные","многочисленных","многочисленным","многочисленными","молодой","молодого","молодому","молодым","молодом","молодая","молодое","называемый","называемого","называемому","называемым","называемом","называемая","называемой","называемое","называемые","называемых","называемым","называемыми","больший","большего","большему","большим","большем","большая","большей","большее","большие","больших","большим","большими","наибольший","наибольшего","наибольшему","наибольшим","наибольшем","наибольшая","наибольшей","наибольшее","наибольшие","наибольших","наибольшим","наибольшими","меньший","меньшего","меньшему","меньшим","меньшем","меньшая","меньшей","меньшее","меньшие","меньших","меньшим","меньшими","наименьший","наименьшего","наименьшему","наименьшим","наименьшем","наименьшая","наименьшей","наименьшее","наименьшие","наименьших","наименьшим","наименьшими","наихудший","наихудшего","наихудшему","наихудшим","наихудшем","наихудшая","наихудшей","наихудшее","наихудшие","наихудших","наихудшим","наихудшими","напрямую","настоящий","настоящего","настоящему","настоящим","настоящем","настоящая","настоящей","настоящее","настоящие","настоящих","настоящим","настоящими","недавний","недавнего","недавнему","недавним","недавнем","недавняя","недавней","недавнее","недавние","недавних","недавним","недавними","необходимый","необходимого","необходимому","необходимым","необходимом","необходимая","необходимой","необходимое","необходимые","необходимых","необходимым","необходимыми","ниже","низкий","низкого","низкому","низким","низком","низкая","низкой","низкое","низкие","низких","низким","низкими","новейший","новейшего","новейшему","новейшим","новейшем","новейшая","новейшей","новейшее","новейшие","новейших","новейшим","новейшими","новый","нового","новому","новым","новом","новая","новое","новые","новых","новым","новыми","нормальный","нормального","нормальному","нормальным","нормальном","нормальная","нормальное","нормальные","нормальных","нормальным","нормальными","обыкновенный","обыкновенного","обыкновенному","обыкновенным","обыкновенном","обыкновенная","обыкновенное","обыкновенные","обыкновенных","обыкновенным","обыкновенными","обычный","обычного","обычному","обычным","обычном","обычная","обычное","обычные","обычных","обычным","обычными","основной","основного","основному","основным","основном","основная","основное","основные","основных","основным","основными","особенный","особенного","особенному","особенным","особенном","особенная","особенное","особенные","особенных","особенным","особенными","отличный","отличного","отличному","отличным","отличном","отличная","отличное","отличные","отличных","отличным","отличными","очевидный","очевидного","очевидному","очевидным","очевидном","очевидная","очевидное","очевидные","очевидных","очевидным","очевидными","плохой","плохого","плохому","плохим","плохом","плохая","плохое","плохие","плохих","плохим","плохими","последний","последнего","последнему","последним","последнем","последняя","последней","последнее","последние","последних","последним","последними","постоянно","постоянный","постоянного","постоянному","постоянным","постоянном","постоянная","постоянное","постоянные","постоянных","постоянным","постоянными","похожий","похожего","похожему","похожим","похожем","похожая","похожей","похожее","похожие","похожих","похожим","похожими","почти","предыдущий","предыдущего","предыдущему","предыдущим","предыдущем","предыдущая","предыдущей","предыдущее","предыдущие","предыдущих","предыдущим","предыдущими","простейший","простейшая","простейшей","простой","простого","простому","простым","простом","простая","простое","простые","простых","простым","простыми","проще","ранний","раннего","раннему","ранним","раннем","ранняя","ранней","раннее","ранние","ранних","ранним","ранними","разный","разного","разному","разным","разном","разная","разной","разное","разные","разных","разным","разными","самый","самого","самому","самым","самом","самая","самой","самое","самые","самых","самым","самыми","собственный","собственного","собственному","собственным","собственном","собственная","собственное","собственные","собственных","собственным","собственными","специальный","специального","специальному","специальным","специальном","специальная","специальное","специальные","специальных","специальным","специальными","специфичный","специфичного","специфичному","специфичным","специфичном","специфичная","специфичное","специфичные","специфичных","специфичным","специфичными","средний","среднего","среднему","средним","среднем","средняя","средней","среднее","средние","средних","средним","средними","старейший","старейшего","старейшему","старейшим","старейшем","старейшая","старейшей","старейшее","старейшие","старейших","старейшим","старейшими","старый","старого","старому","старым","старом","старая","старой","старое","старые","старых","старым","старыми","текущий","текущего","текущему","текущим","текущем","текущая","текущей","текущее","текущие","текущих","текущим","текущими","тяжелее","тяжёлый","тяжёлого","тяжёлому","тяжёлым","тяжёлом","тяжёлая","тяжёлое","тяжёлые","тяжёлых","тяжёлым","тяжёлыми","тяжелый","тяжелого","тяжелому","тяжелым","тяжелом","тяжелая","тяжелое","тяжелые","тяжелых","тяжелым","тяжелыми","хороший","хорошего","хорошему","хорошим","хорошем","хорошая","хорошей","хорошее","хорошие","хороших","хорошим","хорошими","хорошо","худший","худшего","худшему","худшим","худшем","худшая","худшей","худшее","худшие","худших","худшим","худшими","хуже","целый","целого","целому","целым","целом","целая","целой","целое","целые","целых","целым","целыми","именно","обязательно","действительно"],R=["а-ля","без","безо","без ведома","благодаря","близ","в","во","в адрес","в аспекте","в виде","в глазах","в глубь","в деле","в дополнение к","в духе","в завершение","в зависимости от","в заключение","в знак","в интересах","в качестве","в лице","в меру","в направлении","в направлении к","в направлении ко","в нарушение","в области","в обмен на","в обстановке","в обход","в ответ на","в отдалении от","в отличие от","в отношении","в память","в плане","в пользу","в порядке","в предвидении","в предвкушении","в преддверии","в присутствии","в продолжение","в противность","в противовес","в противоположность","в процессе","в разрезе","в районе","в рамках","в рассуждении","в расчете на","в результате","в роли","в ряду","в свете","в связи с","в связи со","в силу","в случае","в смысле","в согласии с","в сообществе с","в соответствии с","в соответствии со","в сопоставлении с","в сопровождении","в составе","в сравнении с","в сравнении со","в стороне от","в сторону","в сфере","в счет","в течение","в угоду","в унисон с","в условиях","в ущерб","в форме","в ходе","в целях","в честь","в числе","в число","вблизи","вблизи от","вверху","ввиду","вглубь","вдалеке от","вдали","вдали от","вдобавок к","вдобавок ко","вдогон","вдогонку","вдоль","вдоль по","взамен","включая","вкось","вкруг","вместе с","вместе со","вместо","вне","вне зависимости от","внизу","внутри","внутрь","вовнутрь","во время","во главе","во главе с","во главе со","во избежание","во изменение","во имя","во исполнение","во славу","возле","вокруг","волею","вопреки","вперед","впереди","вплоть до","впредь до","вразрез","времен","вроде","вслед","вослед","вслед за","вследствие","выше","для","до","за","за исключением","за счет","заботами","из","изо","из числа","из-за","из-под","из-подо","изнутри","именем","имени","исключая","исходя из","к","ко","к числу","касаемо","касательно","кончая","кроме","кругом","между","меж","промеж","промежду","на","мимо","минуя","на","на базе","на благо","на глазах у","на грани","на имя","на манер","на основании","на основе","на почве","на правах","на предмет","на протяжении","на пути","на пути к","на пути ко","на путях","на путях к","на путях ко","на радость","на случай","на смену","на стороне","на сторону","на уровне","на фоне","наверху","навстречу","над","надо","назади","накануне","наперекор","наперерез","наперехват","наподобие","напротив","наравне с","наравне со","наряду с","наряду со","насупротив","насчет","начиная","начиная от","начиная с","начиная со","не без","не в пример","не говоря о","не говоря об","не говоря обо","не до","не считая","невдалеке от","невзирая на","недалеко","недалеко от","независимо","независимо от","неподалеку от","несмотря на","ниже","о","об","обо","около","окрест","от","ото","от имени","от лица","относительно","памяти","перед","передо","пред","предо","перед","передо","пред","предо","перед лицом","плюс к","плюс ко","по","по адресу","по аналогии с","по аналогии со","по вине","по истечении","по линии","по мере","по направлению","по направлению к","по направлению ко","по отношению к","по отношению ко","по поводу","по праву","по примеру","по причине","по прошествии","по пути","по случаю","по сравнению с","по сравнению со","по стопам","по части","по-за","по-над","по-под","поблизости","поблизости от","поверх","погодя","под","подо","под видом","под знаком","под предлогом","под председательством","под эгидой","подле","подобно","позади","позднее","поздней","позже","помимо","поодаль от","поперед","поперек","порядка","посереди","посередине","посередке","посередь","после","посреди","посредине","посредством","превыше","прежде","при","при всей","при всем","при всех","при помощи","при посредстве","при условии","применительно к","применительно ко","про","против","противно","путем","ради","раньше","рядом с","рядом со","с","со","с ведома","с помощью","с учетом","с целью","сбоку","сбоку от","сверх","сверху","свыше","сзади","силами","сквозь","следом за","смотря по","снаружи","снизу","со стороны","совместно с","совместно со","совокупно с","согласно","согласно с","согласно со","сообразно","сообразно с","сообразно со","сообща с","сообща со","соответственно","соответственно с","соответственно со","соразмерно","соразмерно с","соразмерно со","спереди","спустя","сравнительно с","сравнительно со","среди","средь","сродни","судя по","супротив","считая","типа","у","ценой","ценою","через","что до"],j=["и","или","и/или","еще","ещё","а"],D=["если","даже"],N=["ох","вау","тю-тю","ох-ох-ох","эх","фуф","ага","угу","упс","ой","бее","ну","вот"],T=["ст","ч","л","кг","полкило","г","гр","мл","дл","пол-литра","мг","см","м","км"],k=["секунд","секунда","минут","минута","час","часа","часов","день","дня","дней","неделя","недели","недель","месяц","месяца","месяцев","год","года","году","годы","лет","гг","сегодня","завтра","послезавтра","вчера","позавчера","тыс до н э","н э","до н э","тыс до н"],A=["вещь","вещи","вещью","вещей","вещам","вещами","вещах","метод","метода","методом","методу","методе","методы","методам","методами","методах","способ","способа","способом","способу","способе","способы","способам","способами","способах","свойство","свойства","свойстве","свойств","свойствам","свойствах","свойствами","случай","случая","случаем","случаю","случае","случаи","случаям","случаями","случаях","дело","дела","делом","делу","деле","делам","делами","делах","сходство","сходства","сходстве","сходств","сходствам","сходствах","сходствами","часть","части","частью","частей","частям","частями","частях","штука","штуки","штуке","штуку","штук","штукам","штуками","штуках","раз","раза","разом","разу","разе","разы","разам","разами","разах","вид","вида","видом","виду","виде","виды","видам","видами","видах","процент","процента","процентом","проценту","проценте","проценты","процентам","процентами","процентах","аспект","аспекта","аспектом","аспекту","аспекте","аспекты","аспектам","аспектами","аспектах","пункт","пункта","пунктом","пункту","пункте","пункты","пунктам","пунктами","пунктах","идея","идеи","идее","идеей","идеям","идеями","идеях","тема","темы","теме","тему","темой","темам","темами","темах","человек","человека","человеком","человеку","человеке","деталь","детали","деталью","деталей","деталям","деталями","деталях","подробность","подробности","подробностью","подробностей","подробностям","подробностями","подробностях","фактор","фактора","фактором","фактору","факторе","факторы","факторам","факторами","факторах","разница","разницы","разнице","разницу","разницей","различие","различия","различию","различий","различиям","различиями","различиях","отличие","отличия","отличию","отличий","отличиям","отличиями","отличиях","ситуация","ситуации","ситуацией","ситуаций","ситуациям","ситуациями","ситуациях","сфера","сферы","сфере","сферу","сферой","сферам","сферами","сферах"],M=["нет","да","конечно","отлично","верх","низ","ок","окей","аминь","и т д","и т. д.","и так далее","и тому подобное","прости","простите","пожалуйста","тут","так","не","вдруг","теперь","точно","бы","сам","сама","само","сами","иногда","сейчас","тоже","также","пока","ведь","потом","поэтому","явно","ни","не","будто","напрочь","причем","причём","зато","вперед","вперёд","назад","сразу","пусть","пускай"],F=(i([].concat(m,W)),i([].concat(R,j,x,E,y,S)),i([].concat(s,P,d,b,N,g,c,a,l,u,f,h,D,p,v,w,O,M,T,k,A)),i([].concat(g,m,x,S,b,d,y,h,["чей-то","чьего-то","чьему-то","чьим-то","чьем-то","чьём-то","чья-то","чьей-то","чье-то","чьё-то","чьи-то","чьих-то","чьими-то","ничей","чьего","чьему","чьим","чьем","чьём","чья","чьей","чье","чьё","чьи","чьих","чьими","ничейный","ничейного","ничейному","ничейным","ничейном","ничейная","ничейной","ничейную","ничейное","ничейные","ничейных","ничейными"],p,v,w,O,P,c,a,l,R,j,D,u,s,E,f,N,W,T,A,M,["г-н","г-жа","тов","гр-н","гр-а","гр","проф"],["мл"],k))),G=[["будь то","или"],["возможно","а может быть"],["возможно","возможно"],["достаточно","чтобы"],["едва","как"],["ежели","то"],["если говорить о","то"],["если и не","то"],["если не","то"],["если","то"],["мало того что","еще и"],["мало того, что","еще и"],["не сказать чтобы","но"],["не сказать, чтобы","но"],["не столько","сколько"],["не то чтобы","но"],["не только не","но и"],["стоило","как"],["так как","то"],["только","как"],["хоть бы","а то"],["хоть","хоть"],["хотя","но"],["чем","лучше бы"],["чем","тем"],["что касается","то"]],I=JSON.parse('{"vowels":"аоиеёэыуюя","deviations":{"vowels":[{"fragments":["[аоиеёэыуюя][аоиеёэыуюя]"],"countModifier":1},{"fragments":["[аоиеёэыуюя][аоиеёэыуюя][аоиеёэыуюя]"],"countModifier":1}],"words":{"full":[],"fragments":[]}}}'),L={borders:{veryEasy:80,easy:70,fairlyEasy:60,okay:50,fairlyDifficult:40,difficult:20,veryDifficult:0},scores:{veryEasy:9,easy:9,fairlyEasy:9,okay:9,fairlyDifficult:6,difficult:3,veryDifficult:3}},V={recommendedLength:15},_=window.lodash,B=function(e,t){return t.externalStemmer.vowels.includes(e)},C=function(e,t,r){const n=e.substring(0,r),s=e.substring(n.length);let o;if(Array.isArray(t)){if(o=new RegExp(t[0],"i"),o.test(s))return n+s.replace(o,"");o=new RegExp(t[1],"i")}else o=new RegExp(t,"i");return o.test(s)?e=n+s.replace(o,""):null},{baseStemmer:J}=r.languageProcessing;function q(e){const t=(0,_.get)(e.getData("morphology"),"ru",!1);return t?e=>function(e,t){if(t.doNotStemSuffix.includes(e))return e;const r=function(e,t){for(const r of t)if(r[1].includes(e))return r[0];return null}(e,t.exceptionStemsWithFullForms);if(r)return r;const n=function(e,t){let r=0,n=0;const s=e.length;for(let o=1;ot.includes(e)));if(r)return r[0]}(e,t.stemsThatBelongToOneWord);return c||e}(e,t):J}const z=["абсолютизирован","абсолютизирована","абсолютизировано","абсолютизированы","абстрагирован","абстрагирована","абстрагировано","абстрагированы","автоматизирован","автоматизирована","автоматизировано","автоматизированы","адаптирован","адаптирована","адаптировано","адаптированы","адресован","адресована","адресовано","адресованы","адсорбирован","адсорбирована","адсорбировано","адсорбированы","аккредитован","аккредитована","аккредитовано","аккредитованы","аккумулирован","аккумулирована","аккумулировано","аккумулированы","активизирован","активизирована","активизировано","активизированы","активирован","активирована","активировано","активированы","актуализирован","актуализирована","актуализировано","актуализированы","акцентирован","акцентирована","акцентировано","акцентированы","амнистирован","амнистирована","амнистировано","амнистированы","амортизирован","амортизирована","амортизировано","амортизированы","ампутирован","ампутирована","ампутировано","ампутированы","ангажирован","ангажирована","ангажировано","ангажированы","аннулирован","аннулирована","аннулировано","аннулированы","анонсирован","анонсирована","анонсировано","анонсированы","апробирован","апробирована","апробировано","апробированы","аранжирован","аранжирована","аранжировано","аранжированы","аргументирован","аргументирована","аргументировано","аргументированы","арендован","арендована","арендовано","арендованы","арестован","арестована","арестовано","арестованы","ассигнован","ассигнована","ассигновано","ассигнованы","ассимилирован","ассимилирована","ассимилировано","ассимилированы","ассоциирован","ассоциирована","ассоциировано","ассоциированы","атакован","атакована","атаковано","атакованы","аттестован","аттестована","аттестовано","аттестованы","благословлен","благословлена","благословлено","благословлены","благоустроен","благоустроена","благоустроено","благоустроены","блокирован","блокирована","блокировано","блокированы","бойкотирован","бойкотирована","бойкотировано","бойкотированы","бронирован","бронирована","бронировано","бронированы","брошен","брошена","брошено","брошены","вакцинирован","вакцинирована","вакцинировано","вакцинированы","вбит","вбита","вбито","вбиты","вброшен","вброшена","вброшено","вброшены","вбухан","вбухана","вбухано","вбуханы","введен","введена","введено","введены","ввезен","ввезена","ввезено","ввезены","ввергнут","ввергнута","ввергнуто","ввергнуты","вверен","вверена","вверено","вверены","ввернут","ввернута","ввернуто","ввернуты","ввинчен","ввинчена","ввинчено","ввинчены","вдавлен","вдавлена","вдавлено","вдавлены","вдарен","вдарена","вдарено","вдарены","вдвинут","вдвинута","вдвинуто","вдвинуты","вделан","вделана","вделано","вделаны","вдет","вдета","вдето","вдеты","вдолблен","вдолблена","вдолблено","вдолблены","вдохновлен","вдохновлена","вдохновлено","вдохновлены","венчан","венчана","венчано","венчаны","вжат","вжата","вжато","вжаты","вживлен","вживлена","вживлено","вживлены","взбаламучен","взбаламучена","взбаламучено","взбаламучены","взбешен","взбешена","взбешено","взбешены","взбит","взбита","взбито","взбиты","взбодрен","взбодрена","взбодрено","взбодрены","взболтан","взболтана","взболтано","взболтаны","взбудоражена","взбудоражено","взбудоражены","взведен","взведена","взведено","взведены","взвешен","взвешена","взвешено","взвешены","взвинчен","взвинчена","взвинчено","взвинчены","взвихрен","взвихрена","взвихрено","взвихрены","взволнована","взволновано","взволнованы","взгромозжден","взгромозждена","взгромозждено","взгромозждены","вздернут","вздернута","вздернуто","вздернуты","вздет","вздета","вздето","вздеты","вздут","вздута","вздуто","вздуты","вздыблен","вздыблена","вздыблено","вздыблены","взлелеян","взлелеяна","взлелеяно","взлелеяны","взломан","взломана","взломано","взломаны","взлохмачен","взлохмачена","взлохмачено","взлохмачены","взметнут","взметнута","взметнуто","взметнуты","взмылен","взмылена","взмылено","взмылены","взнуздан","взнуздана","взнуздано","взнузданы","взорван","взорвана","взорвано","взорваны","взращен","взращена","взращено","взращены","взрезан","взрезана","взрезано","взрезаны","взрыхлен","взрыхлена","взрыхлено","взрыхлены","взъерошен","взъерошена","взъерошено","взъерошены","взыскан","взыскана","взыскано","взысканы","взят","взята","взято","взяты","видоизменен","видоизменена","видоизменено","видоизменены","визирован","визирована","визировано","визированы","вкачен","вкачена","вкачено","вкачены","вклеен","вклеена","вклеено","вклеены","включен","включена","включено","включены","вколот","вколота","вколото","вколоты","вколочен","вколочена","вколочено","вколочены","вкопан","вкопана","вкопано","вкопаны","вкраплен","вкраплена","вкраплено","вкраплены","вкушен","вкушена","вкушено","вкушены","влеплен","влеплена","влеплено","влеплены","влит","влита","влито","влиты","вложен","вложена","вложено","вложены","вмазан","вмазана","вмазано","вмазаны","вменен","вменена","вменено","вменены","вмещен","вмещена","вмещено","вмещены","вмонтирован","вмонтирована","вмонтировано","вмонтированы","вмурован","вмурована","вмуровано","вмурованы","вмят","вмята","вмято","вмяты","внедрен","внедрена","внедрено","внедрены","внесен","внесена","внесено","внесены","внушен","внушена","внушено","внушены","вобран","вобрана","вобрано","вобраны","вовлечен","вовлечена","вовлечено","вовлечены","вогнан","вогнана","вогнано","вогнаны","водворен","водворена","водворено","водворены","водружен","водружена","водружено","водружены","возбуждена","возбуждено","возбуждены","возведен","возведена","возведено","возведены","возвеличен","возвеличена","возвеличено","возвеличены","возвещен","возвещена","возвещено","возвещены","возвращен","возвращена","возвращено","возвращены","возвышен","возвышена","возвышено","возвышены","возглавлен","возглавлена","возглавлено","возглавлены","возглашен","возглашена","возглашено","возглашены","воздвигнут","воздвигнута","воздвигнуто","воздвигнуты","возделан","возделана","возделано","возделаны","возложен","возложена","возложено","возложены","возмещен","возмещена","возмещено","возмещены","возмущена","возмущено","возмущены","вознагражден","вознаграждена","вознаграждено","вознаграждены","вознесен","вознесена","вознесено","вознесены","возобновлен","возобновлена","возобновлено","возобновлены","возрожден","возрождена","возрождено","возрождены","воображен","воображена","воображено","воображены","воодушевлен","воодушевлена","воодушевлено","воодушевлены","вооружен","вооружена","вооружено","вооружены","воплощен","воплощена","воплощено","воплощены","вопрошен","вопрошена","вопрошено","вопрошены","воскрешен","воскрешена","воскрешено","воскрешены","воспет","воспета","воспето","воспеты","воспитана","воспитано","воспитаны","воспламенен","воспламенена","воспламенено","воспламенены","восполнен","восполнена","восполнено","восполнены","воспрещен","воспрещена","воспрещено","воспрещены","воспринят","воспринята","воспринято","восприняты","воспроизведен","воспроизведена","воспроизведено","воспроизведены","восславлен","восславлена","восславлено","восславлены","восстановлен","восстановлена","восстановлено","восстановлены","востребована","востребовано","востребованы","восхищен","восхищена","восхищено","восхищены","воткнут","воткнута","воткнуто","воткнуты","впаян","впаяна","впаяно","впаяны","впечатлен","впечатлена","впечатлено","впечатлены","вписан","вписана","вписано","вписаны","впитан","впитана","впитано","впитаны","впихнут","впихнута","впихнуто","впихнуты","вплетен","вплетена","вплетено","вплетены","вправлен","вправлена","вправлено","вправлены","впрыснут","впрыснута","впрыснуто","впрыснуты","впряжен","впряжена","впряжено","впряжены","впущен","впущена","впущено","впущены","вразумлен","вразумлена","вразумлено","вразумлены","врезан","врезана","врезано","врезаны","врублен","врублена","врублено","врублены","вручен","вручена","вручено","вручены","врыт","врыта","врыто","врыты","всажен","всажена","всажено","всажены","вселен","вселена","вселено","вселены","вскинут","вскинута","вскинуто","вскинуты","вскипячен","вскипячена","вскипячено","вскипячены","всколыхнут","всколыхнута","всколыхнуто","всколыхнуты","вскопан","вскопана","вскопано","вскопаны","вскормлен","вскормлена","вскормлено","вскормлены","вскружен","вскружена","вскружено","вскружены","вскрыт","вскрыта","вскрыто","вскрыты","всосан","всосана","всосано","всосаны","вспахан","вспахана","вспахано","вспаханы","вспенен","вспенена","вспенено","вспенены","всплеснут","всплеснута","всплеснуто","всплеснуты","всполошен","всполошена","всполошено","всполошены","вспорот","вспорота","вспорото","вспороты","вставлен","вставлена","вставлено","вставлены","встревожен","встревожена","встревожено","встревожены","встречен","встречена","встречено","встречены","встроен","встроена","встроено","встроены","встряхнут","встряхнута","встряхнуто","встряхнуты","всунут","всунута","всунуто","всунуты","всучен","всучена","всучено","всучены","втащен","втащена","втащено","втащены","втерт","втерта","втерто","втерты","втиснут","втиснута","втиснуто","втиснуты","втолкнут","втолкнута","втолкнуто","втолкнуты","втолкован","втолкована","втолковано","втолкованы","втоптан","втоптана","втоптано","втоптаны","втравлен","втравлена","втравлено","втравлены","втянут","втянута","втянуто","втянуты","вшит","вшита","вшито","вшиты","выбелен","выбелена","выбелено","выбелены","выбит","выбита","выбито","выбиты","выболтан","выболтана","выболтано","выболтаны","выбран","выбрана","выбрано","выбраны","выбрит","выбрита","выбрито","выбриты","выброшен","выброшена","выброшено","выброшены","вывален","вывалена","вывалено","вывалены","вывалян","вываляна","вываляно","вываляны","выварен","выварена","выварено","выварены","выведан","выведана","выведано","выведаны","выведен","выведена","выведено","выведены","вывезен","вывезена","вывезено","вывезены","выверен","выверена","выверено","выверены","вывернут","вывернута","вывернуто","вывернуты","выветрен","выветрена","выветрено","выветрены","вывешен","вывешена","вывешено","вывешены","вывихнут","вывихнута","вывихнуто","вывихнуты","вывожен","вывожена","вывожено","вывожены","выворочен","выворочена","выворочено","выворочены","выгадан","выгадана","выгадано","выгаданы","выглажен","выглажена","выглажено","выглажены","выгнан","выгнана","выгнано","выгнаны","выгнут","выгнута","выгнуто","выгнуты","выговорен","выговорена","выговорено","выговорены","выгорожен","выгорожена","выгорожено","выгорожены","выгравирован","выгравирована","выгравировано","выгравированы","выгребен","выгребена","выгребено","выгребены","выгружен","выгружена","выгружено","выгружены","выдавлен","выдавлена","выдавлено","выдавлены","выдвинут","выдвинута","выдвинуто","выдвинуты","выдворен","выдворена","выдворено","выдворены","выделан","выделана","выделано","выделаны","выделен","выделена","выделено","выделены","выдержан","выдержана","выдержано","выдержаны","выдернут","выдернута","выдернуто","выдернуты","выдолблен","выдолблена","выдолблено","выдолблены","выдохнут","выдохнута","выдохнуто","выдохнуты","выдран","выдрана","выдрано","выдраны","выдрессирована","выдрессировано","выдрессированы","выдуман","выдумана","выдумано","выдуманы","выдут","выдута","выдуто","выдуты","выжат","выжата","выжато","выжаты","выждан","выждана","выждано","выжданы","выжит","выжита","выжито","выжиты","выжран","выжрана","выжрано","выжраны","вызван","вызвана","вызвано","вызваны","вызволен","вызволена","вызволено","вызволены","вызнан","вызнана","вызнано","вызнаны","вызубрен","вызубрена","вызубрено","вызубрены","выигран","выиграна","выиграно","выиграны","выискан","выискана","выискано","выисканы","выказан","выказана","выказано","выказаны","выкачан","выкачана","выкачано","выкачаны","выкачен","выкачена","выкачено","выкачены","выкинут","выкинута","выкинуто","выкинуты","выклеван","выклевана","выклевано","выклеваны","выкликнут","выкликнута","выкликнуто","выкликнуты","выключен","выключена","выключено","выключены","выклянчен","выклянчена","выклянчено","выклянчены","выкован","выкована","выковано","выкованы","выковырян","выковыряна","выковыряно","выковыряны","выколот","выколота","выколото","выколоты","выколочен","выколочена","выколочено","выколочены","выкопан","выкопана","выкопано","выкопаны","выкормлен","выкормлена","выкормлено","выкормлены","выкорчеван","выкорчевана","выкорчевано","выкорчеваны","выкошен","выкошена","выкошено","выкошены","выкраден","выкрадена","выкрадено","выкрадены","выкрашен","выкрашена","выкрашено","выкрашены","выкрикнут","выкрикнута","выкрикнуто","выкрикнуты","выкроен","выкроена","выкроено","выкроены","выкручен","выкручена","выкручено","выкручены","выкупан","выкупана","выкупано","выкупаны","выкуплен","выкуплена","выкуплено","выкуплены","выкурен","выкурена","выкурено","выкурены","выкушен","выкушена","выкушено","выкушены","вылакан","вылакана","вылакано","вылаканы","вылеплен","вылеплена","вылеплено","вылеплены","вылечен","вылечена","вылечено","вылечены","вылизан","вылизана","вылизано","вылизаны","вылит","вылита","вылито","вылиты","выловлен","выловлена","выловлено","выловлены","выложен","выложена","выложено","выложены","выломан","выломана","выломано","выломаны","вылуплен","вылуплена","вылуплено","вылуплены","вымазан","вымазана","вымазано","вымазаны","выманен","выманена","выманено","выманены","вымаран","вымарана","вымарано","вымараны","вымахан","вымахана","вымахано","вымаханы","выменян","выменяна","выменяно","выменяны","выметен","выметена","выметено","выметены","вымолвлен","вымолвлена","вымолвлено","вымолвлены","вымолен","вымолена","вымолено","вымолены","вымотан","вымотана","вымотано","вымотаны","вымочен","вымочена","вымочено","вымочены","вымощен","вымощена","вымощено","вымощены","вымучен","вымучена","вымучено","вымучены","вымуштрован","вымуштрована","вымуштровано","вымуштрованы","вымыт","вымыта","вымыто","вымыты","вымышлен","вымышлена","вымышлено","вымышлены","вынесен","вынесена","вынесено","вынесены","выношен","выношена","выношено","выношены","вынужден","вынуждена","вынуждено","вынуждены","вынут","вынута","вынуто","вынуты","выпачкан","выпачкана","выпачкано","выпачканы","выпестован","выпестована","выпестовано","выпестованы","выпечен","выпечена","выпечено","выпечены","выпилен","выпилена","выпилено","выпилены","выписан","выписана","выписано","выписаны","выпит","выпита","выпито","выпиты","выпихнут","выпихнута","выпихнуто","выпихнуты","выплавлен","выплавлена","выплавлено","выплавлены","выплакан","выплакана","выплакано","выплаканы","выплачен","выплачена","выплачено","выплачены","выплеснут","выплеснута","выплеснуто","выплеснуты","выплюнут","выплюнута","выплюнуто","выплюнуты","выполнен","выполнена","выполнено","выполнены","выпорот","выпорота","выпорото","выпороты","выпотрошен","выпотрошена","выпотрошено","выпотрошены","выправлен","выправлена","выправлено","выправлены","выпровожен","выпровожена","выпровожено","выпровожены","выпростан","выпростана","выпростано","выпростаны","выпрошен","выпрошена","выпрошено","выпрошены","выпрямлен","выпрямлена","выпрямлено","выпрямлены","выпучен","выпучена","выпучено","выпучены","выпущен","выпущена","выпущено","выпущены","выпытан","выпытана","выпытано","выпытаны","выпячен","выпячена","выпячено","выпячены","выработан","выработана","выработано","выработаны","выражен","выражена","выражено","выражены","выращен","выращена","выращено","выращены","вырван","вырвана","вырвано","вырваны","вырезан","вырезана","вырезано","вырезаны","выровнян","выровняна","выровняно","выровняны","выронен","выронена","выронено","выронены","вырублен","вырублена","вырублено","вырублены","выруган","выругана","выругано","выруганы","выручен","выручена","выручено","выручены","вырыт","вырыта","вырыто","вырыты","высажен","высажена","высажено","высажены","высвечен","высвечена","высвечено","высвечены","высвобожден","высвобождена","высвобождено","высвобождены","выселен","выселена","выселено","выселены","высечен","высечена","высечено","высечены","высеян","высеяна","высеяно","высеяны","высижен","высижена","высижено","высижены","высказан","высказана","высказано","высказаны","выскоблен","выскоблена","выскоблено","выскоблены","выскребен","выскребена","выскребено","выскребены","выслан","выслана","выслано","высланы","выслежен","выслежена","выслежено","выслежены","выслужен","выслужена","выслужено","выслужены","выслушан","выслушана","выслушано","выслушаны","высмеян","высмеяна","высмеяно","высмеяны","высмотрен","высмотрена","высмотрено","высмотрены","высосан","высосана","высосано","высосаны","выспрошен","выспрошена","выспрошено","выспрошены","выставлен","выставлена","выставлено","выставлены","выстиран","выстирана","выстирано","выстираны","выстлан","выстлана","выстлано","выстланы","выстоян","выстояна","выстояно","выстояны","выстрадан","выстрадана","выстрадано","выстраданы","выстрелен","выстрелена","выстрелено","выстрелены","выстрижен","выстрижена","выстрижено","выстрижены","выстроен","выстроена","выстроено","выстроены","выструган","выстругана","выстругано","выструганы","выстужен","выстужена","выстужено","выстужены","высунут","высунута","высунуто","высунуты","высушен","высушена","высушено","высушены","высчитан","высчитана","высчитано","высчитаны","вытаращен","вытаращена","вытаращено","вытаращены","вытащен","вытащена","вытащено","вытащены","вытерплен","вытерплена","вытерплено","вытерплены","вытерт","вытерта","вытерто","вытерты","вытесан","вытесана","вытесано","вытесаны","вытеснен","вытеснена","вытеснено","вытеснены","выткан","выткана","выткано","вытканы","вытолкнут","вытолкнута","вытолкнуто","вытолкнуты","вытоптан","вытоптана","вытоптано","вытоптаны","выторгован","выторгована","выторговано","выторгованы","выточен","выточена","выточено","выточены","вытравлен","вытравлена","вытравлено","вытравлены","вытребован","вытребована","вытребовано","вытребованы","вытрясен","вытрясена","вытрясено","вытрясены","вытряхнут","вытряхнута","вытряхнуто","вытряхнуты","вытурен","вытурена","вытурено","вытурены","вытянут","вытянута","вытянуто","вытянуты","выужен","выужена","выужено","выужены","выучен","выучена","выучено","выучены","выхвачен","выхвачена","выхвачено","выхвачены","выхлебан","выхлебана","выхлебано","выхлебаны","выхлопотан","выхлопотана","выхлопотано","выхлопотаны","выхожен","выхожена","выхожено","выхожены","выхолощен","выхолощена","выхолощено","выхолощены","выцарапан","выцарапана","выцарапано","выцарапаны","вычеркнут","вычеркнута","вычеркнуто","вычеркнуты","вычерпан","вычерпана","вычерпано","вычерпаны","вычерчен","вычерчена","вычерчено","вычерчены","вычислен","вычислена","вычислено","вычислены","вычитан","вычитана","вычитано","вычитаны","вычищен","вычищена","вычищено","вычищены","вычленен","вычленена","вычленено","вычленены","вычтен","вычтена","вычтено","вычтены","вышвырнут","вышвырнута","вышвырнуто","вышвырнуты","вышит","вышита","вышито","вышиты","вышколен","вышколена","вышколено","вышколены","выщерблен","выщерблена","выщерблено","выщерблены","выщипан","выщипана","выщипано","выщипаны","выявлен","выявлена","выявлено","выявлены","выяснен","выяснена","выяснено","выяснены","газирована","газировано","газированы","гарантирован","гарантирована","гарантировано","гарантированы","гаркнут","гаркнута","гаркнуто","гаркнуты","гармонизирован","гармонизирована","гармонизировано","гармонизированы","герметизирован","герметизирована","герметизировано","герметизированы","глазирован","глазирована","глазировано","глазированы","госпитализирован","госпитализирована","госпитализировано","госпитализированы","грохнут","грохнута","грохнуто","грохнуты","дарован","дарована","даровано","дарованы","датирован","датирована","датировано","датированы","двинут","двинута","двинуто","двинуты","девальвирован","девальвирована","девальвировано","девальвированы","дегустирован","дегустирована","дегустировано","дегустированы","дезавуирован","дезавуирована","дезавуировано","дезавуированы","дезинфицирован","дезинфицирована","дезинфицировано","дезинфицированы","дезинформирован","дезинформирована","дезинформировано","дезинформированы","дезорганизован","дезорганизована","дезорганизовано","дезорганизованы","дезориентирован","дезориентирована","дезориентировано","дезориентированы","декларирован","декларирована","декларировано","декларированы","декорирован","декорирована","декорировано","декорированы","делегирован","делегирована","делегировано","делегированы","демаскирован","демаскирована","демаскировано","демаскированы","демобилизован","демобилизована","демобилизовано","демобилизованы","демонтирован","демонтирована","демонтировано","демонтированы","деморализован","деморализована","деморализовано","деморализованы","депонирован","депонирована","депонировано","депонированы","детализирован","детализирована","детализировано","детализированы","детерминирован","детерминирована","детерминировано","детерминированы","деформирован","деформирована","деформировано","деформированы","диагностирован","диагностирована","диагностировано","диагностированы","дисквалифицирован","дисквалифицирована","дисквалифицировано","дисквалифицированы","дискредитирован","дискредитирована","дискредитировано","дискредитированы","дискриминирован","дискриминирована","дискриминировано","дискриминированы","дислоцирован","дислоцирована","дислоцировано","дислоцированы","дисциплинирован","дисциплинирована","дисциплинировано","дисциплинированы","дифференцирован","дифференцирована","дифференцировано","дифференцированы","добавлен","добавлена","добавлено","добавлены","добит","добита","добито","добиты","доведен","доведена","доведено","доведены","довезен","довезена","довезено","довезены","доверен","доверена","доверено","доверены","довершен","довершена","довершено","довершены","довожен","довожена","довожено","довожены","догляжен","догляжена","догляжено","догляжены","догнан","догнана","догнано","догнаны","договорен","договорена","договорено","договорены","догонян","догоняна","догоняно","догоняны","доделан","доделана","доделано","доделаны","додуман","додумана","додумано","додуманы","дожат","дожата","дожато","дожаты","дожеван","дожевана","дожевано","дожеваны","дожит","дожита","дожито","дожиты","дозволен","дозволена","дозволено","дозволены","дозирован","дозирована","дозировано","дозированы","доигран","доиграна","доиграно","доиграны","доказан","доказана","доказано","доказаны","докончен","докончена","докончено","докончены","документирован","документирована","документировано","документированы","докурен","докурена","докурено","докурены","долбанут","долбанута","долбануто","долбануты","долит","долита","долито","долиты","доложен","доложена","доложено","доложены","домчан","домчана","домчано","домчаны","домыслен","домыслена","домыслено","домыслены","донесен","донесена","донесено","донесены","доношена","доношено","доношены","допет","допета","допето","допеты","допечен","допечена","допечено","допечены","дописан","дописана","дописано","дописаны","допит","допита","допито","допиты","доплачен","доплачена","доплачено","доплачены","дополнен","дополнена","дополнено","дополнены","допрошен","допрошена","допрошено","допрошены","допущен","допущена","допущено","допущены","доработан","доработана","доработано","доработаны","дорисован","дорисована","дорисовано","дорисованы","досажен","досажена","досажено","досажены","досказан","досказана","досказано","досказаны","дослушан","дослушана","дослушано","дослушаны","досмотрен","досмотрена","досмотрено","досмотрены","доставлен","доставлена","доставлено","доставлены","достроен","достроена","достроено","достроены","досчитан","досчитана","досчитано","досчитаны","дотащен","дотащена","дотащено","дотащены","дотянут","дотянута","дотянуто","дотянуты","дочитан","дочитана","дочитано","дочитаны","драматизирован","драматизирована","драматизировано","драматизированы","дренирован","дренирована","дренировано","дренированы","дублирован","дублирована","дублировано","дублированы","жахнут","жахнута","жахнуто","жахнуты","заасфальтирован","заасфальтирована","заасфальтировано","заасфальтированы","забаррикадирован","забаррикадирована","забаррикадировано","забаррикадированы","забинтован","забинтована","забинтовано","забинтованы","забит","забита","забито","забиты","заблеван","заблевана","заблевано","заблеваны","заблокирован","заблокирована","заблокировано","заблокированы","заболочена","заболочено","заболочены","заболтан","заболтана","заболтано","заболтаны","забракован","забракована","забраковано","забракованы","забран","забрана","забрано","забраны","забронирован","забронирована","забронировано","забронированы","забросан","забросана","забросано","забросаны","заброшен","заброшена","заброшено","заброшены","забрызган","забрызгана","забрызгано","забрызганы","завален","завалена","завалено","завалены","заварен","заварена","заварено","заварены","заведен","заведена","заведено","заведены","завезен","завезена","завезено","завезены","завербован","завербована","завербовано","завербованы","заверен","заверена","заверено","заверены","завернут","завернута","завернуто","завернуты","заверчен","заверчена","заверчено","заверчены","завершен","завершена","завершено","завершены","завешан","завешана","завешано","завешаны","завещан","завещана","завещано","завещаны","завиден","завидена","завидено","завидены","завизирован","завизирована","завизировано","завизированы","завинчен","завинчена","завинчено","завинчены","завит","завита","завито","завиты","завлечен","завлечена","завлечено","завлечены","завоеван","завоевана","завоевано","завоеваны","заворожен","заворожена","заворожено","заворожены","завуалирован","завуалирована","завуалировано","завуалированы","завышен","завышена","завышено","завышены","завязан","завязана","завязано","завязаны","загадан","загадана","загадано","загаданы","загажен","загажена","загажено","загажены","загашен","загашена","загашено","загашены","загипнотизирован","загипнотизирована","загипнотизировано","загипнотизированы","загипсован","загипсована","загипсовано","загипсованы","заглажен","заглажена","заглажено","заглажены","заглушен","заглушена","заглушено","заглушены","загнан","загнана","загнано","загнаны","загнут","загнута","загнуто","загнуты","заговорен","заговорена","заговорено","заговорены","загорожен","загорожена","загорожено","загорожены","заготовлен","заготовлена","заготовлено","заготовлены","заграбастан","заграбастана","заграбастано","заграбастаны","загребен","загребена","загребено","загребены","загримирован","загримирована","загримировано","загримированы","загромозжден","загромозждена","загромозждено","загромозждены","загружен","загружена","загружено","загружены","загрызен","загрызена","загрызено","загрызены","загрязнен","загрязнена","загрязнено","загрязнены","загублен","загублена","загублено","загублены","задавлен","задавлена","задавлено","задавлены","задвинут","задвинута","задвинуто","задвинуты","задействован","задействована","задействовано","задействованы","заделан","заделана","заделано","заделаны","задерган","задергана","задергано","задерганы","задержан","задержана","задержано","задержаны","задернут","задернута","задернуто","задернуты","задет","задета","задето","задеты","задобрен","задобрена","задобрено","задобрены","задолбан","задолбана","задолбано","задолбаны","задраен","задраена","задраено","задраены","задран","задрана","задрано","задраны","задрапирован","задрапирована","задрапировано","задрапированы","задуман","задумана","задумано","задуманы","задурен","задурена","задурено","задурены","задут","задута","задуто","задуты","задушен","задушена","задушено","задушены","задымлен","задымлена","задымлено","задымлены","заезжен","заезжена","заезжено","заезжены","зажарен","зажарена","зажарено","зажарены","зажат","зажата","зажато","зажаты","зажеван","зажевана","зажевано","зажеваны","зажит","зажита","зажито","зажиты","зажмурен","зажмурена","зажмурено","зажмурены","зазван","зазвана","зазвано","зазваны","заземлен","заземлена","заземлено","заземлены","зазубрен","зазубрена","зазубрено","зазубрены","заигран","заиграна","заиграно","заиграны","заимствован","заимствована","заимствовано","заимствованы","заинтересована","заинтересовано","заинтересованы","заинтригована","заинтриговано","заинтригованы","заказан","заказана","заказано","заказаны","закалена","закалено","закалены","закамуфлирован","закамуфлирована","закамуфлировано","закамуфлированы","закапан","закапана","закапано","закапаны","закатан","закатана","закатано","закатаны","закачан","закачана","закачано","закачаны","закачен","закачена","закачено","закачены","закидан","закидана","закидано","закиданы","закинут","закинута","закинуто","закинуты","заклеван","заклевана","заклевано","заклеваны","заклеен","заклеена","заклеено","заклеены","заклеймен","заклеймена","заклеймено","заклеймены","заклинен","заклинена","заклинено","заклинены","заключен","заключена","заключено","заключены","закован","закована","заковано","закованы","закодирован","закодирована","закодировано","закодированы","заколдован","заколдована","заколдовано","заколдованы","заколот","заколота","заколото","заколоты","заколочен","заколочена","заколочено","заколочены","закольцеван","закольцевана","закольцевано","закольцеваны","законсервирован","законсервирована","законсервировано","законсервированы","законспирирован","законспирирована","законспирировано","законспирированы","закончен","закончена","закончено","закончены","закопан","закопана","закопано","закопаны","закопчен","закопчена","закопчено","закопчены","закошен","закошена","закошено","закошены","закрашен","закрашена","закрашено","закрашены","закреплен","закреплена","закреплено","закреплены","закроен","закроена","закроено","закроены","закруглен","закруглена","закруглено","закруглены","закручен","закручена","закручено","закручены","закрыт","закрыта","закрыто","закрыты","закуплен","закуплена","закуплено","закуплены","закупорен","закупорена","закупорено","закупорены","закурен","закурена","закурено","закурены","закутан","закутана","закутано","закутаны","залажен","залажена","залажено","залажены","залатан","залатана","залатано","залатаны","залеплен","залеплена","залеплено","залеплены","залечен","залечена","залечено","залечены","зализан","зализана","зализано","зализаны","залит","залита","залито","залиты","заложен","заложена","заложено","заложены","заломлен","заломлена","заломлено","заломлены","заляпан","заляпана","заляпано","заляпаны","замазан","замазана","замазано","замазаны","заманен","заманена","заманено","заманены","замаран","замарана","замарано","замараны","замаскирован","замаскирована","замаскировано","замаскированы","замаслен","замаслена","замаслено","замаслены","замедлен","замедлена","замедлено","замедлены","заменен","заменена","заменено","заменены","замерен","замерена","замерено","замерены","замерян","замеряна","замеряно","замеряны","заметан","заметана","заметано","заметаны","заметен","заметена","заметено","заметены","замечен","замечена","замечено","замечены","замешан","замешана","замешано","замешаны","замешен","замешена","замешено","замешены","замещен","замещена","замещено","замещены","заминирован","заминирована","заминировано","заминированы","замкнут","замкнута","замкнуто","замкнуты","замолвлен","замолвлена","замолвлено","замолвлены","замолчан","замолчана","замолчано","замолчаны","замордован","замордована","замордовано","замордованы","заморен","заморена","заморено","заморены","заморожен","заморожена","заморожено","заморожены","заморочен","заморочена","заморочено","заморочены","замотан","замотана","замотано","замотаны","замочен","замочена","замочено","замочены","замурован","замурована","замуровано","замурованы","замусолен","замусолена","замусолено","замусолены","замутнен","замутнена","замутнено","замутнены","замучан","замучана","замучано","замучаны","замучен","замучена","замучено","замучены","замыкан","замыкана","замыкано","замыканы","замыт","замыта","замыто","замыты","замыщлен","замыщлена","замыщлено","замыщлены","замят","замята","замято","замяты","занавешен","занавешена","занавешено","занавешены","занесен","занесена","занесено","занесены","занижен","занижена","занижено","занижены","заношен","заношена","заношено","заношены","занят","занята","занято","заняты","заострен","заострена","заострено","заострены","запакован","запакована","запаковано","запакованы","запален","запалена","запалено","запалены","запасен","запасена","запасено","запасены","запатентован","запатентована","запатентовано","запатентованы","запахнут","запахнута","запахнуто","запахнуты","запачкан","запачкана","запачкано","запачканы","запаян","запаяна","запаяно","запаяны","запеленан","запеленана","запеленано","запеленаны","запеленгован","запеленгована","запеленговано","запеленгованы","заперт","заперта","заперто","заперты","запечатан","запечатана","запечатано","запечатаны","запечатлен","запечатлена","запечатлено","запечатлены","запечен","запечена","запечено","запечены","записан","записана","записано","записаны","запит","запита","запито","запиты","запихан","запихана","запихано","запиханы","запихнут","запихнута","запихнуто","запихнуты","запланирован","запланирована","запланировано","запланированы","заплатан","заплатана","заплатано","заплатаны","заплачен","заплачена","заплачено","заплачены","заплеван","заплевана","заплевано","заплеваны","заплетен","заплетена","заплетено","заплетены","запломбирован","запломбирована","запломбировано","запломбированы","заподозрен","заподозрена","заподозрено","заподозрены","заполнен","заполнена","заполнено","заполнены","заполонен","заполонена","заполонено","заполонены","заполучен","заполучена","заполучено","заполучены","запомнен","запомнена","запомнено","запомнены","запорот","запорота","запорото","запороты","запорошен","запорошена","запорошено","запорошены","заправлен","заправлена","заправлено","заправлены","запрещен","запрещена","запрещено","запрещены","запримечен","запримечена","запримечено","запримечены","запрограммирован","запрограммирована","запрограммировано","запрограммированы","запроектирован","запроектирована","запроектировано","запроектированы","запрокинут","запрокинута","запрокинуто","запрокинуты","запротоколирован","запротоколирована","запротоколировано","запротоколированы","запрошен","запрошена","запрошено","запрошены","запружен","запружена","запружено","запружены","запряжен","запряжена","запряжено","запряжены","запрятан","запрятана","запрятано","запрятаны","запуган","запугана","запугано","запуганы","запудрен","запудрена","запудрено","запудрены","запутан","запутана","запутано","запутаны","запущен","запущена","запущено","запущены","запылен","запылена","запылено","запылены","запятнан","запятнана","запятнано","запятнаны","заработан","заработана","заработано","заработаны","заражен","заражена","заражено","заражены","зарегистрирован","зарегистрирована","зарегистрировано","зарегистрированы","зарезан","зарезана","зарезано","зарезаны","зарезервирован","зарезервирована","зарезервировано","зарезервированы","зарекомендован","зарекомендована","зарекомендовано","зарекомендованы","зарешечен","зарешечена","зарешечено","зарешечены","зарисован","зарисована","зарисовано","зарисованы","зарифмован","зарифмована","зарифмовано","зарифмованы","зарублен","зарублена","зарублено","зарублены","зарыт","зарыта","зарыто","зарыты","заряжен","заряжена","заряжено","заряжены","засажен","засажена","засажено","засажены","засахарен","засахарена","засахарено","засахарены","засвечен","засвечена","засвечено","засвечены","засвидетельствован","засвидетельствована","засвидетельствовано","засвидетельствованы","засекречен","засекречена","засекречено","засекречены","заселен","заселена","заселено","заселены","засечен","засечена","засечено","засечены","засеян","засеяна","засеяно","засеяны","засижен","засижена","засижено","засижены","заскребен","заскребена","заскребено","заскребены","заслан","заслана","заслано","засланы","заслонен","заслонена","заслонено","заслонены","заслужен","заслужена","заслужено","заслужены","заслушан","заслушана","заслушано","заслушаны","заслышан","заслышана","заслышано","заслышаны","засмеян","засмеяна","засмеяно","засмеяны","заснят","заснята","заснято","засняты","засолен","засолена","засолено","засолены","засорен","засорена","засорено","засорены","засосан","засосана","засосано","засосаны","заспиртован","заспиртована","заспиртовано","заспиртованы","заставлен","заставлена","заставлено","заставлены","застазастат","застазастата","застазастато","застазастаты","застегнут","застегнута","застегнуто","застегнуты","застелен","застелена","застелено","застелены","застигнут","застигнута","застигнуто","застигнуты","застиран","застирана","застирано","застираны","застолблен","застолблена","застолблено","застолблены","застопорен","застопорена","застопорено","застопорены","застрахован","застрахована","застраховано","застрахованы","застрелен","застрелена","застрелено","застрелены","застроен","застроена","застроено","застроены","застрочен","застрочена","застрочено","застрочены","застужен","застужена","застужено","застужены","застукан","застукана","застукано","застуканы","заступлен","заступлена","заступлено","заступлены","засужен","засужена","засужено","засужены","засунут","засунута","засунуто","засунуты","засучен","засучена","засучено","засучены","засушен","засушена","засушено","засушены","засчитан","засчитана","засчитано","засчитаны","затаен","затаена","затаено","затаены","затаскан","затаскана","затаскано","затасканы","затащен","затащена","затащено","затащены","затворен","затворена","затворено","затворены","затемнен","затемнена","затемнено","затемнены","затенен","затенена","затенено","затенены","затерт","затерта","затерто","затерты","затерян","затеряна","затеряно","затеряны","затеян","затеяна","затеяно","затеяны","заткнут","заткнута","заткнуто","заткнуты","затмлен","затмлена","затмлено","затмлены","затолкан","затолкана","затолкано","затолканы","затоплен","затоплена","затоплено","затоплены","затоптан","затоптана","затоптано","затоптаны","заторможен","заторможена","заторможено","заторможены","затороплен","затороплена","затороплено","затороплены","заточен","заточена","заточено","заточены","затошнен","затошнена","затошнено","затошнены","затравлен","затравлена","затравлено","затравлены","затрачен","затрачена","затрачено","затрачены","затребован","затребована","затребовано","затребованы","затронут","затронута","затронуто","затронуты","затруднен","затруднена","затруднено","затруднены","затуманен","затуманена","затуманено","затуманены","затушеван","затушевана","затушевано","затушеваны","затушен","затушена","затушено","затушены","затыкан","затыкана","затыкано","затыканы","затянут","затянута","затянуто","затянуты","заужен","заужена","заужено","заужены","заучен","заучена","заучено","заучены","зафиксирован","зафиксирована","зафиксировано","зафиксированы","зафрахтован","зафрахтована","зафрахтовано","зафрахтованы","захвачен","захвачена","захвачено","захвачены","захламлен","захламлена","захламлено","захламлены","захлестнут","захлестнута","захлестнуто","захлестнуты","захлопнут","захлопнута","захлопнуто","захлопнуты","захожен","захожена","захожено","захожены","захоронен","захоронена","захоронено","захоронены","зацеплен","зацеплена","зацеплено","зацеплены","зачарована","зачаровано","зачарованы","зачат","зачата","зачато","зачаты","зачеркнут","зачеркнута","зачеркнуто","зачеркнуты","зачерпнут","зачерпнута","зачерпнуто","зачерпнуты","зачесан","зачесана","зачесано","зачесаны","зачехлен","зачехлена","зачехлено","зачехлены","зачислен","зачислена","зачислено","зачислены","зачитан","зачитана","зачитано","зачитаны","зачищен","зачищена","зачищено","зачищены","зачтен","зачтена","зачтено","зачтены","зашаркан","зашаркана","зашаркано","зашарканы","зашвырнут","зашвырнута","зашвырнуто","зашвырнуты","зашевелен","зашевелена","зашевелено","зашевелены","зашептан","зашептана","зашептано","зашептаны","зашит","зашита","зашито","зашиты","зашифрована","зашифровано","зашифрованы","зашнурован","зашнурована","зашнуровано","зашнурованы","заштопан","заштопана","заштопано","заштопаны","зашторен","зашторена","зашторено","зашторены","заштрихован","заштрихована","заштриховано","заштрихованы","защелкнут","защелкнута","защелкнуто","защелкнуты","защемлен","защемлена","защемлено","защемлены","защипан","защипана","защипано","защипаны","защищен","защищена","защищено","защищены","заявлен","заявлена","заявлено","заявлены","звезданут","звезданута","звездануто","звездануты","идеализирован","идеализирована","идеализировано","идеализированы","идентифицирован","идентифицирована","идентифицировано","идентифицированы","избавлен","избавлена","избавлено","избавлены","избалован","избалована","избаловано","избалованы","избит","избита","избито","избиты","изборозжден","изборозждена","изборозждено","изборозждены","избран","избрана","избрано","избраны","изваян","изваяна","изваяно","изваяны","изведан","изведана","изведано","изведаны","извергнут","извергнута","извергнуто","извергнуты","извещен","извещена","извещено","извещены","извинен","извинена","извинено","извинены","извлечен","извлечена","извлечено","извлечены","извращен","извращена","извращено","извращены","изгажен","изгажена","изгажено","изгажены","изгнан","изгнана","изгнано","изгнаны","изготовлен","изготовлена","изготовлено","изготовлены","изгрызен","изгрызена","изгрызено","изгрызены","издерган","издергана","издергано","издерганы","изжарен","изжарена","изжарено","изжарены","изжит","изжита","изжито","изжиты","излажен","излажена","излажено","излажены","излечен","излечена","излечено","излечены","излит","излита","излито","излиты","изловлен","изловлена","изловлено","изловлены","изложен","изложена","изложено","изложены","изломан","изломана","изломано","изломаны","измазан","измазана","измазано","измазаны","измельчен","измельчена","измельчено","измельчены","изменен","изменена","изменено","изменены","измерен","измерена","измерено","измерены","измерян","измеряна","измеряно","измеряны","измотан","измотана","измотано","измотаны","измочален","измочалена","измочалено","измочалены","измучен","измучена","измучено","измучены","измышлен","измышлена","измышлено","измышлены","измят","измята","измято","измяты","изнасилован","изнасилована","изнасиловано","изнасилованы","изничтожен","изничтожена","изничтожено","изничтожены","изношен","изношена","изношено","изношены","изнурен","изнурена","изнурено","изнурены","изобличен","изобличена","изобличено","изобличены","изображен","изображена","изображено","изображены","изобретен","изобретена","изобретено","изобретены","изодран","изодрана","изодрано","изодраны","изолирован","изолирована","изолировано","изолированы","изорван","изорвана","изорвано","изорваны","изранен","изранена","изранено","изранены","израсходован","израсходована","израсходовано","израсходованы","изрезан","изрезана","изрезано","изрезаны","изречен","изречена","изречено","изречены","изрешечен","изрешечена","изрешечено","изрешечены","изрисован","изрисована","изрисовано","изрисованы","изрублен","изрублена","изрублено","изрублены","изрыт","изрыта","изрыто","изрыты","изувечен","изувечена","изувечено","изувечены","изукрашен","изукрашена","изукрашено","изукрашены","изумлен","изумлена","изумлено","изумлены","изуродован","изуродована","изуродовано","изуродованы","изучен","изучена","изучено","изучены","изъезжен","изъезжена","изъезжено","изъезжены","изъявлен","изъявлена","изъявлено","изъявлены","изъят","изъята","изъято","изъяты","изыскан","изыскана","изыскано","изысканы","иллюстрирован","иллюстрирована","иллюстрировано","иллюстрированы","иммобилизован","иммобилизована","иммобилизовано","иммобилизованы","иммунизирован","иммунизирована","иммунизировано","иммунизированы","импортирован","импортирована","импортировано","импортированы","инвестирован","инвестирована","инвестировано","инвестированы","индивидуализирован","индивидуализирована","индивидуализировано","индивидуализированы","индуцирован","индуцирована","индуцировано","индуцированы","инкорпорирован","инкорпорирована","инкорпорировано","инкорпорированы","инкриминирован","инкриминирована","инкриминировано","инкриминированы","инкрустирован","инкрустирована","инкрустировано","инкрустированы","инкубирован","инкубирована","инкубировано","инкубированы","инспирирован","инспирирована","инспирировано","инспирированы","инсценирован","инсценирована","инсценировано","инсценированы","интегрирован","интегрирована","интегрировано","интегрированы","интенсифицирован","интенсифицирована","интенсифицировано","интенсифицированы","интервьюирован","интервьюирована","интервьюировано","интервьюированы","интернирован","интернирована","интернировано","интернированы","интерпретирован","интерпретирована","интерпретировано","интерпретированы","интонирован","интонирована","интонировано","интонированы","инфицирован","инфицирована","инфицировано","инфицированы","информирован","информирована","информировано","информированы","искажен","искажена","искажено","искажены","искалечен","искалечена","искалечено","искалечены","исключен","исключена","исключено","исключены","исковеркан","исковеркана","исковеркано","исковерканы","исколот","исколота","исколото","исколоты","искорежен","искорежена","искорежено","искорежены","искоренен","искоренена","искоренено","искоренены","искривлен","искривлена","искривлено","искривлены","искромсан","искромсана","искромсано","искромсаны","искрошен","искрошена","искрошено","искрошены","искупан","искупана","искупано","искупаны","искуплен","искуплена","искуплено","искуплены","искусан","искусана","искусано","искусаны","искушен","искушена","искушено","искушены","испачкан","испачкана","испачкано","испачканы","испепелен","испепелена","испепелено","испепелены","испечен","испечена","испечено","испечены","испещрен","испещрена","испещрено","испещрены","исписан","исписана","исписано","исписаны","испит","испита","испито","испиты","исповедан","исповедана","исповедано","исповеданы","исповедован","исповедована","исповедовано","исповедованы","испоганен","испоганена","испоганено","испоганены","исполнен","исполнена","исполнено","исполнены","исполосован","исполосована","исполосовано","исполосованы","использован","использована","использовано","использованы","испорчен","испорчена","испорчено","испорчены","исправлен","исправлена","исправлено","исправлены","испробован","испробована","испробовано","испробованы","испрошен","испрошена","испрошено","испрошены","испуган","испугана","испугано","испуганы","испущен","испущена","испущено","испущены","испытан","испытана","испытано","испытаны","иссечен","иссечена","иссечено","иссечены","исследован","исследована","исследовано","исследованы","иссушен","иссушена","иссушено","иссушены","истерзан","истерзана","истерзано","истерзаны","истерт","истерта","истерто","истерты","истолкован","истолкована","истолковано","истолкованы","истончен","истончена","истончено","истончены","истоплен","истоплена","истоплено","истоплены","истоптан","истоптана","истоптано","истоптаны","исторгнут","исторгнута","исторгнуто","исторгнуты","источен","источена","источено","источены","истощен","истощена","истощено","истощены","истрачен","истрачена","истрачено","истрачены","истреблен","истреблена","истреблено","истреблены","истребован","истребована","истребовано","истребованы","истрепан","истрепана","истрепано","истрепаны","исхожен","исхожена","исхожено","исхожены","исцарапан","исцарапана","исцарапано","исцарапаны","исцелен","исцелена","исцелено","исцелены","исчеркан","исчеркана","исчеркано","исчерканы","исчерпан","исчерпана","исчерпано","исчерпаны","исчислен","исчислена","исчислено","исчислены","казнен","казнена","казнено","казнены","канонизирован","канонизирована","канонизировано","канонизированы","капитализирован","капитализирована","капитализировано","капитализированы","кастрирован","кастрирована","кастрировано","кастрированы","катализирован","катализирована","катализировано","катализированы","катапультирован","катапультирована","катапультировано","катапультированы","квалифицирован","квалифицирована","квалифицировано","квалифицированы","кинут","кинута","кинуто","кинуты","классифицирован","классифицирована","классифицировано","классифицированы","кликнут","кликнута","кликнуто","кликнуты","клюнут","клюнута","клюнуто","клюнуты","ковырнут","ковырнута","ковырнуто","ковырнуты","кодирован","кодирована","кодировано","кодированы","кокнут","кокнута","кокнуто","кокнуты","командирован","командирована","командировано","командированы","комиссован","комиссована","комиссовано","комиссованы","компенсирован","компенсирована","компенсировано","компенсированы","конвертирован","конвертирована","конвертировано","конвертированы","конденсирован","конденсирована","конденсировано","конденсированы","кондиционирован","кондиционирована","кондиционировано","кондиционированы","конкретизирован","конкретизирована","конкретизировано","конкретизированы","консолидирован","консолидирована","консолидировано","консолидированы","констатирован","констатирована","констатировано","констатированы","конституирован","конституирована","конституировано","конституированы","контратакован","контратакована","контратаковано","контратакованы","контужен","контужена","контужено","контужены","конфискован","конфискована","конфисковано","конфискованы","кончен","кончена","кончено","кончены","координирован","координирована","координировано","координированы","коронован","коронована","короновано","коронованы","коррумпирована","коррумпировано","коррумпированы","кредитован","кредитована","кредитовано","кредитованы","кремирован","кремирована","кремировано","кремированы","крещен","крещена","крещено","крещены","куплен","куплена","куплено","куплены","курнут","курнута","курнуто","курнуты","куснут","куснута","куснуто","куснуты","легализован","легализована","легализовано","легализованы","легирован","легирована","легировано","легированы","ликвидирован","ликвидирована","ликвидировано","ликвидированы","лимитирован","лимитирована","лимитировано","лимитированы","лишен","лишена","лишено","лишены","лоббирован","лоббирована","лоббировано","лоббированы","локализован","локализована","локализовано","локализованы","лягнут","лягнута","лягнуто","лягнуты","маркирован","маркирована","маркировано","маркированы","массирован","массирована","массировано","массированы","материализован","материализована","материализовано","материализованы","механизирован","механизирована","механизировано","механизированы","минимизирован","минимизирована","минимизировано","минимизированы","минирован","минирована","минировано","минированы","минован","минована","миновано","минованы","мистифицирован","мистифицирована","мистифицировано","мистифицированы","мобилизован","мобилизована","мобилизовано","мобилизованы","моделирован","моделирована","моделировано","моделированы","модернизирован","модернизирована","модернизировано","модернизированы","модифицирован","модифицирована","модифицировано","модифицированы","монополизирован","монополизирована","монополизировано","монополизированы","мотивирована","мотивировано","мотивированы","мотнут","мотнута","мотнуто","мотнуты","набеган","набегана","набегано","набеганы","набит","набита","набито","набиты","наболтан","наболтана","наболтано","наболтаны","набран","набрана","набрано","набраны","набросан","набросана","набросано","набросаны","наброшен","наброшена","наброшено","наброшены","навален","навалена","навалено","навалены","наварен","наварена","наварено","наварены","наведен","наведена","наведено","наведены","навезен","навезена","навезено","навезены","навернут","навернута","навернуто","навернуты","наверстан","наверстана","наверстано","наверстаны","навешан","навешана","навешано","навешаны","навешен","навешена","навешено","навешены","навещен","навещена","навещено","навещены","навеян","навеяна","навеяно","навеяны","навлечен","навлечена","навлечено","навлечены","наводнен","наводнена","наводнено","наводнены","наворован","наворована","наворовано","наворованы","наворочен","наворочена","наворочено","наворочены","навострен","навострена","навострено","навострены","навьючен","навьючена","навьючено","навьючены","навязан","навязана","навязано","навязаны","нагадан","нагадана","нагадано","нагаданы","нагажен","нагажена","нагажено","нагажены","нагнан","нагнана","нагнано","нагнаны","нагнут","нагнута","нагнуто","нагнуты","наговорен","наговорена","наговорено","наговорены","нагонян","нагоняна","нагоняно","нагоняны","наготовлен","наготовлена","наготовлено","наготовлены","награблен","награблена","награблено","награблены","награжден","награждена","награждено","награждены","нагрет","нагрета","нагрето","нагреты","нагромозжден","нагромозждена","нагромозждено","нагромозждены","нагружен","нагружена","нагружено","нагружены","нагулян","нагуляна","нагуляно","нагуляны","надавлен","надавлена","надавлено","надавлены","надвинут","надвинута","надвинуто","надвинуты","наделан","наделана","наделано","наделаны","надерган","надергана","надергано","надерганы","надет","надета","надето","надеты","надкушен","надкушена","надкушено","надкушены","надломлен","надломлена","надломлено","надломлены","надоен","надоена","надоено","надоены","надорван","надорвана","надорвано","надорваны","надоумлен","надоумлена","надоумлено","надоумлены","надписан","надписана","надписано","надписаны","надраен","надраена","надраено","надраены","надран","надрана","надрано","надраны","надрезан","надрезана","надрезано","надрезаны","надстроен","надстроена","надстроено","надстроены","надуман","надумана","надумано","надуманы","надут","надута","надуто","надуты","надушен","надушена","надушено","надушены","нажарен","нажарена","нажарено","нажарены","нажат","нажата","нажато","нажаты","нажит","нажита","нажито","нажиты","назван","названа","названо","названы","назначен","назначена","назначено","назначены","наигран","наиграна","наиграно","наиграны","наказан","наказана","наказано","наказаны","накален","накалена","накалено","накалены","накапан","накапана","накапано","накапаны","накаркан","накаркана","накаркано","накарканы","накатан","накатана","накатано","накатаны","накачан","накачана","накачано","накачаны","накачен","накачена","накачено","накачены","накидан","накидана","накидано","накиданы","накинут","накинута","накинуто","накинуты","наклеен","наклеена","наклеено","наклеены","накликан","накликана","накликано","накликаны","наклонен","наклонена","наклонено","наклонены","наковырян","наковыряна","наковыряно","наковыряны","наколот","наколота","наколото","наколоты","накопан","накопана","накопано","накопаны","накоплен","накоплена","накоплено","накоплены","накормлен","накормлена","накормлено","накормлены","накостылян","накостыляна","накостыляно","накостыляны","накошен","накошена","накошено","накошены","накрахмален","накрахмалена","накрахмалено","накрахмалены","накрашен","накрашена","накрашено","накрашены","накрошен","накрошена","накрошено","накрошены","накручен","накручена","накручено","накручены","накрыт","накрыта","накрыто","накрыты","накуплен","накуплена","накуплено","накуплены","накурен","накурена","накурено","накурены","налажен","налажена","налажено","налажены","налеплен","налеплена","налеплено","налеплены","налетан","налетана","налетано","налетаны","налит","налита","налито","налиты","наловлен","наловлена","наловлено","наловлены","наложен","наложена","наложено","наложены","наломан","наломана","наломано","наломаны","намагничен","намагничена","намагничено","намагничены","намазан","намазана","намазано","намазаны","намалеван","намалевана","намалевано","намалеваны","наметан","наметана","наметано","наметаны","наметен","наметена","наметено","наметены","намечен","намечена","намечено","намечены","намешан","намешана","намешано","намешаны","намозолен","намозолена","намозолено","намозолены","наморщен","наморщена","наморщено","наморщены","намотан","намотана","намотано","намотаны","намочен","намочена","намочено","намочены","намылен","намылена","намылено","намылены","намыт","намыта","намыто","намыты","намят","намята","намято","намяты","нанесен","нанесена","нанесено","нанесены","нанизан","нанизана","нанизано","нанизаны","наношен","наношена","наношено","наношены","нанят","нанята","нанято","наняты","напет","напета","напето","напеты","напечатан","напечатана","напечатано","напечатаны","напечен","напечена","напечено","напечены","напилен","напилена","напилено","напилены","написан","написана","написано","написаны","напитан","напитана","напитано","напитаны","напихан","напихана","напихано","напиханы","напичкан","напичкана","напичкано","напичканы","наплакан","наплакана","наплакано","наплаканы","наплеван","наплевана","наплевано","наплеваны","наплетен","наплетена","наплетено","наплетены","напложен","напложена","напложено","напложены","напоен","напоена","напоено","напоены","наползан","наползана","наползано","наползаны","наполнен","наполнена","наполнено","наполнены","напомажен","напомажена","напомажено","напомажены","напомнен","напомнена","напомнено","напомнены","напорчен","напорчена","напорчено","напорчены","направлен","направлена","направлено","направлены","напророчен","напророчена","напророчено","напророчены","напряжен","напряжена","напряжено","напряжены","напуган","напугана","напугано","напуганы","напудрен","напудрена","напудрено","напудрены","напутан","напутана","напутано","напутаны","напутствован","напутствована","напутствовано","напутствованы","напущен","напущена","напущено","напущены","напялен","напялена","напялено","напялены","наработан","наработана","наработано","наработаны","наращен","наращена","наращено","наращены","нарезан","нарезана","нарезано","нарезаны","наречен","наречена","наречено","наречены","нарисован","нарисована","нарисовано","нарисованы","нарожден","нарождена","нарождено","нарождены","нарублен","нарублена","нарублено","нарублены","нарушен","нарушена","нарушено","нарушены","нарыт","нарыта","нарыто","нарыты","наряжен","наряжена","наряжено","наряжены","насажден","насаждена","насаждено","насаждены","насажен","насажена","насажено","насажены","населен","населена","населено","населены","насижен","насижена","насижено","насижены","наскребен","наскребена","наскребено","наскребены","наслан","наслана","наслано","насланы","наследован","наследована","наследовано","наследованы","насмешен","насмешена","насмешено","насмешены","насобиран","насобирана","насобирано","насобираны","насован","насована","насовано","насованы","насолен","насолена","насолено","насолены","наставлен","наставлена","наставлено","наставлены","настелен","настелена","настелено","настелены","настигнут","настигнута","настигнуто","настигнуты","настоян","настояна","настояно","настояны","настроен","настроена","настроено","настроены","настрочен","настрочена","настрочено","настрочены","насуплен","насуплена","насуплено","насуплены","насчитан","насчитана","насчитано","насчитаны","насыщен","насыщена","насыщено","насыщены","натаскан","натаскана","натаскано","натасканы","натерт","натерта","натерто","натерты","натолкнут","натолкнута","натолкнуто","натолкнуты","натоплен","натоплена","натоплено","натоплены","натоптан","натоптана","натоптано","натоптаны","наточен","наточена","наточено","наточены","натравлен","натравлена","натравлено","натравлены","натренирован","натренирована","натренировано","натренированы","натружен","натружена","натружено","натружены","натыкан","натыкана","натыкано","натыканы","натянут","натянута","натянуто","натянуты","научен","научена","научено","научены","нафарширован","нафарширована","нафаршировано","нафаршированы","нахлобучен","нахлобучена","нахлобучено","нахлобучены","нахмурен","нахмурена","нахмурено","нахмурены","нахожен","нахожена","нахожено","нахожены","нахохлен","нахохлена","нахохлено","нахохлены","нацарапан","нацарапана","нацарапано","нацарапаны","нацежен","нацежена","нацежено","нацежены","нацелен","нацелена","нацелено","нацелены","нацеплен","нацеплена","нацеплено","нацеплены","национализирован","национализирована","национализировано","национализированы","начат","начата","начато","начаты","начертан","начертана","начертано","начертаны","начерчен","начерчена","начерчено","начерчены","начинен","начинена","начинено","начинены","начислен","начислена","начислено","начислены","начищен","начищена","начищено","начищены","нашарен","нашарена","нашарено","нашарены","нашептан","нашептана","нашептано","нашептаны","нашинкован","нашинкована","нашинковано","нашинкованы","нашит","нашита","нашито","нашиты","нашпигован","нашпигована","нашпиговано","нашпигованы","нащупан","нащупана","нащупано","нащупаны","наэлектризован","наэлектризована","наэлектризовано","наэлектризованы","невзлюблен","невзлюблена","невзлюблено","невзлюблены","недогляжен","недогляжена","недогляжено","недогляжены","недоговорен","недоговорена","недоговорено","недоговорены","недоделан","недоделана","недоделано","недоделаны","недооценен","недооценена","недооценено","недооценены","недопит","недопита","недопито","недопиты","недоплачен","недоплачена","недоплачено","недоплачены","недополучен","недополучена","недополучено","недополучены","недопонят","недопонята","недопонято","недопоняты","недосказан","недосказана","недосказано","недосказаны","недослышан","недослышана","недослышано","недослышаны","недосмотрен","недосмотрена","недосмотрено","недосмотрены","опосредован","опосредована","опосредовано","опосредованы","оптимизирован","оптимизирована","оптимизировано","оптимизированы","отслежен","отслежена","отслежено","отслежены","перечеркнут","перечеркнута","перечеркнуто","перечеркнуты","перечислен","перечислена","перечислено","перечислены","перечитан","перечитана","перечитано","перечитаны","перечтен","перечтена","перечтено","перечтены","перешит","перешита","перешито","перешиты","персонифицирован","персонифицирована","персонифицировано","персонифицированы","пикирован","пикирована","пикировано","пикированы","пленен","пленена","пленено","пленены","плеснут","плеснута","плеснуто","плеснуты","пнут","пнута","пнуто","пнуты","побалован","побалована","побаловано","побалованы","побежден","побеждена","побеждено","побеждены","побелен","побелена","побелено","побелены","побережен","побережена","побережено","побережены","побеспокоен","побеспокоена","побеспокоено","побеспокоены","побит","побита","побито","побиты","поблагодарен","поблагодарена","поблагодарено","поблагодарены","побрит","побрита","побрито","побриты","побросан","побросана","побросано","побросаны","побужден","побуждена","побуждено","побуждены","побужен","побужена","побужено","побужены","повален","повалена","повалено","повалены","поведан","поведана","поведано","поведаны","поведен","поведена","поведено","поведены","повезен","повезена","повезено","повезены","повенчан","повенчана","повенчано","повенчаны","повергнут","повергнута","повергнуто","повергнуты","поверен","поверена","поверено","поверены","повернут","повернута","повернуто","повернуты","поверчен","поверчена","поверчено","поверчены","повешен","повешена","повешено","повешены","повеян","повеяна","повеяно","повеяны","повидан","повидана","повидано","повиданы","поврежден","повреждена","повреждено","повреждены","повторен","повторена","повторено","повторены","повышен","повышена","повышено","повышены","повязан","повязана","повязано","повязаны","погашен","погашена","погашено","погашены","поглажен","поглажена","поглажено","поглажены","поглощен","поглощена","поглощено","поглощены","погнут","погнута","погнуто","погнуты","пограблен","пограблена","пограблено","пограблены","погребен","погребена","погребено","погребены","погрет","погрета","погрето","погреты","погружен","погружена","погружено","погружены","погрызен","погрызена","погрызено","погрызены","погублен","погублена","погублено","погублены","подавлен","подавлена","подавлено","подавлены","подарен","подарена","подарено","подарены","подбит","подбита","подбито","подбиты","подбодрен","подбодрена","подбодрено","подбодрены","подброшен","подброшена","подброшено","подброшены","подвален","подвалена","подвалено","подвалены","подведен","подведена","подведено","подведены","подвезен","подвезена","подвезено","подвезены","подвергнут","подвергнута","подвергнуто","подвергнуты","подвернут","подвернута","подвернуто","подвернуты","подвешен","подвешена","подвешено","подвешены","подвигнут","подвигнута","подвигнуто","подвигнуты","подвинут","подвинута","подвинуто","подвинуты","подвязан","подвязана","подвязано","подвязаны","подгляжен","подгляжена","подгляжено","подгляжены","подговорен","подговорена","подговорено","подговорены","подготовлен","подготовлена","подготовлено","подготовлены","подделан","подделана","подделано","подделаны","поддержан","поддержана","поддержано","поддержаны","поддернут","поддернута","поддернуто","поддернуты","поддет","поддета","поддето","поддеты","поделен","поделена","поделено","поделены","подерган","подергана","подергано","подерганы","подержан","подержана","подержано","подержаны","подернут","подернута","подернуто","подернуты","поджарен","поджарена","поджарено","поджарены","поджат","поджата","поджато","поджаты","подзаработан","подзаработана","подзаработано","подзаработаны","подкараулен","подкараулена","подкараулено","подкараулены","подкачан","подкачана","подкачано","подкачаны","подкачен","подкачена","подкачено","подкачены","подкинут","подкинута","подкинуто","подкинуты","подклеен","подклеена","подклеено","подклеены","подключен","подключена","подключено","подключены","подкован","подкована","подковано","подкованы","подколот","подколота","подколото","подколоты","подкоплен","подкоплена","подкоплено","подкоплены","подкормлен","подкормлена","подкормлено","подкормлены","подкошен","подкошена","подкошено","подкошены","подкрашен","подкрашена","подкрашено","подкрашены","подкреплен","подкреплена","подкреплено","подкреплены","подкручен","подкручена","подкручено","подкручены","подкуплен","подкуплена","подкуплено","подкуплены","подлатан","подлатана","подлатано","подлатаны","подлечен","подлечена","подлечено","подлечены","подлит","подлита","подлито","подлиты","подловлен","подловлена","подловлено","подловлены","подложен","подложена","подложено","подложены","подмазан","подмазана","подмазано","подмазаны","подменен","подменена","подменено","подменены","подметан","подметана","подметано","подметаны","подметен","подметена","подметено","подметены","подмечен","подмечена","подмечено","подмечены","подмешан","подмешана","подмешано","подмешаны","подморожен","подморожена","подморожено","подморожены","подмочен","подмочена","подмочено","подмочены","подмыт","подмыта","подмыто","подмыты","подмят","подмята","подмято","подмяты","поднажат","поднажата","поднажато","поднажаты","поднесен","поднесена","поднесено","поднесены","подновлен","подновлена","подновлено","подновлены","подношен","подношена","подношено","подношены","поднят","поднята","поднято","подняты","подобран","подобрана","подобрано","подобраны","подогнан","подогнана","подогнано","подогнаны","подогнут","подогнута","подогнуто","подогнуты","подогрет","подогрета","подогрето","подогреты","пододвинут","пододвинута","пододвинуто","пододвинуты","подоен","подоена","подоено","подоены","подожжен","подожжена","подожжено","подожжены","подозван","подозвана","подозвано","подозваны","подорван","подорвана","подорвано","подорваны","подослан","подослана","подослано","подосланы","подоткнут","подоткнута","подоткнуто","подоткнуты","подпален","подпалена","подпалено","подпалены","подперт","подперта","подперто","подперты","подпилен","подпилена","подпилено","подпилены","подписан","подписана","подписано","подписаны","подпорчен","подпорчена","подпорчено","подпорчены","подпоясан","подпоясана","подпоясано","подпоясаны","подправлен","подправлена","подправлено","подправлены","подпущен","подпущена","подпущено","подпущены","подразделен","подразделена","подразделено","подразделены","подран","подрана","подрано","подраны","подрезан","подрезана","подрезано","подрезаны","подровнян","подровняна","подровняно","подровняны","подрублен","подрублена","подрублено","подрублены","подрулен","подрулена","подрулено","подрулены","подрумянен","подрумянена","подрумянено","подрумянены","подсажен","подсажена","подсажено","подсажены","подсвечен","подсвечена","подсвечено","подсвечены","подселен","подселена","подселено","подселены","подсечен","подсечена","подсечено","подсечены","подсказан","подсказана","подсказано","подсказаны","подслащен","подслащена","подслащено","подслащены","подслушан","подслушана","подслушано","подслушаны","подсмотрен","подсмотрена","подсмотрено","подсмотрены","подсоединен","подсоединена","подсоединено","подсоединены","подсолен","подсолена","подсолено","подсолены","подставлен","подставлена","подставлено","подставлены","подстегнут","подстегнута","подстегнуто","подстегнуты","подстелен","подстелена","подстелено","подстелены","подстережен","подстережена","подстережено","подстережены","подстрелен","подстрелена","подстрелено","подстрелены","подстрижен","подстрижена","подстрижено","подстрижены","подстроен","подстроена","подстроено","подстроены","подсунут","подсунута","подсунуто","подсунуты","подсушен","подсушена","подсушено","подсушены","подсчитан","подсчитана","подсчитано","подсчитаны","подтащен","подтащена","подтащено","подтащены","подтвержден","подтверждена","подтверждено","подтверждены","подтолкнут","подтолкнута","подтолкнуто","подтолкнуты","подточен","подточена","подточено","подточены","подтыкан","подтыкана","подтыкано","подтыканы","подтянут","подтянута","подтянуто","подтянуты","подучен","подучена","подучено","подучены","подхвачен","подхвачена","подхвачено","подхвачены","подцеплен","подцеплена","подцеплено","подцеплены","подчеркнут","подчеркнута","подчеркнуто","подчеркнуты","подчинен","подчинена","подчинено","подчинены","подчищен","подчищена","подчищено","подчищены","подшит","подшита","подшито","подшиты","подыгран","подыграна","подыграно","подыграны","подытожен","подытожена","подытожено","подытожены","пожалован","пожалована","пожаловано","пожалованы","пожарен","пожарена","пожарено","пожарены","пожат","пожата","пожато","пожаты","пожеван","пожевана","пожевано","пожеваны","пожертвован","пожертвована","пожертвовано","пожертвованы","пожран","пожрана","пожрано","пожраны","пожурен","пожурена","пожурено","пожурены","позабавлен","позабавлена","позабавлено","позабавлены","позаимствован","позаимствована","позаимствовано","позаимствованы","позван","позвана","позвано","позваны","позволен","позволена","позволено","позволены","поздравлен","поздравлена","поздравлено","поздравлены","позиционирован","позиционирована","позиционировано","позиционированы","познакомлен","познакомлена","познакомлено","познакомлены","познан","познана","познано","познаны","позолочен","позолочена","позолочено","позолочены","поигран","поиграна","поиграно","поиграны","поименован","поименована","поименовано","поименованы","пойман","поймана","поймано","пойманы","показан","показана","показано","показаны","покалечен","покалечена","покалечено","покалечены","покатан","покатана","покатано","покатаны","покачан","покачана","покачано","покачаны","покачен","покачена","покачено","покачены","покидан","покидана","покидано","покиданы","покинут","покинута","покинуто","покинуты","поклеван","поклевана","поклевано","поклеваны","поколебан","поколебана","поколебано","поколебаны","поколочен","поколочена","поколочено","поколочены","покончен","покончена","покончено","покончены","покорежен","покорежена","покорежено","покорежены","покорен","покорена","покорено","покорены","покормлен","покормлена","покормлено","покормлены","покороблен","покороблена","покороблено","покороблены","покошен","покошена","покошено","покошены","покрашен","покрашена","покрашено","покрашены","покривлен","покривлена","покривлено","покривлены","покритикован","покритикована","покритиковано","покритикованы","покрошен","покрошена","покрошено","покрошены","покружен","покружена","покружено","покружены","покручен","покручена","покручено","покручены","покрыт","покрыта","покрыто","покрыты","покупан","покупана","покупано","покупаны","покурен","покурена","покурено","покурены","покусан","покусана","покусано","покусаны","покушан","покушана","покушано","покушаны","полажен","полажена","полажено","полажены","полечен","полечена","полечено","полечены","полит","полита","полито","политы","половлен","половлена","половлено","половлены","положен","положена","положено","положены","поломан","поломана","поломано","поломаны","полоснут","полоснута","полоснуто","полоснуты","получен","получена","получено","получены","поляризован","поляризована","поляризовано","поляризованы","помазан","помазана","помазано","помазаны","помассирован","помассирована","помассировано","помассированы","поменян","поменяна","поменяно","поменяны","померен","померена","померено","померены","помечен","помечена","помечено","помечены","помешан","помешана","помешано","помешаны","помещен","помещена","помещено","помещены","помилован","помилована","помиловано","помилованы","помножен","помножена","помножено","помножены","помолвлен","помолвлена","помолвлено","помолвлены","помотан","помотана","помотано","помотаны","помрачен","помрачена","помрачено","помрачены","помыт","помыта","помыто","помыты","помянут","помянута","помянуто","помянуты","понаделан","понаделана","понаделано","понаделаны","понастроен","понастроена","понастроено","понастроены","понесен","понесена","понесено","понесены","понижен","понижена","понижено","понижены","поношена","поношено","поношены","понят","понята","понято","поняты","пообещан","пообещана","пообещано","пообещаны","поощрен","поощрена","поощрено","поощрены","поперчен","поперчена","поперчено","поперчены","попет","попета","попето","попеты","пописан","пописана","пописано","пописаны","попит","попита","попито","попиты","пополнен","пополнена","пополнено","пополнены","попорчен","попорчена","попорчено","попорчены","поправлен","поправлена","поправлено","поправлены","попран","попрана","попрано","попраны","попрекнут","попрекнута","попрекнуто","попрекнуты","поприветствован","поприветствована","поприветствовано","поприветствованы","попробован","попробована","попробовано","попробованы","попрошен","попрошена","попрошено","попрошены","попуган","попугана","попугано","попуганы","популяризирован","популяризирована","популяризировано","популяризированы","попутан","попутана","попутано","попутаны","порабощен","порабощена","порабощено","порабощены","порадован","порадована","порадовано","порадованы","поражен","поражена","поражено","поражены","поранен","поранена","поранено","поранены","пораскинут","пораскинута","пораскинуто","пораскинуты","порассказан","порассказана","порассказано","порассказаны","порасспрошен","порасспрошена","порасспрошено","порасспрошены","порван","порвана","порвано","порваны","порезан","порезана","порезано","порезаны","порекомендован","порекомендована","порекомендовано","порекомендованы","порешен","порешена","порешено","порешены","порожден","порождена","порождено","порождены","порубан","порубана","порубано","порубаны","порублен","порублена","порублено","порублены","поруган","поругана","поругано","поруганы","поручен","поручена","поручено","поручены","порушен","порушена","порушено","порушены","посажен","посажена","посажено","посажены","посвящен","посвящена","посвящено","посвящены","поселен","поселена","поселено","поселены","посеребрен","посеребрена","посеребрено","посеребрены","посещен","посещена","посещено","посещены","посеян","посеяна","посеяно","посеяны","поскребен","поскребена","поскребено","поскребены","послан","послана","послано","посланы","послушан","послушана","послушано","послушаны","посмотрен","посмотрена","посмотрено","посмотрены","посниман","поснимана","поснимано","посниманы","посолен","посолена","посолено","посолены","пососан","пососана","пососано","пососаны","посрамлен","посрамлена","посрамлено","посрамлены","поставлен","поставлена","поставлено","поставлены","постановлен","постановлена","постановлено","постановлены","постелен","постелена","постелено","постелены","постигнут","постигнута","постигнуто","постигнуты","постиран","постирана","постирано","постираны","пострелян","постреляна","постреляно","постреляны","пострижен","пострижена","пострижено","пострижены","построен","построена","построено","построены","постулирован","постулирована","постулировано","постулированы","посчитан","посчитана","посчитано","посчитаны","потереблен","потереблена","потереблено","потереблены","потерплен","потерплена","потерплено","потерплены","потерт","потерта","потерто","потерты","потерян","потеряна","потеряно","потеряны","потеснен","потеснена","потеснено","потеснены","потешен","потешена","потешено","потешены","потискан","потискана","потискано","потисканы","потоплен","потоплена","потоплено","потоплены","потоптан","потоптана","потоптано","потоптаны","потороплен","потороплена","потороплено","потороплены","потравлен","потравлена","потравлено","потравлены","потрачен","потрачена","потрачено","потрачены","потреблен","потреблена","потреблено","потреблены","потребован","потребована","потребовано","потребованы","потревожен","потревожена","потревожено","потревожены","потрепан","потрепана","потрепано","потрепаны","потроган","потрогана","потрогано","потроганы","потрушен","потрушена","потрушено","потрушены","потрясен","потрясена","потрясено","потрясены","потуплен","потуплена","потуплено","потуплены","потушен","потушена","потушено","потушены","потыкан","потыкана","потыкано","потыканы","потянут","потянута","потянуто","потянуты","поубавлен","поубавлена","поубавлено","поубавлены","поучен","поучена","поучено","поучены","похвален","похвалена","похвалено","похвалены","похерен","похерена","похерено","похерены","похищен","похищена","похищено","похищены","похлебан","похлебана","похлебано","похлебаны","похлопан","похлопана","похлопано","похлопаны","похоронен","похоронена","похоронено","похоронены","поцарапан","поцарапана","поцарапано","поцарапаны","поцелован","поцелована","поцеловано","поцелованы","почат","почата","почато","початы","почерпнут","почерпнута","почерпнуто","почерпнуты","почесан","почесана","почесано","почесаны","починен","починена","починено","починены","почитан","почитана","почитано","почитаны","почищен","почищена","почищено","почищены","почтен","почтена","почтено","почтены","почувствован","почувствована","почувствовано","почувствованы","пошатнут","пошатнута","пошатнуто","пошатнуты","пошевелен","пошевелена","пошевелено","пошевелены","пошит","пошита","пошито","пошиты","пощелкан","пощелкана","пощелкано","пощелканы","пощипан","пощипана","пощипано","пощипаны","пощупан","пощупана","пощупано","пощупаны","пояснен","пояснена","пояснено","пояснены","превозможен","превозможена","превозможено","превозможены","превращен","превращена","превращено","превращены","превышен","превышена","превышено","превышены","прегражен","прегражена","прегражено","прегражены","предварен","предварена","предварено","предварены","предвосхищен","предвосхищена","предвосхищено","предвосхищены","предложен","предложена","предложено","предложены","предназначен","предназначена","предназначено","предназначены","предначертан","предначертана","предначертано","предначертаны","предопределен","предопределена","предопределено","предопределены","предоставлен","предоставлена","предоставлено","предоставлены","предостережен","предостережена","предостережено","предостережены","предотвращен","предотвращена","предотвращено","предотвращены","предохранен","предохранена","предохранено","предохранены","предписан","предписана","предписано","предписаны","предположен","предположена","предположено","предположены","предпослан","предпослана","предпослано","предпосланы","предпочтен","предпочтена","предпочтено","предпочтены","предпринят","предпринята","предпринято","предприняты","предрасположен","предрасположена","предрасположено","предрасположены","предречен","предречена","предречено","предречены","предрешен","предрешена","предрешено","предрешены","предсказан","предсказана","предсказано","предсказаны","представлен","представлена","представлено","представлены","предугадан","предугадана","предугадано","предугаданы","предубежден","предубеждена","предубеждено","предубеждены","предусмотрен","предусмотрена","предусмотрено","предусмотрены","предъявлен","предъявлена","предъявлено","предъявлены","презентован","презентована","презентовано","презентованы","преисполнен","преисполнена","преисполнено","преисполнены","преклонен","преклонена","преклонено","преклонены","прекращен","прекращена","прекращено","прекращены","преломлен","преломлена","преломлено","преломлены","прельщен","прельщена","прельщено","прельщены","премирован","премирована","премировано","премированы","преображен","преображена","преображено","преображены","преодолен","преодолена","преодолено","преодолены","препарирован","препарирована","препарировано","препарированы","преподнесен","преподнесена","преподнесено","преподнесены","препровожен","препровожена","препровожено","препровожены","прерван","прервана","прервано","прерваны","пресечен","пресечена","пресечено","пресечены","преступлен","преступлена","преступлено","преступлены","претворен","претворена","претворено","претворены","претерплен","претерплена","претерплено","претерплены","преувеличен","преувеличена","преувеличено","преувеличены","прибавлен","прибавлена","прибавлено","прибавлены","прибережен","прибережена","прибережено","прибережены","прибит","прибита","прибито","прибиты","приближен","приближена","приближено","приближены","прибран","прибрана","прибрано","прибраны","привален","привалена","привалено","привалены","приварен","приварена","приварено","приварены","приведен","приведена","приведено","приведены","привезен","привезена","привезено","привезены","привешен","привешена","привешено","привешены","привинчен","привинчена","привинчено","привинчены","привит","привита","привито","привиты","привлечен","привлечена","привлечено","привлечены","привнесен","привнесена","привнесено","привнесены","приворожен","приворожена","приворожено","приворожены","привязан","привязана","привязано","привязаны","пригвозжен","пригвозжена","пригвозжено","пригвозжены","приглажен","приглажена","приглажено","приглажены","приглашен","приглашена","приглашено","приглашены","приглушен","приглушена","приглушено","приглушены","пригнан","пригнана","пригнано","пригнаны","пригнут","пригнута","пригнуто","пригнуты","приговорен","приговорена","приговорено","приговорены","приголублен","приголублена","приголублено","приголублены","приготовлен","приготовлена","приготовлено","приготовлены","пригрет","пригрета","пригрето","пригреты","пригублен","пригублена","пригублено","пригублены","придавлен","придавлена","придавлено","придавлены","придвинут","придвинута","придвинуто","придвинуты","приделан","приделана","приделано","приделаны","придержан","придержана","придержано","придержаны","придуман","придумана","придумано","придуманы","придушен","придушена","придушено","придушены","прижат","прижата","прижато","прижаты","прижит","прижита","прижито","прижиты","призван","призвана","призвано","призваны","приземлен","приземлена","приземлено","приземлены","признан","признана","признано","признаны","приказан","приказана","приказано","приказаны","прикарманен","прикарманена","прикарманено","прикарманены","прикачен","прикачена","прикачено","прикачены","прикинут","прикинута","прикинуто","прикинуты","приклеен","приклеена","приклеено","приклеены","приклонен","приклонена","приклонено","приклонены","прикован","прикована","приковано","прикованы","приколот","приколота","приколото","приколоты","приколочен","приколочена","приколочено","приколочены","прикомандирован","прикомандирована","прикомандировано","прикомандированы","прикончен","прикончена","прикончено","прикончены","прикормлен","прикормлена","прикормлено","прикормлены","прикреплен","прикреплена","прикреплено","прикреплены","прикручен","прикручена","прикручено","прикручены","прикрыт","прикрыта","прикрыто","прикрыты","прикуплен","прикуплена","прикуплено","прикуплены","прикушен","прикушена","прикушено","прикушены","прилажен","прилажена","прилажено","прилажены","приласкан","приласкана","приласкано","приласканы","прилеплен","прилеплена","прилеплено","прилеплены","прилит","прилита","прилито","прилиты","приложен","приложена","приложено","приложены","приманен","приманена","приманено","приманены","применен","применена","применено","применены","примерен","примерена","примерено","примерены","примерян","примеряна","примеряно","примеряны","примечен","примечена","примечено","примечены","примирен","примирена","примирено","примирены","приморожен","приморожена","приморожено","приморожены","примотан","примотана","примотано","примотаны","примят","примята","примято","примяты","принаряжен","принаряжена","принаряжено","принаряжены","принесен","принесена","принесено","принесены","принижен","принижена","принижено","принижены","принужден","принуждена","принуждено","принуждены","принят","принята","принято","приняты","приободрен","приободрена","приободрено","приободрены","приобретен","приобретена","приобретено","приобретены","приобщен","приобщена","приобщено","приобщены","приодет","приодета","приодето","приодеты","приостановлен","приостановлена","приостановлено","приостановлены","приотворен","приотворена","приотворено","приотворены","приоткрыт","приоткрыта","приоткрыто","приоткрыты","припаркован","припаркована","припарковано","припаркованы","припасен","припасена","припасено","припасены","припаян","припаяна","припаяно","припаяны","приперт","приперта","приперто","приперты","припечатан","припечатана","припечатано","припечатаны","припечен","припечена","припечено","припечены","приписан","приписана","приписано","приписаны","приплетен","приплетена","приплетено","приплетены","приплюснут","приплюснута","приплюснуто","приплюснуты","приплюсован","приплюсована","приплюсовано","приплюсованы","приподнят","приподнята","приподнято","приподняты","припомнен","припомнена","припомнено","припомнены","припорошен","припорошена","припорошено","припорошены","приправлен","приправлена","приправлено","приправлены","припрятан","припрятана","припрятано","припрятаны","припудрен","припудрена","припудрено","припудрены","припущен","припущена","припущено","припущены","приравнян","приравняна","приравняно","приравняны","приревнован","приревнована","приревновано","приревнованы","прирезан","прирезана","прирезано","прирезаны","пририсован","пририсована","пририсовано","пририсованы","приручен","приручена","приручено","приручены","присвоен","присвоена","присвоено","присвоены","прислан","прислана","прислано","присланы","прислонен","прислонена","прислонено","прислонены","присмотрен","присмотрена","присмотрено","присмотрены","присобачен","присобачена","присобачено","присобачены","присовокуплен","присовокуплена","присовокуплено","присовокуплены","присоединен","присоединена","присоединено","присоединены","присочинен","присочинена","присочинено","присочинены","приспособлен","приспособлена","приспособлено","приспособлены","приспущен","приспущена","приспущено","приспущены","приставлен","приставлена","приставлено","приставлены","пристегнут","пристегнута","пристегнуто","пристегнуты","пристрелен","пристрелена","пристрелено","пристрелены","пристрелян","пристреляна","пристреляно","пристреляны","пристроен","пристроена","пристроено","пристроены","приструнен","приструнена","приструнено","приструнены","пристукнут","пристукнута","пристукнуто","пристукнуты","пристыжен","пристыжена","пристыжено","пристыжены","присужден","присуждена","присуждено","присуждены","притащен","притащена","притащено","притащены","притворен","притворена","притворено","притворены","притерт","притерта","притерто","притерты","притиснут","притиснута","притиснуто","притиснуты","приткнут","приткнута","приткнуто","приткнуты","притоптан","притоптана","притоптано","притоптаны","приторможен","приторможена","приторможено","приторможены","притуплен","притуплена","притуплено","притуплены","притянут","притянута","притянуто","притянуты","приукрашен","приукрашена","приукрашено","приукрашены","приумножен","приумножена","приумножено","приумножены","приурочен","приурочена","приурочено","приурочены","приучен","приучена","приучено","приучены","прихвастнут","прихвастнута","прихвастнуто","прихвастнуты","прихвачен","прихвачена","прихвачено","прихвачены","прихлопнут","прихлопнута","прихлопнуто","прихлопнуты","прицеплен","прицеплена","прицеплено","прицеплены","причален","причалена","причалено","причалены","причащен","причащена","причащено","причащены","причесан","причесана","причесано","причесаны","причинен","причинена","причинено","причинены","причислен","причислена","причислено","причислены","пришит","пришита","пришито","пришиты","пришпилен","пришпилена","пришпилено","пришпилены","пришпорен","пришпорена","пришпорено","пришпорены","прищелкнут","прищелкнута","прищелкнуто","прищелкнуты","прищемлен","прищемлена","прищемлено","прищемлены","прищурен","прищурена","прищурено","прищурены","прищучен","прищучена","прищучено","прищучены","проанализирован","проанализирована","проанализировано","проанализированы","пробит","пробита","пробито","пробиты","проварен","проварена","проварено","проварены","проведан","проведана","проведано","проведаны","проведен","проведена","проведено","проведены","провезен","провезена","провезено","провезены","проверен","проверена","проверено","проверены","провернут","провернута","провернуто","провернуты","проветрен","проветрена","проветрено","проветрены","провозглашен","провозглашена","провозглашено","провозглашены","проглочен","проглочена","проглочено","проглочены","прогнан","прогнана","прогнано","прогнаны","прогнусавлен","прогнусавлена","прогнусавлено","прогнусавлены","проговорен","проговорена","проговорено","проговорены","прогрет","прогрета","прогрето","прогреты","прогрызен","прогрызена","прогрызено","прогрызены","прогулян","прогуляна","прогуляно","прогуляны","продавлен","продавлена","продавлено","продавлены","продвинут","продвинута","продвинуто","продвинуты","продезинфицирован","продезинфицирована","продезинфицировано","продезинфицированы","продекламирован","продекламирована","продекламировано","продекламированы","проделан","проделана","проделано","проделаны","продемонстрирован","продемонстрирована","продемонстрировано","продемонстрированы","продержан","продержана","продержано","продержаны","продернут","продернута","продернуто","продернуты","продет","продета","продето","продеты","продешевлен","продешевлена","продешевлено","продешевлены","продиктован","продиктована","продиктовано","продиктованы","продлен","продлена","продлено","продлены","продолжен","продолжена","продолжено","продолжены","продран","продрана","продрано","продраны","продублирован","продублирована","продублировано","продублированы","продуман","продумана","продумано","продуманы","продут","продута","продуто","продуты","продырявлен","продырявлена","продырявлено","продырявлены","прожарен","прожарена","прожарено","прожарены","прожеван","прожевана","прожевано","прожеваны","прожит","прожита","прожито","прожиты","прозван","прозвана","прозвано","прозваны","прозвонен","прозвонена","прозвонено","прозвонены","прознан","прознана","прознано","прознаны","проигран","проиграна","проиграно","проиграны","произведен","произведена","произведено","произведены","произнесен","произнесена","произнесено","произнесены","проиллюстрирован","проиллюстрирована","проиллюстрировано","проиллюстрированы","проинструктирован","проинструктирована","проинструктировано","проинструктированы","проинформирован","проинформирована","проинформировано","проинформированы","прокален","прокалена","прокалено","прокалены","прокатан","прокатана","прокатано","прокатаны","прокачан","прокачана","прокачано","прокачаны","прокачен","прокачена","прокачено","прокачены","прокипячен","прокипячена","прокипячено","прокипячены","проколот","проколота","проколото","проколоты","прокомментирован","прокомментирована","прокомментировано","прокомментированы","проконсультирован","проконсультирована","проконсультировано","проконсультированы","проконтролирован","проконтролирована","проконтролировано","проконтролированы","прокопан","прокопана","прокопано","прокопаны","прокопчен","прокопчена","прокопчено","прокопчены","прокручен","прокручена","прокручено","прокручены","прокурен","прокурена","прокурено","прокурены","прокушен","прокушена","прокушено","прокушены","пролечен","пролечена","пролечено","пролечены","пролистан","пролистана","пролистано","пролистаны","пролит","пролита","пролито","пролиты","проложен","проложена","проложено","проложены","проломлен","проломлена","проломлено","проломлены","пролонгирован","пролонгирована","пролонгировано","пролонгированы","промазан","промазана","промазано","промазаны","променян","променяна","променяно","променяны","промокнут","промокнута","промокнуто","промокнуты","промолвлен","промолвлена","промолвлено","промолвлены","проморожен","проморожена","проморожено","проморожены","промотан","промотана","промотано","промотаны","промочен","промочена","промочено","промочены","промыт","промыта","промыто","промыты","промямлен","промямлена","промямлено","промямлены","пронесен","пронесена","пронесено","пронесены","пронзен","пронзена","пронзено","пронзены","пронизан","пронизана","пронизано","пронизаны","проношен","проношена","проношено","проношены","пронумерован","пронумерована","пронумеровано","пронумерованы","пронюхан","пронюхана","пронюхано","пронюханы","пропахан","пропахана","пропахано","пропаханы","пропет","пропета","пропето","пропеты","пропечатан","пропечатана","пропечатано","пропечатаны","прописан","прописана","прописано","прописаны","пропит","пропита","пропито","пропиты","пропитан","пропитана","пропитано","пропитаны","пропихнут","пропихнута","пропихнуто","пропихнуты","проплакан","проплакана","проплакано","проплаканы","проплыт","проплыта","проплыто","проплыты","прополоскан","прополоскана","прополоскано","прополосканы","прополот","прополота","прополото","прополоты","пропорот","пропорота","пропорото","пропороты","пропущен","пропущена","пропущено","пропущены","пропылен","пропылена","пропылено","пропылены","проработан","проработана","проработано","проработаны","прорван","прорвана","прорвано","прорваны","прорежен","прорежена","прорежено","прорежены","прорезан","прорезана","прорезано","прорезаны","прорисован","прорисована","прорисовано","прорисованы","проронен","проронена","проронено","проронены","прорублен","прорублена","прорублено","прорублены","прорыт","прорыта","прорыто","прорыты","просажен","просажена","просажено","просажены","просверлен","просверлена","просверлено","просверлены","просветлен","просветлена","просветлено","просветлены","просвечен","просвечена","просвечено","просвечены","просвещен","просвещена","просвещено","просвещены","просвищен","просвищена","просвищено","просвищены","просечен","просечена","просечено","просечены","просеян","просеяна","просеяно","просеяны","просигнален","просигналена","просигналено","просигналены","просижен","просижена","просижено","просижены","просиплен","просиплена","просиплено","просиплены","прославлен","прославлена","прославлено","прославлены","прослежен","прослежена","прослежено","прослежены","прослушан","прослушана","прослушано","прослушаны","прослышан","прослышана","прослышано","прослышаны","просмолен","просмолена","просмолено","просмолены","просмотрен","просмотрена","просмотрено","просмотрены","просолен","просолена","просолено","просолены","просрочен","просрочена","просрочено","просрочены","проставлен","проставлена","проставлено","проставлены","простерт","простерта","простерто","простерты","простиран","простирана","простирано","простираны","прострелен","прострелена","прострелено","прострелены","прострочен","прострочена","прострочено","прострочены","простужен","простужена","простужено","простужены","простучан","простучана","простучано","простучаны","просунут","просунута","просунуто","просунуты","просушен","просушена","просушено","просушены","просчитан","просчитана","просчитано","просчитаны","протаранен","протаранена","протаранено","протаранены","протащен","протащена","протащено","протащены","протерт","протерта","протерто","протерты","противопоставлен","противопоставлена","противопоставлено","противопоставлены","проткнут","проткнута","проткнуто","проткнуты","протолкнут","протолкнута","протолкнуто","протолкнуты","протоплен","протоплена","протоплено","протоплены","протоптан","протоптана","протоптано","протоптаны","проторен","проторена","проторено","проторены","протыкан","протыкана","протыкано","протыканы","протянут","протянута","протянуто","протянуты","проучен","проучена","проучено","проучены","профильтрован","профильтрована","профильтровано","профильтрованы","профинансирован","профинансирована","профинансировано","профинансированы","профукан","профукана","профукано","профуканы","прохвачен","прохвачена","прохвачено","прохвачены","прохриплен","прохриплена","прохриплено","прохриплены","процарапан","процарапана","процарапано","процарапаны","процежен","процежена","процежено","процежены","процитирован","процитирована","процитировано","процитированы","прочерчен","прочерчена","прочерчено","прочерчены","прочесан","прочесана","прочесано","прочесаны","прочитан","прочитана","прочитано","прочитаны","прочищен","прочищена","прочищено","прочищены","прочтен","прочтена","прочтено","прочтены","прочувствован","прочувствована","прочувствовано","прочувствованы","прошаган","прошагана","прошагано","прошаганы","прошамкан","прошамкана","прошамкано","прошамканы","прошептан","прошептана","прошептано","прошептаны","прошиплен","прошиплена","прошиплено","прошиплены","прошит","прошита","прошито","прошиты","прошляплен","прошляплена","прошляплено","прошляплены","проштудирован","проштудирована","проштудировано","проштудированы","прощен","прощена","прощено","прощены","прощупан","прощупана","прощупано","прощупаны","проявлен","проявлена","проявлено","проявлены","прояснен","прояснена","прояснено","прояснены","пущен","пущена","пущено","пущены","пырнут","пырнута","пырнуто","пырнуты","радирован","радирована","радировано","радированы","разбавлен","разбавлена","разбавлено","разбавлены","разбазарен","разбазарена","разбазарено","разбазарены","разбережен","разбережена","разбережено","разбережены","разбит","разбита","разбито","разбиты","разболтан","разболтана","разболтано","разболтаны","разбомблен","разбомблена","разбомблено","разбомблены","разбросан","разбросана","разбросано","разбросаны","разбужен","разбужена","разбужено","разбужены","развален","развалена","развалено","развалены","разварен","разварена","разварено","разварены","разведан","разведана","разведано","разведаны","разведен","разведена","разведено","разведены","развезен","развезена","развезено","развезены","развенчан","развенчана","развенчано","развенчаны","развернут","развернута","развернуто","развернуты","развеселен","развеселена","развеселено","развеселены","развешан","развешана","развешано","развешаны","развешен","развешена","развешено","развешены","развеян","развеяна","развеяно","развеяны","развинчен","развинчена","развинчено","развинчены","развит","развита","развито","развиты","развлечен","развлечена","развлечено","развлечены","разворован","разворована","разворовано","разворованы","разворочен","разворочена","разворочено","разворочены","разворошен","разворошена","разворошено","разворошены","развращен","развращена","развращено","развращены","развязан","развязана","развязано","развязаны","разгадан","разгадана","разгадано","разгаданы","разглажен","разглажена","разглажено","разглажены","разглашен","разглашена","разглашено","разглашены","разгневан","разгневана","разгневано","разгневаны","разговорен","разговорена","разговорено","разговорены","разгорожен","разгорожена","разгорожено","разгорожены","разгорячен","разгорячена","разгорячено","разгорячены","разграблен","разграблена","разграблено","разграблены","разграничен","разграничена","разграничено","разграничены","разграфлен","разграфлена","разграфлено","разграфлены","разгребен","разгребена","разгребено","разгребены","разгромлен","разгромлена","разгромлено","разгромлены","разгружен","разгружена","разгружено","разгружены","разгрызен","разгрызена","разгрызено","разгрызены","раздавлен","раздавлена","раздавлено","раздавлены","раздарен","раздарена","раздарено","раздарены","раздвинут","раздвинута","раздвинуто","раздвинуты","раздвоен","раздвоена","раздвоено","раздвоены","разделан","разделана","разделано","разделаны","разделен","разделена","разделено","разделены","раздернут","раздернута","раздернуто","раздернуты","раздет","раздета","раздето","раздеты","раздолбан","раздолбана","раздолбано","раздолбаны","раздосадован","раздосадована","раздосадовано","раздосадованы","раздражен","раздражена","раздражено","раздражены","раздроблен","раздроблена","раздроблено","раздроблены","раздут","раздута","раздуто","раздуты","разжалоблен","разжалоблена","разжалоблено","разжалоблены","разжалован","разжалована","разжаловано","разжалованы","разжат","разжата","разжато","разжаты","разжеван","разжевана","разжевано","разжеваны","раззадорен","раззадорена","раззадорено","раззадорены","раззявлен","раззявлена","раззявлено","раззявлены","разинут","разинута","разинуто","разинуты","разлеплен","разлеплена","разлеплено","разлеплены","разлинован","разлинована","разлиновано","разлинованы","разлит","разлита","разлито","разлиты","различен","различена","различено","различены","разложен","разложена","разложено","разложены","разломан","разломана","разломано","разломаны","разломлен","разломлена","разломлено","разломлены","разлохмачен","разлохмачена","разлохмачено","разлохмачены","разлучен","разлучена","разлучено","разлучены","размазан","размазана","размазано","размазаны","размалеван","размалевана","размалевано","размалеваны","разменян","разменяна","разменяно","разменяны","разметан","разметана","разметано","разметаны","размечен","размечена","размечено","размечены","размешан","размешана","размешано","размешаны","размещен","размещена","размещено","размещены","разминирован","разминирована","разминировано","разминированы","размножен","размножена","размножено","размножены","размозжен","размозжена","размозжено","размозжены","размолот","размолота","размолото","размолоты","разморожен","разморожена","разморожено","разморожены","размотан","размотана","размотано","размотаны","размочен","размочена","размочено","размочены","размыкан","размыкана","размыкано","размыканы","размыт","размыта","размыто","размыты","размягчен","размягчена","размягчено","размягчены","размят","размята","размято","размяты","разнесен","разнесена","разнесено","разнесены","разношен","разношена","разношено","разношены","разнюхан","разнюхана","разнюхано","разнюханы","разнят","разнята","разнято","разняты","разоблачен","разоблачена","разоблачено","разоблачены","разобран","разобрана","разобрано","разобраны","разобщен","разобщена","разобщено","разобщены","разогнан","разогнана","разогнано","разогнаны","разогнут","разогнута","разогнуто","разогнуты","разогрет","разогрета","разогрето","разогреты","разодет","разодета","разодето","разодеты","разодран","разодрана","разодрано","разодраны","разожжен","разожжена","разожжено","разожжены","разозлен","разозлена","разозлено","разозлены","разомкнут","разомкнута","разомкнуто","разомкнуты","разорван","разорвана","разорвано","разорваны","разорен","разорена","разорено","разорены","разоружен","разоружена","разоружено","разоружены","разослан","разослана","разослано","разосланы","разостлан","разостлана","разостлано","разостланы","разочарован","разочарована","разочаровано","разочарованы","разработан","разработана","разработано","разработаны","разрежен","разрежена","разрежено","разрежены","разрезан","разрезана","разрезано","разрезаны","разрекламирован","разрекламирована","разрекламировано","разрекламированы","разрешен","разрешена","разрешено","разрешены","разрисован","разрисована","разрисовано","разрисованы","разрознен","разрознена","разрознено","разрознены","разрублен","разрублена","разрублено","разрублены","разрушен","разрушена","разрушено","разрушены","разрыт","разрыта","разрыто","разрыты","разряжен","разряжена","разряжено","разряжены","разубежден","разубеждена","разубеждено","разубеждены","разузнан","разузнана","разузнано","разузнаны","разукрашен","разукрашена","разукрашено","разукрашены","разут","разута","разуто","разуты","разучен","разучена","разучено","разучены","разъединен","разъединена","разъединено","разъединены","разъярен","разъярена","разъярено","разъярены","разъяснен","разъяснена","разъяснено","разъяснены","разъят","разъята","разъято","разъяты","разыгран","разыграна","разыграно","разыграны","разыскан","разыскана","разыскано","разысканы","ранен","ранена","ранено","ранены","ранжирован","ранжирована","ранжировано","ранжированы","раскален","раскалена","раскалено","раскалены","раскатан","раскатана","раскатано","раскатаны","раскачан","раскачана","раскачано","раскачаны","расквартирован","расквартирована","расквартировано","расквартированы","расквашен","расквашена","расквашено","расквашены","раскидан","раскидана","раскидано","раскиданы","раскинут","раскинута","раскинуто","раскинуты","расклеван","расклевана","расклевано","расклеваны","расклеен","расклеена","расклеено","расклеены","раскован","раскована","расковано","раскованы","расковырян","расковыряна","расковыряно","расковыряны","расколдован","расколдована","расколдовано","расколдованы","расколот","расколота","расколото","расколоты","расколочен","расколочена","расколочено","расколочены","раскопан","раскопана","раскопано","раскопаны","раскрашен","раскрашена","раскрашено","раскрашены","раскрепощен","раскрепощена","раскрепощено","раскрепощены","раскритикован","раскритикована","раскритиковано","раскритикованы","раскроен","раскроена","раскроено","раскроены","раскрошен","раскрошена","раскрошено","раскрошены","раскручен","раскручена","раскручено","раскручены","раскрыт","раскрыта","раскрыто","раскрыты","раскулачен","раскулачена","раскулачено","раскулачены","раскуплен","раскуплена","раскуплено","раскуплены","раскупорен","раскупорена","раскупорено","раскупорены","раскурен","раскурена","раскурено","раскурены","раскушен","раскушена","раскушено","раскушены","распакован","распакована","распаковано","распакованы","распален","распалена","распалено","распалены","распарен","распарена","распарено","распарены","распахан","распахана","распахано","распаханы","распахнут","распахнута","распахнуто","распахнуты","распечатан","распечатана","распечатано","распечатаны","распилен","распилена","распилено","распилены","расписан","расписана","расписано","расписаны","распит","распита","распито","распиты","расплавлен","расплавлена","расплавлено","расплавлены","распланирован","распланирована","распланировано","распланированы","распластан","распластана","распластано","распластаны","расплескан","расплескана","расплескано","расплесканы","расплющен","расплющена","расплющено","расплющены","распознан","распознана","распознано","распознаны","расположен","расположена","расположено","расположены","располосован","располосована","располосовано","располосованы","распорот","распорота","распорото","распороты","распотрошен","распотрошена","распотрошено","распотрошены","расправлен","расправлена","расправлено","расправлены","распределен","распределена","распределено","распределены","распробован","распробована","распробовано","распробованы","распростерт","распростерта","распростерто","распростерты","распространен","распространена","распространено","распространены","распряжен","распряжена","распряжено","распряжены","распрямлен","распрямлена","распрямлено","распрямлены","распуган","распугана","распугано","распуганы","распушен","распушена","распушено","распушены","распущен","распущена","распущено","распущены","распылен","распылена","распылено","распылены","распялен","распялена","распялено","распялены","распят","распята","распято","распяты","рассажен","рассажена","рассажено","рассажены","рассекречен","рассекречена","рассекречено","рассекречены","расселен","расселена","расселено","расселены","рассержен","рассержена","рассержено","рассержены","рассечен","рассечена","рассечено","рассечены","рассеян","рассеяна","рассеяно","рассеяны","рассказан","рассказана","рассказано","рассказаны","расследован","расследована","расследовано","расследованы","расслышан","расслышана","расслышано","расслышаны","рассмешен","рассмешена","рассмешено","рассмешены","рассмотрен","рассмотрена","рассмотрено","рассмотрены","рассортирован","рассортирована","рассортировано","рассортированы","расспрошен","расспрошена","расспрошено","расспрошены","рассредоточен","рассредоточена","рассредоточено","рассредоточены","расставлен","расставлена","расставлено","расставлены","расстегнут","расстегнута","расстегнуто","расстегнуты","расстелен","расстелена","расстелено","расстелены","расстрелян","расстреляна","расстреляно","расстреляны","расстроен","расстроена","расстроено","расстроены","рассчитан","рассчитана","рассчитано","рассчитаны","растащен","растащена","растащено","растащены","растворен","растворена","растворено","растворены","растерзан","растерзана","растерзано","растерзаны","растерт","растерта","растерто","растерты","растерян","растеряна","растеряно","растеряны","растлен","растлена","растлено","растлены","растолкан","растолкана","растолкано","растолканы","растолкован","растолкована","растолковано","растолкованы","растоплен","растоплена","растоплено","растоплены","растоптан","растоптана","растоптано","растоптаны","растопырен","растопырена","растопырено","растопырены","расторгнут","расторгнута","расторгнуто","расторгнуты","растормошен","растормошена","растормошено","растормошены","растравлен","растравлена","растравлено","растравлены","растрачен","растрачена","растрачено","растрачены","растревожен","растревожена","растревожено","растревожены","растрепан","растрепана","растрепано","растрепаны","растроган","растрогана","растрогано","растроганы","растрясен","растрясена","растрясено","растрясены","растянут","растянута","растянуто","растянуты","расфасован","расфасована","расфасовано","расфасованы","расформирован","расформирована","расформировано","расформированы","расхвален","расхвалена","расхвалено","расхвалены","расхлебан","расхлебана","расхлебано","расхлебаны","расцарапан","расцарапана","расцарапано","расцарапаны","расцвечен","расцвечена","расцвечено","расцвечены","расцелован","расцелована","расцеловано","расцелованы","расценен","расценена","расценено","расценены","расцеплен","расцеплена","расцеплено","расцеплены","расчерчен","расчерчена","расчерчено","расчерчены","расчесан","расчесана","расчесано","расчесаны","расчищен","расчищена","расчищено","расчищены","расчленен","расчленена","расчленено","расчленены","расшатан","расшатана","расшатано","расшатаны","расшвырян","расшвыряна","расшвыряно","расшвыряны","расшевелен","расшевелена","расшевелено","расшевелены","расширен","расширена","расширено","расширены","расшит","расшита","расшито","расшиты","расшифрован","расшифрована","расшифровано","расшифрованы","расщеплен","расщеплена","расщеплено","расщеплены","ратифицирован","ратифицирована","ратифицировано","ратифицированы","рационализирован","рационализирована","рационализировано","рационализированы","реабилитирован","реабилитирована","реабилитировано","реабилитированы","реализован","реализована","реализовано","реализованы","ревизован","ревизована","ревизовано","ревизованы","регенерирован","регенерирована","регенерировано","регенерированы","регламентирован","регламентирована","регламентировано","регламентированы","редуцирован","редуцирована","редуцировано","редуцированы","резервирован","резервирована","резервировано","резервированы","резюмирован","резюмирована","резюмировано","резюмированы","реквизирован","реквизирована","реквизировано","реквизированы","рекомендован","рекомендована","рекомендовано","рекомендованы","реконструирован","реконструирована","реконструировано","реконструированы","рекрутирован","рекрутирована","рекрутировано","рекрутированы","ремонтирован","ремонтирована","ремонтировано","ремонтированы","репрессирован","репрессирована","репрессировано","репрессированы","реставрирован","реставрирована","реставрировано","реставрированы","реформирован","реформирована","реформировано","реформированы","решен","решена","решено","решены","рожден","рождена","рождено","рождены","романтизирован","романтизирована","романтизировано","романтизированы","рукоположен","рукоположена","рукоположено","рукоположены","русифицирован","русифицирована","русифицировано","русифицированы","саботирован","саботирована","саботировано","саботированы","сагитирован","сагитирована","сагитировано","сагитированы","санкционирован","санкционирована","санкционировано","санкционированы","сбалансирован","сбалансирована","сбалансировано","сбалансированы","сбережен","сбережена","сбережено","сбережены","сбит","сбита","сбито","сбиты","сближен","сближена","сближено","сближены","сбрит","сбрита","сбрито","сбриты","сброшен","сброшена","сброшено","сброшены","сбрызнут","сбрызнута","сбрызнуто","сбрызнуты","свален","свалена","свалено","свалены","сварганен","сварганена","сварганено","сварганены","сварен","сварена","сварено","сварены","сведен","сведена","сведено","сведены","свезен","свезена","свезено","свезены","свергнут","свергнута","свергнуто","свергнуты","сверен","сверена","сверено","сверены","свернут","свернута","свернуто","свернуты","сверстан","сверстана","сверстано","сверстаны","свершен","свершена","свершено","свершены","свешен","свешена","свешено","свешены","свинчен","свинчена","свинчено","свинчены","свистнут","свистнута","свистнуто","свистнуты","свит","свита","свито","свиты","сворован","сворована","своровано","сворованы","сворочен","сворочена","сворочено","сворочены","связан","связана","связано","связаны","сглажен","сглажена","сглажено","сглажены","сгноен","сгноена","сгноено","сгноены","сгорблена","сгорблено","сгорблены","сготовлен","сготовлена","сготовлено","сготовлены","сгруппирован","сгруппирована","сгруппировано","сгруппированы","сгрызен","сгрызена","сгрызено","сгрызены","сгублен","сгублена","сгублено","сгублены","сгущен","сгущена","сгущено","сгущены","сдавлен","сдавлена","сдавлено","сдавлены","сдвинут","сдвинута","сдвинуто","сдвинуты","сдвоен","сдвоена","сдвоено","сдвоены","сделан","сделана","сделано","сделаны","сдержан","сдержана","сдержано","сдержаны","сдернут","сдернута","сдернуто","сдернуты","сдобрен","сдобрена","сдобрено","сдобрены","сдут","сдута","сдуто","сдуты","секуляризован","секуляризована","секуляризовано","секуляризованы","сенсибилизирован","сенсибилизирована","сенсибилизировано","сенсибилизированы","сервирован","сервирована","сервировано","сервированы","сжат","сжата","сжато","сжаты","сжеван","сжевана","сжевано","сжеваны","сжит","сжита","сжито","сжиты","сигнализирован","сигнализирована","сигнализировано","сигнализированы","симулирован","симулирована","симулировано","симулированы","синдицирован","синдицирована","синдицировано","синдицированы","синтезирован","синтезирована","синтезировано","синтезированы","синхронизирован","синхронизирована","синхронизировано","синхронизированы","систематизирован","систематизирована","систематизировано","систематизированы","сказан","сказана","сказано","сказаны","сказанут","сказанута","сказануто","сказануты","скачан","скачана","скачано","скачаны","скинут","скинута","скинуто","скинуты","складирован","складирована","складировано","складированы","склеван","склевана","склевано","склеваны","склеен","склеена","склеено","склеены","склонен","склонена","склонено","склонены","скован","скована","сковано","скованы","сколот","сколота","сколото","сколоты","сколочен","сколочена","сколочено","сколочены","скомандован","скомандована","скомандовано","скомандованы","скомкан","скомкана","скомкано","скомканы","скомпенсирован","скомпенсирована","скомпенсировано","скомпенсированы","скомпонован","скомпонована","скомпоновано","скомпонованы","скомпрометирован","скомпрометирована","скомпрометировано","скомпрометированы","сконструирован","сконструирована","сконструировано","сконструированы","сконцентрирован","сконцентрирована","сконцентрировано","сконцентрированы","скоординирован","скоординирована","скоординировано","скоординированы","скопирован","скопирована","скопировано","скопированы","скормлен","скормлена","скормлено","скормлены","скорректирован","скорректирована","скорректировано","скорректированы","скособочен","скособочена","скособочено","скособочены","скошен","скошена","скошено","скошены","скрашен","скрашена","скрашено","скрашены","скреплен","скреплена","скреплено","скреплены","скрещен","скрещена","скрещено","скрещены","скривлен","скривлена","скривлено","скривлены","скроен","скроена","скроено","скроены","скручен","скручена","скручено","скручены","скрыт","скрыта","скрыто","скрыты","скрючен","скрючена","скрючено","скрючены","скуплен","скуплена","скуплено","скуплены","скушан","скушана","скушано","скушаны","слажен","слажена","слажено","слажены","слеплен","слеплена","слеплено","слеплены","слизан","слизана","слизано","слизаны","слизнут","слизнута","слизнуто","слизнуты","слит","слита","слито","слиты","сличен","сличена","сличено","сличены","словлен","словлена","словлено","словлены","сложен","сложена","сложено","сложены","сломан","сломана","сломано","сломаны","сломлен","сломлена","сломлено","сломлены","слопан","слопана","слопано","слопаны","слуплен","слуплена","слуплено","слуплены","смазана","смазано","смазаны","смастерен","смастерена","смастерено","смастерены","сменен","сменена","сменено","сменены","сменян","сменяна","сменяно","сменяны","смерен","смерена","смерено","смерены","сметен","сметена","сметено","сметены","смешан","смешана","смешано","смешаны","смещен","смещена","смещено","смещены","смирен","смирена","смирено","смирены","смоделирован","смоделирована","смоделировано","смоделированы","смонтирован","смонтирована","смонтировано","смонтированы","сморен","сморена","сморено","сморены","сморожен","сморожена","сморожено","сморожены","сморщен","сморщена","сморщено","сморщены","смотан","смотана","смотано","смотаны","смочен","смочена","смочено","смочены","смыт","смыта","смыто","смыты","смягчен","смягчена","смягчено","смягчены","смят","смята","смято","смяты","снабжен","снабжена","снабжено","снабжены","снаряжен","снаряжена","снаряжено","снаряжены","снесен","снесена","снесено","снесены","снижен","снижена","снижено","снижены","снискан","снискана","снискано","снисканы","сношен","сношена","сношено","сношены","снят","снята","снято","сняты","соблазнен","соблазнена","соблазнено","соблазнены","соблюден","соблюдена","соблюдено","соблюдены","собран","собрана","собрано","собраны","совершен","совершена","совершено","совершены","совмещен","совмещена","совмещено","совмещены","совращен","совращена","совращено","совращены","согласован","согласована","согласовано","согласованы","согнан","согнана","согнано","согнаны","согнут","согнута","согнуто","согнуты","согрет","согрета","согрето","согреты","содеян","содеяна","содеяно","содеяны","содран","содрана","содрано","содраны","соединен","соединена","соединено","соединены","сожжен","сожжена","сожжено","сожжены","сожран","сожрана","сожрано","сожраны","созван","созвана","созвано","созваны","сокращен","сокращена","сокращено","сокращены","сокрушен","сокрушена","сокрушено","сокрушены","сокрыт","сокрыта","сокрыто","сокрыты","соображен","соображена","соображено","соображены","сообщен","сообщена","сообщено","сообщены","сооружен","сооружена","сооружено","сооружены","соотнесен","соотнесена","соотнесено","соотнесены","сопоставлен","сопоставлена","сопоставлено","сопоставлены","сопровожден","сопровождена","сопровождено","сопровождены","сопряжен","сопряжена","сопряжено","сопряжены","сорван","сорвана","сорвано","сорваны","сориентирован","сориентирована","сориентировано","сориентированы","сосватан","сосватана","сосватано","сосватаны","соскребен","соскребена","соскребено","соскребены","сослан","сослана","сослано","сосланы","сослужен","сослужена","сослужено","сослужены","сосредоточен","сосредоточена","сосредоточено","сосредоточены","составлен","составлена","составлено","составлены","состарен","состарена","состарено","состарены","сострижен","сострижена","сострижено","сострижены","состроен","состроена","состроено","состроены","состряпан","состряпана","состряпано","состряпаны","состыкован","состыкована","состыковано","состыкованы","сосчитан","сосчитана","сосчитано","сосчитаны","сотворен","сотворена","сотворено","сотворены","соткан","соткана","соткано","сотканы","сотрясен","сотрясена","сотрясено","сотрясены","сохранен","сохранена","сохранено","сохранены","сочинен","сочинена","сочинено","сочинены","сочтен","сочтена","сочтено","сочтены","спалена","спалено","спалены","спасен","спасена","спасено","спасены","спаян","спаяна","спаяно","спаяны","спеленан","спеленана","спеленано","спеленаны","сперт","сперта","сперто","сперты","спет","спета","спето","спеты","специализирован","специализирована","специализировано","специализированы","спешен","спешена","спешено","спешены","спилен","спилена","спилено","спилены","списан","списана","списано","списаны","спихнут","спихнута","спихнуто","спихнуты","сплавлен","сплавлена","сплавлено","сплавлены","спланирован","спланирована","спланировано","спланированы","сплетен","сплетена","сплетено","сплетены","сплочен","сплочена","сплочено","сплочены","сплюнут","сплюнута","сплюнуто","сплюнуты","сплющен","сплющена","сплющено","сплющены","сподоблен","сподоблена","сподоблено","сподоблены","сполоснут","сполоснута","сполоснуто","сполоснуты","спорот","спорота","спорото","спороты","справлен","справлена","справлено","справлены","спрессован","спрессована","спрессовано","спрессованы","спроважен","спроважена","спроважено","спроважены","спровоцирован","спровоцирована","спровоцировано","спровоцированы","спроектирован","спроектирована","спроектировано","спроектированы","спроецирован","спроецирована","спроецировано","спроецированы","спрошен","спрошена","спрошено","спрошены","спрятан","спрятана","спрятано","спрятаны","спущен","спущена","спущено","спущены","сработан","сработана","сработано","сработаны","сравнен","сравнена","сравнено","сравнены","сражен","сражена","сражено","сражены","сращен","сращена","сращено","сращены","срезан","срезана","срезано","срезаны","срисован","срисована","срисовано","срисованы","сровнян","сровняна","сровняно","сровняны","срубан","срубана","срубано","срубаны","срублен","срублена","срублено","срублены","ссажен","ссажена","ссажено","ссажены","ссужен","ссужена","ссужено","ссужены","стабилизирован","стабилизирована","стабилизировано","стабилизированы","станцеван","станцевана","станцевано","станцеваны","стащен","стащена","стащено","стащены","стерилизован","стерилизована","стерилизовано","стерилизованы","стерт","стерта","стерто","стерты","стесан","стесана","стесано","стесаны","стеснен","стеснена","стеснено","стеснены","стилизован","стилизована","стилизовано","стилизованы","стимулирован","стимулирована","стимулировано","стимулированы","стиснут","стиснута","стиснуто","стиснуты","столкнут","столкнута","столкнуто","столкнуты","стоптан","стоптана","стоптано","стоптаны","сточен","сточена","сточено","сточены","стравлен","стравлена","стравлено","стравлены","стрельнут","стрельнута","стрельнуто","стрельнуты","стреножен","стреножена","стреножено","стреножены","структурирован","структурирована","структурировано","структурированы","стряхнут","стряхнута","стряхнуто","стряхнуты","стукнут","стукнута","стукнуто","стукнуты","стырен","стырена","стырено","стырены","стянут","стянута","стянуто","стянуты","сублимирован","сублимирована","сублимировано","сублимированы","субсидирован","субсидирована","субсидировано","субсидированы","суммирован","суммирована","суммировано","суммированы","сунут","сунута","сунуто","сунуты","сфабрикован","сфабрикована","сфабриковано","сфабрикованы","сфокусирован","сфокусирована","сфокусировано","сфокусированы","сформирован","сформирована","сформировано","сформированы","сформулирован","сформулирована","сформулировано","сформулированы","сфотографирован","сфотографирована","сфотографировано","сфотографированы","схвачен","схвачена","схвачено","схвачены","схлопотан","схлопотана","схлопотано","схлопотаны","схоронен","схоронена","схоронено","схоронены","сцапан","сцапана","сцапано","сцапаны","сцементирован","сцементирована","сцементировано","сцементированы","сцеплен","сцеплена","сцеплено","сцеплены","сшит","сшита","сшито","сшиты","сыгран","сыграна","сыграно","сыграны","сэкономлен","сэкономлена","сэкономлено","сэкономлены","таранен","таранена","таранено","таранены","татуирован","татуирована","татуировано","татуированы","телеграфирован","телеграфирована","телеграфировано","телеграфированы","терроризирован","терроризирована","терроризировано","терроризированы","тиражирован","тиражирована","тиражировано","тиражированы","титулована","титуловано","титулованы","ткнут","ткнута","ткнуто","ткнуты","толкнут","толкнута","толкнуто","толкнуты","тонизирован","тонизирована","тонизировано","тонизированы","тонирован","тонирована","тонировано","тонированы","торпедирован","торпедирована","торпедировано","торпедированы","травмирован","травмирована","травмировано","травмированы","транслирован","транслирована","транслировано","транслированы","транспортирован","транспортирована","транспортировано","транспортированы","трансформирован","трансформирована","трансформировано","трансформированы","трассирован","трассирована","трассировано","трассированы","трахнут","трахнута","трахнуто","трахнуты","треснут","треснута","треснуто","треснуты","тронут","тронута","тронуто","тронуты","трудоустроен","трудоустроена","трудоустроено","трудоустроены","турнут","турнута","турнуто","турнуты","тюкнут","тюкнута","тюкнуто","тюкнуты","тяпнут","тяпнута","тяпнуто","тяпнуты","убавлен","убавлена","убавлено","убавлены","убаюкан","убаюкана","убаюкано","убаюканы","убежден","убеждена","убеждено","убеждены","убелен","убелена","убелено","убелены","убережен","убережена","убережено","убережены","убит","убита","убито","убиты","ублажен","ублажена","ублажено","ублажены","убран","убрана","убрано","убраны","убыстрен","убыстрена","убыстрено","убыстрены","уважен","уважена","уважено","уважены","уварен","уварена","уварено","уварены","уведен","уведена","уведено","уведены","уведомлен","уведомлена","уведомлено","уведомлены","увезен","увезена","увезено","увезены","увековечен","увековечена","увековечено","увековечены","увеличен","увеличена","увеличено","увеличены","увенчан","увенчана","увенчано","увенчаны","уверен","уверена","уверено","уверены","увешан","увешана","увешано","увешаны","увешен","увешена","увешено","увешены","увидан","увидана","увидано","увиданы","увиден","увидена","увидено","увидены","увит","увита","увито","увиты","увлажнен","увлажнена","увлажнено","увлажнены","увлечен","увлечена","увлечено","увлечены","увожен","увожена","увожено","увожены","уволен","уволена","уволено","уволены","уворован","уворована","уворовано","уворованы","увязан","увязана","увязано","увязаны","угадан","угадана","угадано","угаданы","углублен","углублена","углублено","углублены","угляжен","угляжена","угляжено","угляжены","угнан","угнана","угнано","угнаны","угнетен","угнетена","угнетено","угнетены","уговорен","уговорена","уговорено","уговорены","угомонен","угомонена","угомонено","угомонены","угонян","угоняна","угоняно","угоняны","угоразжен","угоразжена","угоразжено","угоразжены","уготован","уготована","уготовано","уготованы","уготовлен","уготовлена","уготовлено","уготовлены","угощен","угощена","угощено","угощены","угроблен","угроблена","угроблено","угроблены","угрохан","угрохана","угрохано","угроханы","удавлен","удавлена","удавлено","удавлены","удален","удалена","удалено","удалены","ударен","ударена","ударено","ударены","удвоен","удвоена","удвоено","удвоены","уделан","уделана","уделано","уделаны","уделен","уделена","уделено","уделены","удержан","удержана","удержано","удержаны","удесятерен","удесятерена","удесятерено","удесятерены","удешевлен","удешевлена","удешевлено","удешевлены","удивлен","удивлена","удивлено","удивлены","удлинен","удлинена","удлинено","удлинены","удобрен","удобрена","удобрено","удобрены","удовлетворен","удовлетворена","удовлетворено","удовлетворены","удостоверен","удостоверена","удостоверено","удостоверены","удостоен","удостоена","удостоено","удостоены","удочерен","удочерена","удочерено","удочерены","удружен","удружена","удружено","удружены","удручен","удручена","удручено","удручены","удуман","удумана","удумано","удуманы","удушен","удушена","удушено","удушены","ужален","ужалена","ужалено","ужалены","ужаснут","ужаснута","ужаснуто","ужаснуты","ужат","ужата","ужато","ужаты","узаконен","узаконена","узаконено","узаконены","узнан","узнана","узнано","узнаны","узурпирован","узурпирована","узурпировано","узурпированы","указан","указана","указано","указаны","укатан","укатана","укатано","укатаны","укачан","укачана","укачано","укачаны","укачен","укачена","укачено","укачены","укокошен","укокошена","укокошено","укокошены","уколот","уколота","уколото","уколоты","укомплектован","укомплектована","укомплектовано","укомплектованы","укорен","укорена","укорено","укорены","укоренен","укоренена","укоренено","укоренены","укорочен","укорочена","укорочено","укорочены","украден","украдена","украдено","украдены","украшен","украшена","украшено","украшены","укреплен","укреплена","укреплено","укреплены","укрощен","укрощена","укрощено","укрощены","укрупнен","укрупнена","укрупнено","укрупнены","укрыт","укрыта","укрыто","укрыты","укупорен","укупорена","укупорено","укупорены","укутан","укутана","укутано","укутаны","укушен","укушена","укушено","укушены","улажен","улажена","улажено","улажены","уличен","уличена","уличено","уличены","уловлен","уловлена","уловлено","уловлены","уложен","уложена","уложено","уложены","уломан","уломана","уломано","уломаны","улучен","улучена","улучено","улучены","улучшен","улучшена","улучшено","улучшены","умален","умалена","умалено","умалены","уменьшен","уменьшена","уменьшено","уменьшены","умерен","умерена","умерено","умерены","умерщвлен","умерщвлена","умерщвлено","умерщвлены","умещен","умещена","умещено","умещены","умилен","умилена","умилено","умилены","умиротворен","умиротворена","умиротворено","умиротворены","умножен","умножена","умножено","умножены","умолен","умолена","умолено","умолены","уморен","уморена","уморено","уморены","умотан","умотана","умотано","умотаны","умудрен","умудрена","умудрено","умудрены","умыкнут","умыкнута","умыкнуто","умыкнуты","умыт","умыта","умыто","умыты","умят","умята","умято","умяты","унаследован","унаследована","унаследовано","унаследованы","унесен","унесена","унесено","унесены","унижен","унижена","унижено","унижены","унизан","унизана","унизано","унизаны","унифицирован","унифицирована","унифицировано","унифицированы","уничтожен","уничтожена","уничтожено","уничтожены","унюхан","унюхана","унюхано","унюханы","унят","унята","унято","уняты","упакован","упакована","упаковано","упакованы","упасен","упасена","упасено","упасены","упечен","упечена","упечено","упечены","уплачен","уплачена","уплачено","уплачены","уплотнен","уплотнена","уплотнено","уплотнены","уподоблен","уподоблена","уподоблено","уподоблены","упоен","упоена","упоено","упоены","упокоен","упокоена","упокоено","упокоены","уполномочен","уполномочена","уполномочено","уполномочены","упомнен","упомнена","упомнено","упомнены","упомянут","упомянута","упомянуто","упомянуты","упорядочен","упорядочена","упорядочено","упорядочены","употреблен","употреблена","употреблено","употреблены","упразднен","упразднена","упразднено","упразднены","упрежден","упреждена","упреждено","упреждены","упрекнут","упрекнута","упрекнуто","упрекнуты","упрочен","упрочена","упрочено","упрочены","упрошен","упрошена","упрошено","упрошены","упрощен","упрощена","упрощено","упрощены","упрятан","упрятана","упрятано","упрятаны","упущен","упущена","упущено","упущены","уравновешен","уравновешена","уравновешено","уравновешены","уравнян","уравняна","уравняно","уравняны","урегулирован","урегулирована","урегулировано","урегулированы","урезан","урезана","урезано","урезаны","урезонен","урезонена","урезонено","урезонены","уронен","уронена","уронено","уронены","усажен","усажена","усажено","усажены","усвоен","усвоена","усвоено","усвоены","усечен","усечена","усечено","усечены","усеян","усеяна","усеяно","усеяны","усижен","усижена","усижено","усижены","усилен","усилена","усилено","усилены","ускорен","ускорена","ускорено","ускорены","услан","услана","услано","усланы","усложнен","усложнена","усложнено","усложнены","услыхан","услыхана","услыхано","услыханы","услышан","услышана","услышано","услышаны","усмирен","усмирена","усмирено","усмирены","усмотрен","усмотрена","усмотрено","усмотрены","усовершенствован","усовершенствована","усовершенствовано","усовершенствованы","успокоен","успокоена","успокоено","успокоены","усреднен","усреднена","усреднено","усреднены","уставлен","уставлена","уставлено","уставлены","установлен","установлена","установлено","установлены","устлан","устлана","устлано","устланы","устранен","устранена","устранено","устранены","устрашен","устрашена","устрашено","устрашены","устремлен","устремлена","устремлено","устремлены","устроен","устроена","устроено","устроены","уступлен","уступлена","уступлено","уступлены","усугублен","усугублена","усугублено","усугублены","усыновлен","усыновлена","усыновлено","усыновлены","усыплен","усыплена","усыплено","усыплены","утаен","утаена","утаено","утаены","утащен","утащена","утащено","утащены","утвержден","утверждена","утверждено","утверждены","утеплен","утеплена","утеплено","утеплены","утерт","утерта","утерто","утерты","утерян","утеряна","утеряно","утеряны","утешен","утешена","утешено","утешены","утилизирован","утилизирована","утилизировано","утилизированы","утихомирен","утихомирена","утихомирено","утихомирены","утолен","утолена","утолено","утолены","утопан","утопана","утопано","утопаны","утоплен","утоплена","утоплено","утоплены","утоптан","утоптана","утоптано","утоптаны","уточнен","уточнена","уточнено","уточнены","утрамбован","утрамбована","утрамбовано","утрамбованы","утрачен","утрачена","утрачено","утрачены","утрирован","утрирована","утрировано","утрированы","утроен","утроена","утроено","утроены","утрясен","утрясена","утрясено","утрясены","утыкан","утыкана","утыкано","утыканы","утяжелен","утяжелена","утяжелено","утяжелены","утянут","утянута","утянуто","утянуты","ухвачен","ухвачена","ухвачено","ухвачены","ухлопан","ухлопана","ухлопано","ухлопаны","ухожен","ухожена","ухожено","ухожены","ухудшен","ухудшена","ухудшено","ухудшены","уценен","уценена","уценено","уценены","учинен","учинена","учинено","учинены","учрежден","учреждена","учреждено","учреждены","учтен","учтена","учтено","учтены","учуян","учуяна","учуяно","учуяны","ушит","ушита","ушито","ушиты","ущемлен","ущемлена","ущемлено","ущемлены","ущипнут","ущипнута","ущипнуто","ущипнуты","уязвлен","уязвлена","уязвлено","уязвлены","уяснен","уяснена","уяснено","уяснены","фальсифицирован","фальсифицирована","фальсифицировано","фальсифицированы","фиксирован","фиксирована","фиксировано","фиксированы","финансирован","финансирована","финансировано","финансированы","фланкирован","фланкирована","фланкировано","фланкированы","форсирован","форсирована","форсировано","форсированы","характеризован","характеризована","характеризовано","характеризованы","хлестнут","хлестнута","хлестнуто","хлестнуты","хлопнут","хлопнута","хлопнуто","хлопнуты","цапнут","цапнута","цапнуто","цапнуты","царапнут","царапнута","царапнуто","царапнуты","централизован","централизована","централизовано","централизованы","центрифугирован","центрифугирована","центрифугировано","центрифугированы","цивилизован","цивилизована","цивилизовано","цивилизованы","черкнут","черкнута","черкнуто","черкнуты","четвертован","четвертована","четвертовано","четвертованы","чмокнут","чмокнута","чмокнуто","чмокнуты","шарахнут","шарахнута","шарахнуто","шарахнуты","швырнут","швырнута","швырнуто","швырнуты","шлепнут","шлепнута","шлепнуто","шлепнуты","шмякнут","шмякнута","шмякнуто","шмякнуты","шокирован","шокирована","шокировано","шокированы","щелкнут","щелкнута","щелкнуто","щелкнуты","эвакуирован","эвакуирована","эвакуировано","эвакуированы","экипирован","экипирована","экипировано","экипированы","экранизирован","экранизирована","экранизировано","экранизированы","экранирован","экранирована","экранировано","экранированы","экспонирован","экспонирована","экспонировано","экспонированы","экспортирован","экспортирована","экспортировано","экспортированы","экспроприирован","экспроприирована","экспроприировано","экспроприированы","экстрагирован","экстрагирована","экстрагировано","экстрагированы","экстраполирован","экстраполирована","экстраполировано","экстраполированы","эмитирован","эмитирована","эмитировано","эмитированы","эпатирован","эпатирована","эпатировано","эпатированы","этапирован","этапирована","этапировано","этапированы","эшелонирован","эшелонирована","эшелонировано","эшелонированы","явлен","явлена","явлено","явлены"].concat(["благословлён","введён","ввезён","вдохновлён","вживлён","взбешён","взбодрён","взведён","взвихрён","взгромозждён","взращён","взрыхлён","видоизменён","включён","вколочён","вкраплён","вкушён","вменён","вмещён","внедрён","внесён","внушён","вовлечён","водворён","водружён","возблагодарён","возбуждён","возведён","возвещён","возвращён","возглашён","возлюблён","возмещён","возмущён","вознаграждён","вознесён","возобновлён","возомнён","возрождён","вонждён","воображён","воодушевлён","вооружён","воплощён","вопрошён","ворочён","воскрешён","воспалён","воспламенён","воспрещён","воспроизведён","восстановлён","восхищён","вперён","впечатлён","вплетён","впряжён","вразумлён","врублён","вручён","вселён","вскипячён","вскормлён","вскружён","всполошён","выведён","доведён","довезён","довершён","догляжён","договорён","дозволён","донесён","допечён","дотерплён","завезён","завершён","завлечён","завожён","заворожён","загашён","заглублён","заглушён","заговорён","загорожён","загромозждён","загружён","загрязнён","задурён","задушён","задымлён","заземлён","зазубрён","закалён","заклеймён","заключён","закопчё","закреплён","закруглён","замедлён","заменён","заметён","замещён","заморён","занесён","заострён","запалён","запасён","запечатлён","запечён","заплетён","заполонён","запорошён","запрещён","запримечён","запрошён","запряжён","запылён","заражён","заряжён","заселён","заслонён","засолён","застолблён","застопорён","затаён","затворён","затемнён","затенён","затмлён","затруднён","захламлён","зацеплён","зачехлён","зачищён","зачтён","зашевелён","защемлён","защищён","избавлён","изборозждён","изведён","извещён","извинён","извлечён","извращён","измельчён","изменён","измышлён","изнурён","изобличён","изображён","изобретён","изречён","изумлён","изъявлён","искажён","исключён","искоренён","искривлён","искуплён","испепелён","испечён","испещрён","иссечён","иссушён","истончён","истощён","истреблён","казнён","крещён","лишён","наводнён","навострён","наговорён","награждён","нагромозждён","наделён","накалён","наклонён","наметён","нанесён","напечён","наплетён","напоён","напряжён","наречён","нарождён","насаждён","населён","насмешён","насторожён","натравлён","невзлюблён","недогляжён","недоговорён","недооценён","перечтён","пленён","побеждён","побелён","побережён","погашён","поглощён","погребён","погружён","подведён","подвезён","подговорён","подгребён","подключён","подкреплён","подкручён","подменён","поднесён","подожжён","подпалён","подразделён","подрублён","подрулён","подселён","подсечён","подслащён","подсоединён","подстелён","подстережён","подтверждён","подцеплён","подчинён","подчищён","поздравлён","позолочён","покорён","покривлён","помещён","понесён","поощрён","порабощён","поражён","порешён","порождён","посвящён","посеребрён","посмотрён","посрамлён","постановлён","потереблён","похоронён","почтён","пошевелён","пощажён","пояснён","превращён","прегражён","предварён","предвосхищён","предопределён","предостережён","предотвращён","предохранён","предпочтён","предречён","предрешён","предупреждён","презрён","преклонён","прекращён","преломлён","прельщён","преображён","преодолён","преподнесён","пресечён","преступлён","претворён","претерплён","прибережён","приближён","приведён","привезён","привлечён","привнесён","приворожён","пригвозжён","приглашён","приглушён","приговорён","приголублён","приземлён","приклонён","прикреплён","применён","принаряжён","принесён","принуждён","приободрён","приобретён","приобщён","приостановлён","приотворён","припасён","припечён","приплетён","приручён","прислонён","присмотрён","присовокуплён","присоединён","присочинён","приспособлён","приструнён","присуждён","притворён","провезён","проговорён","продешевлён","продлён","прозвонён","произведён","произнесён","прокалён","прокипячён","прокопчён","пронзён","пропылён","просверлён","просветлён","просвещён","просечён","просквожён","проторён","прочтён","прощён","проявлён","прояснён","разбережён","разбомблён","разведён","развезён","развеселён","разворошён","развращён","разглашён","разговорён","разгорожён","разгорячён","разграфлён","разгребён","разгромлён","разделён","раздражён","раздразнён","раздроблён","разлеплён","разлучён","размещён","размозжён","разморён","размягчён","разнесён","разоблачён","разобщён","разожжён","разозлён","разорён","разоружён","разрежён","разрешён","разубеждён","разъединён","разъярён","разъяснён","раскалён","расклешён","раскрепощён","раскроён","распалён","распотрошён","распределён","распространён","распряжён","распрямлён","рассмешён","растворён","растлён","растормошён","растрясён","расценён","расцеплён","расчленён","расшевелён","расщеплён","сбережён","свершён","сгноён","сгущён","сожжён","склонён","скреплён","скрещён","скривлён","скручён","сличён","словлён","сметён","смещён","смущён","смягчён","снабжён","снаряжён","снесён","соблазнён","соблюдён","совершён","совмещён","совращён","соединён","сокращён","сокрушён","соображён","сообщён","сооружён","соотнесён","сопоставлён","сопровождён","сопряжён","сотворён","сотрясён","сохранён","сочинён","сочтён","спалён","сплетён","сравнён","сражён","стеснён","съязвлён","убеждён","убелён","убережён","ублажён","убыстрён","уведён","увезён","увлажнён","увлечён","углублён","угнетён","уговорён","угомонён","угощён","удесятерён","удешевлён","удлинён","удобрён","удовлетворён","удочерён","удручён","укоренён","укреплён","укрощён","укрупнён","уличён","улучён","умалён","умерщвлён","умещён","умилён","умиротворён","умолён","уморён","умудрён","унесён","упасён","упечён","уплотнён","упоён","употреблён","упразднён","упреждён","упрощён","усечён","усложнён","усреднён","устранён","устрашён","устремлён","усыновлён","усыплён","утаён","утверждён","утеплён","утолён","утомлён","уточнён","утрясён","утяжелён","учреждён","учтён","ущемлён","уязвлён","уяснён","явлён"],["ввёрнут","ввёрнута","ввёрнуто","ввёрнуты","вздёрнут","вздёрнута","вздёрнуто","вздёрнуты","втёрт","втёрта","втёрто","втёрты","завёрнут","завёрнута","завёрнуто","завёрнуты","задёрнут","задёрнута","задёрнуто","задёрнуты","замётан","замётана","замётано","замётаны","запелёнан","запелёнана","запелёнано","запелёнаны","заплёван","заплёвана","заплёвано","заплёваны","затёрт","затёрта","затёрто","затёрты","зачёркнут","зачёркнута","зачёркнуто","зачёркнуты","зачёрпнут","зачёрпнута","зачёрпнуто","зачёрпнуты","зачёсан","зачёсана","зачёсано","зачёсаны","зашёптан","зашёптана","зашёптано","зашёптаны","защёлкнут","защёлкнута","защёлкнуто","защёлкнуты","искорёжен","искорёжена","искорёжено","искорёжены","истёрт","истёрта","истёрто","истёрты","исчёркан","исчёркана","исчёркано","исчёрканы","исчёрпан","исчёрпана","исчёрпано","исчёрпаны","навёрнут","навёрнута","навёрнуто","навёрнуты","намётан","намётана","намётано","намётаны","наплёван","наплёвана","наплёвано","наплёваны","натёрт","натёрта","натёрто","натёрты","начёртан","начёртана","начёртано","начёртаны","начёрчен","начёрчена","начёрчено","начёрчены","нашёптан","нашёптана","нашёптано","нашёптаны","перечёркнут","перечёркнута","перечёркнуто","перечёркнуты","повёрнут","повёрнута","повёрнуто","повёрнуты","подвёрнут","подвёрнута","подвёрнуто","подвёрнуты","подёрнут","подёрнута","подёрнуто","подёрнуты","поддёрнут","поддёрнута","поддёрнуто","поддёрнуты","подмётан","подмётана","подмётано","подмётаны","подпёрт","подпёрта","подпёрто","подпёрты","подчёркнут","подчёркнута","подчёркнуто","подчёркнуты","пожёван","пожёвана","пожёвано","пожёваны","покорёжен","покорёжена","покорёжено","покорёжены","потёрт","потёрта","потёрто","потёрты","пощёлкан","пощёлкана","пощёлкано","пощёлканы","почёрпнут","почёрпнута","почёрпнуто","почёрпнуты","почёсан","почёсана","почёсано","почёсаны","притёрт","притёрта","притёрто","притёрты","причёсан","причёсана","причёсано","причёсаны","прищёлкнут","прищёлкнута","прищёлкнуто","прищёлкнуты","провёрнут","провёрнута","провёрнуто","провёрнуты","продёрнут","продёрнута","продёрнуто","продёрнуты","прожёван","прожёвана","прожёвано","прожёваны","простёрт","простёрта","простёрто","простёрты","протёрт","протёрта","протёрто","протёрты","прочёсан","прочёсана","прочёсано","прочёсаны","прошёптан","прошёптана","прошёптано","прошёптаны","развёрнут","развёрнута","развёрнуто","развёрнуты","раздёрнут","раздёрнута","раздёрнуто","раздёрнуты","разжёван","разжёвана","разжёвано","разжёваны","размётан","размётана","размётано","размётаны","распростёрт","распростёрта","распростёрто","распростёрты","растёрт","растёрта","растёрто","растёрты","расчёсан","расчёсана","расчёсано","расчёсаны","свёрнут","свёрнута","свёрнуто","свёрнуты","свёрстан","свёрстана","свёрстано","свёрстаны","сдёрнут","сдёрнута","сдёрнуто","сдёрнуты","сжёван","сжёвана","сжёвано","сжёваны","склёван","склёвана","склёвано","склёваны","спелёнан","спелёнана","спелёнано","спелёнаны","стёрт","стёрта","стёрто","стёрты","стёсан","стёсана","стёсано","стёсаны","утёрт","утёрта","утёрто","утёрты","утомлён","утомлёна","утомлёно","утомлёны","чёркнут","чёркнута","чёркнуто","чёркнуты","щёлкнут","щёлкнута","щёлкнуто","щёлкнуты"],["взбудоражен","взволнован","возбужден","возмущен","воспитан","востребован","выдрессирован","газирован","доношен","заболочен","заинтересован","заинтригован","закален","зачарован","зашифрован","изогнут","изогнута","изогнуто","изогнуты","коррумпирован","мотивирован","помят","помята","помято","помяты","поношен","потаскан","потаскана","потаскано","потасканы","сгорблен","сконфужен","сконфужена","сконфужено","сконфужены","смазан","титулован","утомлен","утомлена","утомлено","утомлены"]),{areWordsInSentence:H}=r.languageProcessing;function K(e){return H(z,e)}const{formatNumber:Q}=r.helpers;function U(e){const t=206.835-1.3*e.numberOfWords/e.numberOfSentences-60.1*e.numberOfSyllables/e.numberOfWords;return Q(t)}const{AbstractResearcher:X}=r.languageProcessing;class Y extends X{constructor(e){super(e),Object.assign(this.config,{language:"ru",passiveConstructionType:"morphological",firstWordExceptions:n,functionWords:F,transitionWords:o,twoPartTransitionWords:G,syllables:I,fleschReadingEaseScores:L,sentenceLength:V}),Object.assign(this.helpers,{getStemmer:q,isPassiveSentence:K,fleschReadingScore:U})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/ja.js000064400000327253147206602470011045 0ustar00(()=>{var e={771:e=>{function t(){var e={"[一二三四五六七八九十百千万億兆]":"M","[一-龠々〆ヵヶ]":"H","[ぁ-ん]":"I","[ァ-ヴーア-ン゙ー]":"K","[a-zA-Za-zA-Z]":"A","[0-90-9]":"N"};for(var t in this.chartype_=[],e){var r=new RegExp;r.compile(t),this.chartype_.push([r,e[t]])}return this.BIAS__=-332,this.BC1__={HH:6,II:2461,KH:406,OH:-1378},this.BC2__={AA:-3267,AI:2744,AN:-878,HH:-4070,HM:-1711,HN:4012,HO:3761,IA:1327,IH:-1184,II:-1332,IK:1721,IO:5492,KI:3831,KK:-8741,MH:-3132,MK:3334,OO:-2920},this.BC3__={HH:996,HI:626,HK:-721,HN:-1307,HO:-836,IH:-301,KK:2762,MK:1079,MM:4034,OA:-1652,OH:266},this.BP1__={BB:295,OB:304,OO:-125,UB:352},this.BP2__={BO:60,OO:-1762},this.BQ1__={BHH:1150,BHM:1521,BII:-1158,BIM:886,BMH:1208,BNH:449,BOH:-91,BOO:-2597,OHI:451,OIH:-296,OKA:1851,OKH:-1020,OKK:904,OOO:2965},this.BQ2__={BHH:118,BHI:-1159,BHM:466,BIH:-919,BKK:-1720,BKO:864,OHH:-1139,OHM:-181,OIH:153,UHI:-1146},this.BQ3__={BHH:-792,BHI:2664,BII:-299,BKI:419,BMH:937,BMM:8335,BNN:998,BOH:775,OHH:2174,OHM:439,OII:280,OKH:1798,OKI:-793,OKO:-2242,OMH:-2402,OOO:11699},this.BQ4__={BHH:-3895,BIH:3761,BII:-4654,BIK:1348,BKK:-1806,BMI:-3385,BOO:-12396,OAH:926,OHH:266,OHK:-2036,ONN:-973},this.BW1__={",と":660,",同":727,B1あ:1404,B1同:542,"、と":660,"、同":727,"」と":1682,あっ:1505,いう:1743,いっ:-2055,いる:672,うし:-4817,うん:665,から:3472,がら:600,こう:-790,こと:2083,こん:-1262,さら:-4143,さん:4573,した:2641,して:1104,すで:-3399,そこ:1977,それ:-871,たち:1122,ため:601,った:3463,つい:-802,てい:805,てき:1249,でき:1127,です:3445,では:844,とい:-4915,とみ:1922,どこ:3887,ない:5713,なっ:3015,など:7379,なん:-1113,にし:2468,には:1498,にも:1671,に対:-912,の一:-501,の中:741,ませ:2448,まで:1711,まま:2600,まる:-2155,やむ:-1947,よっ:-2565,れた:2369,れで:-913,をし:1860,を見:731,亡く:-1886,京都:2558,取り:-2784,大き:-2604,大阪:1497,平方:-2314,引き:-1336,日本:-195,本当:-2423,毎日:-2113,目指:-724,B1あ:1404,B1同:542,"」と":1682},this.BW2__={"..":-11822,11:-669,"――":-5730,"−−":-13175,いう:-1609,うか:2490,かし:-1350,かも:-602,から:-7194,かれ:4612,がい:853,がら:-3198,きた:1941,くな:-1597,こと:-8392,この:-4193,させ:4533,され:13168,さん:-3977,しい:-1819,しか:-545,した:5078,して:972,しな:939,その:-3744,たい:-1253,たた:-662,ただ:-3857,たち:-786,たと:1224,たは:-939,った:4589,って:1647,っと:-2094,てい:6144,てき:3640,てく:2551,ては:-3110,ても:-3065,でい:2666,でき:-1528,でし:-3828,です:-4761,でも:-4203,とい:1890,とこ:-1746,とと:-2279,との:720,とみ:5168,とも:-3941,ない:-2488,なが:-1313,など:-6509,なの:2614,なん:3099,にお:-1615,にし:2748,にな:2454,によ:-7236,に対:-14943,に従:-4688,に関:-11388,のか:2093,ので:-7059,のに:-6041,のの:-6125,はい:1073,はが:-1033,はず:-2532,ばれ:1813,まし:-1316,まで:-6621,まれ:5409,めて:-3153,もい:2230,もの:-10713,らか:-944,らし:-1611,らに:-1897,りし:651,りま:1620,れた:4270,れて:849,れば:4114,ろう:6067,われ:7901,を通:-11877,んだ:728,んな:-4115,一人:602,一方:-1375,一日:970,一部:-1051,上が:-4479,会社:-1116,出て:2163,分の:-7758,同党:970,同日:-913,大阪:-2471,委員:-1250,少な:-1050,年度:-8669,年間:-1626,府県:-2363,手権:-1982,新聞:-4066,日新:-722,日本:-7068,日米:3372,曜日:-601,朝鮮:-2355,本人:-2697,東京:-1543,然と:-1384,社会:-1276,立て:-990,第に:-1612,米国:-4268,"11":-669},this.BW3__={あた:-2194,あり:719,ある:3846,"い.":-1185,"い。":-1185,いい:5308,いえ:2079,いく:3029,いた:2056,いっ:1883,いる:5600,いわ:1527,うち:1117,うと:4798,えと:1454,"か.":2857,"か。":2857,かけ:-743,かっ:-4098,かに:-669,から:6520,かり:-2670,"が,":1816,"が、":1816,がき:-4855,がけ:-1127,がっ:-913,がら:-4977,がり:-2064,きた:1645,けど:1374,こと:7397,この:1542,ころ:-2757,さい:-714,さを:976,"し,":1557,"し、":1557,しい:-3714,した:3562,して:1449,しな:2608,しま:1200,"す.":-1310,"す。":-1310,する:6521,"ず,":3426,"ず、":3426,ずに:841,そう:428,"た.":8875,"た。":8875,たい:-594,たの:812,たり:-1183,たる:-853,"だ.":4098,"だ。":4098,だっ:1004,った:-4748,って:300,てい:6240,てお:855,ても:302,です:1437,でに:-1482,では:2295,とう:-1387,とし:2266,との:541,とも:-3543,どう:4664,ない:1796,なく:-903,など:2135,"に,":-1021,"に、":-1021,にし:1771,にな:1906,には:2644,"の,":-724,"の、":-724,の子:-1e3,"は,":1337,"は、":1337,べき:2181,まし:1113,ます:6943,まっ:-1549,まで:6154,まれ:-793,らし:1479,られ:6820,るる:3818,"れ,":854,"れ、":854,れた:1850,れて:1375,れば:-3246,れる:1091,われ:-605,んだ:606,んで:798,カ月:990,会議:860,入り:1232,大会:2217,始め:1681,市:965,新聞:-5055,"日,":974,"日、":974,社会:2024,カ月:990},this.TC1__={AAA:1093,HHH:1029,HHM:580,HII:998,HOH:-390,HOM:-331,IHI:1169,IOH:-142,IOI:-1015,IOM:467,MMH:187,OOI:-1832},this.TC2__={HHO:2088,HII:-1023,HMM:-1154,IHI:-1965,KKH:703,OII:-2649},this.TC3__={AAA:-294,HHH:346,HHI:-341,HII:-1088,HIK:731,HOH:-1486,IHH:128,IHI:-3041,IHO:-1935,IIH:-825,IIM:-1035,IOI:-542,KHH:-1216,KKA:491,KKH:-1217,KOK:-1009,MHH:-2694,MHM:-457,MHO:123,MMH:-471,NNH:-1689,NNO:662,OHO:-3393},this.TC4__={HHH:-203,HHI:1344,HHK:365,HHM:-122,HHN:182,HHO:669,HIH:804,HII:679,HOH:446,IHH:695,IHO:-2324,IIH:321,III:1497,IIO:656,IOO:54,KAK:4845,KKA:3386,KKK:3065,MHH:-405,MHI:201,MMH:-241,MMM:661,MOM:841},this.TQ1__={BHHH:-227,BHHI:316,BHIH:-132,BIHH:60,BIII:1595,BNHH:-744,BOHH:225,BOOO:-908,OAKK:482,OHHH:281,OHIH:249,OIHI:200,OIIH:-68},this.TQ2__={BIHH:-1401,BIII:-1033,BKAK:-543,BOOO:-5591},this.TQ3__={BHHH:478,BHHM:-1073,BHIH:222,BHII:-504,BIIH:-116,BIII:-105,BMHI:-863,BMHM:-464,BOMH:620,OHHH:346,OHHI:1729,OHII:997,OHMH:481,OIHH:623,OIIH:1344,OKAK:2792,OKHH:587,OKKA:679,OOHH:110,OOII:-685},this.TQ4__={BHHH:-721,BHHM:-3604,BHII:-966,BIIH:-607,BIII:-2181,OAAA:-2763,OAKK:180,OHHH:-294,OHHI:2446,OHHO:480,OHIH:-1573,OIHH:1935,OIHI:-493,OIIH:626,OIII:-4007,OKAK:-8156},this.TW1__={につい:-4681,東京都:2026},this.TW2__={ある程:-2049,いった:-1256,ころが:-2434,しょう:3873,その後:-4430,だって:-1049,ていた:1833,として:-4657,ともに:-4517,もので:1882,一気に:-792,初めて:-1512,同時に:-8097,大きな:-1255,対して:-2721,社会党:-3216},this.TW3__={いただ:-1734,してい:1314,として:-4314,につい:-5483,にとっ:-5989,に当た:-6247,"ので,":-727,"ので、":-727,のもの:-600,れから:-3752,十二月:-2287},this.TW4__={"いう.":8576,"いう。":8576,からな:-2348,してい:2958,"たが,":1516,"たが、":1516,ている:1538,という:1349,ました:5543,ません:1097,ようと:-4258,よると:5865},this.UC1__={A:484,K:93,M:645,O:-505},this.UC2__={A:819,H:1059,I:409,M:3987,N:5775,O:646},this.UC3__={A:-1370,I:2311},this.UC4__={A:-2643,H:1809,I:-1032,K:-3450,M:3565,N:3876,O:6646},this.UC5__={H:313,I:-1238,K:-799,M:539,O:-831},this.UC6__={H:-506,I:-253,K:87,M:247,O:-387},this.UP1__={O:-214},this.UP2__={B:69,O:935},this.UP3__={B:189},this.UQ1__={BH:21,BI:-12,BK:-99,BN:142,BO:-56,OH:-95,OI:477,OK:410,OO:-2422},this.UQ2__={BH:216,BI:113,OK:1759},this.UQ3__={BA:-479,BH:42,BI:1913,BK:-7198,BM:3160,BN:6427,BO:14761,OI:-827,ON:-3212},this.UW1__={",":156,"、":156,"「":-463,あ:-941,う:-127,が:-553,き:121,こ:505,で:-201,と:-547,ど:-123,に:-789,の:-185,は:-847,も:-466,や:-470,よ:182,ら:-292,り:208,れ:169,を:-446,ん:-137,"・":-135,主:-402,京:-268,区:-912,午:871,国:-460,大:561,委:729,市:-411,日:-141,理:361,生:-408,県:-386,都:-718,"「":-463,"・":-135},this.UW2__={",":-829,"、":-829,〇:892,"「":-645,"」":3145,あ:-538,い:505,う:134,お:-502,か:1454,が:-856,く:-412,こ:1141,さ:878,ざ:540,し:1529,す:-675,せ:300,そ:-1011,た:188,だ:1837,つ:-949,て:-291,で:-268,と:-981,ど:1273,な:1063,に:-1764,の:130,は:-409,ひ:-1273,べ:1261,ま:600,も:-1263,や:-402,よ:1639,り:-579,る:-694,れ:571,を:-2516,ん:2095,ア:-587,カ:306,キ:568,ッ:831,三:-758,不:-2150,世:-302,中:-968,主:-861,事:492,人:-123,会:978,保:362,入:548,初:-3025,副:-1566,北:-3414,区:-422,大:-1769,天:-865,太:-483,子:-1519,学:760,実:1023,小:-2009,市:-813,年:-1060,強:1067,手:-1519,揺:-1033,政:1522,文:-1355,新:-1682,日:-1815,明:-1462,最:-630,朝:-1843,本:-1650,東:-931,果:-665,次:-2378,民:-180,気:-1740,理:752,発:529,目:-1584,相:-242,県:-1165,立:-763,第:810,米:509,自:-1353,行:838,西:-744,見:-3874,調:1010,議:1198,込:3041,開:1758,間:-1257,"「":-645,"」":3145,ッ:831,ア:-587,カ:306,キ:568},this.UW3__={",":4889,1:-800,"−":-1723,"、":4889,々:-2311,〇:5827,"」":2670,"〓":-3573,あ:-2696,い:1006,う:2342,え:1983,お:-4864,か:-1163,が:3271,く:1004,け:388,げ:401,こ:-3552,ご:-3116,さ:-1058,し:-395,す:584,せ:3685,そ:-5228,た:842,ち:-521,っ:-1444,つ:-1081,て:6167,で:2318,と:1691,ど:-899,な:-2788,に:2745,の:4056,は:4555,ひ:-2171,ふ:-1798,へ:1199,ほ:-5516,ま:-4384,み:-120,め:1205,も:2323,や:-788,よ:-202,ら:727,り:649,る:5905,れ:2773,わ:-1207,を:6620,ん:-518,ア:551,グ:1319,ス:874,ッ:-1350,ト:521,ム:1109,ル:1591,ロ:2201,ン:278,"・":-3794,一:-1619,下:-1759,世:-2087,両:3815,中:653,主:-758,予:-1193,二:974,人:2742,今:792,他:1889,以:-1368,低:811,何:4265,作:-361,保:-2439,元:4858,党:3593,全:1574,公:-3030,六:755,共:-1880,円:5807,再:3095,分:457,初:2475,別:1129,前:2286,副:4437,力:365,動:-949,務:-1872,化:1327,北:-1038,区:4646,千:-2309,午:-783,協:-1006,口:483,右:1233,各:3588,合:-241,同:3906,和:-837,員:4513,国:642,型:1389,場:1219,外:-241,妻:2016,学:-1356,安:-423,実:-1008,家:1078,小:-513,少:-3102,州:1155,市:3197,平:-1804,年:2416,広:-1030,府:1605,度:1452,建:-2352,当:-3885,得:1905,思:-1291,性:1822,戸:-488,指:-3973,政:-2013,教:-1479,数:3222,文:-1489,新:1764,日:2099,旧:5792,昨:-661,時:-1248,曜:-951,最:-937,月:4125,期:360,李:3094,村:364,東:-805,核:5156,森:2438,業:484,氏:2613,民:-1694,決:-1073,法:1868,海:-495,無:979,物:461,特:-3850,生:-273,用:914,町:1215,的:7313,直:-1835,省:792,県:6293,知:-1528,私:4231,税:401,立:-960,第:1201,米:7767,系:3066,約:3663,級:1384,統:-4229,総:1163,線:1255,者:6457,能:725,自:-2869,英:785,見:1044,調:-562,財:-733,費:1777,車:1835,軍:1375,込:-1504,通:-1136,選:-681,郎:1026,郡:4404,部:1200,金:2163,長:421,開:-1432,間:1302,関:-1282,雨:2009,電:-1045,非:2066,駅:1620,"1":-800,"」":2670,"・":-3794,ッ:-1350,ア:551,グ:1319,ス:874,ト:521,ム:1109,ル:1591,ロ:2201,ン:278},this.UW4__={",":3930,".":3508,"―":-4841,"、":3930,"。":3508,〇:4999,"「":1895,"」":3798,"〓":-5156,あ:4752,い:-3435,う:-640,え:-2514,お:2405,か:530,が:6006,き:-4482,ぎ:-3821,く:-3788,け:-4376,げ:-4734,こ:2255,ご:1979,さ:2864,し:-843,じ:-2506,す:-731,ず:1251,せ:181,そ:4091,た:5034,だ:5408,ち:-3654,っ:-5882,つ:-1659,て:3994,で:7410,と:4547,な:5433,に:6499,ぬ:1853,ね:1413,の:7396,は:8578,ば:1940,ひ:4249,び:-4134,ふ:1345,へ:6665,べ:-744,ほ:1464,ま:1051,み:-2082,む:-882,め:-5046,も:4169,ゃ:-2666,や:2795,ょ:-1544,よ:3351,ら:-2922,り:-9726,る:-14896,れ:-2613,ろ:-4570,わ:-1783,を:13150,ん:-2352,カ:2145,コ:1789,セ:1287,ッ:-724,ト:-403,メ:-1635,ラ:-881,リ:-541,ル:-856,ン:-3637,"・":-4371,ー:-11870,一:-2069,中:2210,予:782,事:-190,井:-1768,人:1036,以:544,会:950,体:-1286,作:530,側:4292,先:601,党:-2006,共:-1212,内:584,円:788,初:1347,前:1623,副:3879,力:-302,動:-740,務:-2715,化:776,区:4517,協:1013,参:1555,合:-1834,和:-681,員:-910,器:-851,回:1500,国:-619,園:-1200,地:866,場:-1410,塁:-2094,士:-1413,多:1067,大:571,子:-4802,学:-1397,定:-1057,寺:-809,小:1910,屋:-1328,山:-1500,島:-2056,川:-2667,市:2771,年:374,庁:-4556,後:456,性:553,感:916,所:-1566,支:856,改:787,政:2182,教:704,文:522,方:-856,日:1798,時:1829,最:845,月:-9066,木:-485,来:-442,校:-360,業:-1043,氏:5388,民:-2716,気:-910,沢:-939,済:-543,物:-735,率:672,球:-1267,生:-1286,産:-1101,田:-2900,町:1826,的:2586,目:922,省:-3485,県:2997,空:-867,立:-2112,第:788,米:2937,系:786,約:2171,経:1146,統:-1169,総:940,線:-994,署:749,者:2145,能:-730,般:-852,行:-792,規:792,警:-1184,議:-244,谷:-1e3,賞:730,車:-1481,軍:1158,輪:-1433,込:-3370,近:929,道:-1291,選:2596,郎:-4866,都:1192,野:-1100,銀:-2213,長:357,間:-2344,院:-2297,際:-2604,電:-878,領:-1659,題:-792,館:-1984,首:1749,高:2120,"「":1895,"」":3798,"・":-4371,ッ:-724,ー:-11870,カ:2145,コ:1789,セ:1287,ト:-403,メ:-1635,ラ:-881,リ:-541,ル:-856,ン:-3637},this.UW5__={",":465,".":-299,1:-514,E2:-32768,"]":-2762,"、":465,"。":-299,"「":363,あ:1655,い:331,う:-503,え:1199,お:527,か:647,が:-421,き:1624,ぎ:1971,く:312,げ:-983,さ:-1537,し:-1371,す:-852,だ:-1186,ち:1093,っ:52,つ:921,て:-18,で:-850,と:-127,ど:1682,な:-787,に:-1224,の:-635,は:-578,べ:1001,み:502,め:865,ゃ:3350,ょ:854,り:-208,る:429,れ:504,わ:419,を:-1264,ん:327,イ:241,ル:451,ン:-343,中:-871,京:722,会:-1153,党:-654,務:3519,区:-901,告:848,員:2104,大:-1296,学:-548,定:1785,嵐:-1304,市:-2991,席:921,年:1763,思:872,所:-814,挙:1618,新:-1682,日:218,月:-4353,査:932,格:1356,機:-1508,氏:-1347,田:240,町:-3912,的:-3149,相:1319,省:-1052,県:-4003,研:-997,社:-278,空:-813,統:1955,者:-2233,表:663,語:-1073,議:1219,選:-1018,郎:-368,長:786,間:1191,題:2368,館:-689,"1":-514,E2:-32768,"「":363,イ:241,ル:451,ン:-343},this.UW6__={",":227,".":808,1:-270,E1:306,"、":227,"。":808,あ:-307,う:189,か:241,が:-73,く:-121,こ:-200,じ:1782,す:383,た:-428,っ:573,て:-1014,で:101,と:-105,な:-253,に:-149,の:-417,は:-236,も:-206,り:187,る:-135,を:195,ル:-673,ン:-496,一:-277,中:201,件:-800,会:624,前:302,区:1792,員:-1212,委:798,学:-960,市:887,広:-695,後:535,業:-697,相:753,社:-507,福:974,空:-822,者:1811,連:463,郎:1082,"1":-270,E1:306,ル:-673,ン:-496},this}t.prototype.ctype_=function(e){for(var t in this.chartype_)if(e.match(this.chartype_[t][0]))return this.chartype_[t][1];return"O"},t.prototype.ts_=function(e){return e||0},t.prototype.segment=function(e){if(null==e||null==e||""==e)return[];var t=[],r=["B3","B2","B1"],a=["O","O","O"],l=e.split("");for(v=0;v0&&(t.push(u),u="",B="B"),n=i,i=g,g=B,u+=r[v]}return t.push(u),t},e.exports=t},429:e=>{var t=function(e,t){var r;for(r=0;r1?1:n)+a[a.length-1].length};return{addRule:function(e,t){l.push({regex:e,type:t})},onText:function(e){for(var t=a+e,u=r(l,t);u&&u.max_index!==t.length;)i(t.substring(0,u.max_index),u.rule.type),t=t.substring(u.max_index),u=r(l,t);a=t},end:function(){if(0!==a.length){var e=t(l,a);if(!e){var r=new Error("unable to tokenize");throw r.tokenizer2={buffer:a,line:u,col:n},r}i(a,e.type)}}}}}},t={};function r(a){var l=t[a];if(void 0!==l)return l.exports;var u=t[a]={exports:{}};return e[a](u,u.exports,r),u.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";r.r(a),r.d(a,{default:()=>qe});const e=window.yoast.analysis,t=window.lodash;var l=r(771),u=r.n(l);const{sanitizeString:n,removePunctuation:i}=e.languageProcessing,g=new(u());function v(e){if(""===(e=n(e)))return[];let r=g.segment(e);return r=(0,t.map)(r,(function(e){return i(e)})),(0,t.filter)(r,(function(e){return""!==e.trim()}))}const s=["が","を","に","へ","と","から","より","まで","で","か","の","や","やら","だ","なり","わ","とも","かしら","かな","かい","っけ","さ","よ","ね","ばかり","ばっかり","ばっか","ばかし","だけ","きり","っきり","ほど","くらい","ぐらい","ころ","ごろ","など","は","も","こそ","でも","しか","さえ","ば","て","のに","ので","ところ","けれども","けれど","くせ","もの","もん","ものか","もんか","な","なあ","なんか","なんて","って","し","ずつ","すら","ともに","ぜ","ぞ","じゃん","ながら","たり","だり","つつ","まま","ものの","つまり","しかし","よって","に関する","に関し","について","における","において","関","する","関し","ついて","おえる","おける","という","といっ","た","に対する","対","に対して","対して","にかけ","による","により","によって","および","これ","それ","あれ","どれ","こちら","こっち","そちら","そっち","あちら","あっち","どちら","どっち","ここ","そこ","あそこ","どこ","こう","そう","ああ","どう","こんな","そんな","あんな","どんな","この","よう","その","あの","ど","こうやって","そうやって","ああやって","やっ","どの","こっ","そっから","どっ","さま","あちらさま","どちらさま","そちらさま","こんだけ","そんだけ","あんだけ","どん","なに","なん","何","どいつ","どなた","だれ","誰","いつ","なぜ","どうして","どれくらい","どれぐらい","位","いくら","いくつ","一","二","三","四","五","六","七","八","九","十","百","千","万","億","兆","ひとつ","ふたつ","みっつ","よっつ","いつつ","むっつ","ななつ","やっつ","ここのつ","とお","つ","こ","コ","個","人","ひき","匹","まい","枚","さつ","冊","杯","回","キロ","グラム","適量","少々","大匙","大さじ","小匙","小さじ","g","cc","ml","l","kg","番目","め","週","時間","週間","時","分","秒","か月","カ月","ヶ月","部分","一部","ほか","他","それぞれ","まっ","たく","全く","ぜんぶ","全部","すべて","全","すごく","最高","最悪","可能","良い","良く","良さ","いい","よい","悪い","悪く","悪さ","大きな","おおき","小さ","ちいさ","だめ","ダメ","駄目","ただ","ちょっと","すこし","少し","なか","たくさん","よく","たまに","ときどき","時々","いつも","およそ","やく","だい","たい","約","程","大体","また","もう","とて","おそらく","たぶん","恐らく","多分","のみ","多少","本当","ほんとう","まじ","マジ","勿論","もちろん","やっと","しっかり","さっき","ほんと","ホント","きっと","かならず","必ず","絶対","ぜっ","ゼッタイ","にかく","やっぱり","やっぱ","たっ","はっきり","すでに","なる","いっしょ","緒","だいじょうぶ","ダイジョウブ","大丈夫","年","月","日","今日","明日","明後","昨日","一昨日","きょう","あす","あし","あさっ","き","のう","おととい","今年","来年","去年","ことし","らいねん","きょねん","わたし","わたくし","あたし","私","あたくし","うち","うちら","おら","おいら","わたしら","たち","わたしど","われら","われわ","れ","私ら","私達","達","私共","我ら","我々","おれ","俺","オレ","おれら","ぼく","ボクら","僕","じぶん","俺ら","僕ら","僕達","自分","俺達","ボク","あなた","貴方","貴女","貴男","君","きみ","おまえ","お","前","あんた","お宅","てめえ","貴殿","彼","彼ら","彼女","ら","こいつ","そいつ","あいつ","アイツ","これら","それら","あれら","あいつら","ども","みな","みなさま","おのおの","共","みんな","皆様","各々","皆","皆さま","方","当方","自身","さん","様","殿","ちゃん","くん","こと","事","物","コト","やつ","ヤツ","奴","まえ","あと","うえ","後","上","下","中","先","さらに","更","とく","特に","ほとんど","再び","ふたたび","ほぼ","そのまま","すぐ","あまり","相当","しばしば","わずか","僅か","比較","的","まだ","かなり","つい","まず","やが","やや","つねに","常","ひきつづき","引き続き","きわめて","極めて","ごく","別","べつ","はり","必ずし","かならずしも","むしろ","がい","まも","なく","あら","ためて","けっし","おも","互い","間","改めて","決し","主","主として","もっと","とりわけ","あく","おおむね","おおい","概ね","大い","そうし","それほど","ちょうど","とえ","まさに","なんと","とか","あえて","まる","おおよそ","ます","ぜんぜん","全然","じゃ","ません","です","あり","ませ","ん","ない","しませ","なら","ある","ありませ","いる","い","いませ","できる","でき","れる","られる","せる","させる","思わ","考え","られ","おっしゃい","述べ","言わ","話","なられ","お思い","らしい","らしく","でしょ","う","だろ","ご","御","ハイ","はい","いいえ","うん","うーん","ええ","よし","いや","まあ","おい","ねえ","どうぞ","ほら","おお","あー","さあ","まし","でし","だっ","なかっ","しまし","なっ","あっ","いた","せ","させ","ますか","み","みませ","ましょ","でみ","でみませ","なられる","なろ"];function c(e){let t=v(e);return t=t.filter((e=>!s.includes(e))),t=t.map((e=>e.endsWith("じゃ")?e.slice(0,-2):e)),t}const o=["“","”","〝","〞","〟","‟","„",'"',"「","」","『","』"],E=e=>(0,t.includes)(o,e[0])&&(0,t.includes)(o,e[e.length-1]);function h(e){const t={exactMatchRequested:!1,keyphrase:e};return E(e)&&(t.keyphrase=e.substring(1,e.length-1),t.exactMatchRequested=!0),t}const d=new RegExp("["+["'","‘","’","‛","`","‹","›"].join("")+"]","g");function f(e){return e.replace(d,"'")}function C(e){return function(e){return e.replace(/[“”〝〞〟‟„『』«»]/g,'"')}(f(e))}function A(e,t){e=e.toLowerCase();const r=h(t);if(r.exactMatchRequested){e=f(e);const t=r.keyphrase,a=[];let l=e.indexOf(t);for(;-1!==l;)a.push(t),l=e.indexOf(t,l+t.length);return a}return c(e).filter((e=>t===e))}function F(e,r){return e.length<=1?[e]:function(e,r){const a=r.paradigmGroups;let l=(0,t.uniq)((0,t.flatten)(a));l=l.sort(((e,t)=>t.length-e.length||e.localeCompare(t)));const u=l.filter((t=>e.endsWith(t))),n=[];if(0===u.length)n.push(e);else{const t=u[0],r=e.slice(0,-t.length);for(const e of a)e.includes(t)&&n.push(e.map((e=>r+e)))}return e.endsWith("る")&&n.push(e.slice(0,-1)),(0,t.uniq)((0,t.flatten)(n))}(e,r)}const{baseStemmer:p}=e.languageProcessing;function D(e){const r=(0,t.get)(e.getData("morphology"),"ja",!1);return r?e=>function(e,t){let r=F(e,t);return r=r.sort(((e,t)=>e.length-t.length||e.localeCompare(t))),r[0]}(e,r):p}function m(e){const t=[];return e.map((e=>t.push(e.length))),0===e.length?0:t.reduce(((e,t)=>e+t))}const B=new RegExp("(ftp|http(s)?:\\/\\/.)(www\\\\.)?[-a-zA-Z0-9@:%._\\/+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:;%_\\/+.~#?&()=]*)|www\\.[-a-zA-Z0-9@:%._\\/+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:;%_\\/+.~#?&()=]*)","igm"),{sanitizeString:O}=e.languageProcessing;function _(e){return e=function(e){return e.replace(B,"")}(e),(e=(e=O(e)).replace(/\s/g,"")).length}function I(e,t){const r=v(e).join("|"),a=[];return t.forEach((function(e){const t=e.join("|");r.includes(t)&&a.push(e)})),a}var b=r(429),H=r.n(b);function y(e,t=!1,r="",a=""){let l,u;return l="id"===a?'[ \\u00a0\\n\\r\\t.,()”“〝〞〟‟„"+;!¡?¿:/»«‹›'+r+"<>":'[ \\u00a0\\u2014\\u06d4\\u061f\\u060C\\u061B\\n\\r\\t.,()”“〝〞〟‟„"+\\-;!¡?¿:/»«‹›'+r+"<>",u=t?"($|((?="+l+"]))|((['‘’‛`])("+l+"])))":"($|("+l+"])|((['‘’‛`])("+l+"])))","(^|"+l+"'‘’‛`])"+e+u}function U(e){return(e=(e=(e=(e=e.replace(/\s{2,}/g," ")).replace(/\s\.$/,".")).replace(/^\s+|\s+$/g,"")).replace(/\s。/g,"。")).replace(/。\s/g,"。")}const M=["address","article","aside","blockquote","canvas","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","noscript","ol","output","p","pre","section","table","tfoot","ul","video"],S=["b","big","i","small","tt","abbr","acronym","cite","code","dfn","em","kbd","strong","samp","time","var","a","bdo","br","img","map","object","q","script","span","sub","sup","button","input","label","select","textarea"],x=(new RegExp("^("+M.join("|")+")$","i"),new RegExp("^("+S.join("|")+")$","i"),new RegExp("^<("+M.join("|")+")[^>]*?>$","i")),w=new RegExp("^]*?>$","i"),k=new RegExp("^<("+S.join("|")+")[^>]*>$","i"),K=new RegExp("^]*>$","i"),T=/^<([^>\s/]+)[^>]*>$/,R=/^<\/([^>\s]+)[^>]*>$/,z=/^[^<]+$/,N=/^<[^><]*$/,W=//g;let j,L=[];(0,t.memoize)((function(e){const r=[];let a=0,l="",u="",n="";return e=e.replace(W,""),L=[],j=H()((function(e){L.push(e)})),j.addRule(z,"content"),j.addRule(N,"greater-than-sign-content"),j.addRule(x,"block-start"),j.addRule(w,"block-end"),j.addRule(k,"inline-start"),j.addRule(K,"inline-end"),j.addRule(T,"other-element-start"),j.addRule(R,"other-element-end"),j.onText(e),j.end(),(0,t.forEach)(L,(function(e,t){const i=L[t+1];switch(e.type){case"content":case"greater-than-sign-content":case"inline-start":case"inline-end":case"other-tag":case"other-element-start":case"other-element-end":case"greater than sign":i&&(0!==a||"block-start"!==i.type&&"block-end"!==i.type)?u+=e.src:(u+=e.src,r.push(u),l="",u="",n="");break;case"block-start":0!==a&&(""!==u.trim()&&r.push(u),u="",n=""),a++,l=e.src;break;case"block-end":a--,n=e.src,""!==l&&""!==n?r.push(l+u+n):""!==u.trim()&&r.push(u),l="",u="",n=""}a<0&&(a=0)})),r})),new RegExp("^<("+M.join("|")+")[^>]*?>","i"),new RegExp("]*?>$","i");const $=function(e){return U(e=e.replace(/(<([^>]+)>)/gi," "))},P=function(e){return e.replace(/ /g," ")},Y=function(e){return function(e){return e.replace(/\s/g," ")}(e=function(e){return e.replace(/\u2014/g," ")}(e=P(e)))};function Z(e){return e=Y(e),$(e)}const Q=new RegExp("^[.]$"),G=/^<[^><]*$/,q=/^<([^>\s/]+)[^>]*>$/im,V=/^<\/([^>\s]+)[^>]*>$/im,J=/^\s*[[({]\s*$/,X=/^\s*[\])}]\s*$/,ee=function(e,r=!1,a="",l=!1){const u="("+(e=(0,t.map)(e,(function(e){return l&&(e=function(e){const t=[{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}];for(let r=0;re.replace(".","\\.")))),te="(^|$|["+[" ","\\n","\\r","\\t"," ","۔","؟","،","؛"," ",".",",","'","(",")",'"',"+","-",";","!","?",":","/","»","«","‹","›","<",">","”","“","〝","〞","〟","‟","„"].map((e=>"\\"+e)).join("")+"])",re=new RegExp(te+"[A-Za-z]$"),ae=/<\/?([^\s]+?)(\s|>)/,le=["p","div","h1","h2","h3","h4","h5","h6","span","li","main"];class ue{constructor(){this.sentenceDelimiters='”〞〟„』›»’‛`"?!…۔؟'}getSentenceDelimiters(){return this.sentenceDelimiters}isNumber(e){return!(0,t.isNaN)(parseInt(e,10))}isBreakTag(e){return/<\/?br/.test(e)}isQuotation(e){return"'"===(e=C(e))||'"'===e}endsWithOrdinalDot(){return!1}isPunctuation(e){return"¿"===e||"¡"===e}removeDuplicateWhitespace(e){return e.replace(/\s+/," ")}isCapitalLetter(e){return e!==e.toLocaleLowerCase()}isSmallerThanSign(e){return"<"===e}getNextTwoCharacters(e){let r="";return(0,t.isUndefined)(e[0])||(r+=e[0].src),(0,t.isUndefined)(e[1])||(r+=e[1].src),r=this.removeDuplicateWhitespace(r),r}isLetterFromSpecificLanguage(e){return[/^[\u0590-\u05fe]+$/i,/^[\u0600-\u06FF]+$/i,/^[\uFB8A\u067E\u0686\u06AF]+$/i].some((t=>t.test(e)))}isValidSentenceBeginning(e){return this.isCapitalLetter(e)||this.isLetterFromSpecificLanguage(e)||this.isNumber(e)||this.isQuotation(e)||this.isPunctuation(e)||this.isSmallerThanSign(e)}isSentenceStart(e){return!(0,t.isUndefined)(e)&&("html-start"===e.type||"html-end"===e.type||"block-start"===e.type)}isSentenceEnding(e){return!(0,t.isUndefined)(e)&&("full-stop"===e.type||"sentence-delimiter"===e.type)}isPartOfPersonInitial(e,r,a,l){return!(0,t.isUndefined)(e)&&!(0,t.isUndefined)(a)&&!(0,t.isUndefined)(l)&&!(0,t.isUndefined)(r)&&"full-stop"===e.type&&"sentence"===r.type&&re.test(r.src)&&"sentence"===a.type&&1===a.src.trim().length&&"full-stop"===l.type}tokenizeSmallerThanContent(e,r,a){const l=e.src.substring(1),u=this.createTokenizer();this.tokenize(u.tokenizer,l);const n=this.getSentencesFromTokens(u.tokens,!1);if(n[0]=(0,t.isUndefined)(n[0])?"<":"<"+n[0],this.isValidSentenceBeginning(n[0])&&(r.push(a),a=""),a+=n[0],n.length>1){r.push(a),a="",n.shift();const e=n.pop();n.forEach((e=>{r.push(e)}));const t=new RegExp("[."+this.getSentenceDelimiters()+"]$");e.match(t)?r.push(e):a=e}return{tokenSentences:r,currentSentence:a}}createTokenizer(){const e=new RegExp("^["+this.getSentenceDelimiters()+"]$"),t=new RegExp("^[^."+this.getSentenceDelimiters()+"<\\(\\)\\[\\]]+$"),r=[],a=H()((function(e){r.push(e)}));return a.addRule(Q,"full-stop"),a.addRule(G,"smaller-than-sign-content"),a.addRule(q,"html-start"),a.addRule(V,"html-end"),a.addRule(J,"block-start"),a.addRule(X,"block-end"),a.addRule(e,"sentence-delimiter"),a.addRule(t,"sentence"),{tokenizer:a,tokens:r}}tokenize(e,t){e.onText(t);try{e.end()}catch(e){console.error("Tokenizer end error:",e,e.tokenizer2)}}endsWithAbbreviation(e){const t=e.match(ee);if(!t)return!1;const r=t.pop();return e.endsWith(r)}isValidTagPair(e,t){const r=e.src,a=t.src,l=r.match(ae)[1];return l===a.match(ae)[1]&&le.includes(l)}getSentencesFromTokens(e,r=!0){let a,l,u=[],n="";do{l=!1;const t=e[0],r=e[e.length-1];t&&r&&"html-start"===t.type&&"html-end"===r.type&&this.isValidTagPair(t,r)&&(e=e.slice(1,e.length-1),l=!0)}while(l&&e.length>1);return e.forEach(((r,l)=>{let i,g,v;const s=e[l+1],c=e[l-1],o=e[l+2];switch(g=this.getNextTwoCharacters([s,o]),i=g.length>=2,a=i?g[1]:"",r.type){case"html-start":case"html-end":this.isBreakTag(r.src)?(u.push(n),n=""):n+=r.src;break;case"smaller-than-sign-content":v=this.tokenizeSmallerThanContent(r,u,n),u=v.tokenSentences,n=v.currentSentence;break;case"sentence":case"block-start":n+=r.src;break;case"sentence-delimiter":if(n+=r.src,!(0,t.isUndefined)(s)&&"block-end"!==s.type&&"sentence-delimiter"!==s.type&&this.isCharacterASpace(s.src[0])){if(this.isQuotation(r.src)&&c&&"."!==c.src)break;this.isQuotation(r.src)||"…"===r.src?n=this.getValidSentence(i,a,g,s,u,n):(u.push(n),n="")}break;case"full-stop":if(n+=r.src,g=this.getNextTwoCharacters([s,o]),i=g.length>=2,a=i?g[1]:"",this.endsWithAbbreviation(n))break;if(i&&this.isNumber(g[0]))break;if(this.isPartOfPersonInitial(r,c,s,o))break;if(this.endsWithOrdinalDot(n))break;n=this.getValidSentence(i,a,g,s,u,n);break;case"block-end":if(n+=r.src,g=this.getNextTwoCharacters([s,o]),i=g.length>=2,a=i?g[0]:"",i&&this.isNumber(g[0])||this.isSentenceEnding(c)&&!this.isValidSentenceBeginning(a)&&!this.isSentenceStart(s))break;this.isSentenceEnding(c)&&(this.isSentenceStart(s)||this.isValidSentenceBeginning(a))&&(u.push(n),n="")}})),""!==n&&u.push(n),r&&(u=(0,t.map)(u,(function(e){return e.trim()}))),u}getValidSentence(e,t,r,a,l,u){return(e&&this.isValidSentenceBeginning(t)&&this.isCharacterASpace(r[0])||this.isSentenceStart(a))&&(l.push(u),u=""),u}isCharacterASpace(e){return/\s/.test(e)}}class ne extends ue{constructor(){super(),this.sentenceDelimiters="?!…。。!‼?⁇⁉⁈⁉‥"}isNumber(e){return!(0,t.isNaN)(parseInt(e,10))||[/^[\uFF10-\uFF19]+$/i,/^[\u2460-\u249B]+$/i,/^[\u3220-\u3229]+$/i,/^[\u3280-\u3289]+$/i].some((t=>t.test(e)))}isQuotation(e){return"'"===(e=C(e))||'"'===e||/^[\u300C\u300E\u3008\u3014\u3010\uFF5B\uFF3B]+$/i.test(e)}isLetterFromSpecificLanguage(e){return[/^[\u3040-\u3096]+$/i,/^[\u30A1-\u30FA]+$/i,/^[\u31F0-\u31FF]+$/i,/^[\uFF66-\uFF9D]+$/i,/^[\u4E00-\u9FFC]+$/i].some((t=>t.test(e)))}isCharacterASpace(){return!0}}const ie=(0,t.memoize)((function(e,t=!0){const r=new ne,{tokenizer:a,tokens:l}=r.createTokenizer();return r.tokenize(a,e),0===l.length?[]:r.getSentencesFromTokens(l,t)}),((...e)=>JSON.stringify(e))),ge=function(e){if(""===e)return[];const r=(new(u())).segment(e);return(0,t.map)(r)},ve=["この","その","あの","こんな","そんな","あんな","こう","そう","ああ"],se=[["だから"],["その","ため"],["この","ため"],["それ","で"],["そこ","で"],["よって"],["する","と"],["だと","する","と"],["ゆえ","に"],["それゆえ","に"],["し","た","がっ","て"],["それゆえ"],["それ","なら"],["それ","で","は"],["ならば"],["だ","と","し","たら"],["そう","する","と"],["そう","し","たら"],["さも","ない","と"],["そうし","ない","と"],["そう","で","ない","なら"],["だと","すれ","ば"],["そう","なる","と"],["と","なる","と"],["と","なれ","ば"],["そうして","みる","と"],["そう","なれ","ば"],["そうして"],["そのけっか"],["その","結果"],["しかし"],["けど"],["ただ"],["だ","が"],["しかし","ながら"],["けれど"],["けれども"],["だけど"],["だけども"],["そう","で","は","ある","が"],["それ","でも"],["でも"],["で","は","ある","が"],["に","も","かかわらず"],["それ","に","も","かかわらず"],["ところ","が"],["しかる","に"],["と","はいう","もの","の"],["と","は","言う","もの","の"],["な","の","に"],["それ","な","の","に"],["と","は","いえ"],["そう","はいう","もの","の"],["そう","は","言う","もの","の"],["そのくせ"],["さり","と","て"],["さ","れど"],["これ","に","はんし","て"],["これ","に","反し","て"],["それ","に","し","て","は"],["そのわり","に","は"],["そのわり","に"],["それ","なら"],["ならび","に"],["おなじく"],["同じく"],["また"],["どう","よう","に"],["同様","に"],["さ","れど","も"],["さらに"],["おなじ","よう","に"],["同じ","よう","に"],["のみ","なら","ず"],["しかも"],["おまけ","に"],["そのうえ"],["その","上"],["そして"],["それ","から"],["それどころか"],["どころか"],["それ","に"],["それ","に","し","て","も"],["くわえ","て"],["加え","て"],["それ","にくわえ","て"],["それ","に","加え","て"],["ひいて","は"],["なお"],["それ","ばかり","で","なく"],["それ","ばかりか"],["とも","あれ"],["その","うえ","に"],["その","上","に"],["その","うえ","で"],["その","上","で"],["あまつさえ"],["いっぽう"],["一方"],["たほう"],["他方"],["ぎゃく","に"],["逆","に"],["それ","に","たいし","て"],["それ","に対して"],["たいし","て"],["対して"],["はん","たい","に"],["反対","に"],["はんめん"],["反面"],["その","は","んめん"],["その","反面"],["また","は"],["もしく","は"],["あるい","は"],["それとも"],["ほか","に","は"],["他","に","は"],["ほか","に","も"],["他","に","も"],["だいいち","に"],["第一","に"],["だい","に","に"],["第二","に"],["だい","さん","に"],["第三","に"],["だい","よん","に"],["第四","に"],["ひとつめ","は"],["一つめ","は"],["一つ","目","は"],["1つめ","は"],["1つ","目","は"],["ふたつめ","は"],["二つめ","は"],["二つ","目","は"],["2つめ","は"],["2つ","目","は"],["みっつめ","は"],["三つめ","は"],["三つ","目","は"],["3つめ","は"],["3つ","目","は"],["よっつめ","は"],["四つめ","は"],["四つ","目","は"],["4つめ","は"],["4つ","目","は"],["いって","んめ","は"],["一点目","は"],["1","点目","は"],["に","てんめ","は"],["二点目","は"],["2","点目","は"],["さん","て","んめ","は"],["三点目","は"],["3","点目","は"],["よん","て","んめ","は"],["四点目","は"],["4","点目","は"],["ひとつ","は"],["一つ","は"],["1つ","は"],["もう","ひ","とつ","は"],["もう","一つ","は"],["もう","1","つ","は"],["いってん","は"],["一点","は"],["1点","は"],["もういってん","は"],["もう","一点","は"],["もう","1","点","は"],["はじめ","に"],["さいしょ","に"],["最初","に"],["つづい","て"],["続い","て"],["つい","で"],["次い","で"],["さいごに"],["最後","に"],["おわり","に"],["終わり","に"],["終り","に"],["その","ご"],["その","後"],["まず"],["つぎ","に"],["次","に"],["さらに"],["その","あと"],["その","あと","に"],["その後","に"],["なぜ","なら"],["なぜ","なら","ば"],["なぜか","という","と"],["という","の","は"],["という","の","も"],["だっ","て"],["なに","しろ"],["なにせ"],["どう","して","か","という","と"],["なん","で","か","という","と"],["ち","なみ","に"],["ただ"],["もっとも"],["その","かわり"],["ただし"],["そも","そも"],["じつ","は"],["実","は"],["じつ","の","ところ"],["実","の","ところ"],["じつ","は","という","と"],["実","は","という","と"],["実","は","と","言う","と"],["つまり"],["いいかえる","と"],["言い","かえる","と"],["言い換える","と"],["す","なわち"],["よう","は"],["要","は"],["とど","の","つまり"],["よう","する","に"],["要","する","に"],["むしろ"],["かんげん","する","と"],["換言","する","と"],["かえっ","て"],["かわり","に"],["その","かわり"],["いわば"],["いって","みれ","ば"],["言っ","て","みれ","ば"],["という","より"],["と言う","より"],["という","より","は"],["と言う","より","は"],["という","より","も"],["と言う","より","も"],["という","か"],["ぐたい","て","き","に","は"],["具体","的","に","は"],["た","とえば"],["例え","ば"],["とりわけ"],["なか","で","も"],["こと","に"],["殊","に"],["とく","に"],["特に"],["それ","に","は"],["その","ため","に","は"],["そう","する","ば","あい"],["そう","する","場合"],["その","ば","あい"],["その","場合"],["そうすれ","ば"],["それ","によって"],["そう","する","こと","で"],["さ","れ","ば"],["さすれ","ば"],["さて"],["それ","につけて","も"],["ところ","で"],["とき","に"],["時","に"],["それ","は","さ","て","おき"],["で","は"],["それ","で","は"],["じゃ","あ"],["とも","あれ"],["それ","は","そう","と"],["そういえ","ば"],["それ","に","し","たっ","て"],["しょせん"],["所詮"],["ど","の","みち"],["どの","道"],["どっちみち"],["どっち道"],["この","よう","に"],["こうして"],["いずれ","に","せ","よ"],["いずれ","に","し","て","も"],["どちら","に","せ","よ"],["どっち","に","し","て","も"],["どっち","に","せ","よ"],["どちら","に","し","て","も"],["とも","あれ"],["いじょう","の","よう","に"],["以上","の","よう","に"],["たしか","に"],["確か","に"],["いっぽう","で"],["一方","で"],["いっぽう","で","は"],["一方","で","は"],["たほう","で"],["他方","で"],["たほう","で","は"],["他方","で","は"],["かり","に"],["仮","に"],["た","とえ"],["よしんば"],["と","する","と"],["とすれ","ば"],["し","から","ば"],["に","も","かかわらず"],["に","も","拘わらず"],["といえども"],["と","言え","ど","も"],["といって","も"],["と言っ","て","も"],["と","はいう","もの","の"],["と","は","言う","もの","の"],["こと","に","は"],["まも","なく"],["やが","て"],["と","たん","に"],["つづい","て"],["続い","て"],["ひきつづき"],["引き続き"],["かと","おも","う","と"],["かと","思う","と"],["かと","おもえば"],["かと","思え","ば"],["かと","おもうまも","なく"],["かと","思う間も","なく"],["かと","思う","まも","なく"],["と","たん"],["そのしゅんかん"],["その","瞬間"],["どうじ","に"],["同","時に"],["まし","て"],["まし","て","や"],["これ","に","たいし","て"],["これ","に対して"],["もちろん"],["も","とより"],["それ","だ","から"],["これ","だ","から"],["とうぜん"],["当然"]],ce={lengthCriteria:7},oe={defaultAnalysis:{recommendedMinimum:600,slightlyBelowMinimum:500,belowMinimum:400,veryFarBelowMinimum:200},defaultCornerstone:{recommendedMinimum:1800,slightlyBelowMinimum:800,belowMinimum:600,scores:{belowMinimum:-20,farBelowMinimum:-20}},taxonomyAssessor:{recommendedMinimum:60,slightlyBelowMinimum:20,veryFarBelowMinimum:1},productSEOAssessor:{recommendedMinimum:400,slightlyBelowMinimum:300,belowMinimum:200,veryFarBelowMinimum:100},productCornerstoneSEOAssessor:{recommendedMinimum:800,slightlyBelowMinimum:600,belowMinimum:400,scores:{belowMinimum:-20,farBelowMinimum:-20}},collectionSEOAssessor:{recommendedMinimum:60,slightlyBelowMinimum:20,veryFarBelowMinimum:1},collectionCornerstoneSEOAssessor:{recommendedMinimum:60,slightlyBelowMinimum:20,veryFarBelowMinimum:1}},Ee={defaultPageParams:{recommendedLength:300,maximumRecommendedLength:400},productPageParams:{recommendedLength:140,maximumRecommendedLength:200}},he={transitionWords:400,keyphraseDensity:200},de={recommendedLength:40},fe={defaultParameters:{parameters:{recommendedMaximumLength:600,slightlyTooMany:600,farTooMany:700},applicableIfTextLongerThan:600},cornerstoneParameters:{parameters:{recommendedMaximumLength:500,slightlyTooMany:500,farTooMany:600},applicableIfTextLongerThan:500}},Ce={defaultAnalysis:{parameters:{recommendedMaximum:12,acceptableMaximum:18}},productPages:{parameters:{recommendedMinimum:8,recommendedMaximum:12,acceptableMaximum:18,acceptableMinimum:4}}},Ae={recommendedMaximumLength:60,maximumLength:80},Fe="[\\–\\-\\(\\)_\\[\\]’'.?!:;,¿¡«»‹›—×+&<>]+",pe=new RegExp("^"+Fe),De=new RegExp(Fe+"$");function me(e,r){if(o.includes(e[0])&&o.includes(e[e.length-1]))return[[e]];const a=c(e);if(0===a.length)return[[]];const l=(0,t.get)(r.getData("morphology"),"ja",!1);return a.map((e=>l?F(e,l):[e]))}function Be(e,t){let r=e.getKeyword().toLocaleLowerCase("ja").trim();r=r.replace(/\s/g,"");const a=function(e){let t=e.split(",");return t=t.map((e=>U(e).replace(pe,"").replace(De,""))).filter((e=>e)),t}(e.getSynonyms().toLocaleLowerCase("ja").trim());return{keyphraseForms:me(r,t),synonymsForms:a.map((e=>me(e,t)))}}function Oe(e){return{keyphraseLength:m(v(e.getKeyword())),functionWords:[]}}function _e(e){return{text:e.getText(),count:_(e.getText()),unit:"character"}}const Ie="\\–\\-\\(\\)_\\[\\]’‘“”〝〞〟‟„\"'.?!:;,¿¡«»‹›—×+&۔؟،؛。。!‼?⁇⁉⁈‥…・ー、〃〄〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〶〼〽{}|~⦅⦆「」、[]・¥$%@&'()*/:;<>\\\<>",be=(Ie.split(""),new RegExp("^["+Ie+"]+")),He=new RegExp("["+Ie+"]+$");function ye(e){e=(e=P(e)).replace("&","");const t=new RegExp("(\\\\)","g");return(e=(e=e.replace(t,"")).replace(be,"")).replace(He,"")}function Ue(e){return e.split("_")[0]}const Me={es:[{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u00FA\u00FC]/g,alternative:"u"},{letter:/[\u00DA\u00DC]/g,alternative:"U"}],pl:[{letter:/[\u0105]/g,alternative:"a"},{letter:/[\u0104]/g,alternative:"A"},{letter:/[\u0107]/g,alternative:"c"},{letter:/[\u0106]/g,alternative:"C"},{letter:/[\u0119]/g,alternative:"e"},{letter:/[\u0118]/g,alternative:"E"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u0141]/g,alternative:"L"},{letter:/[\u0144]/g,alternative:"n"},{letter:/[\u0143]/g,alternative:"N"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u015B]/g,alternative:"s"},{letter:/[\u015A]/g,alternative:"S"},{letter:/[\u017A\u017C]/g,alternative:"z"},{letter:/[\u0179\u017B]/g,alternative:"Z"}],de:[{letter:/[\u00E4]/g,alternative:"ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00FC]/g,alternative:"ue"},{letter:/[\u00DC]/g,alternative:"Ue"},{letter:/[\u00F6]/g,alternative:"oe"},{letter:/[\u00D6]/g,alternative:"Oe"},{letter:/[\u00DF]/g,alternative:"ss"},{letter:/[\u1E9E]/g,alternative:"SS"}],nbnn:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"},{letter:/[\u00E9\u00E8\u00EA]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CA]/g,alternative:"E"},{letter:/[\u00F3\u00F2\u00F4]/g,alternative:"o"},{letter:/[\u00D3\u00D2\u00D4]/g,alternative:"O"}],sv:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E4]/g,alternative:"ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F6]/g,alternative:"oe"},{letter:/[\u00D6]/g,alternative:"Oe"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"}],fi:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"},{letter:/[\u00F6]/g,alternative:"o"},{letter:/[\u00D6]/g,alternative:"O"},{letter:/[\u017E]/g,alternative:"zh"},{letter:/[\u017D]/g,alternative:"Zh"},{letter:/[\u0161]/g,alternative:"sh"},{letter:/[\u0160]/g,alternative:"Sh"}],da:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"}],tr:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u011F]/g,alternative:"g"},{letter:/[\u011E]/g,alternative:"G"},{letter:/[\u00F6]/g,alternative:"o"},{letter:/[\u00D6]/g,alternative:"O"},{letter:/[\u015F]/g,alternative:"s"},{letter:/[\u015E]/g,alternative:"S"},{letter:/[\u00E2]/g,alternative:"a"},{letter:/[\u00C2]/g,alternative:"A"},{letter:/[\u0131\u00EE]/g,alternative:"i"},{letter:/[\u0130\u00CE]/g,alternative:"I"},{letter:/[\u00FC\u00FB]/g,alternative:"u"},{letter:/[\u00DC\u00DB]/g,alternative:"U"}],lv:[{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u010D]/g,alternative:"c"},{letter:/[\u010C]/g,alternative:"C"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u0123]/g,alternative:"g"},{letter:/[\u0122]/g,alternative:"G"},{letter:/[\u012B]/g,alternative:"i"},{letter:/[\u012A]/g,alternative:"I"},{letter:/[\u0137]/g,alternative:"k"},{letter:/[\u0136]/g,alternative:"K"},{letter:/[\u013C]/g,alternative:"l"},{letter:/[\u013B]/g,alternative:"L"},{letter:/[\u0146]/g,alternative:"n"},{letter:/[\u0145]/g,alternative:"N"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u016B]/g,alternative:"u"},{letter:/[\u016A]/g,alternative:"U"},{letter:/[\u017E]/g,alternative:"z"},{letter:/[\u017D]/g,alternative:"Z"}],is:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00F0]/g,alternative:"d"},{letter:/[\u00D0]/g,alternative:"D"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00F3\u00F6]/g,alternative:"o"},{letter:/[\u00D3\u00D6]/g,alternative:"O"},{letter:/[\u00FA]/g,alternative:"u"},{letter:/[\u00DA]/g,alternative:"U"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u00FE]/g,alternative:"th"},{letter:/[\u00DE]/g,alternative:"Th"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"}],fa:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00F0]/g,alternative:"d"},{letter:/[\u00D0]/g,alternative:"D"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u00FA]/g,alternative:"u"},{letter:/[\u00DA]/g,alternative:"U"},{letter:/[\u00F3\u00F8]/g,alternative:"o"},{letter:/[\u00D3\u00D8]/g,alternative:"O"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"}],cs:[{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u010D]/g,alternative:"c"},{letter:/[\u010C]/g,alternative:"C"},{letter:/[\u010F]/g,alternative:"d"},{letter:/[\u010E]/g,alternative:"D"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u0148]/g,alternative:"n"},{letter:/[\u0147]/g,alternative:"N"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u0159]/g,alternative:"r"},{letter:/[\u0158]/g,alternative:"R"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0165]/g,alternative:"t"},{letter:/[\u0164]/g,alternative:"T"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u017E]/g,alternative:"z"},{letter:/[\u017D]/g,alternative:"Z"},{letter:/[\u00E9\u011B]/g,alternative:"e"},{letter:/[\u00C9\u011A]/g,alternative:"E"},{letter:/[\u00FA\u016F]/g,alternative:"u"},{letter:/[\u00DA\u016E]/g,alternative:"U"}],ru:[{letter:/[\u0430]/g,alternative:"a"},{letter:/[\u0410]/g,alternative:"A"},{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"g"},{letter:/[\u0413]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u0435]/g,alternative:"e"},{letter:/[\u0415]/g,alternative:"E"},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0456\u0438\u0439]/g,alternative:"i"},{letter:/[\u0406\u0418\u0419]/g,alternative:"I"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u043D]/g,alternative:"n"},{letter:/[\u041D]/g,alternative:"N"},{letter:/[\u0440]/g,alternative:"r"},{letter:/[\u0420]/g,alternative:"R"},{letter:/[\u043E]/g,alternative:"o"},{letter:/[\u041E]/g,alternative:"O"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"kh"},{letter:/[\u0425]/g,alternative:"Kh"},{letter:/[\u0446]/g,alternative:"ts"},{letter:/[\u0426]/g,alternative:"Ts"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"},{letter:/[\u0449]/g,alternative:"shch"},{letter:/[\u0429]/g,alternative:"Shch"},{letter:/[\u044A]/g,alternative:"ie"},{letter:/[\u042A]/g,alternative:"Ie"},{letter:/[\u044B]/g,alternative:"y"},{letter:/[\u042B]/g,alternative:"Y"},{letter:/[\u044C]/g,alternative:""},{letter:/[\u042C]/g,alternative:""},{letter:/[\u0451\u044D]/g,alternative:"e"},{letter:/[\u0401\u042D]/g,alternative:"E"},{letter:/[\u044E]/g,alternative:"iu"},{letter:/[\u042E]/g,alternative:"Iu"},{letter:/[\u044F]/g,alternative:"ia"},{letter:/[\u042F]/g,alternative:"Ia"}],eo:[{letter:/[\u0109]/g,alternative:"ch"},{letter:/[\u0108]/g,alternative:"Ch"},{letter:/[\u011d]/g,alternative:"gh"},{letter:/[\u011c]/g,alternative:"Gh"},{letter:/[\u0125]/g,alternative:"hx"},{letter:/[\u0124]/g,alternative:"Hx"},{letter:/[\u0135]/g,alternative:"jx"},{letter:/[\u0134]/g,alternative:"Jx"},{letter:/[\u015d]/g,alternative:"sx"},{letter:/[\u015c]/g,alternative:"Sx"},{letter:/[\u016d]/g,alternative:"ux"},{letter:/[\u016c]/g,alternative:"Ux"}],af:[{letter:/[\u00E8\u00EA\u00EB]/g,alternative:"e"},{letter:/[\u00CB\u00C8\u00CA]/g,alternative:"E"},{letter:/[\u00EE\u00EF]/g,alternative:"i"},{letter:/[\u00CE\u00CF]/g,alternative:"I"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00FB\u00FC]/g,alternative:"u"},{letter:/[\u00DB\u00DC]/g,alternative:"U"}],ca:[{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"},{letter:/[\u00E9|\u00E8]/g,alternative:"e"},{letter:/[\u00C9|\u00C8]/g,alternative:"E"},{letter:/[\u00ED|\u00EF]/g,alternative:"i"},{letter:/[\u00CD|\u00CF]/g,alternative:"I"},{letter:/[\u00F3|\u00F2]/g,alternative:"o"},{letter:/[\u00D3|\u00D2]/g,alternative:"O"},{letter:/[\u00FA|\u00FC]/g,alternative:"u"},{letter:/[\u00DA|\u00DC]/g,alternative:"U"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"}],ast:[{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],an:[{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00F1]/g,alternative:"ny"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00D1]/g,alternative:"Ny"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u00C1]/g,alternative:"A"}],ay:[{letter:/(([\u00EF])|([\u00ED]))/g,alternative:"i"},{letter:/(([\u00CF])|([\u00CD]))/g,alternative:"I"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u0027]/g,alternative:""},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],en:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]/g,alternative:"Oe"},{letter:/[\u00EB\u00E9]/g,alternative:"e"},{letter:/[\u00C9\u00CB]/g,alternative:"E"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00EF]/g,alternative:"i"},{letter:/[\u00CF]/g,alternative:"I"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"}],fr:[{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]/g,alternative:"Oe"},{letter:/[\u00E9\u00E8\u00EB\u00EA]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CB\u00CA]/g,alternative:"E"},{letter:/[\u00E0\u00E2]/g,alternative:"a"},{letter:/[\u00C0\u00C2]/g,alternative:"A"},{letter:/[\u00EF\u00EE]/g,alternative:"i"},{letter:/[\u00CF\u00CE]/g,alternative:"I"},{letter:/[\u00F9\u00FB\u00FC]/g,alternative:"u"},{letter:/[\u00D9\u00DB\u00DC]/g,alternative:"U"},{letter:/[\u00F4]/g,alternative:"o"},{letter:/[\u00D4]/g,alternative:"O"},{letter:/[\u00FF]/g,alternative:"y"},{letter:/[\u0178]/g,alternative:"Y"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"}],it:[{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00C0]/g,alternative:"A"},{letter:/[\u00E9\u00E8]/g,alternative:"e"},{letter:/[\u00C9\u00C8]/g,alternative:"E"},{letter:/[\u00EC\u00ED\u00EE]/g,alternative:"i"},{letter:/[\u00CC\u00CD\u00CE]/g,alternative:"I"},{letter:/[\u00F3\u00F2]/g,alternative:"o"},{letter:/[\u00D3\u00D2]/g,alternative:"O"},{letter:/[\u00F9\u00FA]/g,alternative:"u"},{letter:/[\u00D9\u00DA]/g,alternative:"U"}],nl:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00E9\u00E8\u00EA\u00EB]/g,alternative:"e"},{letter:/[\u00C9\u00C8\u00CA\u00CB]/g,alternative:"E"},{letter:/[\u00F4\u00F6]/g,alternative:"o"},{letter:/[\u00D4\u00D6]/g,alternative:"O"},{letter:/[\u00EF]/g,alternative:"i"},{letter:/[\u00CF]/g,alternative:"I"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00C4]/g,alternative:"A"}],bm:[{letter:/[\u025B]/g,alternative:"e"},{letter:/[\u0190]/g,alternative:"E"},{letter:/[\u0272]/g,alternative:"ny"},{letter:/[\u019D]/g,alternative:"Ny"},{letter:/[\u014B]/g,alternative:"ng"},{letter:/[\u014A]/g,alternative:"Ng"},{letter:/[\u0254]/g,alternative:"o"},{letter:/[\u0186]/g,alternative:"O"}],uk:[{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"h"},{letter:/[\u0413]/g,alternative:"H"},{letter:/[\u0491]/g,alternative:"g"},{letter:/[\u0490]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u0070]/g,alternative:"r"},{letter:/[\u0050]/g,alternative:"R"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"kh"},{letter:/[\u0425]/g,alternative:"Kh"},{letter:/[\u0446]/g,alternative:"ts"},{letter:/[\u0426]/g,alternative:"Ts"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"},{letter:/[\u0449]/g,alternative:"shch"},{letter:/[\u0429]/g,alternative:"Shch"},{letter:/[\u044C\u042C]/g,alternative:""},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0438]/g,alternative:"y"},{letter:/[\u0418]/g,alternative:"Y"},{letter:/^[\u0454]/g,alternative:"ye"},{letter:/[\s][\u0454]/g,alternative:" ye"},{letter:/[\u0454]/g,alternative:"ie"},{letter:/^[\u0404]/g,alternative:"Ye"},{letter:/[\s][\u0404]/g,alternative:" Ye"},{letter:/[\u0404]/g,alternative:"IE"},{letter:/^[\u0457]/g,alternative:"yi"},{letter:/[\s][\u0457]/g,alternative:" yi"},{letter:/[\u0457]/g,alternative:"i"},{letter:/^[\u0407]/g,alternative:"Yi"},{letter:/[\s][\u0407]/g,alternative:" Yi"},{letter:/[\u0407]/g,alternative:"I"},{letter:/^[\u0439]/g,alternative:"y"},{letter:/[\s][\u0439]/g,alternative:" y"},{letter:/[\u0439]/g,alternative:"i"},{letter:/^[\u0419]/g,alternative:"Y"},{letter:/[\s][\u0419]/g,alternative:" Y"},{letter:/[\u0419]/g,alternative:"I"},{letter:/^[\u044E]/g,alternative:"yu"},{letter:/[\s][\u044E]/g,alternative:" yu"},{letter:/[\u044E]/g,alternative:"iu"},{letter:/^[\u042E]/g,alternative:"Yu"},{letter:/[\s][\u042E]/g,alternative:" Yu"},{letter:/[\u042E]/g,alternative:"IU"},{letter:/^[\u044F]/g,alternative:"ya"},{letter:/[\s][\u044F]/g,alternative:" ya"},{letter:/[\u044F]/g,alternative:"ia"},{letter:/^[\u042F]/g,alternative:"Ya"},{letter:/[\s][\u042F]/g,alternative:" Ya"},{letter:/[\u042F]/g,alternative:"IA"}],br:[{letter:/\u0063\u0027\u0068/g,alternative:"ch"},{letter:/\u0043\u0027\u0048/g,alternative:"CH"},{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea]/g,alternative:"e"},{letter:/[\u00ca]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"},{letter:/[\u00fb\u00f9\u00fc]/g,alternative:"u"},{letter:/[\u00db\u00d9\u00dc]/g,alternative:"U"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],ch:[{letter:/[\u0027]/g,alternative:""},{letter:/[\u00e5]/g,alternative:"a"},{letter:/[\u00c5]/g,alternative:"A"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],co:[{letter:/[\u00e2\u00e0]/g,alternative:"a"},{letter:/[\u00c2\u00c0]/g,alternative:"A"},{letter:/[\u00e6\u04d5]/g,alternative:"ae"},{letter:/[\u00c6\u04d4]/g,alternative:"Ae"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e9\u00ea\u00e8\u00eb]/g,alternative:"e"},{letter:/[\u00c9\u00ca\u00c8\u00cb]/g,alternative:"E"},{letter:/[\u00ec\u00ee\u00ef]/g,alternative:"i"},{letter:/[\u00cc\u00ce\u00cf]/g,alternative:"I"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u00f4\u00f2]/g,alternative:"o"},{letter:/[\u00d4\u00d2]/g,alternative:"O"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0152]]/g,alternative:"Oe"},{letter:/[\u00f9\u00fc]/g,alternative:"u"},{letter:/[\u00d9\u00dc]/g,alternative:"U"},{letter:/[\u00ff]/g,alternative:"y"},{letter:/[\u0178]/g,alternative:"Y"}],csb:[{letter:/[\u0105\u00e3]/g,alternative:"a"},{letter:/[\u0104\u00c3]/g,alternative:"A"},{letter:/[\u00e9\u00eb]/g,alternative:"e"},{letter:/[\u00c9\u00cb]/g,alternative:"E"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u0141]/g,alternative:"L"},{letter:/[\u0144]/g,alternative:"n"},{letter:/[\u0143]/g,alternative:"N"},{letter:/[\u00f2\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d2\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u00f9]/g,alternative:"u"},{letter:/[\u00d9]/g,alternative:"U"},{letter:/[\u017c]/g,alternative:"z"},{letter:/[\u017b]/g,alternative:"Z"}],cy:[{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea]/g,alternative:"e"},{letter:/[\u00ca]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"},{letter:/[\u00fb]/g,alternative:"u"},{letter:/[\u00db]/g,alternative:"U"},{letter:/[\u0175]/g,alternative:"w"},{letter:/[\u0174]/g,alternative:"W"},{letter:/[\u0177]/g,alternative:"y"},{letter:/[\u0176]/g,alternative:"Y"}],ee:[{letter:/[\u0256]/g,alternative:"d"},{letter:/[\u0189]/g,alternative:"D"},{letter:/[\u025b]/g,alternative:"e"},{letter:/[\u0190]/g,alternative:"E"},{letter:/[\u0192]/g,alternative:"f"},{letter:/[\u0191]/g,alternative:"F"},{letter:/[\u0263]/g,alternative:"g"},{letter:/[\u0194]/g,alternative:"G"},{letter:/[\u014b]/g,alternative:"ng"},{letter:/[\u014a]/g,alternative:"Ng"},{letter:/[\u0254]/g,alternative:"o"},{letter:/[\u0186]/g,alternative:"O"},{letter:/[\u028b]/g,alternative:"w"},{letter:/[\u01b2]/g,alternative:"W"},{letter:/\u0061\u0303/g,alternative:"a"},{letter:/[\u00e1\u00e0\u01ce\u00e2\u00e3]/g,alternative:"a"},{letter:/\u0041\u0303/g,alternative:"A"},{letter:/[\u00c1\u00c0\u01cd\u00c2\u00c3]/g,alternative:"A"},{letter:/[\u00e9\u00e8\u011b\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u011a\u00ca]/g,alternative:"E"},{letter:/[\u00f3\u00f2\u01d2\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d2\u01d1\u00d4]/g,alternative:"O"},{letter:/[\u00fa\u00f9\u01d4\u00fb]/g,alternative:"u"},{letter:/[\u00da\u00d9\u01d3\u00db]/g,alternative:"U"},{letter:/[\u00ed\u00ec\u01d0\u00ee]/g,alternative:"i"},{letter:/[\u00cd\u00cc\u01cf\u00ce]/g,alternative:"I"}],et:[{letter:/[\u0161]/g,alternative:"sh"},{letter:/[\u0160]/g,alternative:"Sh"},{letter:/[\u017e]/g,alternative:"zh"},{letter:/[\u017d]/g,alternative:"Zh"},{letter:/[\u00f5\u00f6]/g,alternative:"o"},{letter:/[\u00d6\u00d5]/g,alternative:"O"},{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],eu:[{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],fuc:[{letter:/[\u0253]/g,alternative:"b"},{letter:/[\u0181]/g,alternative:"B"},{letter:/[\u0257]/g,alternative:"d"},{letter:/[\u018a]/g,alternative:"D"},{letter:/[\u014b]/g,alternative:"ng"},{letter:/[\u014a]/g,alternative:"Ng"},{letter:/[\u0272\u00f1]/g,alternative:"ny"},{letter:/[\u019d\u00d1]/g,alternative:"Ny"},{letter:/[\u01b4]/g,alternative:"y"},{letter:/[\u01b3]/g,alternative:"Y"},{letter:/[\u0260]/g,alternative:"g"},{letter:/[\u0193]/g,alternative:"G"}],fj:[{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u012b]/g,alternative:"i"},{letter:/[\u012a]/g,alternative:"I"},{letter:/[\u016b]/g,alternative:"u"},{letter:/[\u016a]/g,alternative:"U"},{letter:/[\u014d]/g,alternative:"o"},{letter:/[\u014c]/g,alternative:"O"}],frp:[{letter:/[\u00e2]/g,alternative:"a"},{letter:/[\u00c2]/g,alternative:"A"},{letter:/[\u00ea\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00ca\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00fb\u00fc]/g,alternative:"u"},{letter:/[\u00db\u00dc]/g,alternative:"U"},{letter:/[\u00f4]/g,alternative:"o"},{letter:/[\u00d4]/g,alternative:"O"}],fur:[{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00e0\u00e2]/g,alternative:"a"},{letter:/[\u00c0\u00c2]/g,alternative:"A"},{letter:/[\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00ec\u00ee]/g,alternative:"i"},{letter:/[\u00cc\u00ce]/g,alternative:"I"},{letter:/[\u00f2\u00f4]/g,alternative:"o"},{letter:/[\u00d2\u00d4]/g,alternative:"O"},{letter:/[\u00f9\u00fb]/g,alternative:"u"},{letter:/[\u00d9\u00db]/g,alternative:"U"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u011f]/g,alternative:"g"},{letter:/[\u011e]/g,alternative:"G"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"}],fy:[{letter:/[\u00e2\u0101\u00e4\u00e5]/g,alternative:"a"},{letter:/[\u00c2\u0100\u00c4\u00c5]/g,alternative:"A"},{letter:/[\u00ea\u00e9\u0113]/g,alternative:"e"},{letter:/[\u00ca\u00c9\u0112]/g,alternative:"E"},{letter:/[\u00f4\u00f6]/g,alternative:"o"},{letter:/[\u00d4\u00d6]/g,alternative:"O"},{letter:/[\u00fa\u00fb\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00db\u00dc]/g,alternative:"U"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u0111\u00f0]/g,alternative:"d"},{letter:/[\u0110\u00d0]/g,alternative:"D"}],ga:[{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00f3]/g,alternative:"o"},{letter:/[\u00d3]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"}],gd:[{letter:/[\u00e0]/g,alternative:"a"},{letter:/[\u00c0]/g,alternative:"A"},{letter:/[\u00e8]/g,alternative:"e"},{letter:/[\u00c8]/g,alternative:"E"},{letter:/[\u00f2]/g,alternative:"o"},{letter:/[\u00d2]/g,alternative:"O"},{letter:/[\u00f9]/g,alternative:"u"},{letter:/[\u00d9]/g,alternative:"U"},{letter:/[\u00ec]/g,alternative:"i"},{letter:/[\u00cc]/g,alternative:"I"}],gl:[{letter:/[\u00e1\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c0]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f3]/g,alternative:"o"},{letter:/[\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00dc]/g,alternative:"U"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"}],gn:[{letter:/[\u2019]/g,alternative:""},{letter:/\u0067\u0303/g,alternative:"g"},{letter:/\u0047\u0303/g,alternative:"G"},{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"},{letter:/[\u1ebd]/g,alternative:"e"},{letter:/[\u1ebc]/g,alternative:"E"},{letter:/[\u0129]/g,alternative:"i"},{letter:/[\u0128]/g,alternative:"I"},{letter:/[\u00f5]/g,alternative:"o"},{letter:/[\u00d5]/g,alternative:"O"},{letter:/[\u00f1]/g,alternative:"n"},{letter:/[\u00d1]/g,alternative:"N"},{letter:/[\u0169]/g,alternative:"u"},{letter:/[\u0168]/g,alternative:"U"},{letter:/[\u1ef9]/g,alternative:"y"},{letter:/[\u1ef8]/g,alternative:"Y"}],gsw:[{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00f6]/g,alternative:"o"},{letter:/[\u00d6]/g,alternative:"O"},{letter:/[\u00fc]/g,alternative:"u"},{letter:/[\u00dc]/g,alternative:"U"}],hat:[{letter:/[\u00e8]/g,alternative:"e"},{letter:/[\u00c8]/g,alternative:"E"},{letter:/[\u00f2]/g,alternative:"o"},{letter:/[\u00d2]/g,alternative:"O"}],haw:[{letter:/[\u02bb\u0027\u2019]/g,alternative:""},{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u012b]/g,alternative:"i"},{letter:/[\u014d]/g,alternative:"o"},{letter:/[\u016b]/g,alternative:"u"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u012a]/g,alternative:"I"},{letter:/[\u014c]/g,alternative:"O"},{letter:/[\u016a]/g,alternative:"U"}],hr:[{letter:/[\u010d\u0107]/g,alternative:"c"},{letter:/[\u010c\u0106]/g,alternative:"C"},{letter:/[\u0111]/g,alternative:"dj"},{letter:/[\u0110]/g,alternative:"Dj"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"},{letter:/[\u01c4]/g,alternative:"DZ"},{letter:/[\u01c5]/g,alternative:"Dz"},{letter:/[\u01c6]/g,alternative:"dz"}],ka:[{letter:/[\u10d0]/g,alternative:"a"},{letter:/[\u10d1]/g,alternative:"b"},{letter:/[\u10d2]/g,alternative:"g"},{letter:/[\u10d3]/g,alternative:"d"},{letter:/[\u10d4]/g,alternative:"e"},{letter:/[\u10d5]/g,alternative:"v"},{letter:/[\u10d6]/g,alternative:"z"},{letter:/[\u10d7]/g,alternative:"t"},{letter:/[\u10d8]/g,alternative:"i"},{letter:/[\u10d9]/g,alternative:"k"},{letter:/[\u10da]/g,alternative:"l"},{letter:/[\u10db]/g,alternative:"m"},{letter:/[\u10dc]/g,alternative:"n"},{letter:/[\u10dd]/g,alternative:"o"},{letter:/[\u10de]/g,alternative:"p"},{letter:/[\u10df]/g,alternative:"zh"},{letter:/[\u10e0]/g,alternative:"r"},{letter:/[\u10e1]/g,alternative:"s"},{letter:/[\u10e2]/g,alternative:"t"},{letter:/[\u10e3]/g,alternative:"u"},{letter:/[\u10e4]/g,alternative:"p"},{letter:/[\u10e5]/g,alternative:"k"},{letter:/[\u10e6]/g,alternative:"gh"},{letter:/[\u10e7]/g,alternative:"q"},{letter:/[\u10e8]/g,alternative:"sh"},{letter:/[\u10e9]/g,alternative:"ch"},{letter:/[\u10ea]/g,alternative:"ts"},{letter:/[\u10eb]/g,alternative:"dz"},{letter:/[\u10ec]/g,alternative:"ts"},{letter:/[\u10ed]/g,alternative:"ch"},{letter:/[\u10ee]/g,alternative:"kh"},{letter:/[\u10ef]/g,alternative:"j"},{letter:/[\u10f0]/g,alternative:"h"}],kal:[{letter:/[\u00E5]/g,alternative:"aa"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E6\u04D5]/g,alternative:"ae"},{letter:/[\u00C6\u04D4]/g,alternative:"Ae"},{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00D8]/g,alternative:"Oe"}],kin:[{letter:/[\u2019\u0027]/g,alternative:""}],lb:[{letter:/[\u00e4]/g,alternative:"a"},{letter:/[\u00c4]/g,alternative:"A"},{letter:/[\u00eb\u00e9]/g,alternative:"e"},{letter:/[\u00cb\u00c9]/g,alternative:"E"}],li:[{letter:/[\u00e1\u00e2\u00e0\u00e4]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u00c0\u00c4]/g,alternative:"A"},{letter:/[\u00eb\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00cb\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00f6\u00f3]/g,alternative:"o"},{letter:/[\u00d6\u00d3]/g,alternative:"O"}],lin:[{letter:/[\u00e1\u00e2\u01ce]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u01cd]/g,alternative:"A"},{letter:/\u025b\u0301/g,alternative:"e"},{letter:/\u025b\u0302/g,alternative:"e"},{letter:/\u025b\u030c/g,alternative:"e"},{letter:/[\u00e9\u00ea\u011b\u025b]/g,alternative:"e"},{letter:/\u0190\u0301/g,alternative:"E"},{letter:/\u0190\u0302/g,alternative:"E"},{letter:/\u0190\u030c/g,alternative:"E"},{letter:/[\u00c9\u00ca\u011a\u0190]/g,alternative:"E"},{letter:/[\u00ed\u00ee\u01d0]/g,alternative:"i"},{letter:/[\u00cd\u00ce\u01cf]/g,alternative:"I"},{letter:/\u0254\u0301/g,alternative:"o"},{letter:/\u0254\u0302/g,alternative:"o"},{letter:/\u0254\u030c/g,alternative:"o"},{letter:/[\u00f3\u00f4\u01d2\u0254]/g,alternative:"o"},{letter:/\u0186\u0301/g,alternative:"O"},{letter:/\u0186\u0302/g,alternative:"O"},{letter:/\u0186\u030c/g,alternative:"O"},{letter:/[\u00d3\u00d4\u01d1\u0186]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"}],lt:[{letter:/[\u0105]/g,alternative:"a"},{letter:/[\u0104]/g,alternative:"A"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u0119\u0117]/g,alternative:"e"},{letter:/[\u0118\u0116]/g,alternative:"E"},{letter:/[\u012f]/g,alternative:"i"},{letter:/[\u012e]/g,alternative:"I"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0173\u016b]/g,alternative:"u"},{letter:/[\u0172\u016a]/g,alternative:"U"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"}],mg:[{letter:/[\u00f4]/g,alternative:"ao"},{letter:/[\u00d4]/g,alternative:"Ao"}],mk:[{letter:/[\u0430]/g,alternative:"a"},{letter:/[\u0410]/g,alternative:"A"},{letter:/[\u0431]/g,alternative:"b"},{letter:/[\u0411]/g,alternative:"B"},{letter:/[\u0432]/g,alternative:"v"},{letter:/[\u0412]/g,alternative:"V"},{letter:/[\u0433]/g,alternative:"g"},{letter:/[\u0413]/g,alternative:"G"},{letter:/[\u0434]/g,alternative:"d"},{letter:/[\u0414]/g,alternative:"D"},{letter:/[\u0453]/g,alternative:"gj"},{letter:/[\u0403]/g,alternative:"Gj"},{letter:/[\u0435]/g,alternative:"e"},{letter:/[\u0415]/g,alternative:"E"},{letter:/[\u0436]/g,alternative:"zh"},{letter:/[\u0416]/g,alternative:"Zh"},{letter:/[\u0437]/g,alternative:"z"},{letter:/[\u0417]/g,alternative:"Z"},{letter:/[\u0455]/g,alternative:"dz"},{letter:/[\u0405]/g,alternative:"Dz"},{letter:/[\u0438]/g,alternative:"i"},{letter:/[\u0418]/g,alternative:"I"},{letter:/[\u0458]/g,alternative:"j"},{letter:/[\u0408]/g,alternative:"J"},{letter:/[\u043A]/g,alternative:"k"},{letter:/[\u041A]/g,alternative:"K"},{letter:/[\u043B]/g,alternative:"l"},{letter:/[\u041B]/g,alternative:"L"},{letter:/[\u0459]/g,alternative:"lj"},{letter:/[\u0409]/g,alternative:"Lj"},{letter:/[\u043C]/g,alternative:"m"},{letter:/[\u041C]/g,alternative:"M"},{letter:/[\u043D]/g,alternative:"n"},{letter:/[\u041D]/g,alternative:"N"},{letter:/[\u045A]/g,alternative:"nj"},{letter:/[\u040A]/g,alternative:"Nj"},{letter:/[\u043E]/g,alternative:"o"},{letter:/[\u041E]/g,alternative:"O"},{letter:/[\u0440]/g,alternative:"r"},{letter:/[\u0420]/g,alternative:"R"},{letter:/[\u043F]/g,alternative:"p"},{letter:/[\u041F]/g,alternative:"P"},{letter:/[\u0441]/g,alternative:"s"},{letter:/[\u0421]/g,alternative:"S"},{letter:/[\u0442]/g,alternative:"t"},{letter:/[\u0422]/g,alternative:"T"},{letter:/[\u045C]/g,alternative:"kj"},{letter:/[\u040C]/g,alternative:"Kj"},{letter:/[\u0443]/g,alternative:"u"},{letter:/[\u0423]/g,alternative:"U"},{letter:/[\u0444]/g,alternative:"f"},{letter:/[\u0424]/g,alternative:"F"},{letter:/[\u0445]/g,alternative:"h"},{letter:/[\u0425]/g,alternative:"H"},{letter:/[\u0446]/g,alternative:"c"},{letter:/[\u0426]/g,alternative:"C"},{letter:/[\u0447]/g,alternative:"ch"},{letter:/[\u0427]/g,alternative:"Ch"},{letter:/[\u045F]/g,alternative:"dj"},{letter:/[\u040F]/g,alternative:"Dj"},{letter:/[\u0448]/g,alternative:"sh"},{letter:/[\u0428]/g,alternative:"Sh"}],mri:[{letter:/[\u0101]/g,alternative:"aa"},{letter:/[\u0100]/g,alternative:"Aa"},{letter:/[\u0113]/g,alternative:"ee"},{letter:/[\u0112]/g,alternative:"Ee"},{letter:/[\u012b]/g,alternative:"ii"},{letter:/[\u012a]/g,alternative:"Ii"},{letter:/[\u014d]/g,alternative:"oo"},{letter:/[\u014c]/g,alternative:"Oo"},{letter:/[\u016b]/g,alternative:"uu"},{letter:/[\u016a]/g,alternative:"Uu"}],mwl:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u00fa\u0169]/g,alternative:"u"},{letter:/[\u00da\u0168]/g,alternative:"U"}],oci:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e0\u00e1]/g,alternative:"a"},{letter:/[\u00c0\u00c1]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00fc]/g,alternative:"u"},{letter:/[\u00da\u00dc]/g,alternative:"U"},{letter:/[\u00b7]/g,alternative:""}],orm:[{letter:/[\u0027]/g,alternative:""}],pt:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e1\u00e2\u00e3\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c2\u00c3\u00c0]/g,alternative:"A"},{letter:/[\u00e9\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00ca]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f4\u00f5]/g,alternative:"o"},{letter:/[\u00d3\u00d4\u00d5]/g,alternative:"O"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"}],roh:[{letter:/[\u00e9\u00e8\u00ea]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u00ca]/g,alternative:"E"},{letter:/[\u00ef]/g,alternative:"i"},{letter:/[\u00cf]/g,alternative:"I"},{letter:/[\u00f6]/g,alternative:"oe"},{letter:/[\u00d6]/g,alternative:"Oe"},{letter:/[\u00fc]/g,alternative:"ue"},{letter:/[\u00dc]/g,alternative:"Ue"},{letter:/[\u00e4]/g,alternative:"ae"},{letter:/[\u00c4]/g,alternative:"Ae"}],rup:[{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"}],ro:[{letter:/[\u0103\u00e2]/g,alternative:"a"},{letter:/[\u0102\u00c2]/g,alternative:"A"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u0219\u015f]/g,alternative:"s"},{letter:/[\u0218\u015e]/g,alternative:"S"},{letter:/[\u021b\u0163]/g,alternative:"t"},{letter:/[\u021a\u0162]/g,alternative:"T"}],tlh:[{letter:/[\u2019\u0027]/g,alternative:""}],sk:[{letter:/[\u01c4]/g,alternative:"DZ"},{letter:/[\u01c5]/g,alternative:"Dz"},{letter:/[\u01c6]/g,alternative:"dz"},{letter:/[\u00e1\u00e4]/g,alternative:"a"},{letter:/[\u00c1\u00c4]/g,alternative:"A"},{letter:/[\u010d]/g,alternative:"c"},{letter:/[\u010c]/g,alternative:"C"},{letter:/[\u010f]/g,alternative:"d"},{letter:/[\u010e]/g,alternative:"D"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u013e\u013a]/g,alternative:"l"},{letter:/[\u013d\u0139]/g,alternative:"L"},{letter:/[\u0148]/g,alternative:"n"},{letter:/[\u0147]/g,alternative:"N"},{letter:/[\u00f3\u00f4]/g,alternative:"o"},{letter:/[\u00d3\u00d4]/g,alternative:"O"},{letter:/[\u0155]/g,alternative:"r"},{letter:/[\u0154]/g,alternative:"R"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0165]/g,alternative:"t"},{letter:/[\u0164]/g,alternative:"T"},{letter:/[\u00fa]/g,alternative:"u"},{letter:/[\u00da]/g,alternative:"U"},{letter:/[\u00fd]/g,alternative:"y"},{letter:/[\u00dd]/g,alternative:"Y"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"}],sl:[{letter:/[\u010d\u0107]/g,alternative:"c"},{letter:/[\u010c\u0106]/g,alternative:"C"},{letter:/[\u0111]/g,alternative:"d"},{letter:/[\u0110]/g,alternative:"D"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u017e]/g,alternative:"z"},{letter:/[\u017d]/g,alternative:"Z"},{letter:/[\u00e0\u00e1\u0203\u0201]/g,alternative:"a"},{letter:/[\u00c0\u00c1\u0202\u0200]/g,alternative:"A"},{letter:/[\u00e8\u00e9\u0207\u0205]/g,alternative:"e"},{letter:/\u01dd\u0300/g,alternative:"e"},{letter:/\u01dd\u030f/g,alternative:"e"},{letter:/\u1eb9\u0301/g,alternative:"e"},{letter:/\u1eb9\u0311/g,alternative:"e"},{letter:/[\u00c8\u00c9\u0206\u0204]/g,alternative:"E"},{letter:/\u018e\u030f/g,alternative:"E"},{letter:/\u018e\u0300/g,alternative:"E"},{letter:/\u1eb8\u0311/g,alternative:"E"},{letter:/\u1eb8\u0301/g,alternative:"E"},{letter:/[\u00ec\u00ed\u020b\u0209]/g,alternative:"i"},{letter:/[\u00cc\u00cd\u020a\u0208]/g,alternative:"I"},{letter:/[\u00f2\u00f3\u020f\u020d]/g,alternative:"o"},{letter:/\u1ecd\u0311/g,alternative:"o"},{letter:/\u1ecd\u0301/g,alternative:"o"},{letter:/\u1ecc\u0311/g,alternative:"O"},{letter:/\u1ecc\u0301/g,alternative:"O"},{letter:/[\u00d2\u00d3\u020e\u020c]/g,alternative:"O"},{letter:/[\u00f9\u00fa\u0217\u0215]/g,alternative:"u"},{letter:/[\u00d9\u00da\u0216\u0214]/g,alternative:"U"},{letter:/[\u0155\u0213]/g,alternative:"r"},{letter:/[\u0154\u0212]/g,alternative:"R"}],sq:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00eb]/g,alternative:"e"},{letter:/[\u00cb]/g,alternative:"E"}],hu:[{letter:/[\u00e1]/g,alternative:"a"},{letter:/[\u00c1]/g,alternative:"A"},{letter:/[\u00e9]/g,alternative:"e"},{letter:/[\u00c9]/g,alternative:"E"},{letter:/[\u00ed]/g,alternative:"i"},{letter:/[\u00cd]/g,alternative:"I"},{letter:/[\u00f3\u00f6\u0151]/g,alternative:"o"},{letter:/[\u00d3\u00d6\u0150]/g,alternative:"O"},{letter:/[\u00fa\u00fc\u0171]/g,alternative:"u"},{letter:/[\u00da\u00dc\u0170]/g,alternative:"U"}],srd:[{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00e0\u00e1]/g,alternative:"a"},{letter:/[\u00c0\u00c1]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00ed\u00ef]/g,alternative:"i"},{letter:/[\u00cd\u00cf]/g,alternative:"I"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00fa\u00f9]/g,alternative:"u"},{letter:/[\u00da\u00d9]/g,alternative:"U"}],szl:[{letter:/[\u0107]/g,alternative:"c"},{letter:/[\u0106]/g,alternative:"C"},{letter:/[\u00e3]/g,alternative:"a"},{letter:/[\u00c3]/g,alternative:"A"},{letter:/[\u0142]/g,alternative:"u"},{letter:/[\u0141]/g,alternative:"U"},{letter:/[\u006e]/g,alternative:"n"},{letter:/[\u004e]/g,alternative:"N"},{letter:/[\u014f\u014d\u00f4\u00f5]/g,alternative:"o"},{letter:/[\u014e\u014c\u00d4\u00d5]/g,alternative:"O"},{letter:/[\u015b]/g,alternative:"s"},{letter:/[\u015a]/g,alternative:"S"},{letter:/[\u017a\u017c\u017e]/g,alternative:"z"},{letter:/[\u0179\u017b\u017d]/g,alternative:"Z"},{letter:/[\u016f]/g,alternative:"u"},{letter:/[\u016e]/g,alternative:"U"},{letter:/[\u010d]/g,alternative:"cz"},{letter:/[\u010c]/g,alternative:"Cz"},{letter:/[\u0159]/g,alternative:"rz"},{letter:/[\u0158]/g,alternative:"Rz"},{letter:/[\u0161]/g,alternative:"sz"},{letter:/[\u0160]/g,alternative:"Sz"}],tah:[{letter:/[\u0101\u00e2\u00e0]/g,alternative:"a"},{letter:/[\u0100\u00c2\u00c0]/g,alternative:"A"},{letter:/[\u00ef\u00ee\u00ec]/g,alternative:"i"},{letter:/[\u00cf\u00ce\u00cc]/g,alternative:"I"},{letter:/[\u0113\u00ea\u00e9]/g,alternative:"e"},{letter:/[\u0112\u00ca\u00c9]/g,alternative:"E"},{letter:/[\u016b\u00fb\u00fa]/g,alternative:"u"},{letter:/[\u016a\u00db\u00da]/g,alternative:"U"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/[\u00f2\u00f4\u014d]/g,alternative:"o"},{letter:/[\u00d2\u00d4\u014c]/g,alternative:"O"},{letter:/[\u2019\u0027\u2018]/g,alternative:""}],vec:[{letter:/\u0073\u002d\u0063/g,alternative:"sc"},{letter:/\u0053\u002d\u0043/g,alternative:"SC"},{letter:/\u0073\u0027\u0063/g,alternative:"sc"},{letter:/\u0053\u0027\u0043/g,alternative:"SC"},{letter:/\u0073\u2019\u0063/g,alternative:"sc"},{letter:/\u0053\u2019\u0043/g,alternative:"SC"},{letter:/\u0073\u2018\u0063/g,alternative:"sc"},{letter:/\u0053\u2018\u0043/g,alternative:"SC"},{letter:/\u0053\u002d\u0063/g,alternative:"Sc"},{letter:/\u0053\u0027\u0063/g,alternative:"Sc"},{letter:/\u0053\u2019\u0063/g,alternative:"Sc"},{letter:/\u0053\u2018\u0063/g,alternative:"Sc"},{letter:/\u0063\u2019/g,alternative:"c"},{letter:/\u0043\u2019/g,alternative:"C"},{letter:/\u0063\u2018/g,alternative:"c"},{letter:/\u0043\u2018/g,alternative:"C"},{letter:/\u0063\u0027/g,alternative:"c"},{letter:/\u0043\u0027/g,alternative:"C"},{letter:/[\u00e0\u00e1\u00e2]/g,alternative:"a"},{letter:/[\u00c0\u00c1\u00c2]/g,alternative:"A"},{letter:/[\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c8\u00c9]/g,alternative:"E"},{letter:/[\u00f2\u00f3]/g,alternative:"o"},{letter:/[\u00d2\u00d3]/g,alternative:"O"},{letter:/[\u00f9\u00fa]/g,alternative:"u"},{letter:/[\u00d9\u00da]/g,alternative:"U"},{letter:/[\u00e7\u010d\u010b]/g,alternative:"c"},{letter:/[\u00c7\u010c\u010a]/g,alternative:"C"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u00a3\u0141]/g,alternative:"L"},{letter:/\ud835\udeff/g,alternative:"dh"},{letter:/[\u0111\u03b4]/g,alternative:"dh"},{letter:/[\u0110\u0394]/g,alternative:"Dh"}],wa:[{letter:/[\u00e2\u00e5]/g,alternative:"a"},{letter:/[\u00c2\u00c5]/g,alternative:"A"},{letter:/[\u00e7]/g,alternative:"c"},{letter:/[\u00c7]/g,alternative:"C"},{letter:/\u0065\u030a/g,alternative:"e"},{letter:/\u0045\u030a/g,alternative:"E"},{letter:/[\u00eb\u00ea\u00e8\u00e9]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u00ca\u00cb]/g,alternative:"E"},{letter:/[\u00ee]/g,alternative:"i"},{letter:/[\u00ce]/g,alternative:"I"},{letter:/[\u00f4\u00f6]/g,alternative:"o"},{letter:/[\u00d6\u00d4]/g,alternative:"O"},{letter:/[\u00fb]/g,alternative:"u"},{letter:/[\u00db]/g,alternative:"U"}],yor:[{letter:/[\u00e1\u00e0]/g,alternative:"a"},{letter:/[\u00c1\u00c0]/g,alternative:"A"},{letter:/[\u00ec\u00ed]/g,alternative:"i"},{letter:/[\u00cc\u00cd]/g,alternative:"I"},{letter:/\u1ecd\u0301/g,alternative:"o"},{letter:/\u1ecc\u0301/g,alternative:"O"},{letter:/\u1ecd\u0300/g,alternative:"o"},{letter:/\u1ecc\u0300/g,alternative:"O"},{letter:/[\u00f3\u00f2\u1ecd]/g,alternative:"o"},{letter:/[\u00d3\u00d2\u1ecc]/g,alternative:"O"},{letter:/[\u00fa\u00f9]/g,alternative:"u"},{letter:/[\u00da\u00d9]/g,alternative:"U"},{letter:/\u1eb9\u0301/g,alternative:"e"},{letter:/\u1eb8\u0301/g,alternative:"E"},{letter:/\u1eb9\u0300/g,alternative:"e"},{letter:/\u1eb8\u0300/g,alternative:"E"},{letter:/[\u00e9\u00e8\u1eb9]/g,alternative:"e"},{letter:/[\u00c9\u00c8\u1eb8]/g,alternative:"E"},{letter:/[\u1e63]/g,alternative:"s"},{letter:/[\u1e62]/g,alternative:"S"}]};const Se=[{letter:/[\u00A3]/g,alternative:""},{letter:/[\u20AC]/g,alternative:"E"},{letter:/[\u00AA]/g,alternative:"a"},{letter:/[\u00BA]/g,alternative:"o"},{letter:/[\u00C0]/g,alternative:"A"},{letter:/[\u00C1]/g,alternative:"A"},{letter:/[\u00C2]/g,alternative:"A"},{letter:/[\u00C3]/g,alternative:"A"},{letter:/[\u00C4]/g,alternative:"A"},{letter:/[\u00C5]/g,alternative:"A"},{letter:/[\u00C6]/g,alternative:"AE"},{letter:/[\u00C7]/g,alternative:"C"},{letter:/[\u00C8]/g,alternative:"E"},{letter:/[\u00C9]/g,alternative:"E"},{letter:/[\u00CA]/g,alternative:"E"},{letter:/[\u00CB]/g,alternative:"E"},{letter:/[\u00CC]/g,alternative:"I"},{letter:/[\u00CD]/g,alternative:"I"},{letter:/[\u00CE]/g,alternative:"I"},{letter:/[\u00CF]/g,alternative:"I"},{letter:/[\u00D0]/g,alternative:"D"},{letter:/[\u00D1]/g,alternative:"N"},{letter:/[\u00D2]/g,alternative:"O"},{letter:/[\u00D3]/g,alternative:"O"},{letter:/[\u00D4]/g,alternative:"O"},{letter:/[\u00D5]/g,alternative:"O"},{letter:/[\u00D6]/g,alternative:"O"},{letter:/[\u00D8]/g,alternative:"O"},{letter:/[\u00D9]/g,alternative:"U"},{letter:/[\u00DA]/g,alternative:"U"},{letter:/[\u00DB]/g,alternative:"U"},{letter:/[\u00DC]/g,alternative:"U"},{letter:/[\u00DD]/g,alternative:"Y"},{letter:/[\u00DE]/g,alternative:"TH"},{letter:/[\u00DF]/g,alternative:"s"},{letter:/[\u00E0]/g,alternative:"a"},{letter:/[\u00E1]/g,alternative:"a"},{letter:/[\u00E2]/g,alternative:"a"},{letter:/[\u00E3]/g,alternative:"a"},{letter:/[\u00E4]/g,alternative:"a"},{letter:/[\u00E5]/g,alternative:"a"},{letter:/[\u00E6]/g,alternative:"ae"},{letter:/[\u00E7]/g,alternative:"c"},{letter:/[\u00E8]/g,alternative:"e"},{letter:/[\u00E9]/g,alternative:"e"},{letter:/[\u00EA]/g,alternative:"e"},{letter:/[\u00EB]/g,alternative:"e"},{letter:/[\u00EC]/g,alternative:"i"},{letter:/[\u00ED]/g,alternative:"i"},{letter:/[\u00EE]/g,alternative:"i"},{letter:/[\u00EF]/g,alternative:"i"},{letter:/[\u00F0]/g,alternative:"d"},{letter:/[\u00F1]/g,alternative:"n"},{letter:/[\u00F2]/g,alternative:"o"},{letter:/[\u00F3]/g,alternative:"o"},{letter:/[\u00F4]/g,alternative:"o"},{letter:/[\u00F5]/g,alternative:"o"},{letter:/[\u00F6]/g,alternative:"o"},{letter:/[\u00F8]/g,alternative:"o"},{letter:/[\u00F9]/g,alternative:"u"},{letter:/[\u00FA]/g,alternative:"u"},{letter:/[\u00FB]/g,alternative:"u"},{letter:/[\u00FC]/g,alternative:"u"},{letter:/[\u00FD]/g,alternative:"y"},{letter:/[\u00FE]/g,alternative:"th"},{letter:/[\u00FF]/g,alternative:"y"},{letter:/[\u0100]/g,alternative:"A"},{letter:/[\u0101]/g,alternative:"a"},{letter:/[\u0102]/g,alternative:"A"},{letter:/[\u0103]/g,alternative:"a"},{letter:/[\u0104]/g,alternative:"A"},{letter:/[\u0105]/g,alternative:"a"},{letter:/[\u0106]/g,alternative:"C"},{letter:/[\u0107]/g,alternative:"c"},{letter:/[\u0108]/g,alternative:"C"},{letter:/[\u0109]/g,alternative:"c"},{letter:/[\u010A]/g,alternative:"C"},{letter:/[\u010B]/g,alternative:"c"},{letter:/[\u010C]/g,alternative:"C"},{letter:/[\u010D]/g,alternative:"c"},{letter:/[\u010E]/g,alternative:"D"},{letter:/[\u010F]/g,alternative:"d"},{letter:/[\u0110]/g,alternative:"D"},{letter:/[\u0111]/g,alternative:"d"},{letter:/[\u0112]/g,alternative:"E"},{letter:/[\u0113]/g,alternative:"e"},{letter:/[\u0114]/g,alternative:"E"},{letter:/[\u0115]/g,alternative:"e"},{letter:/[\u0116]/g,alternative:"E"},{letter:/[\u0117]/g,alternative:"e"},{letter:/[\u0118]/g,alternative:"E"},{letter:/[\u0119]/g,alternative:"e"},{letter:/[\u011A]/g,alternative:"E"},{letter:/[\u011B]/g,alternative:"e"},{letter:/[\u011C]/g,alternative:"G"},{letter:/[\u011D]/g,alternative:"g"},{letter:/[\u011E]/g,alternative:"G"},{letter:/[\u011F]/g,alternative:"g"},{letter:/[\u0120]/g,alternative:"G"},{letter:/[\u0121]/g,alternative:"g"},{letter:/[\u0122]/g,alternative:"G"},{letter:/[\u0123]/g,alternative:"g"},{letter:/[\u0124]/g,alternative:"H"},{letter:/[\u0125]/g,alternative:"h"},{letter:/[\u0126]/g,alternative:"H"},{letter:/[\u0127]/g,alternative:"h"},{letter:/[\u0128]/g,alternative:"I"},{letter:/[\u0129]/g,alternative:"i"},{letter:/[\u012A]/g,alternative:"I"},{letter:/[\u012B]/g,alternative:"i"},{letter:/[\u012C]/g,alternative:"I"},{letter:/[\u012D]/g,alternative:"i"},{letter:/[\u012E]/g,alternative:"I"},{letter:/[\u012F]/g,alternative:"i"},{letter:/[\u0130]/g,alternative:"I"},{letter:/[\u0131]/g,alternative:"i"},{letter:/[\u0132]/g,alternative:"IJ"},{letter:/[\u0133]/g,alternative:"ij"},{letter:/[\u0134]/g,alternative:"J"},{letter:/[\u0135]/g,alternative:"j"},{letter:/[\u0136]/g,alternative:"K"},{letter:/[\u0137]/g,alternative:"k"},{letter:/[\u0138]/g,alternative:"k"},{letter:/[\u0139]/g,alternative:"L"},{letter:/[\u013A]/g,alternative:"l"},{letter:/[\u013B]/g,alternative:"L"},{letter:/[\u013C]/g,alternative:"l"},{letter:/[\u013D]/g,alternative:"L"},{letter:/[\u013E]/g,alternative:"l"},{letter:/[\u013F]/g,alternative:"L"},{letter:/[\u0140]/g,alternative:"l"},{letter:/[\u0141]/g,alternative:"L"},{letter:/[\u0142]/g,alternative:"l"},{letter:/[\u0143]/g,alternative:"N"},{letter:/[\u0144]/g,alternative:"n"},{letter:/[\u0145]/g,alternative:"N"},{letter:/[\u0146]/g,alternative:"n"},{letter:/[\u0147]/g,alternative:"N"},{letter:/[\u0148]/g,alternative:"n"},{letter:/[\u0149]/g,alternative:"n"},{letter:/[\u014A]/g,alternative:"N"},{letter:/[\u014B]/g,alternative:"n"},{letter:/[\u014C]/g,alternative:"O"},{letter:/[\u014D]/g,alternative:"o"},{letter:/[\u014E]/g,alternative:"O"},{letter:/[\u014F]/g,alternative:"o"},{letter:/[\u0150]/g,alternative:"O"},{letter:/[\u0151]/g,alternative:"o"},{letter:/[\u0152]/g,alternative:"OE"},{letter:/[\u0153]/g,alternative:"oe"},{letter:/[\u0154]/g,alternative:"R"},{letter:/[\u0155]/g,alternative:"r"},{letter:/[\u0156]/g,alternative:"R"},{letter:/[\u0157]/g,alternative:"r"},{letter:/[\u0158]/g,alternative:"R"},{letter:/[\u0159]/g,alternative:"r"},{letter:/[\u015A]/g,alternative:"S"},{letter:/[\u015B]/g,alternative:"s"},{letter:/[\u015C]/g,alternative:"S"},{letter:/[\u015D]/g,alternative:"s"},{letter:/[\u015E]/g,alternative:"S"},{letter:/[\u015F]/g,alternative:"s"},{letter:/[\u0160]/g,alternative:"S"},{letter:/[\u0161]/g,alternative:"s"},{letter:/[\u0162]/g,alternative:"T"},{letter:/[\u0163]/g,alternative:"t"},{letter:/[\u0164]/g,alternative:"T"},{letter:/[\u0165]/g,alternative:"t"},{letter:/[\u0166]/g,alternative:"T"},{letter:/[\u0167]/g,alternative:"t"},{letter:/[\u0168]/g,alternative:"U"},{letter:/[\u0169]/g,alternative:"u"},{letter:/[\u016A]/g,alternative:"U"},{letter:/[\u016B]/g,alternative:"u"},{letter:/[\u016C]/g,alternative:"U"},{letter:/[\u016D]/g,alternative:"u"},{letter:/[\u016E]/g,alternative:"U"},{letter:/[\u016F]/g,alternative:"u"},{letter:/[\u0170]/g,alternative:"U"},{letter:/[\u0171]/g,alternative:"u"},{letter:/[\u0172]/g,alternative:"U"},{letter:/[\u0173]/g,alternative:"u"},{letter:/[\u0174]/g,alternative:"W"},{letter:/[\u0175]/g,alternative:"w"},{letter:/[\u0176]/g,alternative:"Y"},{letter:/[\u0177]/g,alternative:"y"},{letter:/[\u0178]/g,alternative:"Y"},{letter:/[\u0179]/g,alternative:"Z"},{letter:/[\u017A]/g,alternative:"z"},{letter:/[\u017B]/g,alternative:"Z"},{letter:/[\u017C]/g,alternative:"z"},{letter:/[\u017D]/g,alternative:"Z"},{letter:/[\u017E]/g,alternative:"z"},{letter:/[\u017F]/g,alternative:"s"},{letter:/[\u01A0]/g,alternative:"O"},{letter:/[\u01A1]/g,alternative:"o"},{letter:/[\u01AF]/g,alternative:"U"},{letter:/[\u01B0]/g,alternative:"u"},{letter:/[\u01CD]/g,alternative:"A"},{letter:/[\u01CE]/g,alternative:"a"},{letter:/[\u01CF]/g,alternative:"I"},{letter:/[\u01D0]/g,alternative:"i"},{letter:/[\u01D1]/g,alternative:"O"},{letter:/[\u01D2]/g,alternative:"o"},{letter:/[\u01D3]/g,alternative:"U"},{letter:/[\u01D4]/g,alternative:"u"},{letter:/[\u01D5]/g,alternative:"U"},{letter:/[\u01D6]/g,alternative:"u"},{letter:/[\u01D7]/g,alternative:"U"},{letter:/[\u01D8]/g,alternative:"u"},{letter:/[\u01D9]/g,alternative:"U"},{letter:/[\u01DA]/g,alternative:"u"},{letter:/[\u01DB]/g,alternative:"U"},{letter:/[\u01DC]/g,alternative:"u"},{letter:/[\u0218]/g,alternative:"S"},{letter:/[\u0219]/g,alternative:"s"},{letter:/[\u021A]/g,alternative:"T"},{letter:/[\u021B]/g,alternative:"t"},{letter:/[\u0251]/g,alternative:"a"},{letter:/[\u1EA0]/g,alternative:"A"},{letter:/[\u1EA1]/g,alternative:"a"},{letter:/[\u1EA2]/g,alternative:"A"},{letter:/[\u1EA3]/g,alternative:"a"},{letter:/[\u1EA4]/g,alternative:"A"},{letter:/[\u1EA5]/g,alternative:"a"},{letter:/[\u1EA6]/g,alternative:"A"},{letter:/[\u1EA7]/g,alternative:"a"},{letter:/[\u1EA8]/g,alternative:"A"},{letter:/[\u1EA9]/g,alternative:"a"},{letter:/[\u1EAA]/g,alternative:"A"},{letter:/[\u1EAB]/g,alternative:"a"},{letter:/[\u1EA6]/g,alternative:"A"},{letter:/[\u1EAD]/g,alternative:"a"},{letter:/[\u1EAE]/g,alternative:"A"},{letter:/[\u1EAF]/g,alternative:"a"},{letter:/[\u1EB0]/g,alternative:"A"},{letter:/[\u1EB1]/g,alternative:"a"},{letter:/[\u1EB2]/g,alternative:"A"},{letter:/[\u1EB3]/g,alternative:"a"},{letter:/[\u1EB4]/g,alternative:"A"},{letter:/[\u1EB5]/g,alternative:"a"},{letter:/[\u1EB6]/g,alternative:"A"},{letter:/[\u1EB7]/g,alternative:"a"},{letter:/[\u1EB8]/g,alternative:"E"},{letter:/[\u1EB9]/g,alternative:"e"},{letter:/[\u1EBA]/g,alternative:"E"},{letter:/[\u1EBB]/g,alternative:"e"},{letter:/[\u1EBC]/g,alternative:"E"},{letter:/[\u1EBD]/g,alternative:"e"},{letter:/[\u1EBE]/g,alternative:"E"},{letter:/[\u1EBF]/g,alternative:"e"},{letter:/[\u1EC0]/g,alternative:"E"},{letter:/[\u1EC1]/g,alternative:"e"},{letter:/[\u1EC2]/g,alternative:"E"},{letter:/[\u1EC3]/g,alternative:"e"},{letter:/[\u1EC4]/g,alternative:"E"},{letter:/[\u1EC5]/g,alternative:"e"},{letter:/[\u1EC6]/g,alternative:"E"},{letter:/[\u1EC7]/g,alternative:"e"},{letter:/[\u1EC8]/g,alternative:"I"},{letter:/[\u1EC9]/g,alternative:"i"},{letter:/[\u1ECA]/g,alternative:"I"},{letter:/[\u1ECB]/g,alternative:"i"},{letter:/[\u1ECC]/g,alternative:"O"},{letter:/[\u1ECD]/g,alternative:"o"},{letter:/[\u1ECE]/g,alternative:"O"},{letter:/[\u1ECF]/g,alternative:"o"},{letter:/[\u1ED0]/g,alternative:"O"},{letter:/[\u1ED1]/g,alternative:"o"},{letter:/[\u1ED2]/g,alternative:"O"},{letter:/[\u1ED3]/g,alternative:"o"},{letter:/[\u1ED4]/g,alternative:"O"},{letter:/[\u1ED5]/g,alternative:"o"},{letter:/[\u1ED6]/g,alternative:"O"},{letter:/[\u1ED7]/g,alternative:"o"},{letter:/[\u1ED8]/g,alternative:"O"},{letter:/[\u1ED9]/g,alternative:"o"},{letter:/[\u1EDA]/g,alternative:"O"},{letter:/[\u1EDB]/g,alternative:"o"},{letter:/[\u1EDC]/g,alternative:"O"},{letter:/[\u1EDD]/g,alternative:"o"},{letter:/[\u1EDE]/g,alternative:"O"},{letter:/[\u1EDF]/g,alternative:"o"},{letter:/[\u1EE0]/g,alternative:"O"},{letter:/[\u1EE1]/g,alternative:"o"},{letter:/[\u1EE2]/g,alternative:"O"},{letter:/[\u1EE3]/g,alternative:"o"},{letter:/[\u1EE4]/g,alternative:"U"},{letter:/[\u1EE5]/g,alternative:"u"},{letter:/[\u1EE6]/g,alternative:"U"},{letter:/[\u1EE7]/g,alternative:"u"},{letter:/[\u1EE8]/g,alternative:"U"},{letter:/[\u1EE9]/g,alternative:"u"},{letter:/[\u1EEA]/g,alternative:"U"},{letter:/[\u1EEB]/g,alternative:"u"},{letter:/[\u1EEC]/g,alternative:"U"},{letter:/[\u1EED]/g,alternative:"u"},{letter:/[\u1EEE]/g,alternative:"U"},{letter:/[\u1EEF]/g,alternative:"u"},{letter:/[\u1EF0]/g,alternative:"U"},{letter:/[\u1EF1]/g,alternative:"u"},{letter:/[\u1EF2]/g,alternative:"Y"},{letter:/[\u1EF3]/g,alternative:"y"},{letter:/[\u1EF4]/g,alternative:"Y"},{letter:/[\u1EF5]/g,alternative:"y"},{letter:/[\u1EF6]/g,alternative:"Y"},{letter:/[\u1EF7]/g,alternative:"y"},{letter:/[\u1EF8]/g,alternative:"Y"},{letter:/[\u1EF9]/g,alternative:"y"}],xe=[{letter:/[\u00C4]/g,alternative:"Ae"},{letter:/[\u00E4]/g,alternative:"ae"},{letter:/[\u00D6]/g,alternative:"Oe"},{letter:/[\u00F6]/g,alternative:"oe"},{letter:/[\u00DC]/g,alternative:"Ue"},{letter:/[\u00FC]/g,alternative:"ue"},{letter:/[\u1E9E]/g,alternative:"SS"},{letter:/[\u00DF]/g,alternative:"ss"}],we=[{letter:/[\u00C6]/g,alternative:"Ae"},{letter:/[\u00E6]/g,alternative:"ae"},{letter:/[\u00D8]/g,alternative:"Oe"},{letter:/[\u00F8]/g,alternative:"oe"},{letter:/[\u00C5]/g,alternative:"Aa"},{letter:/[\u00E5]/g,alternative:"aa"}],ke=[{letter:/[\u00B7]/g,alternative:"ll"}],Ke=[{letter:/[\u0110]/g,alternative:"DJ"},{letter:/[\u0111]/g,alternative:"dj"}],Te=function(e){switch(e){case"de":return xe;case"da":return we;case"ca":return ke;case"sr":case"bs":return Ke;default:return[]}};const Re=new RegExp(`([${Ie}])`,"g");function ze(e,t){const r=[];if(e.indexOf(t)>-1)for(let a=0;ae.replace(Re," $1 ").split(" "))),(0,t.filter)(u,(function(e){return""!==e.trim()}))}(e);let l=0;return a.forEach((function(t){const a=e.indexOf(t,l);r.push(a),l=a+t.length})),r}(e),u=r,(0,t.filter)(l,(function(e){return(0,t.includes)(u,e)})));var l,u;const n=[];We(a).forEach((function(e){if((0,t.isEqual)(e,a))n.push([e,[],[],[]]);else{const r=Ne(a,e);We(r).forEach((function(a){if((0,t.isEqual)(a,r))n.push([e,a,[],[]]);else{const l=Ne(r,a);We(l).forEach((function(r){if((0,t.isEqual)(r,l))n.push([e,a,r,[]]);else{const t=Ne(l,r);n.push([e,a,r,t])}}))}}))}}));const i=[];return n.forEach((function(t){const r=je(e,t[0],"İ"),a=je(r,t[1],"I"),l=je(a,t[2],"i"),u=je(l,t[3],"ı");i.push(u)})),i})),$e=function(e,t){return e=y(e,!1,"",t),new RegExp(e,"ig")};function Pe(e,r,a,l){e=function(e){return U(e=e.replace(/<(?!li|\/li|p|\/p|h1|\/h1|h2|\/h2|h3|\/h3|h4|\/h4|h5|\/h5|h6|\/h6|dd).*?>/g,""))}(e),e=C(e=Y(e)),r=C(r);let u=l?l(e,r):function(e,r,a){const l=Ue(a);let u=$e(r,l);if("tr"===l){const e=Le(r);u=new RegExp(e.map((e=>y(e))).join("|"),"ig")}const n=e.match(u)||[];e=e.replace(u,"");const i=function(e,r){const a=function(e){if((0,t.isUndefined)(e))return[];const r=Ue(e);return"nb"===r||"nn"===r?Me.nbnn:"bal"===r||"ca"===r?Me.ca:Me[r]||[]}(r);for(let t=0;t=0;t--)e=e.replace(a[t].letter,a[t].alternative);return e}(r,a);if(c!==i){const t=$e(c,l),r=e.match(t)||[];s=s.concat(r)}return(0,t.map)(s,(function(e){return U(e)}))}(e,r,a);u=(0,t.map)(u,(function(e){return U(ye(e))}));const n=(0,t.map)(u,(function(t){return e.indexOf(t)}));return{count:u.length,matches:u,position:0===n.length?-1:Math.min(...n)}}function Ye(e,r,a="en_EN",l){let u=0,n=[],i=[];return(0,t.uniq)(r).forEach((function(t){const r=Pe(e,t,a,l);u+=r.count,n=n.concat(r.matches),i.push(r.position)})),i=i.filter((e=>e>=0)),{count:u,matches:n,position:0===i.length?-1:Math.min(...i)}}function Ze(e,r){if(0===r)return r;let a=e.substring(0,r);return a=v(a),a=a.filter((e=>!s.includes(e))),(0,t.isEmpty)(a)?0:r}function Qe(e,r){const a=e.getTitle();let l=e.getKeyword();const u={allWordsFound:!1,position:-1,exactMatchKeyphrase:!1},n=h(l);if(n.exactMatchRequested){if(u.exactMatchKeyphrase=!0,!a.includes(n.keyphrase))return u;l=c(n.keyphrase);const e=Ye(a,l,"ja",A);return e.matches.length===l.length&&(u.allWordsFound=!0,u.position=Ze(a,e.position)),u}const i=function(e,r,a,l){const u=e.length,n=Array(u);let i=[],g=[];for(let t=0;t0?1:0,i.push(u.position),g=g.concat(u.matches)}const v=(0,t.sum)(n),s={countWordMatches:v,percentWordMatches:0,matches:g};return u>0&&(s.percentWordMatches=Math.round(v/u*100)),i=i.filter((e=>e>=0)),s.position=0===i.length?-1:Math.min(...i),s}(r.getResearch("morphology").keyphraseForms,a,"ja",A);return 100===i.percentWordMatches&&(u.allWordsFound=!0,u.position=Ze(a,i.position)),u}const{AbstractResearcher:Ge}=e.languageProcessing;class qe extends Ge{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,delete this.defaultResearches.getPassiveVoiceResult,delete this.defaultResearches.keywordCountInSlug,Object.assign(this.config,{language:"ja",firstWordExceptions:ve,functionWords:s,transitionWords:se,topicLength:ce,textLength:oe,paragraphLength:Ee,assessmentApplicability:he,sentenceLength:de,keyphraseLength:Ce,subheadingsTooLong:fe,countCharacters:!0,metaDescriptionLength:Ae}),Object.assign(this.helpers,{matchWordCustomHelper:A,getWordsCustomHelper:v,getContentWords:c,customGetStemmer:D,wordsCharacterCount:m,customCountLength:_,matchTransitionWordsHelper:I,memoizedTokenizer:ie,splitIntoTokensCustom:ge}),Object.assign(this.defaultResearches,{morphology:Be,keyphraseLength:Oe,wordCountInText:_e,findKeyphraseInSEOTitle:Qe})}}})(),(window.yoast=window.yoast||{}).Researcher=a})();js/dist/languages/he.js000064400000061065147206602470011043 0ustar00(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>R});const r=window.yoast.analysis,n=["לכן","משום‎","בגלל","מפני","אחרי","לפני","חוץ","בזכות","כתוצאה","הודות","בשביל","למרות‎","בשל‎","ו","או","אבל","אולם","אך","אם","גם","רק","אכן","אלא","עדיין","כאשר","אז","לכן","כבר","לאחר","אפילו","אף","כך","כדי","על","עד","בשנת","כמו","שני","באופן","במהלך","במקום","וכן","בעיקר","מאז"," בינתיים","במקום","תחת","מתוך","מול","כגון","באמצעות","מכן","במשך","ואף","ועל","לעתים","בנוסף","בעקבות","לפי","בקרב","כי","ראשית","שנית","תחילה","לבסוף","הבא","ברם","ואילו","להפך","כנגד","מנגד","אמנם","אדרבא","לחילופין","בייחוד","במיוחד","ודאי","ואפילו","לו","אילו","לולא","אלמלא","אילולא","מאחורי","בקרבת","כאן","שם","כן","למעט","בלבד","מלבד","שוב","כלומר","דהיינו","לאמור","כאמור","כידוע","כש","אחר-כך","כעבור","לאחרונה","בטרם","עכשיו","עתה","מלכתחילה","למען","פן","לבל","שמא","עקב","לרגל","מפאת","בגין","בהתאם","לפיכך","למשל","לדוגמה","כדוגמת","לסיכום","בהתחשב","בקיצור","בקצרה","חרף"],s=n.concat(["כתוצאה מכך","כתוצאה מ","בעקבות ה","בעקבות זאת","לעומת זאת","אלא אם כן","בזמן ש","מתי ש","אף על פי ש","אף על פי","חוץ מ","אחרי ש","לפני ש","בעוד ש","בגלל ה","הודות ל","בניגוד ל","מפני ש","אלא ש","קודם כל","והחשוב ביותר","לפני כן","לאחר מכן","אחר כך","שלב ראשון","בניגוד לכך","ראוי לציין","יש להדגיש","ללא ספק","קל וחומר","אין ספק ש","לא כל שכן","בתנאי ש","בדומה ל","כשם ש","כפי ש","כך גם","יחסית ל","בהשוואה ל","לשם כך","במקביל ל","במידה ש","במקום ש","על יד","בסמוך ל","במרחק מה","אל אשר","מעבר ל","כמו כן","יתר על כן","זאת ועוד","נוסף על כך","פרט ל","למעלה מכך","פנים נוספות לעניין","יתרה מכך","אך ורק","מעבר לכך","זאת אומרת","במילים אחרות","רוצה לומר","הווה אומר","משתמע מזאת","הוא אשר","ללמד ש","פירושו של דבר","לשון אחרת","בהקשר זה","דרך אגב","כדי ש","כנזכר לעיל","בקשר לכך","במסגרת זו","עד ש","בשעה ש","כל זמן ש","לפי שעה","בזמן האחרון","עד כה","בו בזמן","כל אימת ש","על מנת","לתכלית זו","במטרה ל","מחמת ה","הואיל ו","מאחר ש","היות ש","כיוון ש","יען כי","באופן ש","בצורה ש","כמו ש","אם כן","אפוא","על כן","משום כך","עקב כך","בשל כך","אי לכך","נובע מכך","הודות לכך","כמו למשל","סיכומו של דבר","מכל האמור ניתן לומר","בסך הכול","בכל מקרה","בסיכום כולל","לטווח ארוך","על כל פנים","אף על פי כן","על אף ש","על אף זאת","אף ש","למרות זאת","בכל אופן","עם זאת","אם כי","גם אם"]),i=function(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}([].concat(["אחת","אחד","שתים","שנים","שתיים","שלש","שלשה","ארבע","ארבעה","חמש","חמשה","שש","ששה","שבע","שבעה","שמונה","שמונה","תשע","תשעה","עשר","עשרה","עשרים","מאה","אלף","מיליון","מילירד"],["ראשון","ראשונה","שני","שניה","שלישי","שלישית","רביעי","רביעית","חמישי","חמישית","ששי","ששית","שביעי","שביעית","שמיני","שמינית","תשיעי","תשיעית","עשירי","עשירית"],["אני‎","אנחנו‎","אנו‎","אתה‎","את‎","אתם‎","אתן‎","הוא‎","היא‎","הם‎","הן‎","שאני","שאתה","שהוא","ואני","שהיא"],["זה","זאת","זו","ההוא","ההיא","איזה","איזו","אלה","אלו","ההם","ההן","אילו","לזה","הזה","שזה"],["מה","מי","למה","כמה","האם","איפה","איזה","איזו","אילו","מתי","כאשר","איך","אי","אלמלא"],["כולם","כול","רוב","חלק","פחות","מעט","הרבה","רב","רבה","רבים","רבות","לפחות"],["עצמי","לעצמי","בעצמי","עצמך","לעצמך","בעצמך","עצמך","לעצמך","בעצמך","עצמו","עצמה","עצמנו","עצמכם","עצמכן","עצמם","עצמן"],["משהו","מישהו","מישהי","כלום"],["את","אותי","אותנו","אותך","אתכם","אתכן","אותו","אותה","אותם","אותן","שאת","של","שלי","שלנו","שלך","שלכם","שלכן","שלו","שלהם","שלהן","לי","לך","לו","לה","לנו","לכם","לכן","להם","להן","על","עליי","עלינו","עליך","עלייך","עליכם","עליכן","עליו","עליה","עליהם","עליהן","גבי","גבנו","גבך","גבה","גבנו","גבכם","גבכן","גבם","גבן","אל","אליי","אלינו","אליך","אלייך","אליכם","אליכן","אליו","אליה","אליהם","אליהן","ואל","עם","איתי","עימי","איתנו","עימנו","איתך","עימך","איתכם","איתכן","איתו","איתה","איתם","עימם","כמו","כמוני","כמונו","כמוך","כמוך","כמוכם","כמוכן","כמוהו","כמוה","כמוהם","כמוהן","כמוכם","כמוכן","לפני","לפניי","לפנינו","לפניך","לפנייך","לפניו","לפניה","לפניכם","לפניכן","לפניהם","לפניהן","ובכן","בן","בי","בנו","בך","בכם","בכן","בו","בה","בהם","בהן","בגלל","בגללי","בגללנו","בגללך","בגללכם","בגללכן","בגללו","בגללה","בגללם","בגללן","אחר","אחריי","אחרינו","אחריך","אחרייך","אחריכם","אחריכן","אחריו","אחריה","אחריהם","אחריהן","בשביל","בשבילי","בשבילנו","בשבילך","בשבילו","בשבילה","בשבילכם","בשבילכן","בשבילם","בשבילן","במקום","במקומי","במקומנו","במקומך","במקומו","במקומה","במקומכם","במקומכן","במקומם","במקומן","עד","אודות","אודותי","אודותנו","אודותך","אודותכם","אודותכן","אודותו","אודותה","אודותם","אודותן","מאחורי","מאחוריי","מאחורינו","מאחוריך","מאחורייך","מאחוריכם","מאחוריכן","מאחוריו","מאחוריה","מאחוריהם","מאחוריהן","אצל","אצלי","אצלנו","אצלך","אצלך","אצלכם","אצלכן","אצלו","אצלה","אצלם","אצלן","באמצעות","באמצעותי","באמצעותנו","באמצעותך","באמצעותכם","באמצעותכן","באמצעותו","באמצעותה","באמצעותם","באמצעותן","בזכות","בזכותי","בזכותנו","בזכותך","בזכותכם","בזכותכן","בזכותו","בזכותה","בזכותם","בזכותן","ביני","בינינו","בינך","ביניכם","ביניכן","בינו","בינה","ביניהם","ביניהן","בלעדיי","בלעדינו","בלעדיך","בלעדייך","בלעדיכם","בלעדיכן","בלעדיו","בלעדיה","בלעדיהם","בלעדיהן","בעד","בעדי","בעדנו","בעדך","בעדך","בעדכם","בעדכן","בעדו","בעדה","בעדם","בעדן","בעקבות","בעקבי","בעקביי","בעקבינו","בעקביך","בעקבייך","בעקביכם","בעקביכן","בעקביו","בעקביה","בעקביהם","בעקביהן","בפני","בפניי","בפנינו","בפניך","בפנייך","בפניכם","בפניכן","בפניו","בפניה","בפניהם","בפניהן","בקרב","בקרבי","בקרבנו","בקרבך","בקרבך","בקרבכם","בקרבכן","בקרבו","בקרבה","בקרבם","בקרבן","בשם","בשמי","בשמנו","בשמך","בשמך","בשמכם","בשמכן","בשמו","בשמה","בשמם","בשמן","בתוך","בתוכי","בתוכנו","בתוכך","בתוכך","בתוככם","בתוככן","בתוכו","בתוכה","בתוכם","בתוכן","כמוני","כמונו","כמוך","כמוך","כמוכם","כמוכן","כמוהו","כמוה","כמוהם","כמוהן","כלפי","כלפיי","כלפינו","כלפיך","כלפייך","כלפיכם","כלפיכן","כלפיו","כלפיה","כלפיהם","כלפיהן","כנגד","כנגדי","כנגדנו","כנגדך","כנגדך","כנגדכם","כנגדכן","כנגדו","כנגדה","כנגדם","כנגדן","לאורך","לאורכי","לאורכנו","לאורכך","לאורכך","לאורככם","לאורככן","לאורכו","לאורכה","לאורכם","לאורכן","לגבי","לגביי","לגבינו","לגביך","לגבייך","לגביכם","לגביכן","לגביו","לגביה","לגביהם","לגביהן","לדברי","לדבריי","לדברינו","לדבריך","לדברייך","לדבריכם","לדבריכן","לדבריו","לדבריה","לדבריהם","לדבריהן","ליד","לידי","לידנו","לידך","לידך","לידכם","לידכן","לידו","לידה","לידם","לידן","למען","למעני","למעננו","למענך","למענך","למענכם","למענכן","למענו","למענה","למענם","למענן","לפי","לפי","לפינו","לפיך","לפיך","לפיכם","לפיכן","לפיו","לפיהו","לפיה","לפיהם","לפיהן","לקראת","לקראתי","לקראתנו","לקראתך","לקראתך","לקראתכם","לקראתכן","לקראתו","לקראתה","לקראתם","לקראתן","לרוחב","לרוחבי","לרוחבנו","לרוחבך","לרוחבך","לרוחבכם","לרוחבכן","לרוחבו","לרוחבה","לרוחבם","לרוחבן","מול","מולי","מולנו","מולך","מולך","מולכם","מולכן","מולו","מולה","מולם","מולן","מן","ממני","ממנו","מאיתנו","ממך","ממך","מכם","מכן","ממנו","ממנה","מהם","מהן","מעל","מעליי","מעלינו","מעליך","מעלייך","מעליכם","מעליכן","מעליו","מעליה","מעליהם","מעליהן","מפני","מפניי","מפנינו","מפניך","מפנייך","מפניכם","מפניכן","מפניו","מפניה","מפניהם","מפניהן","מתחת","מתחתיי","מתחתינו","מתחתיך","מתחתייך","מתחתיכם","מתחתיכן","מתחתיו","מתחתיה","מתחתיהם","מתחתם","מתחתיהן","מתחתן","עבור","עבורי","עבורנו","עבורך","עבורכם","עבורכן","עבורו","עבורה","עבורם","עבורן","תחת","תחתיי","תחתינו","תחתיך","תחתייך","תחתיכם","תחתיכן","תחתיו","תחתיה","תחתיהם","תחתם","תחתיהן","תחתן","לעומת","לעומתי","לעומתנו","לעומתך","לעומתך","לעומתכם","לעומתכן","לעומתו","לעומתה","לעומתם","לעומתן","פי"],["אבל","אך","אלא","אם","אז","או","כדי","כי","אכן","אגב","אולם","אע״פ","אשר","בעוד","ו/או","יען","לולא","פן"],["אומר","אומרת","אומרים","אומרות","אמרתי","אמרנו","אמרת","אמרתם","אמרתן","אמר","אמרה","אמרו","נאמר","תאמר","תאמרי","תאמרו","תאמרנה","יאמר","תאמר","תאמרנה","יאמר","יאמרו","אמור","אמרי","אמורנה","מדבר","מדברת","מדברים","מדברות","דיברתי","דיברנו","דיברת","דיברתם","דיברתן","דיבר","דיברה","דיברו","אדבר","נדבר","תדבר","תדברי","תדברו","תדברנה","ידבר","ידברו","דבר‏","דברי‏","דברו‏","דברנה‏","לדבר","מבין","מבינה","מבינים","מבינות","הבנתי","הבינותי","הבנו","הבינונו","הבנת","הבינות","הבנתם","הבינותם","הבנתן","הבינותן","הבין","הבינה","הבינו","אבין","נבין","תבין","תביני","תבינו","תבנה","יבין","יבינו","תבינינה","הבן‏","הביני‏","הבנה‏","להבין","מאמין","מאמינה","מאמינים","מאמינות","האמנתי","האמנו","האמנת","האמנתם","האמנתן","האמין","האמינה","האמינו","אאמין","נאמין","תאמין","תאמיני","תאמינו","תאמנה","יאמין","יאמינו","האמן‏","האמיני‏","האמינו‏","האה‏","להאמין","יודע","יודעת","יודעים","יודעות","ידעתי","ידענו","ידעת","ידעתם","ידעתן","ידע","ידעה","ידעו","אדע","נדע","תדע","תדעי","תדעו","תדענה","דע‏","דעי‏","דעו‏","דענה‏","לדעת","שואל","שואלת","שואלים","שואלות","שאלתי","שאלנו","שאלת","שאלתם","שאלתן","שאל","שאלה","שאלו","אשאל","נשאל","תשאל","תשאלי","תשאלו","תשאלנה","ישאל","ישאלו","שאל‏","שאלי‏","שאלו‏","שאלנה‏","לשאול"],["מאוד","בהחלט","ביותר","נורא","לגמרי","די"],["להיות","היי","הייתי","יהיה","היית","הייתה","היינו","הייתם","הייתן","היו","אהיה","תהיה","תהיי","יהיה","נהיה","תהיו","תהיינה","יהיו","היינה","יש","שיש","הנה","אין","רוצה","רוצים","רציתי","רצה","יכול","יכולה","יכולים","נוכל","צריך","צריכה","חייב","לעשות","עושה","חושב","חשבתי","חושבת","נראה","לראות","רואה","בוא","הולך","ללכת","הולכת","הלכתי","הלכת","הלכת","הלך","הלכה","אלך","תלך","תלכי","ילך","לכי","הולכים","הולכות","הלכנו","הלכתם","הלכתן","הלכו","נלך","תלכו","תלכנה","ילכו","לכו","לכנה","מצטער","קרה","קורה","אוהב","שום","להשתמש","לנסות","מנסה","לוקח","אקח","לשים","נותן","נותנת","נותנים","נותנות","נת","תינתנו","נתת","נתתם","נתתן","נתן","נתנה","נתנו","אתן","ניתן","תיתן","תיתני","תיתנותיתנה","ייתןנתתתיתן","ייתנו","תיתנה","תן‏","תני‏","תנו‏","תנה‏","לתת"],["רק","כל","יותר","כאן","כך","כה","נכון","עכשיו","עכשיו","שם","קדימה","אף","עוד","באמת","ממש","אולי","כבר","פה","קצת","עדיין","בדיוק","שוב","תמיד","אפילו","בטח","מאוחר","לאחרונה","בקרוב","מיד","בחוץ","מהר","קשה","לאט","לרוב","כמעט","בדרך","כלל","לפעמים","יחד","לבד","אחורה","כאילו","גם","בערך","הכי","מלא","מלאה","מלאים","מלאות","טוב","טובה","טובים","טובות","חדש","חדשה","חדשים","חדשות","ישן","ישנה","ישנים","ישנות","צעיn","צעירה","צעירים","צעירות","גדול","גדולה","גדולים","גדולות","קל","קלה","קלים","קלות","מהיר","מהירה","מהירים","מהירות","רחוק","רחוקה","רחוקים","רחוקות","נחמד","נחמדה","נחמדים","נחמדות","מיוחד","מיוחדת","מיוחדים","מיוחדות","פשוט","פשוטה","פשוטים","פשוטות","קטן","קטנה","קטנים","קטנות","ארוך","ארוכה","ארוכים","ארוכות","קצר","קצרה","קצרים","קצרות","נמוך","נמוכה","נמוכים","נמוכות","שלם","שלמה","שלמים","שלמות","גבוה","גבוהה","גבוהים","גבוהות","חשוב","חשובה","חשובים","חשובות"],["ח","הו","וואו"],['ק"ג',"ג'","גרם",'סמ"ק','מ"ל',"ליטר","כף","כפית","כוס","כוסות"],["היום","אתמול","מחר","יום","ימים","שבוע","בשבוע","שבועות","שעה","שעות","דקה","דקות","רגע","רגעים","חודש","חודשים","שנה","שנים","השנה"],["דבר","פעם","פעמים","זמן","הזמן","הכל","בכל","אנשים","מקום","לעתים","מספר","אחוז","אחוזים"],["כן","לא","שלא","בסדר","תודה","בבקשה","שלום","אחוז","מר","אדוני","גברת","אדם"],n)),o=[["או","או"],["אין","אלא"],["לא","אלא"],["מצד אחד","מצד אחר"],["מחד גיסא","מאידך גיסא"],["ראשית","שנית"],["תחילה","לבסוף"],["משום ש","מפני ש"],["לכאורה","אך"]],f=["אחד","כמה","מעטים","אחת","שנים","שתים","שלשה","שלש","ארבעה","ארבע","חמשה","חמש","ששה","שש","שבעה","שבע","שמונה","שמונה","תשעה","תשע","עשרה","עשר","זה","זאת","אלה","אוה","היא","אלה","המה","הם","הנה"],c={recommendedLength:15},u=["ב","ה","ו","כ","ל","מ","ש"],a=new RegExp(`^(${u.join("|")})`);function x(e){const t=[];t.push(...u.map((t=>t+e)));const{stem:r,prefix:n}=function(e,t){let r=e,n="";const s=e.match(t);return s&&(n=s[0],r=e.slice(n.length)),{stem:r,prefix:n}}(e,a);return""!==n&&(t.push(r),t.push(...u.map((e=>e+r)))),t}const p=window.lodash,g=function(e,t){return t.some((t=>e.startsWith(t)))?e.slice(1):e},{baseStemmer:l}=r.languageProcessing;function d(e){const t=(0,p.get)(e.getData("morphology"),"he",!1);return t?e=>function(e,t){const r=t.dictionary;let n=r[e];if(n)return n;const s=g(e,t.prefixes);if(s!==e){if(n=r[s],n)return n;const e=g(s,t.prefixes);if(e!==s&&(n=r[e],n))return n}return e}(e,t):l}const h=["אכל","דבר","עבר","עמד","קרא","שמע","זכר","חזק","חטא","כתב","מלך","מצא","נגד","נפל","עבר","פקד","רום","שכב","אבד","אמן","גדל","חשב","יטב","כבד","לבש","קדש","קרב","שנא","שאל","שאר","שבע","שחת","שכן","שכח","שלך","שלם","בער","בקע","ברא","ברח","דבק","דרך","זעק","חלק","חרם","חרש","כעס","כשל","מאס","משל","נבט","נחל","נצח","סגר","סתר","ערך","פרה","פלא","פלל","פעל","פרד","פרש","צלח","צרר","קלל","קנה","רחק","רכב","רעע","שבע","שכל","שכם","אשם","בדל","בהל","בחן","בשל","גבה","גנב","זרק","חלם","חלף","חרב","חרד","חרף","חשך","חתם","טמן","טרף","כלם","כנע","כרע","משך","נהג","סמך","פחד","פרד","פרח","פשט","צדק","צמח","צפן","קדם","קצף","קשב","רבץ","רגז","רגל","רחב","רעש","רשע","שפל","שקט","ברר","גבר","געל","טעם","כזב","כחש","כנס","לחץ","מטר","מעט","מרד","משל","נגש","נזל","עלם","עצב","עשר","פגש","פרע","צבא","צמת","קסם","רבע","רגע","רעב","רעם","רקע","שאב","שבח","שחר","שכל","שכר","שען","שקף","שתל","שלכ‎","מלכ‎","דרכ‎","ערכ‎","חשכ‎","משכ‎","סמכ‎","אמנ","שכנ","בחנ","טמנ","צפנ","שענ","רומ","שלמ","חרמ","שכמ","אשמ","חלמ","חתמ","כלמ","קדמ","עלמ","טעמ","חלפ","חרפ","טרפ","קצפ","שקפ","רבצ","לחצ"],m=["אכל","אמר","לקח","נשא","נתן","קרא","שלח","שמע","אהב","אסף","כרת","כתב","מצא","פקד","שמר","שפט","אבד","אמן","גאל","דרש","הרג","חשב","טמא","יתר","לכד","ספר","עזב","קבץ","קבר","רדף","שרף","שאל","שבר","שחת","שכח","שלם","שפך","אסר","בחר","בלע","בקע","ברא","דרך","זרע","חלק","חנן","חרש","טהר","למד","מכר","משל","סגר","סתר","עזר","ערך","פרד","פרש","צפה","קנה","קרע","רחץ","רפא","שבע","שחט","שמר","תפש","תקע","אשם","בגד","בדל","בחן","גזל","גמל","גנב","הרס","זרק","חבא","חבש","חלץ","חצב","חקר","חרב","חתם","טמן","טרף","לקט","מנע","סלח","סמך","ספר","עצר","פגע","פלט","פרד","פרץ","פשט","צפן","קצר","קשר","רעש","רצח","שחק","שטף","אטם","אלם","ארג","בצע","גאל","גדר","גזז","גזר","גלח","גרע","דחה","דקר","חבל","חרש","חכה","חפר","חקק","חרץ","חשק","טבח","טבל","טבע","כבש","כלא","לחץ","מחץ","מסס","משל","נשא","סחר","סלל","סער","סקל","סתם","עטף","עכר","פרע","פרק","רמס","שאב","שאף","שבר","שכר","שלל","שלף","שקל","שקף","שתל","תכן","תמך","תעב","שפכ‎","דרכ‎","ערכ‎","סמכ‎","תמכ‎","נתנ","אמנ","חננ","בחנ","טמנ","צפנ","תכנ","שלמ","אשמ","חתמ","אטמ","אלמ","סתמ","אספ","רדפ","שרפ","טרפ","שטפ","עטפ","שאפ","שלפ","שקפ","קבצ","רחצ","חלצ","פרצ","חרצ","לחצ","מחצ"],y=["אכל","דבר","עבר","שלח","בקש","ברך","חזק","חטא","כתב","נצל","עבר","פקד","רום","שמר","אבד","אמן","בטח","גדל","הלל","חלל","חשב","טמא","יתר","כבד","כסה","כפר","לחם","לכד","נבא","נגע","סבב","ספר","קבץ","קדש","קרב","שמח","שבר","שכן","שלם","שרת","בער","בקע","ברא","חלק","חנן","טהר","כבס","למד","מרר","מהר","מלט","נכר","נצח","פלל","פרש","צפה","קלל","רחם","רחק","רנן","רפא","שמר","בדל","בצר","בשל","גרש","דמם","זמר","חבר","מאן","נשק","נתץ","נתק","ספר","ערב","פשט","צרף","קדם","קנא","קצר","קשר","רגל","שחק","בצע","ברר","בשר","גדר","גלל","דכא","דשן","חבל","חבק","חמם","חפש","חשק","כהן","כזב","כנס","מסס","מעט","מרר","נגן","נדב","נהל","נחש","נער","נפח","נפץ","נשך","סכך","סכן","סקל","עלל","ענג","עצב","פאר","פזר","פצה","פקח","פרק","פתה","קבל","קדד","קצץ","רמה","רצץ","רקע","שבח","שבר","שנה","שקר","שקף","תכן","תעב","ברכ‎","נשכ‎","סככ‎","אמנ","שכנ","חננ","רננ","מאנ","דשנ","כהנ","נגנ","סכנ","תכנ","רומ","לחמ","שלמ","רחמ","דממ","קדמ","חממ","צרפ","שקפ","קבצ","נתצ","קצצ","רצצ","נפצ"],{getWords:w}=r.languageProcessing,b=function(e,t,r){return t.some((t=>r.some((function(r){return new RegExp("^"+r.prefix+t+r.suffix+"$").test(e)}))))};function P(e){const t=w(e);for(const e of t){if(b(e,m,[{prefix:"(נ|אי|תי|הי|יי|ני|להי)",suffix:""},{prefix:"(תי|הי)",suffix:"(י|ו|נה)"},{prefix:"נ",suffix:"(ים|ת|ות|תי|ה|נו|תם|תן|ו)"},{prefix:"יי",suffix:"ו"}]))return!0;const t=[{prefix:"(מ|א|ת|י|נ)",suffix:""},{prefix:"תי",suffix:"נה"},{prefix:"מ",suffix:"(ת|ים|ות)"},{prefix:"ת",suffix:"(י|ו|נה)"},{prefix:"י",suffix:"ו"},{prefix:"",suffix:"(תי|ת|ה|נו|תם|תן|ו)"},{prefix:"",suffix:""}],r="ו";if(y.some((n=>t.some((function(t){return new RegExp("^"+t.prefix+n[0]+r+n[1]+n[2]+t.suffix+"$").test(e)})))))return!0;if(b(e,h,[{prefix:"(מו|הו|או|תו|יו|נו)",suffix:""},{prefix:"מו",suffix:"(ת|ים|ות)"},{prefix:"הו",suffix:"(תי|ת|ית|ה|נו|תם|תן|ו)"},{prefix:"תו",suffix:"(ו|נה|י)"},{prefix:"יו",suffix:"ו"}]))return!0}return!1}const{AbstractResearcher:S}=r.languageProcessing;class R extends S{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"he",passiveConstructionType:"morphological",firstWordExceptions:f,functionWords:i,transitionWords:s,twoPartTransitionWords:o,sentenceLength:c,prefixedFunctionWordsRegex:a}),Object.assign(this.helpers,{createBasicWordForms:x,getStemmer:d,isPassiveSentence:P})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/default.js000064400000001675147206602470012074 0ustar00(()=>{"use strict";var e={d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>o});const s=window.yoast.analysis,{baseStemmer:r}=s.languageProcessing;function n(){return r}const{AbstractResearcher:a}=s.languageProcessing;class o extends a{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,delete this.defaultResearches.getPassiveVoiceResult,delete this.defaultResearches.getSentenceBeginnings,delete this.defaultResearches.findTransitionWords,delete this.defaultResearches.functionWordsInKeyphrase,Object.assign(this.config,{functionWords:[]}),Object.assign(this.helpers,{getStemmer:n})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/ar.js000064400000155131147206602470011047 0ustar00(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>de});const r=window.yoast.analysis,n=["قليل","بعض","واحد","واحد","إثنان","ثلاثة","أربعة","خمسة","ستة","سبعة","ثمانية","تسعة","عشرة","هذا","هذه","ذلك","تلك","هذين","هذان","هتين","هتان","هؤلا","أولائك","هؤلاء"],o=["كذلك","ولكن","ولذلك","حاليا","أخيرا","بالطبع","ثم","بما","كما","لما","إنما","ليتما","إما","أينما","حيثما","كيفما","أيما","أيّما","بينما","ممّا","إلاّ","ألّا","لئلّا","حبّذا","سيّما","لكن","بالتالي","هكذا","أو","أم","لذلك","مثلا","تحديدا","عموما","لاسيما","خصوصا","بالأخص","خاصة","بالمثل","لأن","بسبب","إذا","عندما","حين","متى","قبل","بعد","منذ","أيضا","ريثما","بين"],s=o.concat(["إلا إذا","إلا أن","إلى آخره","إلى الأبد","إلى أن","آن لك أن","آن له أن","آن لعلي","بعد ذلك","بما أن","بما فيه","حتى لا","حتى لو","عليك أن","علينا أن","عليه أن","عليكم أن","فيما بعد","لا أحد","لا بأس أن","لا بد من","لا بد من أن","لا سيما","لا شيء","لا غير","لا هذا ولا ذاك","له أن","لها أن","لك أن","لكم أن","ما لم","مع هذا ، مع ذلك","من أجل أن","من أجلك","من أجلها","من أجل","من دون ، بدون","منذ ذلك الحين","بالإضافة إلى ذلك","في نهاية المطاف","في الوقت الحالي","علاوة على ذلك","بدلا من ذلك","في الواقع","بناء على ذلك","ومع ذلك","في الحقيقة","من ناحية أخرى","لا يزال","وفي الوقت نفسه","زيادة على ذلك","زيادة على","علاوة على","ما عدا","مع ذلك","غير أن","من جهة أخرى","على عكس ذلك","نتيجة لذلك","من ثم","على سبيل المثال","على وجه الخصوص","على وجه التحديد","بصفة عامة","قبل كل شيء","في النهاية","بصورة شاملة","رغم أن","مع ان","على الرغم من","من هنا"," لهذا السبب","في حالة","في أقرب وقت","على أي حال","في نفس الوقت","من بين"]);function i(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}const c=["الـ"],a=["صفر","واحد","واحدة","أحد","إحدى","إثنان","اثنتان","إثنين","ثنتين","إثنتين","إثنا","إثنى","إثنتا","إثنتي","ثلاث","ثلاثة","أربع","أربعة","خمس","خمسة","ست","ستة","سبع","سبعة","ثمان","ثمانية","تسع","تسعة","عشر","عشرة","عشرون","ثلاثون","أربعين","أربعون","خمسون","ستون","سبعون","ثمانون","تسعون","مئة","مائة","مئتان","ثلاثمئة","ثلاثمائة","أربعمئة","أربعمائة","خمسمئة","خمسمائة","ستمئة","ستمائة","سبعمئة","سبعمائة","ثمانمئة","ثمانمائة","تسعمئة","تسعمائة","ألف","ألآف","ألفا","ألفين","مليون","ملايين","مليار"],u=["الأول","الأولى","الثاني","الثانية","الثالث","الثالثة","الرابع","الرابعة","الخامس","الخامسة","السادس","السادسة","السابع","السابعة","الثامن","الثامنة","التاسع","التاسعة","العاشر","العاشرة","الحادي","الحادية","العشرون","الثلاثون","الأربعون","الخمسون","الستون","السبعون","الثمانون","التسعون","المئة","المائة"],l=["أنا","انت","هو","هي","نحن","أنتما","هما","أنتم","أنتن","هم","هن","وأنا","وأنت","وهو","وانا","ونحن","وهي","وانت","أنتي","فهو","وهم","وأنتما"],d=["إياه","إياهما","إياهم","إياها","إياكما","إياهن","إياك","إياكم","إياكن","إياي","إيانا"],f=["هذا","هذه","هذان","هذين","هتان","هـتين","ذا","ذان","ذين","أولئ","ذلك","ذانك","ذينك","تلك","تانك","تينك","أولئك","هؤلاء","ذاك","هاتان","هاتين","ذه","هأولئ","ذلكم","ذلكم","وهذا","هذة","أولئك"],m=["يا","أي","هيا","أ","آ","أيها","أيتها"],h=["جميع","كل","بعض","كثير","كثيرة","عديد","عديدة","لبعض","قليلا","كافية","كافي","صغير","صغيرة","قليل","قليلة","كثيرا","بالكثير","أكثر","اكبر","اغلب","عديدة","عديد","قليلون","أقل","كل","الكثير","المزيد","اكثر","الأقل","يكفي","العديد","كله","جميعا","كلها","وكل","كلنا","كثيرة","الأكثر","ببعض","بضعة","عدة"],g=["نفسي","نفسك","نفسه","نفسها","أنفسنا","أنسفكم","أنفسهم","أنفسهما","أنفسكما","أنفسكن","أنفسهن","بنفسي"],w=["ليس","جميع","الكل","الجميع","شخص","شيء","شيئا","أخرى","آخرين","أي","أيا","من","الآخرين","أحد","شئ","أخرى","شىء","احد","أية","اخرى","البعض","أخر","الآخر","أحدهم","الأخرى","الشئ","بعضنا","بشيء","شي","الغير"],p=["الذي","التي","الذى","التى","الذين","مالذي","اللذان","الذين","اللتان","اللاتي","الذي","اللتين","اللذين","اللواتي"],x=["جدا","حقا","للغاية","تماما","فعلا"],S=["ماذا","لمن","ما","أي","أى","وماذا","وما","بماذا","ماهو","ماهذا"],R=["من","ومن"],W=["اين","كيف","لماذا","لم","سواء","أينما","كيفما","مـتى","كم","هل","أين","أهذا","وكيف","وهل"],v=["هنا","هناك","هنالك"],y=["دائما","مرة","مرتين"],F=["يجب","سوف","قد","أستطيع","يستطيع","نستطيع","تستطيع","استطيع","تستطيعين","استطعت","استطاعت","استطاع","استطعتما","استطاعتا","استطاعا","استطعنا","استطعتن","استطعتم","استطعن","استطاعوا","تستطيعان","يستطيعان","تستطعن","تستطيعون","يستطعن","يستطيعون","تستطيعي","تستطيعا","يستطيعا","تستطيعوا","يستطيعوا","استطيعت","استطيعتا","استطيعا","استطيعوا","تستطاعين","تستطاع","يستطاع","نستطاع","تستطاعان","يستطاعان","تستطاعون","يستطاعون","أستطاع","تستطاعي","تستطاعا","يستطاعا","يستطاعوا","تستطاعوا","استطيعي","يمكنني","يمكن","يمكننى","بإمكانك","لابد","ينبغي","وسوف","هلا","بد","وقد","ولقد","يمكنه","يمكنهما","يمكنهم","يمكنها","يمكنكما","يمكنهن","يمكنك","يمكنكم","يمكنكن","يمكني","يمكننا"],b=["لدي","لديك","لدينا","لديه","لديها","لديهم","لديهما","لديكم","لديكما","لديهن","لديكن","صبحت","صبح","صبحتما","صبحا","صبحتا","صبحنا","صبحتن","صبحتم","صبحن","صبحوا","أصبح","تصبحين","تصبح","يصبح","تصبحان","يصبحان","نصبح","تصبحن","تصبحون","تصبحي","تصبحا","يصبحا","تصبحوا","يصبحوا","اصبحي","اصبحوا","اصبحا","ابقى","كان","كنت","كانت","يكون","كنتما","كانتا","كانا","كنا","كن","كانوا","كنتم","أكون","تكونين","تكون","تكونان","يكونان","نكون","تكونون","يكن","يكونون","تكوني","تكونا","يكونا","تكونوا","يكونوا","كونا","كونوا","كن","أكن","اكون","وكان","كوني","اكن","سنكون","كنا","سيكون","يكن","ستكون","تكن","سأكون","بت","باتت","بات","بتما","باتتا","باتا","بتنا","بتن","بتم","باتوا","أبيت","بت","صرت","صرت","صار","صرتما","صارتا","صارا","صرنا","صرتن","صرتم","صرن","صاروا","أصير","تصيرين","تصير","يصير","تصيران","يصيران","نصير","تصرن","يصرن","تصيرون","يصيرون","تصيري","تصيرا","يصيرا","تصيروا","يصيروا","ليس","وليس","ليست","ليسوا","ليسا","ليسنا","ليسن","أليس","اليس","لست","لسنا"],L=["أن","في","على","إلى","ان","عن","فى","مع","الى","بعد","بدون","تحت","طوال","علي","غير","لدى","حول","خلال","لكي","بين","الي","خارج","بشأن","فوق","دون","لـ","بـ","بلا","بواسطة","ضد","أمام","وفي","وشك","نحو","ذو","أسفل","ب","خلف","بجانب","عدا","طبقا","بعد","عكس","منذ"],z=["إليه","إليهما","إليهم","إليها","إليكما","إليهن","إليك","إليكم","إليكن","إلي","إلينا","عليه","عليهما","عليهم","عليها","عليكما","عليهن","عليك","عليكم","عليكن","علي","علينا","عنه","عنهما","عنهم","عنها","عنكما","عنهن","عنك","عنكم","عنكن","عني","عننا","له","لهما","لهم","لها","لكما","لهن","لك","لكم","لكن","لي","لنا","معه","معهما","معهم","معها","معكما","معهن","معك","معكم","معكن","معي","معنا","منه","منهما","منهم","منها","منكم","منهن","منك","منكم","منكن","مني","منا","فيه","فيهما","فيهم","فيها","فيكما","فيهن","فيك","فيكم","به","بهما","بهم","بها","بكما","بهن","بك","بكم","بكن","بي","بنا","بينهم","بينهما","بينكما","بينكم","بتلك","بذلك","فأنت","بيننا","بهذا","بهذه","فأنا","فهذا","فيما","أجلك","كهذا","لأي","لذلك","لما","لنفسك","لهذا","لهذه"],E=["داخل","ضمن","قدما"],O=["و","و/او","او","أو"],P=["إذا","لو","اذا","وإذا","أذا"],_=["أقول","تقول","تقولين","تقولان","يقول","تقول","يقولان","تقولان","نقول","تقولون","تقلن","يقولون","قلت","قلتما","قال","قالت","قالا","قالتا","قلنا","قلتما","قلتن","قالوا","قلنا","تدعي","يدعي","تدعيان","تدعون","يدعون","يدعين","ادعيت","ادعيت","ادعيتما","ادعى","ادعت","ادعينا","ادعيتما","ادعيتن","ادعوا","ادعينا","تسأل","تسألين","يسأل","تسأل","نسأل","تسألون","تسألن","يسألون","يسألن","سألت","سألنا","سألتم","سألتن","سألوا","سألنا","تشرح","تشرحين","يشرح","تشرح","نشرح","تشرحون","تشرحن","يشرحون","يشرحن","شرحت","شرح","شرحت","شرحنا","شرحتم","شرحتن","شرحوا","شرحنا","شرحن","أعتقد","تعتقد","تعتقدين","يعتقد","تعتقد","تعتقدون","تعتقدن","يعتقدون","يعتقدن","اعتقدت","اعتق","اعتقدت","أتحدث","تتحدث","تتحدثين","يتحدث","تتحدث","نتحدث","تحدثت","تحدث","تحدثت","تحدثوا","تحدثن","أعلن","تعلن","تعلنين","يعلن","تعلن","نعلن","يعلنون","يعلن","أعلنت","أعلن","أعلنت","أعلنا","أعلنوا","أعلن","أناقش","تناقش","تناقشين","يناقش","تناقش","نناقش","تناقشون","تناقشن","يناقشون","يناقشن","ناقشت","ناقشت","ناقشت","ناقشت","ناقشت","ناقشنا","ناقشتم","ناقشتن","ناقشوا","ناقشن","أفهم","تفهم","تفهمين","يفهم","تفهم","نفهم","يفهمون","يفهمن","فهمت","فهم","فهمت","فهمنا","فهموا","فهمن"],M=["يعني","أحتاج","يعمل","تعني","تقوم","أود","عندك","البقاء","حاولت","توجد","دعونا","تفكر","جئت","يريدون","أتيت","فعلته","تقصد","زال","إرادة","مريد","مراد","أردت","أردت","أردت","أرادت","أريد","تريد","تريدين","يريد","تريد","أريد","تريد","يريد","تريد","أرد","ترد","يرد","ترد","أرد","أريدي","أردتما","تريدان","تريدا","تريدا","أريدا","أرادا","أرادتا","يريدان","تريدان","يريدا","تريدا","أردنا","نريد","نريد","نرد","أردتم","أردتن","تريدون","تردن","تريدوا","تردن","تريدوا","تردن","أريدوا","أردن","أرادوا","أردن","يريدون","يردن","يريدوا","أردت","أراد","أراد","أرد","أردت","أريد","أردتما","أريدا","أردنا","أردتم","أريدوا","أردت","أريدت","أريدتا","أردتن","أردن","تراد","يراد","ترادان","يرادان","نراد","ترادون","يرادون","ترادين","تراد","ترادان","تردن","يردن","تراد","يراد","ترادا","يرادا","نراد","ترادوا","يرادوا","ترادي","تراد","ترادا","تردن","يردن","ترد","يرد","ترادا","يرادا","نرد","ترادوا","يرادوا","ترادي","ترد","ترادا","تردن","يردن","أرد","اعتقاد","معتقد","معتقد","اعتقدت","اعتقدت","اعتقد","اعتقدتما","اعتقدا","اعتقدنا","اعتقدتم","اعتقدوا","اعتقدت","اعتقدت","اعتقدتا","اعتقدتن","اعتقدن","تعتقد","يعتقد","تعتقدان","يعتقدان","نعتقد","تعتقدون","يعتقدون","تعتقدين","تعتقد","تعتقدان","تعتقدن","يعتقدن","تعتقد","يعتقد","تعتقدا","يعتقدا","نعتقد","تعتقدوا","يعتقدوا","تعتقدي","تعتقد","تعتقدا","تعتقدن","يعتقدن","تعتقد","يعتقد","تعتقدا","يعتقدا","نعتقد","تعتقدوا","يعتقدوا","تعتقدي","تعتقد","تعتقدا","تعتقدن","يعتقدن","اعتقدي","اعتقدن","اعتقد","اعتقدا","اعتقدوا","اعتقدت","اعتقدت","اعتقد","اعتقدتما","اعتقدا","اعتقدنا","اعتقدتم","اعتقدوا","اعتقدت","اعتقدت","اعتقدتا","اعتقدتن","اعتقدن","أعتقد","تعتقد","يعتقد","تعتقدان","يعتقدان","نعتقد","تعتقدون","يعتقدون","تعتقدين","تعتقد","تعتقدان","تعتقدن","يعتقدن","أعتقد","تعتقد","يعتقد","تعتقدا","يعتقدا","نعتقد","تعتقدوا","يعتقدوا","تعتقدي","تعتقد","تعتقدا","تعتقدن","يعتقدن","أعتقد","تعتقد","يعتقد","تعتقدا","يعتقدا","نعتقد","تعتقدوا","يعتقدوا","تعتقدي","تعتقد","تعتقدا","تعتقدن","يعتقدن","اعتقد","اعتقدا","اعتقدوا","إيجاد","موجد","موجد","أوجدت","أوجدت","أوجد","أوجدتما","أوجدا","أوجدنا","أوجدتم","أوجدوا","أوجدت","أوجدت","أوجدتا","أوجدتن","أوجدن","أوجد","توجد","يوجد","توجدان","يوجدان","نوجد","توجدون","يوجدون","توجدين","توجد","توجدان","توجدن","يوجدن","أوجد","توجد","يوجد","توجدا","يوجدا","نوجد","توجدوا","يوجدوا","توجدي","توجد","توجدا","توجدن","يوجدن","أوجد","توجد","يوجد","توجدا","يوجدا","نوجد","توجدوا","يوجدوا","توجدي","توجد","توجدا","توجدن","يوجدن","أوجد","أوجدا","أوجدوا","أوجدي","أوجدن","أوجدت","أوجدت","أوجد","أوجدتما","أوجدا","أوجدنا","أوجدتم","أوجدوا","أوجدت","أوجدت","أوجدتا","أوجدتن","أوجدن","أوجد","توجد","يوجد","توجدان","يوجدان","نوجد","توجدون","يوجدون","توجدين","توجد","توجدان","توجدن","يوجدن","أوجد","توجد","يوجد","توجدا","يوجدا","نوجد","توجدوا","يوجدوا","توجدي","توجد","توجدا","توجدن","يوجدن","أوجد","توجد","يوجد","توجدا","يوجدا","نوجد","توجدوا","يوجدوا","توجدي","توجد","توجدا","توجدن","يوجدن","اعتقد","اريد","أذهب","إذهاب","مذهب","مذهب","أذهبت","أذهبت","أذهب","أذهبتما","أذهبا","أذهبنا","أذهبتم","أذهبوا","أذهبت","أذهبت","أذهبتا","أذهبتن","أذهبن","أذهب","تذهب","يذهب","تذهبان","يذهبان","نذهب","تذهبون","يذهبون","تذهبين","تذهب","تذهبان","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","أذهب","أذهبا","أذهبوا","أذهبي","أذهبن","أذهبت","أذهبت","أذهب","أذهبتما","أذهبا","أذهبنا","أذهبتم","أذهبوا","أذهبت","أذهبت","أذهبتا","أذهبتن","أذهبن","أذهب","تذهب","يذهب","تذهبان","يذهبان","نذهب","تذهبون","يذهبون","تذهبين","تذهب","تذهبان","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","نذهب","مذهب","ذاهب","مذهوب","ذهبت","ذهبت","ذهب","ذهبتما","ذهبا","ذهبنا","ذهبتم","ذهبوا","ذهبت","ذهبت","ذهبتا","ذهبتن","ذهبن","أذهب","تذهب","يذهب","تذهبان","يذهبان","نذهب","تذهبون","يذهبون","تذهبين","تذهب","تذهبان","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","أذهب","تذهب","يذهب","تذهبا","يذهبا","نذهب","تذهبوا","يذهبوا","تذهبي","تذهب","تذهبا","تذهبن","يذهبن","اذهب","اذهبا","اذهبوا","اذهبي","اذهبن","ذهب","يذهب","يذهب","يذهب","أظن","ظن","ظان","مظنون","ظننت","ظننت","ظن","ظننتما","ظنا","ظننا","ظننتم","ظنوا","ظننت","ظنت","ظنتا","ظننتن","ظنن","أظن","تظن","يظن","تظنان","يظنان","نظن","تظنون","يظنون","تظنين","تظن","تظنان","تظنن","يظنن","أظن","تظن","يظن","تظنا","يظنا","نظن","تظنوا","يظنوا","تظني","تظن","تظنا","تظنن","يظنن","أظنن","تظنا","يظنا","تظنوا","يظنوا","تظنن","تظني","تظنا","تظنن","يظنن","أظن","أظن","تظن","تظن","يظنن","يظن","ظني","اظنن","يظن","نظنن","نظن","نظن","تظنن","تظن","تظن","ظنا","اظنن","ظن","ظن","ظنوا","اذهب","اذهبا","اذهبوا","ظننت","ظننت","ظن","ظننتما","ظنا","ظننا","ظننتم","ظنوا","ظننت","ظنت","ظنتا","ظننتن","ظنن","أظن","تظن","يظن","تظنان","يظنان","نظن","تظنون","يظنون","تظنين","تظن","تظنان","تظنن","يظنن","أظن","تظن","يظن","تظنا","يظنا","نظن","تظنوا","يظنوا","تظني","تظن","تظنا","تظنن","يظنن","أظنن","تظنا","يظنا","تظنوا","يظنوا","أظن","تظني","تظنا","تظنن","يظنن","تظنن","تظن","تظن","يظنن","يظن","يظن","نظنن","نظن","نظن","تظنن","تظن","تظن","ذهبت","تظن","توجدت","توجدت","توجد","توجدتما","توجدا","توجدنا","توجدتم","توجدوا","توجدت","توجدت","توجدتا","توجدتن","توجدن","أتوجد","ʾتتوجد","يتوجد","تتوجدان","يتوجدان","نتوجد","تتوجدون","يتوجدون","تتوجدين","تتوجد","تتوجدان","تتوجدن","يتوجدن","أتوجد","ʾتتوجد","يتوجد","تتوجدا","يتوجدا","نتوجد","تتوجدوا","يتوجدوا","تتوجدي","تتوجد","تتوجدا","تتوجدن","يتوجدن","أتوجد","ʾتتوجد","يتوجد","تتوجدا","يتوجدا","نتوجد","تتوجدوا","يتوجدوا","تتوجدي","تتوجد","تتوجدا","تتوجدن","يتوجدن","توجد","توجدا","توجدوا","توجدي","توجدن","توجد","يتوجد","يتوجد","يتوجد","توجد","متوجد","متوجد","دعاء","داع","مدعو","دعوت","دعوت","دعا","دعوتما","دعوا","دعونا","دعوتم","دعوا","دعوت","دعت","دعتا","دعوتن","دعون","أدعو","تدعو","يدعو","تدعوان","يدعوان","ندعو","تدعون","يدعون","تدعين","تدعو","تدعوان","تدعون","يدعون","أدعو","تدعو","يدعو","تدعوا","يدعوا","ندعو","تدعوا","يدعوا","تدعي","تدعو","تدعوا","تدعون","يدعون","أدع","تدع","يدع","تدعوا","يدعوا","ندع","تدعوا","يدعوا","تدعي","تدع","تدعوا","تدعون","يدعون","ادع","ادعوا","ادعوا","ادعي","ادعون","دعيت","دعيت","دعي","دعيتما","دعيا","دعينا","دعيتم","دعوا","دعيت","دعيت","دعيتا","دعيتن","دعين","أدعى","تدعى","يدعى","تدعيان","يدعيان","ندعى","تدعون","يدعون","تدعين","تدعى","تدعيان","تدعين","يدعين","أدعى","تدعى","يدعى","تدعيا","يدعيا","ندعى","تدعوا","يدعوا","تدعي","تدعى","تدعيا","تدعين","يدعين","أدع","تدع","يدع","تدعيا","يدعيا","ندع","تدعوا","يدعوا","تدعي","تدع","تدعيا","تدعين","يدعين","تفكر","متفكر","متفكر","تفكرت","تفكرت","تفكر","تفكرتما","تفكرا","تفكرنا","تفكرتم","تفكروا","تفكرت","تفكرت","تفكرتا","تفكرتن","تفكرن","أتفكر","تتفكر","يتفكر","تتفكران","يتفكران","نتفكر","تتفكرون","يتفكرون","تتفكرين","تتفكر","تتفكران","تتفكرن","يتفكرن","أتفكر","تتفكر","يتفكر","تتفكرا","يتفكرا","نتفكر","تتفكروا","يتفكروا","تتفكري","تتفكر","تتفكرا","تتفكرن","يتفكرن","أتفكر","تتفكر","يتفكر","تتفكرا","يتفكرا","نتفكر","تتفكروا","يتفكروا","تتفكري","تتفكر","تتفكرا","تتفكرن","يتفكرن","تفكر","تفكرا","تفكروا","تفكري","تفكرن","تفكر","يتفكر","يتفكر","يتفكر","مجيء","جيء","جيئة","جيئة","جاء","مجيء","جئت","جئت","جاء","جئتما","جاءا","جئنا","جئتم","جائوا","جاؤوا","جئت","جاءت","جاءتا","جئتن","جئن","أجيء","تجيء","يجيء","تجيئان","يجيئان","نجيء","تجيئون","تجيؤون","يجيئون","يجيؤون","تجيئين","تجيء","تجيئان","تجئن","يجئن","أجيء","تجيء","يجيء","تجيئا","يجيئا","نجيء","تجيئوا","تجيؤوا","يجيئوا","يجيؤوا","تجيئي","تجيء","تجيئا","تجئن","يجئن","أجئ","تجئ","يجئ","تجيئا","يجيئا","نجئ","تجيئوا","تجيؤوا","يجيئوا","يجيؤوا","تجيئي","تجئ","تجيئا","تجئن","يجئن","جئ","جيئا","جيئوا","جيؤوا","جيئي","جئن","جئت","جئت","جيء","جئتما","جيئا","جئنا","جئتم","جيئوا","جيؤوا","جئت","جيئت","جيئتا","جئتن","جئن","أجاء","تجاء","يجاء","تجاءان","يجاءان","نجاء","تجائون","تجاؤون","يجائون","يجاؤون","تجائين","تجاء","تجاءان","تجأن","يجأن","أجاء","تجاء","يجاء","تجاءا","يجاءا","نجاء","تجائوا","تجاؤوا","يجائوا","يجاؤوا","تجائي","تجاء","تجاءا","تجأن","يجأن","أجأ","تجأ","يجأ","تجاءا","يجاءا","نجأ","تجائوا","تجاؤوا","يجائوا","يجاؤوا","تجائي","تجأ","تجاءا","تجأن","يجأن","إرادة","مريد","مراد","أردت","أردت","أراد","أردتما","أرادا","أردنا","أردتم","أرادوا","أردت","أرادت","أرادتا","أردتن","أردن","أريد","تريد","يريد","تريدان","يريدان","نريد","تريدون","يريدون","تريدين","تريد","تريدان","تردن","يردن","أريد","تريد","يريد","تريدا","يريدا","نريد","تريدوا","يريدوا","تريدي","تريد","تريدا","تردن","يردن","أرد","ترد","يرد","تريدا","يريدا","نرد","تريدوا","يريدوا","تريدي","ترد","تريدا","تردن","يردن","أرد","أريدا","أريدوا","أريدي","أردن","أردت","أردت","أريد","أردتما","أريدا","أردنا","أردتم","أريدوا","أردت","أريدت","أريدتا","أردتن","أردن","أراد","تراد","يراد","ترادان","يرادان","نراد","ترادون","يرادون","ترادين","تراد","ترادان","تردن","يردن","أراد","تراد","يراد","ترادا","يرادا","نراد","ترادوا","يرادوا","ترادي","تراد","ترادا","تردن","يردن","أرد","ترد","يرد","ترادا","يرادا","نرد","ترادوا","يرادوا","ترادي","ترد","ترادا","تردن","يردن","إتيان","أتي","مأتاة","مأتى","آت","مأتي","أتيت","أتيت","أتى","أتيتما","أتيا","أتينا","أتيتم","أتوا","أتيت","أتت","أتتا","أتيتن","أتين","آتي","تأتي","يأتي","تأتيان","يأتيان","نأتي","تأتون","يأتون","تأتين","تأتي","تأتيان","تأتين","يأتين","آتي","تأتي","يأتي","تأتيا","يأتيا","نأتي","تأتوا","يأتوا","تأتي","تأتي","تأتيا","تأتين","يأتين","آت","تأت","يأت","تأتيا","يأتيا","نأت","تأتوا","يأتوا","تأتي","تأت","تأتيا","تأتين","يأتين","ايت","ايتيا","ايتوا","ايتي","ايتين","أتيت","أتيت","أتي","أتيتما","أتيا","أتينا","أتيتم","أتوا","أتيت","أتيت","أتيتا","أتيتن","أتين","أوتى","تؤتى","يؤتى","تؤتيان","يؤتيان","نؤتى","تؤتون","يؤتون","تؤتين","تؤتى","تؤتيان","تؤتين","يؤتين","أوتى","تؤتى","يؤتى","تؤتيا","يؤتيا","نؤتى","تؤتوا","يؤتوا","تؤتي","تؤتى","تؤتيا","تؤتين","يؤتين","أوت","تؤت","يؤت","تؤتيا","يؤتيا","نؤت","تؤتوا","يؤتوا","تؤتي","تؤت","تؤتيا","تؤتين","يؤتين","فعلته","فعل","فعل","فاعل","مفعول","فعلت","فعلت","فعل","فعلتما","فعلا","فعلنا","فعلتم","فعلوا","فعلت","فعلت","فعلتا","فعلتن","فعلن","أفعل","تفعل","يفعل","تفعلان","يفعلان","نفعل","تفعلون","يفعلون","تفعلين","تفعل","تفعلان","تفعلن","يفعلن","أفعل","تفعل","يفعل","تفعلا","يفعلا","نفعل","تفعلوا","يفعلوا","تفعلي","تفعل","تفعلا","تفعلن","يفعلن","أفعل","تفعل","يفعل","تفعلا","يفعلا","نفعل","تفعلوا","يفعلوا","تفعلي","تفعل","تفعلا","تفعلن","يفعلن","افعل","افعلا","افعلوا","افعلي","افعلن","فعلت","فعلت","فعل","فعلتما","فعلا","فعلنا","فعلتم","فعلوا","فعلت","فعلت","فعلتا","فعلتن","فعلن","أفعل","تفعل","يفعل","تفعلان","يفعلان","نفعل","تفعلون","يفعلون","تفعلين","تفعل","تفعلان","تفعلن","يفعلن","أفعل","تفعل","يفعل","تفعلا","يفعلا","نفعل","تفعلوا","يفعلوا","تفعلي","تفعل","تفعلا","تفعلن","يفعلن","أفعل","تفعل","يفعل","تفعلا","يفعلا","نفعل","تفعلوا","يفعلوا","تفعلي","تفعل","تفعلا","تفعلن","يفعلن","قصد","مقصد","قاصد","مقصود","قصدت","قصدت","قصد","قصدتما","قصدا","قصدنا","قصدتم","قصدوا","قصدت","قصدت","قصدتا","قصدتن","قصدن","أقصد","تقصد","يقصد","تقصدان","يقصدان","نقصد","تقصدون","يقصدون","تقصدين","تقصد","تقصدان","تقصدن","يقصدن","أقصد","تقصد","يقصد","تقصدا","يقصدا","نقصد","تقصدوا","يقصدوا","تقصدي","تقصد","تقصدا","تقصدن","يقصدن","أقصد","تقصد","يقصد","تقصدا","يقصدا","نقصد","تقصدوا","يقصدوا","تقصدي","تقصد","تقصدا","تقصدن","يقصدن","اقصد","اقصدا","اقصدوا","اقصدي","اقصدن","قصدت","قصدت","قصد","قصدتما","قصدا","قصدنا","قصدتم","قصدوا","قصدت","قصدت","قصدتا","قصدتن","قصدن","أقصد","تقصد","يقصد","تقصدان","يقصدان","نقصد","تقصدون","يقصدون","تقصدين","تقصد","تقصدان","تقصدن","يقصدن","أقصد","تقصد","يقصد","تقصدا","يقصدا","نقصد","تقصدوا","يقصدوا","تقصدي","تقصد","تقصدا","تقصدن","يقصدن","أقصد","تقصد","يقصد","تقصدا","يقصدا","نقصد","تقصدوا","يقصدوا","تقصدي","تقصد","تقصدا","تقصدن","يقصدن","زائل","زلت","زلت","زال","زلتما","زالا","زلنا","زلتم","زالوا","زلت","زالت","زالتا","زلتن","زلن","أزال","تزال","يزال","تزالان","يزالان","نزال","تزالون","يزالون","تزالين","تزال","تزالان","تزلن","يزلن","أزال","تزال","يزال","تزالا","يزالا","نزال","تزالوا","يزالوا","تزالي","تزال","تزالا","تزلن","يزلن","أزل","تزل","يزل","تزالا","يزالا","نزل","تزالوا","يزالوا","تزالي","تزل","تزالا","تزلن","يزلن","زل","زالا","زالوا","زالي","زلن","عملت","عملت","عمل","عملتما","عملا","عملنا","عملتم","عملوا","عملت","عملت","عملتا","عملتن","عملن","أعمل","تعمل","يعمل","تعملان","يعملان","نعمل","تعملون","يعملون","تعملين","تعملن","يعملن","أعمل","تعمل","يعمل","تعملا","يعملا","نعمل","تعملوا","يعملوا","تعملي","أعمل","تعمل","يعمل","نعمل","اعمل","اعملا","اعملوا","اعملي","اعملن","عملت","عملت","عمل","عملتما","عملا","عملنا","عملتم","عملوا","عملت","عملت","عملتا","عملتن","عملن","أعمل","تعمل","يعمل","تعملان","يعملان","نعمل","تعملون","يعملون","تعملين","تعملن","يعملن","أعمل","تعمل","يعمل","تعملا","يعملا","نعمل","تعملوا","يعملوا","تعملي","أعمل","تعمل","يعمل","نعمل","عملت","عننت","عننت","عن","عننتما","عنا","عننا","عننتم","عنوا","عننت","عنت","عنتا","عننتن","عنن","أعن","أعن","تعن","تعن","يعن","يعن","تعنان","تعنان","يعنان","يعنان","نعن","نعن","تعنون","تعنون","يعنون","يعنون","تعنين","تعنين","تعنن","تعنن","يعنن","يعنن","أعن","أعن","تعن","تعن","يعن","يعن","تعنا","تعنا","يعنا","يعنا","نعن","نعن","تعنوا","تعنوا","يعنوا","يعنوا","تعني","تعني","أعن","أعنن","أعن","أعنن","تعن","تعنن","تعن","تعنن","يعن","يعنن","يعن","يعنن","نعن","نعنن","نعن","نعنن","عن","عن","اعنن","عن","عن","اعنن","عنا","عنا","عنوا","عني","عني","اعنن","اعنن","يعن","يعن","يعن","يعنن","قمت","قمت","قام","قمتما","قاما","قمنا","قمتم","قاموا","قمت","قامت","قامتا","قمتن","قمن","أقوم","تقوم","يقوم","تقومان","يقومان","نقوم","تقومون","يقومون","تقومين","تقمن","يقمن","أقوم","تقوم","يقوم","تقوما","يقوما","نقوم","تقوموا","يقوموا","تقومي","أقم","تقم","يقم","نقم","قم","قوما","قوموا","قومي","قيم","يقام","يقام","يقم","وددت","وددت","ود","وددتما","ودا","وددنا","وددتم","ودوا","وددت","ودت","ودتا","وددتن","وددن","أود","تود","يود","تودان","يودان","نود","تودون","يودون","تودين","توددن","يوددن","أود","تود","يود","تودا","يودا","نود","تودوا","يودوا","تودي","أود","أودد","تود","تودد","يود","يودد","نود","نودد","ود","ايدد","ودي","ايددن","وددت","وددت","ود","وددتما","ودا","وددنا","وددتم","ودوا","وددت","ودت","ودتا","وددتن","وددن","أود","تود","يود","تودان","يودان","نود","تودون","يودون","تودين","توددن","يوددن","أود","تود","يود","تودا","يودا","نود","تودوا","يودوا","تودي","أود","أودد","تود","تودد","يود","يودد","نود","نودد","حاولت","حاولت","حاول","حاولتما","حاولا","حاولنا","حاولتم","حاولوا","حاولت","حاولت","حاولتا","حاولتن","حاولن","أحاول","تحاول","يحاول","تحاولان","يحاولان","نحاول","تحاولون","يحاولون","تحاولين","تحاولن","يحاولن","أحاول","تحاول","يحاول","تحاولا","يحاولا","نحاول","تحاولوا","يحاولوا","تحاولي","أحاول","تحاول","يحاول","نحاول","حاول","حاولا","حاولوا","حاولي","حاولن","حوولت","حوولت","حوول","حوولتما","حوولا","حوولنا","حوولتم","حوولوا","حوولت","حوولت","حوولتا","حوولتن","حوولن","أحاول","تحاول","يحاول","تحاولان","يحاولان","نحاول","تحاولون","يحاولون","تحاولين","تحاولن","يحاولن","أحاول","تحاول","يحاول","تحاولا","يحاولا","نحاول","تحاولوا","يحاولوا","تحاولي","أحاول","تحاول","يحاول","نحاول","احتجت","احتجت","احتاج","احتجتما","احتاجا","احتجنا","احتجتم","احتاجوا","احتجت","احتاجت","احتاجتا","احتجتن","احتجن","أحتاج","تحتاج","يحتاج","تحتاجان","يحتاجان","نحتاج","تحتاجون","يحتاجون","تحتاجين","تحتجن","يحتجن","أحتاج","تحتاج","يحتاج","تحتاجا","يحتاجا","نحتاج","تحتاجوا","يحتاجوا","تحتاجي","أحتج","تحتج","يحتج","نحتج","احتج","احتاجي","احتجت","احتجت","احتيج","احتجتما","احتيجا","احتجنا","احتجتم","احتيجوا","احتجت","احتيجت","احتيجتا","احتجتن","احتجن","أحتاج","تحتاج","يحتاج","تحتاجان","يحتاجان","نحتاج","تحتاجون","يحتاجون","تحتاجين","تحتجن","يحتجن","أحتاج","تحتاج","يحتاج","تحتاجا","يحتاجا","نحتاج","تحتاجوا","يحتاجوا","تحتاجي","أحتج","تحتج","يحتج","نحتج","عنيت","عنيت","عنى","عنيتما","عنيا","عنينا","عنيتم","عنوا","عنيت","عنت","عنتا","عنيتن","عنين","أعني","تعني","يعني","تعنيان","يعنيان","نعني","تعنون","يعنون","تعنين","يعنين","أعني","تعني","يعني","تعنيا","يعنيا","نعني","تعنوا","يعنوا","أعن","تعن","يعن","نعن","اعن","اعنيا","اعنوا","اعني","اعنين","عنيت","عنيت","عني","عنيتما","عنيا","عنينا","عنيتم","عنوا","عنيت","عنيت","عنيتا","عنيتن","عنين","أعنى","تعنى","يعنى","تعنيان","يعنيان","نعنى","تعنون","يعنون","تعنين","يعنين","تعنيا","يعنيا","تعنوا","يعنوا","تعني","أعن","تعن","يعن","نعن","يعنين","عندي","عندنا","عندك","عندك","عندكما","عندكم","عندكن","عنده","عندها","عندهما","عندهم","عندهن","بقاء","البقاء","بقاء","البقاء","بقاء","بقاء","البقاء","بقاء","بقاء","البقاء","بقاء"],j=["جيد","آخر","رائع","أفضل","جيدة","نفس","فقط","مجرد","كبير","الأفضل","عظيم","جميلة","كبيرة","رائعة","جديد","صغيرة","الصغير","متأكد","مهما","صغير","جيدا","الصغيرة","أكبر","جديدة","افضل","الجديد","طويلة","ممكن","اخر","طويل","الممكن","الخاصة","سيئة","الكبير","حقيقي","بعيدا","الجيد","مهم","الجديدة","كثير","الكبيرة","القليل","ممتاز","الحقيقي","سيء","معا","قليل","بعيد","واضح","مختلف","متأكدة","الصعب","أسوأ","حوالي","كامل","سيئ","بالإمكان","بكثير","خاص","سوية","مختلفة","قريب","الأخير","الأخيرة","الافضل","خير"],A=["واو","هيا","آه","هيه","هاى","أوه","أخخ","هووه","صه","أوبس","أها","آخ","أح","شو","ههههه"],H=["كلغ","ملغ","الكوارت","جرام","جالون","ربع ","كوارتات","لتر","سنتيلتر","مليمتر","دزينة","ملاعق","ذراع","قبضة","عربية","قصبة","بريد","قدم","ربع"],k=["الأمر","الأشياء","الشيء","الأمور","الامر","أشياء","جزء","الاشياء","الامور","الطريقة","طريقا","طرق","قطعة","الأجزاء","مادة","مرات","بالمئة","جانب","جوانب","بند","عنصر","عناصر","بنود","فكرة","موضوع","تفصيل","تفاصيل","فرق","فروق","كيفية"],D=["نعم","حسنا","إنه","إني","إنها","إنك","إنكم","إنهم","إنكما","إنهما","إننا","إنهن","فإن","إنني","كلا","أجل","أنه","أنك","انها","أنها","بأن","أنني","أنكم","أنهما","أنكما","أنهن","أنهم","انك","أني","أننا","انهم","بأنك","لأنه","بأنه","اني","أننى","انني","اننا","بأنني","اننى","بأني","بأنها","وأن","بأننا","للتو","ها","رجاء","تفضل","اجل","حالك","فضلك","أرجوك","هكذا","انة","بلى","أعلى","انى","لا","لن","لم","ولا","ألا","ولم","ولن","عدم","فلا","فلن","يلا","يلة"],T=["عندما","مثل","بالطبع","لأن","إذن","بشكل","متى","حتى","قبل","ثم","عند","حيث","بينما","لمدة","مثلك","حين","بأي","زلت","وعندما","أثناء","حينما","أولا","لاحقا","أما","وإلا","لفترة","كلما","عندنا","إلا","الا"],Y=(i([].concat(u,j)),i([].concat(c,L,z,O,f,x,h)),i([].concat(T,o,y,l,d,g,A,a,F,b,_,M,w,P,S,R,W,v,D,E,H,["اليوم","يوم","ليلة","دقيقة","ساعة","عام","دقائق","سنة","الساعة","أيام","العام","الأسبوع","غدا","ساعات","أمس","أشهر","الأيام","شهر","السنة","الغد","يوما","ثانية","ثوان","أسبوع","أسابيع","أسبوعا","بالأمس"],k,m,p)),i([].concat(c,a,u,f,g,l,d,h,w,S,R,W,v,y,E,F,b,L,O,P,_,T,o,["الآن","كذلك","ربما","كما","لذا","الان","الأن","بما","أيضا","بالنسبة","فحسب","والآن","بكل","مما","ايضا","بخصوص","القادمة","المحتمل","مازال","مازلت","طالما","بالتأكيد","بدلا","بوضوح","فورا","حالا","التالي","حاليا","بالعادة","تقريبا","ببساطة","اختياريا","أحيانا","أبدا","بالمناسبة","خاصة","مؤخرا","نسبيا"],x,M,A,j,H,k,D,["السيد","السيدة","افندم","سعادتك","استاذة","استاذ","مدام","أستاذ","أسـتاذة","الأخ","الأخت"],m,p,z))),B=[["لا","ولا"],["إما","أو"],["ربما","ربما"],["حينئذ","عندئذ"],["إما","وإما"],["كل من","و"]],C=["ل","ب","ك","و","ف","س","أ","ال","وب","ول","لل","فس","فب","فل","وس","وال","بال","فال","كال","ولل","وبال"],$=[...C].sort(((e,t)=>t.length-e.length)),q=new RegExp(`^(${$.join("|")})`);function G(e){const t=[];t.push(...C.map((t=>t+e)));const{stem:r,prefix:n}=function(e,t){let r=e,n="";const o=e.match(t);return o&&(n=o[0],r=e.slice(n.length)),{stem:r,prefix:n}}(e,q);return""!==n&&(t.push(r),t.push(...C.map((e=>e+r)))),t}const I=window.lodash,J=function(e,t){const r=t.externalStemmer,n=r.characters;return r.wordsWithLastAlefRemoved.includes(e)?e+n.alef:r.wordsWithLastHamzaRemoved.includes(e)?e+n.alef_hamza_above:r.wordsWithLastMaksoraRemoved.includes(e)?e+n.yeh_maksorah:r.wordsWithLastYehRemoved.includes(e)?e+n.yeh:void 0},K=function(e,t){const r=t.externalStemmer,n=r.characters;return r.wordsWithMiddleWawRemoved.includes(e)?e[0]+n.waw+e[1]:r.wordsWithMiddleYehRemoved.includes(e)?e[0]+n.yeh+e[1]:void 0},N=function(e,t,r,n){const o=e.replace(new RegExp(r[0]),r[1]);if(o!==e)return n(o,t)},Q=function(e,t){const r=t.externalStemmer.characters;if(t.externalStemmer.threeLetterRoots.includes(e))return e;e[0]!==r.alef&&e[0]!==r.waw_hamza&&e[0]!==r.yeh_hamza||(e=r.alef_hamza_above+e.slice(1));const n=N(e,t,t.externalStemmer.regexRemoveLastWeakLetterOrHamza,J);if(n)return n;const o=N(e,t,t.externalStemmer.regexRemoveMiddleWeakLetterOrHamza,K);if(o)return o;const s=t.externalStemmer.regexReplaceMiddleLetterWithAlef,i=t.externalStemmer.regexReplaceMiddleLetterWithAlefWithHamza,c=e.replace(new RegExp(s[0]),s[1]);e=c===e?e.replace(new RegExp(i[0]),i[1]):c;const a=t.externalStemmer.regexRemoveShaddaAndDuplicateLastLetter;return e.replace(new RegExp(a[0]),a[1])},U=function(e,t,r){return 6===e.length&&e[3]===e[5]&&2===t?Q(e.substring(1,4),r):e},V=function(e,t,r,n){const o=n.externalStemmer.characters;if(e.length-3<=r){let r="";for(let n=0;nfunction(e,t){const r=t.externalStemmer.regexRemovingDiacritics;e.replace(new RegExp(r),"");const n=ee(e,t);if(n)return n;const o=Z(e,t);if(o){if(!0===o.rootFound)return o.word;e=o.word}const s=function(e,t){const r=te(e,t.externalStemmer.definiteArticles);if(r!==e)return oe(r,t)||{word:r,rootFound:!1}}(e,t);if(s){if(!0===s.rootFound)return s.word;e=s.word}const i=function(e,t){let r="";if(e.length>3&&e.startsWith(t.externalStemmer.characters.waw)){r=e.substring(1);const n=oe(r,t);if(n)return n}}(e,t);if(i){if(!0===i.rootFound)return i.word;e=i.word}const c=re(e,t);if(c)return c.word;const a=ne(e,t);return a?a.word:e}(e,t):se}const ce=["غودرت","غودر","غودرتما","غودرا","غودرتا","غودرنا","غودرتم","غودرتنّ","غودروا","غودرن","مغادر","محثوث","تجرى","يجرى","مجرى","تبقى","يبقى","مبقى","تجوهلت","تجوهل","تجوهلت","تجوهلتما","تجوهلا","تجوهلتا","تجوهلنا","تجوهلتم","تجوهلتنّ","تجوهلوا","تجوهلن","متجاهل","تشوورت","تشوور","تشوورتما","تشوورا","تشوورتا","تشوورنا","تشوورتم","تشوورتنّ","تشووروا","تشوورن","متشاور","نوقشت","نوقش","نوقشتما","نوقشا","نوقشتا","نوقشنا","نوقشتم","نوقشتنّ","نوقشوا","نوقشن","مناقش","معود","ترتدى","يرتدى","نرتدى","مرتدى","تنتهى","ينتهى","ننتهى","تجووزت","تجووز","تجووزتما","تجووزا","تجووزتا","تجووزنا","تجووزتم","تجووزتنّ","تجووزوا","تجووزن","حوولت","حوول","حوولتما","حوولا","حوولتا","حوولنا","حوولتم","حوولتنّ","حوولوا","حوولن","تعولجت","تعولج","تعولجتما","تعولجا","تعولجتا","تعولجنا","تعولجتم","تعولجتنّ","تعولجوا","تعولجن","متعالج","أشير","أشيرا","أشيرتا","أشيروا","تشار","تشارين","يشار","تشاران","يشاران","نشار","تشارون","يشارون","جيء","جيئت","جيئا","جيئتا","جيئوا","أجاء","تجاء","تجائين","يجاء","تجاءان","يجاءان","نجاء","تجائون","تجأن","يجائون","يجأن","يوصى","توصى","نوصى","موصى","احتيج","احتيجت","احتيجا","احتيجتا","احتيجوا","تعطى","يعطى","نعطى","معطى","تعوليت","تعولي","تعوليتما","تعوليا","تعوليتا","تعولينا","تعوليتم","تعوليتنّ","تعولوا","تعولين"," شوركت","شورك","شوركتما","شوركا","شوركتا","شوركنا","شوركتم","شوركتنّ","شوركوا","شوركن","تتولّى","يتولّى","نتولّى","زيد","زيدت","زيدا","زيدتا","زيدوا","أزاد","تزاد","تزادين","يزاد","تزادان","يزادان","نزاد","تزادون","يزادون","سوعدت","سوعد","سوعدتما","سوعدا","سوعدتا","سوعدنا","سوعدتم","سوعدتنّ","سوعدوا","سوعدن","رئيت","رئي","رئيتما","رئيا","رئيتا","رئينا","رئيتم","رئيتنّ","رؤوا","رئين","تفووضت","تفووض","تفووضتما","تفووضا","تفووضتا","تفووضنا","تفووضتم","تفووضتنّ","تفووضوا","تفووضن","تزويدت","تزويد","تزويدتما","تزويدا","تزويدتا","تزويدنا","تزويدتم","تزويدتنّ","تزويدوا","تزويدن","تتلقّى","يتلقّى","نتلقّى","لوحظت","لوحظ","لوحظتما","لوحظا","لوحظتا","لوحظنا","لوحظتم","لوحظتنّ","لوحظوا","لوحظن","تسعى","يسعى","نسعى","أوتيت","أوتي","أوتيتما","أوتيا","أوتيتا","أوتينا","أوتيتم","أوتيتنّ","أوتوا","أوتين","ووفقت","ووفق","ووفقتما","ووفقا","ووفقتا","ووفقنا","ووفقتم","ووفقتنّ","ووفقوا","ووفقن","إين","إينت","إينا","إينتا","إينوا","أؤان","تؤان","تؤانين","يؤان","تؤانان","يؤانان","نؤان","تؤانون","يؤانون","أوخذت","أوخذ","أوخذتما","أوخذا","أوخذتا","أوخذنا","أوخذتم","أوخذتنّ","أوخذوا","أوخذن","لهيت","لهي","لهيتما","لهيا","لهيتا","لهينا","لهيتم","لهيتم","لهوا","لهين","ألهى","تلهى","يلهى","تلهى","تلهيان","يلهيان","نلهى","يلهين","تتبقّى","يتبقّى","نتبقّى","تنوولت","تنوول","تنوولتما","تنوولا","تنوولتا","تنوولنا","تنوولتم","تنوولتنّ","تنوولوا","تنوولن","تووجهت","تووجه","تووجهتما","تووجها","تووجهتا","تووجهنا","تووجهتم","تووجهتنّ","تووجهوا","تووجهن","تبودلت","تبودل","تبودلتما","تبودلا","تبودلتا","تبودلنا","تبودلتم","تبودلتم","تبودلوا","تبودلن","تعورضت","تعورض","تعورضتما","تعورضا","تعورضتا","تعورضنا","تعورضتم","تعورضتنّ","تعورضوا","تعورضن","تعورضن","تعنى","يعنى","نعنى","طولبت","طولب","طولبتما","طولبا","طولبتا","طولبنا","طولبتم","طولبتنّ","طولبوا","طولبن","قيم","قيمت","قيما","قيمتا","قيموا","أقام","تقام","تقامين","يقام","تقامان","يقامان","نقام","تقامون","يقامون","أنشئت","أنشئ","أنشئتما","أنشئا","أنشئتا","أنشئنا","أنشئتم","أنشئتنّ","أنشئوا","أنشئن","تنشأ","تنشئين","ينشأ","تنشآن","ينشآن","ننشأ","تنشأون","ينشأون","ينشأن","تنشأن","غطّي","تغطّى","يغطّى","نغطّى","قوتلت","قوتل","قوتلتما","قوتلا","قوتلتا","قوتلنا","قوتلنا","قوتلتنّ","قوتلوا","قوتلن","أسمى","تسمى","يسمى","نسمى","أوثرت","أوثر","أوثرتما","أوثرا","أوثرتا","أوثرنا","أوثرتم","أوثرتنّ","أوثروا","أوثرن","غنّي","أغنّى","تغنّى","يغنّى","نغنّى","استفيد","استفيدت","استفيدا","استفيدتا","استفيدوا","أستفاد","تستفاد","تستفادين","يستفاد","تستفادان","يستفادان","نستفاد","تستفادون","يستفادون","أثير","أثيرت","أثيرا","أثيرا","أثيروا","أثار","تثار","تثارين","يثار","تثاران","يثاران","نثار","تثارون","يثارون","تدّعى","يدّعى","ندّعى","عيش","عيشت","عيشا","عيشتا","عيشوا","أعاش","تعاش","تعاشين","يعاش","تعاشان","يعاشان","نعاش","تعاشون","يعاشون","ووجهت","ووجه","ووجهتما","ووجها","ووجهتا","ووجهنا","ووجهتم","ووجهتنّ","ووجهوا","ووجهن","دعيت","دعي","دعيا","دعيتا","دعينا","دعيتم","دعيتنّ","دعوا","دعين","أدعى","تدعى","تدعين","تدعين","تدعيان","يدعيان","يدعين","اختير","اختيرت","اختيرا","اختيرتا","اختيروا","اخترن","شوهدت","شوهد","شوهدتما","شوهدا","شوهدتا","شوهدنا","شوهدتم","شوهدتنّ","شوهدوا","شوهدن","أدّي","أؤدّى","تؤدّى","يؤدّى","نؤدّى","أفيدت","أفيدا","أفيدتا","أفيدوا","يفادون","تفادون","نفاد","تفادان","يفادان","تفاد","يفاد","تفادين","أفاد","تكوملت","تكومل","تكوملتما","تكوملا","تكوملتا","تكوملنا","تكوملتم","تكوملتنّ","تكوملوا","تكوملن","أهنّئ","تهنّئ","تهنّئين","يهنّئ","يهنّئ","يهنّئان","تهنّئان","نهنّئ","تهنّئون","تهنّئن","هنّئوا","هنّئن","أهنّأ","تهنّأ","يهنّأ","تهنّآن","نهنّأ","تهنّأون","تهنّأن","يهنّأون","يهنّأن","سوهمت","سوهم","سوهمتما","سوهما","سوهمتا","سوهمنا","سوهمتم","سوهمتنّ","سوهموا","سوهمن","أرمى","ترمى","يرمى","نرمى","أبلغت"],{getWords:ae}=r.languageProcessing;function ue(e){const t=ae(e),r=[];for(let e of t){e.startsWith("و")&&(e=e.slice(1));let t=-1;e.length>=2&&(t=e[1].search("ُ")),(-1!==t||ce.includes(e))&&r.push(e)}return 0!==r.length}const{AbstractResearcher:le}=r.languageProcessing;class de extends le{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"ar",passiveConstructionType:"morphological",firstWordExceptions:n,functionWords:Y,transitionWords:s,twoPartTransitionWords:B,prefixedFunctionWordsRegex:q}),Object.assign(this.helpers,{createBasicWordForms:G,getStemmer:ie,isPassiveSentence:ue})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/pt.js000064400000172246147206602470011076 0ustar00(()=>{"use strict";var a={d:(d,e)=>{for(var i in e)a.o(e,i)&&!a.o(d,i)&&Object.defineProperty(d,i,{enumerable:!0,get:e[i]})},o:(a,d)=>Object.prototype.hasOwnProperty.call(a,d),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},d={};a.r(d),a.d(d,{default:()=>pa});const e=window.yoast.analysis,i=["o","a","os","as","um","uma","uns","umas","um","dois","três","quatro","cinco","seis","sete","oito","nove","dez","este","estes","esta","estas","esse","esses","essa","essas","aquele","aqueles","aquela","aquelas","isto","isso","aquilo"],r=["ademais","afinal","aliás","analogamente","anteriormente","assim","atualmente","certamente","conforme","conquanto","contudo","decerto","embora","enfim","enquanto","então","entretanto","eventualmente","igualmente","inegavelmente","inesperadamente","mas","ocasionalmente","outrossim","pois","porquanto","porque","portanto","posteriormente","precipuamente","primeiramente","primordialmente","principalmente","salvo","semelhantemente","similarmente","sobretudo","surpreendentemente","todavia"],s=r.concat(["a fim de","a fim de que","a menos que","a princípio","a saber","acima de tudo","ainda assim","ainda mais","ainda que","além disso","antes de mais nada","antes de tudo","antes que","ao mesmo tempo","ao passo que","ao propósito","apesar de","apesar disso","às vezes","assim como","assim que","assim sendo","assim também","bem como","com a finalidade de","com efeito","com o fim de","com o intuito de","com o propósito de","com toda a certeza","como resultado","como se","da mesma forma","de acordo com","de conformidade com","de fato","de maneira idêntica","de tal forma que","de tal sorte que","depois que","desde que","dessa forma","dessa maneira","desse modo","do mesmo modo","é provável","em conclusão","em contrapartida","em contraste com","em outras palavras","em primeiro lugar","em princípio","em resumo","em seguida","em segundo lugar","em síntese","em suma","em terceiro lugar","em virtude de","finalmente","isto é","já que","juntamente com","logo após","logo depois","logo que","mesmo que","não apenas","nesse hiato","nesse ínterim","nesse meio tempo","nesse sentido","no entanto","no momento em que","ou por outra","ou seja","para que","pelo contrário","por analogia","por causa de","por certo","por conseguinte","por conseqüência","porém","por exemplo","por fim","por isso","por mais que","por menos que","por outro lado","por vezes","posto que","se acaso","se bem que","seja como for","sem dúvida","sempre que","só para exemplificar","só para ilustrar","só que","sob o mesmo ponto de vista","talvez provavelmente","tanto quanto","todas as vezes que","todas as vezes em que","uma vez que","visto que"]);function o(a){let d=a;return a.forEach((e=>{(e=e.split("-")).length>0&&e.filter((d=>!a.includes(d))).length>0&&(d=d.concat(e))})),d}const t=["o","a","os","as","um","uns","uma","umas"],n=["uma","duas","dois","três","cuatro","cinco","seis","sete","oito","nove","dez","onze","doze","treze","quatorze","catorze","quinze","dezesseis","dezessete","dezasseis","dezassete","dezoito","dezenove","dezanove","vinte","cem","cento","mil","milhão","milhões","bilhão","bilhões"],c=["primeiro","primeiros","primeira","primeiras","segundo","segunda","segundos","segundas","terceiro","terceira","terceiros","terceiras","quarto","quartos","quarta","quartas","quinto","quintos","quinta","quintas","sexto","sextos","sexta","sextas","sétimo","sétimos","sétima","sétimas","oitavo","oitavos","oitava","oitavas","nono","nonos","nona","nonas","décimo","décimos","décima","décimas","vigésimo","vigésimos","vigésima","vigésimas"],l=["eu","tu","ele","ela","nós","vós","você","vocês","eles","elas"],u=["me","te","lhe","nos","vos","lhes"],m=["dele","dela","deles","delas","nele","nela","neles","nelas","mim","ti","si"],p=["conmigo","contigo","consigo","convosco","conosco","connosco"],g=["se"],f=["aquilo","àquele","àquela","àqueles","àquelas","àquilo","este","estes","esta","estas","àqueles","aqueles","aquele","aquela","aquelas","aquilo","esse","esses","essa","essas","isto","isso"],v=["minhas","tuas","suas","minha","tua","sua","minhas","tuas","suas","vossa","vossas","meu","meus","teu","teus","seu","seus","nosso","nossos","nossa","nossas"],b=["apenas","vário","vários","vária","várias","mais","muito","muitos","muita","muitas","puoco","puocos","puoca","puocas","bastante","todo","todos","toda","todas"],h=["alguma","algumas","nenhuns","nenhumas","todo","toda","todas","outro","outra","outros","outras","qualquer","quaisquer","outrem","tudo","nada","algo","tanto","tanta","tantos","tantas","quanto","quanta","quantos","quantas","ninguém","cada"],z=["quais","qual","quem","cujo","cuja","cujos","cujas"],q=["como","porque","quanto","quanta","onde","quando","quão","quantos","quantas","donde","aonde","que"],j=["cá","além","aqui","ali","lá","acolá","aí"],x=["tenho","tens","tem","temos","tendes","têm","tive","tiveste","teve","tivemos","tivestes","tiveram","tínhamos","tínheis","tinham","tivera","tiveras","tivéramos","tivéreis","tiveram","terei","terás","terá","teremos","tereis","terão","teria","terias","teríamos","teríeis","teriam","tenha","tenhas","tenhamos","tenhais","tenham","tivesse","tivesses","tivéssemos","tivésseis","tivessem","tiver","tiveres","tivermos","tiverdes","tiverem","tende","teres","termos","terdes","terem","tido","hei","hás","há","havemos","hemos","haveis","heis","hão","houve","houveste","houvemos","houvestes","houveram","havia","havias","havíamos","havíeis","haviam","houvera","houveras","houvéramos","houvéreis","houveram","haverei","haverás","haverá","haveremos","havereis","haverão","haveria","haverias","haveríamos","haveríeis","haveriam","haja","hajas","hajamos","hajais","hajam","houvesse","houvesses","houvéssemos","houvésseis","houvessem","houver","houveres","houvermos","houverdes","houverem","havei","hajais","haveres","havermos","haverdes","haverem","havido","poder","posso","podes","pode","podemos","podeis","podem","pude","pudeste","pôde","pudemos","pudestes","puderam","podia","podias","podia","podíamos","podíeis","podiam","pudera","puderas","pudéramos","pudéreis","puderam","poderei","poderás","poderá","poderemos","podereis","poderão","poderia","poderias","poderíamos","poderíeis","poderiam","possa","possas","possamos","possais","possam","pudesse","pudesses","pudéssemos","pudésseis","pudessem","puder","puderes","pudermos","puderdes","puderem"],y=["ter","haver"],w=["sou","és","é","somos","sois","são","fui","foste","foi","fomos","fostes","foram","era","eras","éramos","éreis","eram","fôramos","fôreis","fora","foras","foram","serei","serás","será","seremos","sereis","serão","seria","serias","seríamos","seríeis","seriam","seja","sejas","seja","sejamos","sejais","sejam","fosse","fosses","fôssemos","fôsseis","fossem","for","fores","formos","fordes","forem","sê","sede","sermos","serdes","serem","seres","sido","estou","está","estamos","estás","estás","estais","estão","estive","estiveste","esteve","estivemos","estivestes","estiveram","estava","estavas","estávamos","estáveis","estavam","estivera","estiveras","estivéramos","estivéreis","estiveram","estarei","estarás","estará","estaremos","estareis","estarão","estaria","estarias","estaríamos","estaríeis","estariam","esteja","estejas","estejamos","estejais","estejam","estivesse","estivesses","estivéssemos","estivésseis","estivessem","estiver","estiveres","estivermos","estiverdes","estiverem","estai","estejas","estejais","estares","estarmos","estardes","estarem","estado"],S=["estar","ser"],C=["a","ante","antes","após","até","através","com","contra","depois","desde","sem","entre","para","pra","perante","sob","sobre","trás","de","por","em","ao","à","aos","às","do","da","dos","das","dum","duma","duns","dumas","no","na","nos","nas","num","numa","nuns","numas","pelo","pela","pelos","pelas","deste","desse","daquele","desta","dessa","daquela","destes","desses","daqueles","destas","dessas","daquelas","neste","nesse","naquele","nesta","nessa","naquela","nestes","nesses","naqueles","nestas","nessas","naquelas","disto","disso","daquilo","nisto","nisso","naquilo","durante"],P=["também","e","ou","nem"],W=["agora","conforme","conquanto","contanto","embora","enquanto","então","entretanto","malgrado","mas","pois","porém","porquanto","porque","senão","contudo"],k=["diz","dizem","disse","disseram","dizia","diziam","reivindica","reivindicam","reivindicou","reivindicaram","reivindicava","reivindicavam","requer","requerem","requereu","requereram","requeria","requeriam","afirma","afirmam","afirmou","afirmaram","afirmava","afirmavam","reivindica","reivindicam","reivindicou","reivindicaram","reivindicava","reivindicavam","perguntam","perguntou","perguntaram","perguntava","perguntavam","explica","explicam","explicou","explicaram","explicava","explicavam","relata","relatam","relatou","relataram"],T=["provavelmente","imediatamente","ocasionalmente","indubitavelmente","para","possivelmente","logo","simultaneamente","exceto","inquestionavelmente"],O=["extremamente","bem","completamente","totalmente","grandemente","seriamente","absolutamente","bastante","sobremodo","sobremaneira","tão"],E=["dou","dás","dá","damos","dais","dão","dei","deu","demos","deram","dava","davas","dávamos","dáveis","davam","dera","deras","déramos","déreis","deram","darei","darás","dará","daremos","dareis","darão","daria","darias","daríamos","daríeis","dariam","dê","dês","dêmos","deis","deem","déssemos","désseis","dessem","der","deres","dermos","derdes","derem","dai","deis","dares","darmos","dardes","darem","fazendo","faço","fazes","faz","fazemos","fazeis","fazem","fiz","fizeste","fez","fizemos","fizestes","fizeram","fazia","fazias","fazíamos","fazíeis","faziam","fizera","fizeras","fizéramos","fizéreis","farei","farás","fará","faremos","fareis","faria","farias","faríamos","faríeis","fariam","faça","faças","façamos","façais","façam","fizesse","fizesses","fizéssemos","fizésseis","fizessem","fizer","fizeres","fizermos","fizerdes","fizerem","fazei","fazeres","fazermos","fazerdes","fazerem"],M=["dar","fazer"],R=["devagar","rapidamente","grande","grandes","depressa","claramente","effectivamente","realmente","exclusivamente","simplesemente","somente","unicamente","lentamente","raramente","certamente","talvez","actualmente","dificilmente","principalmente","gerlamente","enorme","enormes","pequeno","pequena","pequenos","pequenas","minúsculo","minúsculos","minúscula","minúsculas","velho","velhos","velha","velhas","lindo","linda","lindos","lindas","alto","alta","altos","altas","baixo","baixa","baixos","baixas","longo","longa","longos","longas","curto","curta","curtos","curtas","fácil","fáceis","difícil","difíceis","simples","mesmo","mesma","mesmos","mesmas","mêsmo","mêsmos","mêsma","mêsmas","cedo","tarde","importante","importantes","capaz","capazes","certo","certa","certos","certas","usual","usuals","ultimamente","possível","possíveis","comum","comuns","freqüentemente","constantemente","continuamente","diretamente","levemente","algures","semelhante","semelhantes","similar","similares","sempre","ainda","já","atrás","depois"],A=["pior","melhor","melhores","bom","boa","bons","boas","bonito","bonita","bonitos","bonitas","grande","grandes","pequeno","pequena","pequenos","pequenas","velho","velhos","velha","velhas","mau","má","maus","más"],I=["ai","ah","ih","alô","oi","olá","ui","uf","psiu","mau","olha","viva","uau","wow","oh","shi"],L=["kg","mg","gr","g","km","m","l","ml","cl"],_=["segundos","minuto","minutos","hora","horas","dia","dias","semana","semanas","mes","meses","ano","anos","hoje","amanhã","ontem"],N=["caso","casos","coisa","coisas","detalhe","detalhes","forma","formas","jeito","jeitos","maneira","maneiras","modo","modos","suijeto","sujeitos","tópico","tópicos","vez","vezes"],U=["sim","não","ok","amém","etc","euro","euros","adeus","jeitos"],V=["sr","sra","sras","dr","dra","prof"],D=(o(R),o([].concat(c,y,S,M,A)),o([].concat(t,C,P,f,O,b,v)),o([].concat(r,n,l,u,m,p,g,h,z,q,j,x,w,W,k,T,E,I,L,_,N,U,V)),o([].concat(t,C,u,v,h,q,n,c,E,M,k))),F=o([].concat(t,n,c,l,u,m,p,g,f,v,b,h,z,q,j,x,y,w,S,C,P,W,k,T,O,E,M,R,A,I,L,_,N,U,V)),G=["que ","como","e","nem","se","caso","conforme","consoante","porque","pois","segundo ","enquanto","embora","conquanto","quanto menos","quanto mais","quando","mal ","apenas","ora","seja","quer","já","logo","portanto","por isso","pois","рог conseguinte","ou seja ","isto é","quer dizer","a saber","ou melhor","mas","também","sim","porém","contudo","senão","todavia","mas ainda","no entanto","entretanto"],J=[["não apenas","como também"],["não só","bem como"],["não só","como também"],["não só","mas também"],["ora","ora"],["ou","ou"],["quer","quer"]],$=JSON.parse('{"vowels":"aeiouáéíóúàâêôãõü","deviations":{"vowels":[{"fragments":["(gu|qu)[aeoáéíóúêã]"],"countModifier":-1},{"fragments":["[^(g|q|a)][aeiou][aeo]$"],"countModifier":-1},{"fragments":["[aeiouáéíóúàâêôü][aeo]","[aeiou][íúáéóãê]"],"countModifier":1},{"fragments":["aí[ae]"],"countModifier":1}],"words":{"full":[{"word":"delegacia","syllables":5},{"word":"democracia","syllables":5},{"word":"parceria","syllables":4},{"word":"secretaria","syllables":5}],"fragments":[]}}}'),B={recommendedLength:25},H=["ab-rogad","abrogad","abacharelad","abacinad","abafad","abainhad","abaixad","abalad","abalienad","abalroad","abanad","abandad","abandonad","abarbad","abarcad","abarregad","abarrotad","abastardad","abastecid","abatid","abdicad","abduzid","abençoad","aberrad","abert","abespinhad","abestad","abirritad","abismad","abjurad","ablaquead","ablegad","abluíd","abnegad","abobadad","abobad","abocanhad","abolid","abominad","abordad","abortad","abotoad","abraçad","abrandad","abrangid","abrasad","abrasileirad","abreviad","abrigad","abroquelad","abscedid","abscindid","absolutizad","absolvid","absort","absorvid","abstid","abstraíd","abundad","abusad","acabad","acabrunhad","açacalad","academizad","acalentad","acalmad","acamad","acampad","acaramelad","acarditad","acariciad","acarretad","acartad","acastelad","acatad","acautelad","accentuad","acclarad","accolhid","accordad","accreditad","accusad","acedid","aceitad","acelerad","acenad","acendid","acentuad","acerad","acerbad","acercad","acertad","acervad","acessad","acetificad","achad","achanad","achaparrad","achatad","achegad","acicatad","acidificad","acidulad","acinzentad","acionad","acirrad","aclamad","aclarad","aclimad","aclimatad","acobardad","acobertad","açodad","acoimad","açoitad","acolchoad","acolhid","acometid","acomodad","acompanhad","acompridad","aconchegad","acondicionad","aconselhad","acontecid","acoplad","acordad","acorrentad","acortinad","acostad","acostumad","açoutad","acovardad","acreditad","acrescentad","acrescid","acromatizad","activad","actuad","actualizad","açucarad","acudid","açulad","acuminad","acumulad","acusad","adaptad","adelgaçad","adentrad","adequad","aderid","adestrad","adherid","adiad","adiantad","adicionad","adid","aditad","adivinhad","adjetivad","adjudicad","administrad","admirad","admitid","admoestad","adoçad","adocicad","adoecid","adoptad","adorad","adormecid","adornad","adotad","adquirid","adsorvid","adulad","adulterad","aduzid","advertid","advind","advocad","aerad","afadigad","afagad","afamad","afastad","afazendad","afectad","afeiçoad","afeit","aferventad","afetad","afiad","afiançad","afigurad","afilad","afiliad","afinad","afirmad","afivelad","afixad","afligid","aflorad","afluíd","afobad","afogad","afrancesad","afrontad","afrouxad","afugentad","afundad","afundid","agachad","agaload","agarrad","agasalhad","agastad","agendad","agid","agilizad","agitad","aglomerad","aglutinad","agoirad","agoirentad","agoniad","agonizad","agourad","agourentad","agraciad","agradad","agradecid","agrafad","agravad","agredid","agregad","agrilhoad","agrupad","aguad","aguardad","aguçad","aguentad","agüentad","aguilhoad","aguisad","airad","ajeitad","ajoelhad","ajudad","ajuizad","ajuntad","ajustad","alad","alagad","alambicad","alapad","alardead","alargad","alarmad","alastrad","albergad","alçad","alcaguetad","alcalinizad","alcançad","alcatroad","alcoolizad","alcovitad","alcunhad","aleatorizad","alegad","alegorizad","alegrad","aleitad","alentad","alertad","alevantad","alfabetizad","alforriad","algemad","alhead","aliad","alicatead","alicerçad","aliciad","alienad","aligeirad","alijad","alimentad","alinhad","alisad","alistad","aliviad","almejad","almoçad","almoedad","alocad","aloirad","alojad","alongad","alourad","altead","alterad","altercad","alternad","alucinad","aludid","alugad","alumiad","alunad","alunissad","aluviad","alvejad","alvoroçad","alvorotad","amaciad","amad","amadurecid","amainad","amaldiçoad","amalgamad","amamentad","amancebad","amanhad","amanhecid","amansad","amanteigad","amarrad","amassad","amaynad","ameaçad","amead","amealhad","amedorentad","amedrontad","ameigad","amenizad","americanizad","amestrad","amigad","amimad","amnistiad","amofinad","amolad","amolecid","amolentad","amolgad","amontoad","amordaçad","amorenad","amortalhad","amortecid","amortizad","amostrad","amotinad","ampliad","amputad","amuad","amurad","amuralhad","anabolizad","anafad","analisad","anarquizad","anatematizad","ancilosad","ancinhad","ancorad","andad","anestesiad","anexad","angariad","anglicizad","angulad","angustiad","animad","animalizad","aninhad","aniquilad","aniversariad","anodizad","anoitecid","anonimizad","anormalizad","anotad","anquilosad","ansiad","antagonizad","antecipad","antedatad","antepost","antojad","antolhad","antropizad","antropomorfizad","anualizad","anuíd","anulad","anunciad","apagad","apainelad","apaixonad","apalpad","apanhad","apaniguad","aparad","aparafusad","aparatad","aparecid","aparelhad","aparentad","apartad","apassamanad","apatetad","apavorad","apaziguad","apead","apedrejad","apegad","apelad","apelidad","apenad","apensad","apercebid","aperfeiçoad","aperread","apertad","apetecid","apiedad","apimentad","apitad","aplacad","aplainad","aplanad","aplaudid","aplicad","apocopad","apoderad","apodizad","apodrecid","apoiad","apologizad","apontad","apoquentad","aportad","aportuguesad","aposentad","apossad","apostad","apostatad","apostemad","apost","apostrofad","apoteosad","apoteotizad","apoucad","approvad","aprazid","apreciad","apreendid","apregoad","aprendid","apresentad","apressad","aprestad","aprisionad","aprofundad","aprontad","apropriad","aprovad","aproveitad","aprovisionad","aproximad","aprumad","apunhalad","apurad","aquaplanad","aquartelad","aquecid","aquentad","aquiescid","aquietad","arabizad","arad","arbitrad","arborescid","arborizad","arcabuzad","arcad","ardid","aread","arejad","argentad","arguid","argumentad","arianizad","armad","armazenad","aromatizad","arpejad","arpoad","arquead","arquejad","arquitetad","arquivad","arraigad","arrancad","arranhad","arranjad","arrasad","arrastad","arrazoad","arread","arrebanhad","arrebatad","arrebentad","arrebitad","arrecadad","arrecead","arredad","arredondad","arrefecid","arregalad","arreganhad","arreigad","arrematad","arremedad","arremessad","arrendad","arrepanhad","arrestad","arribad","arrimad","arriscad","arrogad","arrojad","arrombad","arrotad","arroubad","arroxead","arruad","arruinad","arrulhad","arrumad","arseniad","arterializad","articulad","artificializad","artilhad","asad","ascendid","asfaltad","asfixiad","asilad","aspirad","assacad","assaltad","assassinad","assead","assediad","assegurad","assemelhad","assenhoread","assentad","assentid","assertad","assestad","assignalad","assimilad","assinad","assinalad","assistid","assoberbad","assobiad","associad","assolad","assomad","assombrad","assoprad","assoread","assossegad","assoviad","assumid","assustad","atacad","atad","atalhad","atanazad","atapetad","atarracad","atarraxad","ataviad","atazanad","atead","atemorizad","atempad","atenazad","atendid","atentad","atenuad","aterrad","aterrissad","aterrorizad","atestad","atiçad","atid","atilad","atinad","atingid","atirad","ativad","atochad","atolad","atomizad","atordoad","atormentad","atracad","atraiçoad","atraíd","atrapalhad","atrasad","atravancad","atravessad","atrelad","atribuíd","atribulad","atritad","atroad","atrofiad","atropelad","attentad","atturad","atuad","atualizad","aturad","auferid","augad","augmentad","augurad","aumentad","aureolad","auscultad","ausentad","autenticad","automatizad","autoproclamad","autorizad","autuad","auxiliad","avaliad","avançad","avariad","avassalad","aventad","aventurad","averbad","avergonhad","averiguad","avermelhad","aviad","avinagrad","avind","avisad","avistad","avivad","aviventad","avoad","azedad","azotad","azulad","azulejad","babad","babujad","bacharelad","bafejad","bailad","bainhad","baixad","bajulad","balad","balançad","balancead","balbuciad","balcanizad","baldad","baldead","balead","balid","balouçad","bambolead","banalizad","bancad","banhad","banquetead","baptizad","baralhad","baratead","barbead","barganhad","barrad","barrid","basead","bastad","bastecid","batalhad","batid","batizad","batucad","bazad","beatificad","bebemorad","bebericad","bebid","beijad","beirad","beliscad","beneficiad","benzid","berrad","besuntad","bicad","bichad","bifurcad","bioacumulad","biotransformad","bisad","bisbilhotad","biscatead","bivacad","blandiciad","blasfemad","blasonad","blefad","blindad","blogad","bloquead","bocejad","boiad","boicotad","bojad","bolad","bombad","bombardead","bombead","borboletead","borbulhad","bordad","borrad","borrifad","botad","botanizad","boxead","bradad","bramid","brandid","branquead","brecad","brigad","brilhad","brincad","brindad","britad","brocad","brochad","bronzead","brotad","bufad","bugad","bulhad","burilad","burlad","burocratizad","buscad","buzinad","cabecead","cabid","cabriolad","caçad","cacarejad","cacetead","cachad","cachead","cacimbad","caçoad","cadastrad","caducad","cafetinad","cagad","caíd","calad","calafetad","calcad","calçad","calcificad","calcinad","calculad","calejad","calhad","calibrad","caluniad","cambad","cambalead","cambiad","caminhad","camuflad","canalizad","cancelad","canonizad","cansad","cantad","cantarolad","capacitad","capad","capinad","capitalizad","capitanead","capitulad","capotad","captad","capturad","caracterizad","caraterizad","carbonizad","cardad","carecid","cariciad","carimbad","carread","carregad","cascatead","casquinad","cassad","castigad","castrad","catad","catalisad","catalizad","catalogad","categorizad","catequizad","cativad","caucionad","causad","cautelad","cauterizad","cavad","cavalgad","cavoucad","cead","cecead","cedid","cegad","ceifad","celebrad","censurad","centelhad","centrad","centralizad","centrifugad","cercad","cerrad","certificad","cerzid","cessad","cevad","chacinad","chacoalhad","chafurdad","chamad","chamuscad","chanfrad","chantagead","chapad","chapead","chatead","checad","chefiad","chegad","cheirad","chiad","chibatad","chibatead","chicanad","chicotead","chifrad","chilread","chimarread","chimarronead","chocad","chocalhad","chorad","choramingad","chouvid","chovid","chufad","chumbad","chupad","chutad","chuviscad","cicatrizad","cifrad","cimentad","cindid","cingid","cintad","cintilad","circulad","circuncidad","circundad","circunscrit","circunstanciad","cisad","cisalhad","cismad","citad","civilizad","clamad","claread","clarificad","classificad","clicad","clonad","clorad","coadjuvad","coad","coagid","coagulad","coalescid","coalhad","coassinad","coaxad","cobert","cobiçad","cobrad","coçad","cocegad","cochichad","cochilad","codificad","coevoluíd","coexistid","cofiad","cogitad","coincidid","coisad","coisificad","coitad","colaborad","colad","colead","colecionad","coletad","colhid","colidid","coligad","coligid","collocad","colmad","colmatad","colocad","colonizad","colorid","comandad","combalid","combatid","combinad","comboiad","começad","comedid","comemorad","comendad","comentad","comercializad","cometid","comichad","comid","cominad","commeçad","comovid","compactad","compadecid","comparad","comparecid","compartilhad","compenetrad","compensad","competid","compilad","complementad","completad","complexad","complicad","comportad","compostad","compost","comprad","compreendid","comprehendid","comprimid","comprometid","comprovad","compulsad","computad","comungad","comunicad","comutad","concatenad","concebid","concedid","concentrad","concernid","concertad","concluíd","concordad","concorrid","concretizad","condecorad","condemnad","condenad","condensad","condicionad","condimentad","conduzid","conectad","confeccionad","conferid","confessad","confiad","configurad","confinad","confirmad","confiscad","conflitad","conformad","confortad","confraternizad","confrontad","confundid","congelad","congestionad","congraçad","congregad","conjecturad","conjeturad","conjugad","conjurad","connectad","conotad","conquistad","consagrad","conseguid","consentid","consertad","conservad","considerad","consignad","consistid","consolad","consolidad","conspirad","conspurcad","constad","constatad","consternad","constituíd","constrangid","construíd","consubstanciad","consultad","consumad","consumid","contactad","contad","contagiad","contaminad","contatad","contemplad","contendid","contentad","contestad","contid","continuad","contornad","contra-atacad","contraatacad","contrabalançad","contrabalancead","contrabandead","contrafeit","contraíd","contrariad","contrastad","contratad","contribuíd","contristad","controlad","conturbad","convalescid","convalidad","convencid","convencionad","conversad","convertid","convidad","convid","convind","convivid","convocad","convulsad","convulsionad","cooperad","coordenad","copiad","copulad","corad","cornead","coroad","correlacionad","correspondid","corricad","corrid","corrigid","corroborad","corrompid","cortad","cortejad","cosid","costead","costumad","costurad","cotad","cotejad","couraçad","cozid","cozinhad","craquead","cravad","cravejad","credenciad","creditad","cremad","crepitad","crescid","crestad","criad","cricrilad","crid","criminalizad","criptografad","crispad","cristalizad","cristianizad","criticad","crochetad","cromad","cronologizad","cronometrad","crucificad","cruzad","cubad","cubicad","cuidad","culminad","culpad","cultivad","cultuad","cumprid","cumprimentad","cumulad","curad","cursad","curtid","curto-circuitad","curtocircuitad","curvad","curvetead","cuspid","custad","custead","custodiad","customizad","cutucad","dadivad","dad","damasquinad","damnad","dançad","danificad","dardejad","datad","datilografad","deambulad","debatid","debicad","debilitad","debitad","debochad","debruçad","debulhad","debutad","debuxad","decaíd","decalcad","decantad","decapitad","dececionad","decepad","decepcionad","decidid","decifrad","declamad","declarad","declinad","decolad","decompost","decorad","decorrid","decotad","decrescid","decretad","decuplicad","dedicad","dedilhad","dedurad","deduzid","defecad","defendid","defenestrad","deferid","definhad","definid","deflorad","deformad","defraudad","defumad","deglaçad","deglacead","deglutid","degolad","degradad","degustad","deificad","deitad","deixad","delatad","delegad","deliberad","deliciad","delid","delimitad","delinead","delinquid","delongad","demandad","demarcad","demitid","demittid","democratizad","demolid","demonstrad","demorad","denigrid","denominad","denotad","dentad","dentead","denunciad","deparad","depauperad","depenad","dependid","depilad","deportad","depositad","depost","deprecad","depreciad","depredad","deprimid","depurad","deputad","derivad","derrabad","derramad","derrapad","derretid","derribad","derrocad","derrogad","derrotad","derrubad","derruíd","desabad","desabafad","desabalroad","desabilitad","desabituad","desabotoad","desabraçad","desabrochad","desacelerad","desacompanhad","desaconselhad","desacreditad","desactivad","desafiad","desafivelad","desafogad","desagradad","desagradecid","desagravad","desagregad","desaguisad","desajustad","desalentad","desalojad","desalvorad","desamarrad","desamparad","desancorad","desandad","desanimad","desaparecid","desapegad","desapontad","desaprovad","desarmad","desarraigad","desarranjad","desarrazoad","desarrumad","desarticulad","desarvorad","desasad","desatad","desatarraxad","desativad","desbastad","desbloquead","desbotad","descabelad","descaíd","descalçad","descamad","descambad","descansad","descarbonizad","descarnad","descaroçad","descarregad","descarrilad","descartad","descascad","descendid","descercad","descid","descobert","descolad","descolonizad","descolorid","descomplicad","descompost","desconcertad","desconfiad","desconfortad","descongelad","desconsagrad","desconseguid","desconsiderad","desconsolad","descontad","descontentad","desconversad","desconvidad","descoroçoad","descortinad","descrit","descubert","descuidad","desculpad","desdemocratizad","desdenhad","desdobrad","desejad","desemaranhad","desembalad","desembarcad","desembargad","desembestad","desempenhad","desencadead","desencaminhad","desencantad","desencontrad","desencorajad","desencriptad","desenganad","desenhad","desenrolad","desenterrad","desentranhad","desenvolvid","desequilibrad","deserdad","desertad","desesperad","desesperançad","desestabilizad","deseuropeizad","desfalcad","desfalecid","desfarçad","desfechad","desfeit","desferid","desfiad","desfigurad","desfivelad","desflorestad","desfocad","desfragmentad","desfraldad","desfrutad","desgastad","desgostad","desidratad","designad","desiludid","desimpedid","desinfetad","desinflad","desinstalad","desintegrad","desintoxicad","desistid","desjejuad","deslastrad","deslavad","desleixad","desligad","deslizad","deslocad","deslocalizad","deslogad","deslumbrad","deslustrad","desmagnetizad","desmaiad","desmamad","desmanchad","desmantelad","desmarcad","desmatad","desmembrad","desmentid","desmerecid","desmistificad","desmitificad","desmobilizad","desmontad","desmoralizad","desmoronad","desmotivad","desnivelad","desnortead","desobrigad","desobstruíd","desocupad","desolad","desonerad","desonrad","desordenad","desorganizad","desorientad","desossad","desovad","desoxidad","desoxigenad","despachad","despadronizad","despedaçad","despedid","despejad","despelad","despencad","despendid","desperdiçad","despersuadid","despertad","despid","despojad","despolarizad","despontad","desposad","despregad","desprendid","desprezad","desproporcionad","desprotegid","desprovid","desqualificad","desregulad","desrespeitad","dessalinizad","desseguid","dessulfurad","dessulfurizad","destacad","destelhad","desterrad","destilad","destillad","destinad","destituíd","destoad","destrancad","destratad","destrinçad","destrinchad","destroçad","destruíd","destrunfad","desumanizad","desunid","desvairad","desvalorizad","desvelad","desvendad","desviad","desvinculad","desvirginad","desvirtuad","detalhad","detectad","deteriorad","determinad","detestad","detetad","detid","detonad","devanead","devassad","devastad","devid","devolvid","devorad","devotad","deyxad","diagnosticad","dialogad","difamad","diferenciad","diferid","differid","dificultad","difratad","difundid","digerid","digitad","digitalizad","dignad","dilacerad","dilapidad","dilatad","diluíd","diminuíd","dinamitad","dinamizad","diplomad","direccionad","direcionad","dirigid","dirimid","discad","discernid","disciplinad","discordad","discorrid","discretead","discriminad","discutid","disfarçad","disparad","dispensad","dispersad","disponibilizad","dispost","disputad","dissecad","disseminad","dissentid","dissimulad","dissipad","dissolvid","dissuadid","distad","distanciad","distinguid","distorcid","distraíd","distratad","distribuíd","ditad","dit","divagad","diversificad","divertid","dividid","divisad","divulgad","dizimad","doad","dobrad","doíd","domad","domesticad","domiciliad","dominad","dopad","dormid","dormitad","dosad","dotad","doutrinad","dragad","dramatizad","drenad","driblad","drogad","dublad","duchad","duelad","duplicad","durad","duvidad","eclipsad","ecoad","economizad","edificad","editad","educad","efectivad","efectuad","efetivad","efetuad","eivad","ejaculad","ejetad","elaborad","electrificad","electrocutad","elegid","eleit","elencad","eletrificad","eletrocutad","eletrolisad","elevad","eliminad","elogiad","elucidad","elucubrad","eludid","emaciad","emagrecid","emanad","emancipad","emaranhad","emasculad","embaíd","embainhad","embalad","embalsamad","embaraçad","embaralhad","embarcad","embasad","embebedad","embebid","embeiçad","embelezad","embirrad","embolad","embonecad","emboscad","embotad","embotelhad","embrenhad","embriagad","embromad","embrulhad","embuçad","emburrad","emburrecid","embutid","emendad","ementad","emergid","emigrad","emitid","emmagrecid","emmoldurad","emocionad","emoldurad","empachad","empacotad","empalad","empalhad","empalidecid","empanad","empapelad","emparedad","empatad","empeçonhad","empedernid","empenhad","emperrad","empestead","empilhad","empinad","empiorad","empoad","empobrecid","empoderad","empoleirad","empreendid","empregad","empregu","emprehendid","empreitad","emprenhad","emprestad","empunhad","empurrad","emudecid","emulad","emurchecid","enaltecid","enamorad","encabulad","encaçapad","encadead","encadernad","encaixad","encaixilhad","encaixotad","encalhad","encaminhad","encampad","encanad","encantad","encapad","encapsulad","encapuzad","encaracolad","encarad","encarecid","encarnad","encarniçad","encaroçad","encarquilhad","encarregad","encarregu","encarrilhad","encasquetad","encayxad","encefalizad","encenad","encerad","encerrad","encestad","encetad","encharcad","enchid","enclausurad","encobert","encoleirad","encolerizad","encolhid","encomendad","encompridad","encontrad","encorajad","encordoad","encorpad","encortinad","encostad","encravad","encrespad","encriptad","encurtad","endereçad","endireitad","endividad","endoidecid","endossad","endoutrinad","endurecid","enegrecid","energizad","enervad","enevoad","enfardad","enfardelad","enfarruscad","enfatizad","enfatuad","enfeitad","enfeitiçad","enferrujad","enfiad","enfileirad","enforcad","enfraquecid","enfrentad","enfronhad","enfumaçad","enfurecid","engabelad","engaiolad","engajad","engambelad","enganad","enganchad","engarrafad","engasgad","engastad","engatad","engatinhad","engendrad","engessad","englobad","engodad","engolid","engomad","engordad","engordurad","engrandecid","engravidad","engraxad","engrenad","engrossad","enguiçad","enlaçad","enlatad","enlouquecid","enmendad","enquadrad","enraivecid","enraizad","enramalhetad","enredad","enriçad","enriquecid","enrocad","enrolad","enrubescid","enrugad","ensaboad","ensacad","ensaiad","ensanguentad","ensangüentad","ensejad","ensinad","ensolarad","ensombrad","ensopad","ensurdecid","entabuad","entabulad","entalhad","entardecid","entediad","entelhad","entendid","enternecid","enterrad","entintad","entitulad","entoad","entornad","entorpecid","entortad","entrad","entrançad","entranhad","entravad","entreabert","entrecortad","entregad","entregu","entrelaçad","entrelinhad","entremead","entreolhad","entretid","entrevad","entrevistad","entrevist","entrincheirad","entristecid","entronad","entronizad","entulhad","entupid","entusiasmad","enumerad","enunciad","envelhecid","envenenad","envergad","envergonhad","envernizad","enviad","enviesad","enviuvad","envolvid","enxadad","enxamead","enxergad","enxertad","enxotad","enxugad","enxut","epitomizad","equilibrad","equipad","equiparad","equivocad","erguid","erigid","erodid","erotizad","erradicad","eructad","esbarrad","esbatid","esboçad","esbodegad","esbofetead","esbombardead","esbracejad","esbrasead","esbulhad","esburacad","escachoad","escalad","escaldad","escalfad","escalonad","escalpad","escalpelad","escamad","escançad","escancarad","escancead","escandid","escanead","escapad","escapulid","escarafunchad","escaramuçad","escarnecid","escarnid","escarrad","escassead","escavad","esclarecid","escoad","escolarizad","escolhid","escoltad","escondid","escorad","escorregad","escorrid","escovad","escravizad","escrit","escriturad","escrutinizad","escuitad","esculachad","esculpid","escurecid","escusad","escutad","esfalfad","esfaquead","esfarelad","esfarrapad","esfolad","esfomead","esforçad","esfregad","esfriad","esfuziad","esganad","esgarçad","esgotad","esgravatad","esgrimid","esguichad","esmaecid","esmagad","esmaltad","esmerad","esmigalhad","esmiuçad","esmorecid","esmurrad","espaçad","espacead","espairecid","espalhad","espalmad","espancad","espantad","esparramad","especializad","especificad","especulad","espedid","espelhad","esperad","esperançad","espernead","espezinhad","espiad","espichad","espigad","espinafrad","espionad","espiritualizad","espirrad","espocad","espojad","esporrad","esposad","espoucad","espreitad","espremid","espumad","esquadrinhad","esquecid","esquentad","esquiad","esquilad","esquinad","esquivad","estabelecid","estabilizad","estacad","estacionad","estad","estafad","estagiad","estagnad","estalad","estampad","estandardizad","estanhad","estarrecid","estatizad","estatuíd","estendid","estenografad","estenographad","estereotipad","esterilizad","esticad","estigmatizad","estilhaçad","estilizad","estimad","estimulad","estiolad","estipulad","estirad","estivad","estocad","estoirad","estolad","estontead","estorvad","estourad","estraçalhad","estragad","estralad","estrangulad","estranhad","estratificad","estread","estreiad","estreitad","estrelad","estremecid","estressad","estridulad","estripad","estrondead","estropead","estropiad","estrugid","estrupidad","estruturad","estudad","estufad","estupeficad","estupidificad","estuprad","esvaziad","esverdead","etiquetad","europeizad","evacuad","evadid","evangelizad","evaporad","eventrad","evidenciad","evitad","evocad","evolad","evoluíd","evolvid","exacerbad","exagerad","exalad","exaltad","examinad","exasperad","exaurid","excedid","excelid","excellid","excepcionad","exceptuad","excetuad","excitad","exclamad","excluíd","excomungad","excretad","excutid","executad","exercid","exercitad","exhalad","exhortad","exibid","exigid","exilad","eximid","existid","exonerad","exorcizad","exortad","expandid","expatriad","expectorad","expedid","experienciad","experimentad","expirad","explanad","explicad","explorad","exportad","expost","expressad","exprimid","expropriad","expugnad","expulsad","expurgad","exsecutad","extasiad","extendid","extenuad","exteriorizad","exterminad","externalizad","extinguid","extint","extirpad","extorquid","extractad","extraditad","extraíd","extratad","extraviad","exultad","exumad","fabricad","facetad","facilitad","facturad","facultad","fadigad","fagocitad","fagulhad","falad","falecid","falhad","fallad","falsead","falsificad","faltad","familiarizad","fantasiad","fardad","farejad","farfalhad","fartad","fascinad","fatiad","fatigad","fatorad","faturad","faxinad","fechad","fech","fecundad","fedid","feit","felicitad","fenad","fendid","fenecid","ferid","fermentad","ferrad","fertilizad","fervid","fervilhad","festad","festejad","fiad","ficad","figurad","filad","filiad","filmad","filosofad","filtrad","finad","finalizad","financiad","fincad","findad","find","fingid","finlandizad","firmad","fiscalizad","fisgad","fissionad","fissurad","fitad","fixad","flabelad","flagelad","flanquead","flexionad","flipad","floodad","floread","florescid","fluíd","fluorad","fluoretad","flutuad","focalizad","fodid","fofocad","folgad","folhead","fomentad","foragid","forcad","forçad","forjad","formad","formatad","formigad","formulad","fornecid","fornicad","forrad","fortalecid","fortificad","fosfatad","fosforescid","fosforilad","fossad","fotocopiad","fotografad","fraccionad","fracionad","fragmentad","franjad","franquead","franzid","fraquead","fraquejad","frasead","fraternizad","fraturad","fraudad","fread","freiad","frequentad","freqüentad","fresquead","friccionad","frisad","fritad","frit","fruíd","frustrad","fuçad","fugid","fumad","fumegad","fumigad","funccionad","funcionad","fundad","fundamentad","fundid","fungad","furad","furtad","fusionad","fustigad","futricad","fuzilad","gabad","gadanhad","gaguejad","galgad","galopad","galopead","galvanizad","gamad","ganhad","ganh","ganid","ganzad","garantid","gargalhad","gargarejad","gaseificad","gastad","gast","gatunad","gelad","gemid","generalizad","genotipad","gerad","gerenciad","gerid","germinad","gestad","gesticulad","gestualizad","ginasticad","girad","globalizad","gloriad","glorificad","glosad","golead","golpead","gomitad","googlad","gorad","gorjead","gostad","gotejad","governad","gozad","gracejad","gracitad","gradad","graduad","grafitad","gramad","grampead","granizad","grasnad","grasnid","grassitad","gratificad","gratinad","gravad","gravitad","grelhad","gripad","gritad","grudad","grunhid","guardad","guarnecid","guerread","guglad","guiad","guinchad","guindad","guisad","habilitad","habitad","habituad","hackead","halogenad","harmonizad","hastead","havid","helenizad","herdad","hesitad","hibernad","hibridizad","hidratad","hidrogenad","hipertrofiad","hipnotizad","hipotecad","homenagead","homogeneizad","homologad","honrad","horrorizad","hortad","hospedad","hospitalizad","humedecid","humidecid","humilhad","içad","idead","idealizad","identificad","ideologizad","idolatrad","ignorad","igualad","ilegalizad","ilhad","ilibad","ilidid","iludid","iluminad","ilustrad","imaginad","imanad","imantad","imbuíd","imigrad","imiscuíd","imitad","imobilizad","imolad","impactad","impedid","impelid","imperad","impetrad","implantad","implementad","implicad","implorad","importad","importunad","impossibilitad","impost","imprecad","impregnad","impressionad","impress","imprimid","improvisad","impulsionad","imputad","imunizad","inactivad","inalad","inaugurad","incapacitad","incendiad","incensad","incentivad","inchad","incidid","incinerad","incisad","incitad","inclinad","incluíd","inclus","incomodad","incorporad","incorrid","incriminad","incrustad","incubad","inculcad","inculpad","incumbid","indagad","indeferid","indefinid","indemnizad","indenizad","independid","indexad","indicad","indiciad","indispost","indultad","industrializad","induzid","inebriad","inerid","infectad","inferid","infestad","infiltrad","infirmad","inflad","inflamad","influenciad","influíd","informad","infringid","ingerid","inhibid","inibid","iniciad","inicializad","injetad","injungid","injuriad","injustiçad","inocentad","inovad","inquietad","inquirid","inscrit","inserid","insinuad","insistid","inspecionad","inspirad","instalad","instanciad","instigad","instituíd","instruíd","insultad","integrad","inteirad","intencionad","intensificad","interagid","intercalad","intercambiad","intercedid","interceptad","interditad","interessad","interferid","interligad","intermediad","internacionalizad","internad","interpelad","interpolad","interpost","interpretad","interrogad","interrompid","intersectad","intervind","intimad","intimidad","intitulad","intoxicad","intricad","intrigad","intrincad","introduzid","intrometid","inundad","inutilizad","invadid","invalidad","invectivad","invejad","inventad","invernad","invertid","investid","investigad","invocad","iodad","irad","irradiad","irrigad","irritad","irrogad","irrompid","iscad","isolad","iterad","jactad","janelad","jantad","japonizad","jardinad","jazid","jejuad","joeirad","jogad","jorrad","jubilad","judiad","julgad","jungid","juntad","jurad","juramentad","justapost","justificad","labutad","laçad","lacrad","lacrimejad","ladead","ladrilhad","lagartead","lajead","lambid","lamentad","laminad","lamuriad","lançad","lancead","lanchad","lapidad","largad","lascad","lastad","lastimad","latejad","latid","latinad","latinizad","lavad","lavrad","lẽbrad","legad","legalizad","legendad","legislad","legitimad","leiload","lembrad","lesad","levad","levantad","levitad","liberad","libertad","licitad","lidad","liderad","lid","ligad","limad","limitad","limpad","limp","linchad","lingotad","liquefeit","liquidad","lisonjad","lisonjead","listad","listrad","litigad","livrad","lixiviad","lobrigad","locad","localizad","locupletad","lograd","lotad","lotead","louvad","lubrificad","lucrad","luctad","ludibriad","ludificad","lufad","luitad","lustrad","lutad","luzid","macadamizad","maçad","macaquead","macerad","machucad","maculad","mãdad","madrugad","madurad","magnetizad","magnificad","magoad","maiusculad","maiusculizad","malograd","maltad","maltratad","mamad","manad","mancad","manchad","mandad","manejad","manifestad","manipulad","manjad","mantid","manufaturad","manusead","maquiad","maquinad","marcad","marchad","marejad","marinad","marquetead","marretad","martelad","martirizad","mascad","mascarad","mascatead","massacrad","massagead","mastigad","masturbad","matad","matriculad","maturad","maximizad","maxixad","mead","mealhad","mecanizad","medid","meditad","medrad","melad","melhorad","memorizad","mencionad","mendigad","menead","menosprezad","menstruad","mentid","mercad","merecid","mergulhad","mesclad","mesmerizad","metabolizad","metid","metilad","metralhad","mexericad","mexid","miad","micad","migrad","mijad","milhad","militad","mimad","mimetizad","mimid","minad","minerad","mineralizad","minimizad","ministrad","minuciad","minudenciad","mirad","mirrad","missad","mistificad","misturad","mitigad","mixad","mixturad","mobilizad","modelad","moderad","modificad","modulad","mofad","moíd","moldad","molestad","molhad","monitorad","monitorizad","monologad","monopolizad","montad","morad","mordid","mordiscad","morgad","morrid","mortificad","mort","moscad","moshad","mosquead","mossegad","mostrad","motejad","motivad","mourejad","movid","movimentad","mudad","mugid","multad","multiplicad","mumificad","munid","murad","murchad","murmurad","mutilad","nacionalizad","nadad","nad","narrad","nasalad","nascid","naufragad","navegad","necessitad","negad","negligenciad","negociad","neutralizad","nevad","nhanhad","niponizad","niquelad","nitrificad","nivelad","nobilitad","nocautead","nomead","normalizad","notad","noticiad","notificad","nublad","numerad","numerizad","nutrid","obcecad","obedecid","objetad","objetivad","obnubilad","obrad","obrigad","obscurecid","observad","obstinad","obstruíd","obtemperad","obtid","obturad","obviad","ocasionad","occorrid","ocorrid","ocultad","ocupad","odiad","odorizad","ofegad","ofendid","oferecid","oficializad","ofuscad","oitavad","olead","olhad","olvidad","omitid","ondead","ondulad","onerad","operad","opinad","opiniad","opost","opprimid","oprimid","optad","optimizad","orad","orbitad","orçad","ordenad","ordenhad","organizad","orgulhad","orientad","orientalizad","originad","orlad","ornad","ornamentad","orquestrad","oscilad","ostentad","ostracizad","otimizad","ouriçad","ousad","outorgad","ouvid","ouvist","ovulad","oxidad","oxigenad","ozonizad","pacificad","pactad","pactuad","padecid","padronizad","pagad","paginad","pag","pairad","pajead","palead","palestrad","palpad","palpitad","palrad","panad","papad","papaguead","paparicad","papead","parabenizad","parad","parafrasead","parafusad","paralisad","paralizad","parasitad","parcelad","parecid","parid","parlad","parodiad","participad","partid","partilhad","pasmad","passad","passarinhad","passead","pastad","pasteurizad","pastorad","pastoread","patentead","patinad","patrocinad","patrulhad","pausad","pautad","pavimentad","pechinchad","pedalad","pedid","pegad","peg","pêg","peidad","pejad","pelad","pelead","pelejad","penad","penalizad","pendid","pendurad","peneirad","penetrad","penhorad","pensad","pensionad","pentead","perambulad","percalçad","percebid","percorrid","percutid","perdid","perdoad","perdurad","perecid","peregrinad","perfeit","perfilad","perfilhad","perfolhead","perfumad","perfurad","perguntad","perigad","perlavad","permanecid","permead","permitid","permutad","pernoitad","pernoutad","perpassad","perpetrad","perpetuad","perseguid","perseverad","persignad","persistid","personalizad","personificad","perspectivad","perspetivad","persuadid","pertencid","perturbad","pervertid","pescad","pesquisad","pestanejad","petiscad","petrificad","photographad","piad","picad","pichad","picotad","pifad","pigarread","pigmentad","pilad","pilhad","pinad","pincelad","pingad","pintad","pintalgad","piorad","pipetad","pirad","piratead","pisad","piscad","pisotead","pixelizad","plagiad","plainad","planad","planead","planejad","plangid","plantad","plasmad","plastificad","platinad","plissad","podad","podid","polid","polimerizad","polinizad","politizad","poluíd","polvilhad","ponderad","ponhad","pontuad","popularizad","porfiad","pormenorizad","portad","posicionad","pospost","possibilitad","possuíd","postad","post","postulad","potencializad","poupad","pousad","povoad","practicad","praguejad","prantead","praticad","pré-datad","prédatad","precedid","preceituad","precipitad","precisad","preconizad","predad","predestinad","predicad","predominad","preenchid","prefabricad","prefaciad","preferid","pregad","prejudicad","prelibad","premeditad","premiad","prendad","prendid","prensad","preoccupad","preocupad","preparad","prescrevid","prescrit","presenciad","presentead","preservad","presidid","pres","pressagiad","pressentid","pressionad","pressupost","pressurizad","prestad","presumid","pretendid","preterid","prevalecid","prevaricad","prevenid","previst","prezad","principiad","principia","printad","priorizad","privad","privatizad","privilegiad","problematizad","procedid","processad","proclamad","procrastinad","procriad","procurad","produzid","profanad","proferid","profetizad","prognosticad","programad","progredid","prohibid","proibid","projetad","proliferad","prolongad","prometid","promovid","promulgad","pronunciad","propagad","proporcionad","propost","propulsad","prorrogad","proscrit","proselitad","proselitizad","prosperad","prosseguid","prostrad","protagonizad","protegid","protestad","provad","providenciad","provid","provind","provisionad","provocad","pruíd","prurid","publicad","publicitad","pugnad","puíd","pulad","pulicad","pulinhad","pulsad","pululad","pulverizad","punguead","punid","purgad","purificad","putrefeit","puxad","quadrad","quadriculad","quadruplicad","qualificad","quarentenad","quebrad","quebrantad","quedad","queimad","queixad","quelatad","querelad","querid","questionad","quicad","quilhad","quintuplicad","quitad","rachad","raciocinad","racionalizad","ralad","ralhad","ramificad","randomizad","rangad","rangid","ranquead","rapad","raptad","rarefeit","rascad","rascunhad","rasgad","raspad","rastejad","rastelad","rastread","rastrejad","ratead","ratificad","reabilitad","reafirmad","reagid","reagrupad","realçad","realizad","realojad","reanalisad","reanimad","reaproveitad","reaquecid","rearranjad","rearrumad","reassistid","reavivad","rebaixad","rebatid","rebatizad","rebelad","rebentad","rebobinad","rebocad","rebolad","rebrilhad","rebuçad","rebuscad","recaíd","recalcad","recalcitrad","recalculad","recapitulad","recarregad","recead","recebid","receitad","rechaçad","reciclad","recitad","reclamad","reclinad","recobert","recolhid","recomeçad","recomendad","recompensad","reconciliad","reconfirmad","reconfortad","reconhecid","reconquistad","reconsiderad","reconstituíd","recontad","reconvocad","recopiad","recordad","recorrid","recortad","recostad","recozid","recread","recriad","recristalizad","recrudescid","recrutad","rectificad","recuad","recuperad","recurvad","recusad","redatad","redefinid","redescobert","redescrit","redigid","redigitad","redimid","redirecionad","redobrad","reduzid","reelegid","reembolsad","reencarnad","reenchid","reencontrad","reenviad","reescrit","reestruturad","refeit","referenciad","referid","refinad","refletid","reflorestad","refogad","reforçad","reformad","reformulad","refratad","refread","refrescad","refrigerad","refugiad","refutad","regad","regatead","regenerad","regid","registad","registrad","regozijad","regressad","regulad","regulamentad","regularizad","regurgitad","reinad","reiniciad","reinstalad","reinventad","reiterad","reivindicad","rejeitad","rejeytad","rejogad","rejuvenescid","relacionad","relatad","relembrad","relid","relinchad","relutad","reluzid","relvad","remad","remanescid","rematad","remedad","remediad","remendad","remetid","remexid","remid","remodelad","remontad","removid","remunerad","renascid","rendad","renderizad","rendid","renegad","renhid","renomead","renovad","renunciad","reocorrid","reordenad","reorganizad","reoxidad","reparad","repartid","repassad","repelid","repensad","repetid","repisad","replantad","replicad","reportad","repost","repousad","repreendid","representad","reprimendad","reprimid","reprisad","reprocessad","reprochad","reproduzid","reprovad","repugnad","reputad","requentad","requerid","requestad","requisitad","rescindid","resenhad","reservad","resfolegad","resfriad","resgatad","resguardad","residid","resignad","resistid","resmungad","resolvid","respeitad","respigad","respirad","resplandecid","resplandescid","resplendecid","respondid","responsabilizad","ressaltad","ressalvad","ressarcid","ressecad","ressentid","ressoad","ressonad","ressurgid","ressuscitad","restabelecid","restad","restaurad","restituíd","restringid","resultad","resumid","resvalad","retalhad","retaliad","retardad","retes","reticulad","retid","retificad","retinid","retirad","retocad","retomad","retornad","retorquid","retraíd","retratad","retribuíd","retrocedid","retrucad","reunid","reutilizad","revelad","reverberad","reverenciad","revertid","revestid","revigorad","revisad","revistad","revist","revitalizad","revogad","revoltad","revolvid","rezad","ribombad","riçad","ricochetead","ridicularizad","rilhad","rimad","ripad","riscad","ritmad","rivalizad","rocad","roçad","rociad","rodad","rodead","rogad","roíd","rolad","romanizad","rompid","roncad","ronronad","rosnad","rotacionad","rotad","rotead","rot","rotulad","roubad","ruborizad","rubricad","rufad","rugid","rumad","rumiad","ruminad","russificad","sabid","saboread","sabotad","sacad","sacanead","saciad","sacolejad","sacralizad","sacrificad","sacudid","sagrad","saíd","salgad","salientad","salivad","salmourad","salpicad","saltad","saltead","saltitad","saluçad","salvad","salvaguardad","salv","sanad","sancionad","sangrad","santificad","sapatead","sapead","sapecad","saquead","sarad","saturad","saudad","scintilad","secad","secretad","secundad","sedad","sedimentad","seduzid","segad","segmentad","segredad","seguid","segurad","selad","seleccionad","selecionad","selectad","seletad","semead","semelhad","semicerrad","sensualizad","sentad","sentenciad","sentid","separad","sepultad","sequenciad","sequestrad","seqüestrad","serenad","seriad","serpentead","serrad","serrilhad","servid","sibilad","sid","significad","silenciad","silvad","simbolizad","simplificad","simulad","sinalizad","sincopad","sincretizad","sincronizad","singrad","sinterizad","sintetizad","sintonizad","sistematizad","sitiad","situad","soad","sobejad","sobraçad","sobrad","sobre-estimad","sobreestimad","sobrecarregad","sobrepassad","sobrepost","sobrepujad","sobrerrepresentad","sobresaíd","sobressaíd","sobressaltad","sobrestimad","sobrevind","sobrevivid","socad","sociabilizad","socializad","soçobrad","socorrid","sodomizad","sofismad","sofisticad","sofrid","solad","solapad","soldad","soletrad","solicitad","solidificad","soliloquiad","soltad","solt","solubilizad","soluçad","solucionad","somad","sombread","sonambulad","sondad","sonhad","soprad","sorrid","sortead","sortid","sorvid","soterrad","sovad","stalkead","standardizad","stressad","suad","suavizad","subentendid","subestimad","subid","subjugad","sublimad","sublinhad","submergid","subordinad","subornad","subscrit","subsidiad","subsistid","substanciad","substantivad","substituíd","subtraíd","subvencionad","subvertid","sucedid","sucumbid","sufixad","sufocad","sugad","sugerid","suicidad","sujad","sujeitad","sulcad","sumariad","sumid","sumulad","superad","superestimad","supervisad","supervisionad","suplantad","suplementad","suplicad","suportad","supost","supplantad","supprimid","suprid","suprimid","supurad","surdid","surfad","surgid","surpreendid","surrad","surripiad","surrupiad","surtad","suscitad","suspeitad","suspendid","suspirad","sussurrad","sustad","sustentad","sustid","systematizad","tabulad","tacad","tachad","tactead","talhad","tamborilad","tampad","tamponad","tangad","tangid","tapad","tardad","tarraxad","tascad","tatuad","taxad","taxiad","tchovid","tecid","teclad","teimad","telad","telefonad","telegrafad","teleportad","teletransportad","televisad","temid","temperad","tencionad","tendid","tensionad","tentad","teorizad","terceirizad","tergiversad","terminad","terrad","testad","testemunhad","tid","tilintad","timbrad","tingid","tinid","tintad","tipad","tipificad","tirad","tiranizad","tiritad","tirotead","titilad","titulad","tocad","tocaiad","tolerad","tomad","tombad","topad","torcid","tormentad","tornad","tornead","torpedead","torrad","torturad","tosad","tosquiad","tostad","totalizad","touread","trabalhad","traçad","tracejad","tractad","traduzid","traficad","trahid","traíd","trajad","tramad","trancad","trançad","tranquilizad","transad","transbordad","transcorrid","transcrit","transfectad","transferid","transfigurad","transformad","transid","transitad","transladad","transliterad","transmitid","transmudad","transmutad","transpassad","transpirad","transplantad","transportad","transpost","transtornad","transubstanciad","transvasad","trapacead","trasladad","traspassad","tratad","trautead","travad","travestid","trazid","trefilad","treinad","tremeluzid","tremid","tremulad","trenad","trepad","tresandad","trespassad","triangulad","tributad","tricotad","trinad","trincad","trinchad","tripad","tripulad","triscad","triturad","triunfad","trocad","troçad","trombetead","tropeçad","trotad","trovad","trovejad","trovoad","trucidad","truncad","trunfad","tumefeit","tumultuad","tunad","turbad","turvad","tutead","tutelad","tutorad","ufanad","uivad","ultimad","ultrajad","ultrapassad","ululad","unctad","ungid","unhad","unificad","uniformizad","untad","urbanizad","urdid","urgid","urinad","usad","usufruíd","usurpad","utilizad","vacad","vacilad","vadiad","vagabundead","vagad","vaguead","vaiad","validad","valid","valorad","valorizad","valsad","vampirizad","vandalizad","vaporizad","varad","varead","variad","varrid","vasculhad","vastad","vaticinad","vazad","vaziad","vedad","vegetad","velad","velejad","vencid","vendad","vendid","venerad","ventad","ventilad","veranead","verbalizad","veread","vergad","vergastad","verificad","vermelhad","vermelhead","vermelhejad","versad","versejad","versificad","vertid","vesguead","vestid","vetad","vexad","viajad","vibrad","vicejad","vidrad","vigiad","vigorad","vilificad","vilipendiad","vincad","vinculad","vindimad","vind","vingad","vinificad","violad","violentad","virad","visad","visitad","vislumbrad","vist","visualizad","vitimad","vitoriad","vitrificad","vivad","vivenciad","vivid","voad","vocalizad","vociferad","volatilizad","voltad","voltead","volvid","vomitad","vosead","votad","vulcanizad","vulgarizad","vulnerad","wikificad","xeretad","xerocad","xingad","zanzad","zapead","zarpad","zelad","zerad","zicad","ziguezaguead","zipad","zoad","zoiad","zombad","zonad","zumbid","zumbificad","zunid"],{getWords:K}=e.languageProcessing;const{directPrecedenceException:Q,values:X}=e.languageProcessing,{Clause:Y}=X,Z=["sou","és","é","somos","sois","são","era","eras","era","éramos","éreis","eram","serei","serás","será","seremos","sereis","serão","sido","foste","foi","fomos","fostes","fora","foras","fôramos","fôreis","foram","seja","sejas","seja","sejamos","sejais","sejam","fui","fosse","fosses","fosse","fôssemos","fôsseis","fossem","for","fores","for","formos","fordes","forem","seria","serias","seria","seríamos","seríeis","seriam","ser","seres","ser","sermos","serdes","serem"],{createRegexFromArray:aa,getClauses:da}=e.languageProcessing,ea={Clause:class extends Y{constructor(a,d){super(a,d),this._participles=function(a){return K(a).filter((a=>function(a){return["a","o","as","os"].some((d=>{if(a.length>3&&a.endsWith(d)){const e=a.slice(0,-d.length);return H.includes(e)}}))}(a)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const a=this.getClauseText(),d=this.getParticiples().filter((d=>!Q(a,d,D)));this.setPassive(d.length>0)}},stopwords:G,auxiliaries:Z,regexes:{auxiliaryRegex:aa(Z),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi,followingAuxiliaryExceptionRegex:aa(["o","a","os","as","um","ums","uma","umas"])}};function ia(a){return da(a,ea)}const ra=window.lodash,{findMatchingEndingInArray:sa}=e.languageProcessing,oa=function(a,d){return d.includes(a)},ta=function(a,d,e){for(let i=0;ifunction(a,d){a.toLowerCase();const e=d.externalStemmer.vowels,i=d.externalStemmer.nasalVowels.originals,r=d.externalStemmer.nasalVowels.replacements,s=(a=ta(a,i,r)).length;if(s<2)return a;let o=s,t=s,n=s;for(let d=0;d3&&(n=oa(a[1],e)?oa(a[0],e)&&oa(a[1],e)?function(a,d,e){const i=a.length;for(let r=e;r{"use strict";var e={d:(t,n)=>{for(var s in n)e.o(n,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>b});const n=window.yoast.analysis,s=["اگر","اما","باری","پس","تا","چون","  چه","خواه"," را","زیرا","که","لیکن","نه","نیز","و","ولی","هم"," یا"],r=s.concat(["ازآنکه","ازآنجا که","از این رو","از این گذشته","از بس","از بس که","از بهر آ‌نکه","اکنون که","اگرچه","اگر چنانچه","اگرچنانکه","الا اینکه","آنجا که","آنگاه که","با این حال","بااینکه","بالعکس","با وجود این","با وجود اینکه","بس که","بلکه","بنابراین","به جز","به شرط آ‌نکه","به طوری که","به هر حال","بی آنکه","تااینکه","تا آنکه","تا جایی که","چنانچه","چنانکه","چندان که","چون که","در حالیکه","در صورتی که","در نتیجه","زیرا که","سپس","علیرغم اینکه","مگر این که","وانگهی","وقتی که","وگرنه","ولو","هر چند","هر گاه که","هر وقت که","همان طور که","همان که","همچنین","همین که"]),o=function(e){let t=e;return e.forEach((n=>{(n=n.split("-")).length>0&&n.filter((t=>!e.includes(t))).length>0&&(t=t.concat(n))})),t}([].concat(["یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه","ده","یازده","دوازده","سیزده","چهارده","پانزده","شانزده","هفده","هجده","نوزده","بیست","صد","هزار","میلیون","میلیارد","هفتده","نونزده","بیست و یک","سی","چهل","پنجاه","شصت ","هفتاد","هشتاد","نود","صد و یک","دویست","تریلیارد"],["اول","اوّل","دوم","سوم","چهارم","پنجم","ششم","هفتم","هشتم","نهم","دهم","یازدهم","دوازدهم","سیزدهم","چهاردهم","پانزدهم","شانزدهم","هفدهم","هجدهم","نوزدهم","بیستم","پانزدهمین","هفتهمین","هجدهمین","نوزدهمین","بیستمین ","بیست و یکم","سی ام ","چهلم","پنجاهم","شصتم","هفتادم","هشتادم","نودم","صدم","صد و یکم","دویستم","هزارم","میلیونم","میلیاردم","هفتهم"],["مرا","من را","من‌را","به من","تو را","شما را","شما","به تو","به شما","اون رو","اونو","به اون","اون","او را","به او","او","به ایشان","ایشان را","ایشان","به ایشون","ایشون رو","ایشون را","ایشون","این","این را","آن","به این","به آن","آن را","این رو","اینو","ما را","به ما","به اونا","آن‌ها","آنها را","آن‌ها را","به آنها","به آن‌ها","اونا","اونارو","اونا رو","من","تو","ما","آنها","همین","همان","اینان","آنان"],["کی","کِی","کجا","چه","چرا","چطور","آیا"],["کمی","زیاد","فراوان","بیشتر","بسیار","کم کم","مشتی","تعداد بسیارکم","مقداربسیارکم","تعداد زیادی","مقدارزیادی","بخش","تعداد","مقداری","چند","تمام","خیلی زیاد"],["خودم","خودت","خودش","یک نفر خودش","خودمان","خودتان","خودشان"],["هر کس","کسی","هیچ","فلان","هیچ کس","شخصی","هیچ چیز","همه چیز","چیزی","یکی دیگر","هر کدام","هر یک","هیچ کدام","کمی","خیلی","دیگری","همه","بعضی","هر دو","معدود","اندکی","خیلی","دیگران ","چندین"],["با","باری","نیز","چندان که","تا اینکه","چون‌که","اگرچه","باوجوداین","به شروطی که","واسه‎ی","بی","بر","چون","چندان‌که","تااینکه","چون که","اگر چنانچه","با این وجود","بعد از","برای","در","چونان که","زیرا که","تا آنکه","از این رو","اگرچنانچه","بس که","قبل از","واسه","را","برای این","چونان‌که","زیراکه","تاآنکه","ازاین‌رو","الا این‌که","از بس که","از بعد از","یا","برای این که","چنان","همین که","آن‌جا که","ازین‌رو","با این حال","بس‌که","از قبل از","اگر","برای آن که","چنان‌چه","همین‌که","آن‌گاه که","از بس","بااین‌حال","از بس‌که","اندر","نه","از برای","چنان‌که","همان‌که","ازآنجاکه","بااین‌که","به‌شرط آن‌که","علیه","مگر","برای آن","چنانچه","همان که","از آن‌جا که","ازبس","با این‌که","به شرط آن‌که","بدون","چه","خواه","چونکه","بلکه","از آن‌که","ازبس‌که","بااینکه","به شرطی که","ضد","زیرا","جز","ازآنکه","از بهر آن‌که","با وجود این","الی","غیر","که","الا","اکنون که","الاّ","از","بیرون","به","پایین","پشت","پهلوی","پی","تا","توی","درون","دنبال","روی","زیر","کنار","مانند","مثل","مقابل","شبیه","نزدیک","میان","پیش","برخی","پر","زی","سوای","بهر","به غیر ","به اضافه ی","به علاوه ی","به وسیله ی","به استثنای","به مجرد","به جهت","به خاطر","از نظر","از روی","ازسر","از قبیل","از لحاظ","از حیث","از جمله ی","در برابر","در مقابل","درباره ی","درمورد","درمیان","درخصوص","براثر","براساس","برطبق","برحسب","با وجود"],["اگر","اما","پس","تا","چون","چه","خواه","زیرا","که","لیکن","نه","نیز","و","ولی","هم","یا","که","همین که","آنجا که","از آنجا که","از این روی","از بس","از بس که","اکنون که","اگر چنانچه","اگر چنانکه","اگر چه","الا اینکه","با این حال","با اینکه","با وجود اینکه","با وجود این","بس که","به شرط آن که","به طوری که","بلکه","بنابراین","به هر حال","بی آنکه","تا اینکه","تا جایی که","چنانچه","چندانکه","چون که","در حالی که","در صورتی که","در نتیجه","زیرا که","وانگهی","وقتی که","وگرنه","هرچند","هر گاه که","هر وقت که","همانطور که"],["گفتن","توضیح دادن","اظهار کردن","پرسیدن","درخواست کردن","بحث کردن","اعلام کردن","گفتگو کردن","فهمیدن","درک کردن","پیشنهاد کردن","بیان کردن","فکر کردن","عقیده داشتن","مکالمه داشتن","ابراز کردن","مبادله کردن"],["خیلی","زیاد","کاملا زیاد","تقریباً","انصافاً","به طرز حیرت انگیزی","به طور عظیمی","بیش ازحد","بخصوص","فوق العاده","وحشتناک","به طور شگفت آوری","به معنای واقعی کلمه","نسبتا","واقعاً","بسیار","به طور فوق العاده"],["خواستن","بایستن","شایستن","توانستن","جرات کردن","داشتن","شدن"],["سیاه","سفید","آبی","قهوه ایی","خاکستری","سبز","نارنجی","ارغوانی","قرمز","سفید","زرد","دایره","راست","مربع","مثلث","تازه","تلخ","شور","ترش","تند","شیرین","بد","تمیز","پاک","تاریک","دشوار","تار","کثیف","خشک","ساده","خالی","گران","سریع","خارجی","کامل","خوب","سخت","سنگین","سفت","ارزان","سبک","محلی","جدید","پرسروصدا","قدیمی","قوی","ساکت","درست","کند","نرم","بسیار","ضعیف","مرطوب","اشتباه","جوان","بزرگ","عمیق","طولانی","دراز","کشیده","باریک","کوتاه","کوچک","وسیع","ضخیم","نازک","ناخواسته","ناپاک","نااهل","بعضی وقت ها","شب","امروز","امسال","فردا","همیشه","اینجا","آنجا","مدرسه","هر کجا","مسجد","خوب","با آرامی","افتان و خیزان","گریان","افسوس","متاسفانه","عجبا","شگفتا","حتماً","یقیناً","چگونه","چرا","شاید","پنداری","به گمانم","اندک اندک","قطره قطره","به جان","به خدا","مانا","همانا","چنان","چنین","بکردار","بسان","کاش","ای کاش","کاشکی","اگر","اگرچه","وگر","ور","چنانچه","نه","هرگز","هیچ","به هیچ وجه","اصلاً","ابداً","اول","دوم","نخست","درآغاز","پیاپی","گروه گروه","دسته دسته","دوتا دوتا","جز","مگر","جزکه","مگر که","اتفاقاً","احتمالاً","دائماً"," اجباراً","معمولاً","سریعاً","مخصوصاً","تقریباً"," آخرالامر","الآن","بالعکس ","فی الفور","بالطبع","مادام","حتی المقدور ","هنوز","از نو","دوباره","باز","مجدد","خارج","بالا","زیر","عقب","کنار","همه جا","باز","امیدوارم","الهی","خداکند","آرزومندم","ان شالله ","به نظرم","مثل اینکه","احتمال دارد","امکان دارد","تند","کند","آهسته","سریع","بد","آسان","ارزان","نیک","زشت ","نالان","دیروز"],["اِه","دِ","به به","اَه اَه","آخ","آخیش","آخیییی","وا","ای بابا","ای وای","اِواا","نُچّ","اَاَ بابا","هیس","ای وای من ","اُوه حالا","اُوه "],["شکستن","آب کردن","پخش کردن","لایه","ورقه","رول کردن","سرخ کردن","پوست کندن","مخلوط کردن","هم زدن","تفت دادن","قاطی کردن","چشیدن","برش","تکه کردن","نصف کردن","رنده کردن","جوشیدن","بخار کردن","ریختن","آبکش کردن","اضافه کردن","دم کردن","تخمیر کردن","باربیکیو","پختن","وزن کردن","رل کردن","خورد کردن","بخار پز کردن","غل زدن","آشپزی","مواد اولیه","دستور پخت","دستورالعمل","چرب کردن","در فر پختن","با ملاقه کشیدن","ریزریز کردن","مکعب خورد کردن","چرخ کردن","تیکه تیکه کردن","به آرامی جوشاندن","سریع هم زدن","با دست هم زدن","هم زن برقی","هم زدن با حرکت دایره ایی","گرم کردن","هم زدن باحرکت جلووعقب","تزیین کردن","ورز دادن","بریان کردن","گریل کردن","کباب کردن","با آتش مستقیم پختن","ادویه زدن","روغن اضافی را گرفتن","طعم دار کردن","پیچیدن","پخته نشده","زیاد پخته شده","کاملا پخته شده","نیم پز","خام","یخ زده","قاشق چایخوری","فر ","گاز","سطح روی گاز","حرارت ملایم","عصاره مرغ","عصاره گوشت","عصاره سبزیجات","سبک پخت وپز","ادویه","خمیر","بی ادویه","کتاب آشپزی"],["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند","صبح","ظهر","عصر","نصف شب","مغرب","غروب","پیش از ظهر","بامداد","قبل از ظهر","نیمه ظهر","ساعت","روز","زمان","تقویم","سال","دقیقه","اوایل شب","سر شب","هفته","گذشته","آینده","حال","بهار","تابستان","پاییز","زمستان","گرینویچ","دهه","تقویم قمری","تقویم شمسی","تقویم نجومی","ساعت شنی","ساعت عقربه ایی","ساعت جهانی","سریع","سال کبیسه","ساعت خورشیدی","لحظه لحظه","ماه","الان","وقت","نصف النهار","حال حاضر","اکنون","ربع","روزمره","روزانه","زمان سنج","تاخیر","دیروز","امروز"],["هر","همه","هیچ","فلان","چندین","خیلی ","کمی","بسیاری","اندکی","قدری","برخی","بعضی","پاره ایی","چندان"],["آقا","خانم","دوشیزه","جناب","سرکار خانم","سرکار آقا","دکتر","جناب آقا"],["دوباره","قطعاً","حتماً","اصلاً","قاعدتاً","ظبیعتاً","شاید","کاملاً","به","از","و","همچنین","هم","مانند","مثل","شبیه به","ولی","اما","امّا","لیکن","ولو","در ضمن","در کنار","ترجیحاً","وگرنه","پس","سپس","وقتی","زمانی که","به خاطر","مخصوصاً","مشخصاً","در کل","بعد","قبل","تا"],["را"],["همدیگر","یکدیگر"],["مال من","مال تو","مال او","مال آن","مال ما ","مال شما","مال ایشان","مال آنها"],["نیم","یک سوم","یک چهارم","یک پنجم","یک ششم","یک هفتم","یک هشتم","یک نهم","یک دهم","دو سوم","دو چهارم","دو پنجم","دو ششم","دو هفتم","دو هشتم","دو نهم","سه چهارم","سه پنجم"],["ی","یک","برخی از","معدود","چندتا","مقداری"],s)),a=[["چه","چه"],["خواه","خواه"],["نه","نه"],["هم","هم"],["یا","یا"]],c={recommendedLength:25},i=["برخی از","یک","ی","مقداری","چندتا","معدود","یک","دو","سه","چهار","پنج","شش","هفت","هشت","نه","ده","همان","همین","آنها","اینان","آنان","اینها","این","آن"],{regexHelpers:{searchAndReplaceWithRegex:u}}=n.languageProcessing,l=function(e){const t=[];return t.push("ن"+e),e.endsWith("ها")?t.push(...["یی","ی"].map((t=>e+t))):/([^وای]ه)$/i.test(e)?t.push(...["‌ای","‌یی","‌ام","‌ات","‌اش"].map((t=>e+t))):/([وا])$/i.test(e)?t.push(...["یی","یم","یت","یش"].map((t=>e+t))):(e.endsWith("ی")&&t.push(e+"‌ای"),t.push(...["مان","شان","تان","ش","ت","م","ی"].map((t=>e+t)))),t};function g(e){const t=[];t.push(...l(e));const n=function(e){return e.startsWith("ن")?e.slice(1,e.length):u(e,[["(و|ا)(یش|یت|یم|یی)$","$1"],["([^وای]ه)(‌یی|‌ای|‌اش|‌ات|‌ام)$","$1"],["(ی)‌ای$","$1"],["(ها)یی$","$1"],["(مان|شان|تان|ش|ت|م|ی)$",""]])}(e);return n&&(t.push(n),t.push(...l(n))),t}const{baseStemmer:h}=n.languageProcessing;function d(){return h}const p=["آراسته","آزرده","آزموده","آشفته","آغشته","آفریده","آلوده","آمده","آورده","آمیخته","آورده","آویخته","اُفتاده","اَفراشته","اَفروخته","اَفزوده","اَفشانده","اَنباشته","اَنداخته","اَندوخته","اِنگاشته","برانگیخته","باریده","بافته","بخشوده","بخشیده","برده","برگردانده","برگزیده","بسته","بلعیده","بوسیده","بوییده","پاشیده","پخته","پذیرفته","پراکنده","پرداخته","پرستیده","پرسیده","پژمرده","پسندیده","پنداریده","پوشیده","پوشانده","پیچیده","پیوسته","پیموده","تافته","تراشیده","ترسانده","ترکیده","ترکانده","تَکانده","تنیده","توانسته","جوشانده","جوشیده","جَویده","جوییده","چاپیده","چرخیده","چسبانده","چسبیده","چشیده","چیده","خاسته","خشکیده","خراشیده","خریده","خوانده","خورده","داده","دریده","دزدیده","دوخته","دوشیده","دیده","رانده","ربوده","رسانده","رسیده","رشته","رفته","ریخته","زاده","زده","زدوده","ساخته","سابیده","ساییده","ستانده","ستوده","سرشته","سروده","سوخته","سوزانده","شده","شسته","شکافته","شکانده","شکسته","شکفته","شکافیده","شمرده","شناسانده","شنفته","شنیده","طلبیده","فرساییده","فرستاده","فرسوده","فرموده","فروخته","فریفته","فشرده","کاسته","کاشته","کشته","کشیده","گفته","کوبیده","گداخته","گذاشته","گردانده","گرفته","گزارده","گَزیده","گُسترانده","گُسترده","گسسته","گسیخته","گشته","گشوده","گفته","گماشته","مالیده","نامیده","نگاشته","نواخته","نوردیده","نِوِشته","نوشیده","نهاده","نهفته","وابسته","واگذاشته","واگفته","وانهاده","انداخته","افتاده","ورانداخته","ورزیده","وزیده","ویرایش شده","یافته","ستانده شده","آغازشده","آماده","اَرزیده","آمده","پذیرایی شده","تولید شده","استفاده شده","آسفالت شده","اخراج شده","خلق شده","خیس شده","آماده شده","باز شده","بازپس گرفته شده","بشمار آمده","بررسی شده","پاره شده","پیدا شده","زخم خورده","انعام داده شده","زخم شده","ضایع شده","شکست یافته","شروع شده","گول خورده","دزدی رفته","انجام گرفته","فرمایش داده","فرمایش شده","به سر برده","سر رفته","سر آمده","روشن شده","راهنمایی شده","تکان خورده","زمین خورده","دیده شده","بر آمده","تلفیق شده","تخلیه شده","توافق شده","توجه شده","توقف شده","توقیف شده","حمله شده","خبردار شده","گرفتار شده","مسخره شده","مقصر شناخته شده","مضاعف شده","ممکن شده","نقشه کشیده","آغازشدن","آماده شدن","ارزیابی شدن","پذیرایی شدن","تولید شدن","استفاده شدن","آسفالت شدن","اخراج شدن","خلق شدن","خیس شدن","آماده شدن","باز کردن","باز پس گرفتن","بشمار آمدن","بررسی شدن","پاره شدن","پیدا شدن","زخم خوردن","انعام گرفتن","زخم شدن","ضایع شدن","شکست یافتن","شروع شدن","گول خوردن","دزدی رفتن","انجام گرفتن","فرمایش دادن","فرمایش شدن","به سر بردن","سر رفتن","سر آمدن","روشن شدن","راهنمایی کردن","تکان خوردن","زمین خوردن","دیده شدن","بر آمدن","تلفیق شدن","تخلیه شدن","توافق شدن","توجه شدن","توقف کردن","توقیف شدن","حمله شدن","خبردار شدن","گرفتار آمدن","مسخره شدن","مقصر شناخته شدن","مضاعف کردن","ممکن شدن","نقشه کشیدن","آغاز شده","آماده شد","ارزیابی شدم","پذیرایی شدم","تولید شد","استفاده شد","آسفالت شد","اخراج شدم","خلق شدم","خیس شدم","آماده شد","باز شد","باز پس گرفته شد","بشمار آمد","بررسی شد","پاره شد","پیدا شد","زخم خورد","انعام گرفتم","زخم شد","ضایع شد","شکست یافتم","شروع شد","گول خوردم","دزدی رفت","انجام گرفت","سر رفت","سر آمد","روشن شد","راهنمایی شدم","تکان خورد","زمین خورد","دیده شدم","تلفیق شد","تخلیه شد","توافق شد","توجه شد","توقف کرد","توقیف شدم","حمله شد","خبردار شدم","گرفتار آمد","مسخره شدم","مقصر شناخته شدم","مضاعف شد","ممکن شد","نقشه کشیده شد","آغاز شده است","آماده می‌شد","ارزیابی شدی","پذیرایی شدی","تولید می‌شد","استفاده می‌شد","آسفالت می‌شد","اخراج شدی","خلق شدی","خیس شدی","آماده می‌شد","باز شدند","باز پس گرفته شد","بشمار آمدند","بررسی شدند","پاره شدند","پیدا شدند","زخم خوردند","انعام گرفتی","زخم شدند","ضایع شدند","شکست یافتی","شروع می‌شد","گول خوردی","دزدی رفته","انجام گرفتند","سر می‌رفت","داشت سر می‌آمد","روشن شدند","راهنمایی شدی","تکان خوردند","زمین خواهد خورد","دیده شدی","تلفیق شدند","تخلیه شدند","توافق شده","توجه می‌شد","توقف کردند","توقیف شدی","حمله می‌شد","خبردار شدی","گرفتار آمده","مسخره شدی","مقصر شناخته شدی","مضاعف شده","ممکن شده","نقشه کشیده شده است","داشت آغاز می‌شد","داشت آماده می‌شد","ارزیابی شد","پذیرایی شد","داشت تولید می‌شد","داشت استفاده می‌شد","داشت آسفالت می‌شد","اخراج شد","خلق شد","خیس شد","آماده می‌شدند","باز می‌شد","داشت باز پس گرفته می‌شد","بشمار می‌آمد","بررسی می‌شد","پاره می‌شد","پیدا شده","زخم خورده","انعام گرفت","زخم شده","ضایع شده","شکست یافت","داشت شروع می‌شد","گول خورد","دزدی رفته است","انجام می‌گرفت","سر رفته","سر آمده","روشن می‌شد","راهنمایی شد","تکان می‌خورد","دیده شد","تلفیق می‌شد","تخلیه می‌شد","توافق شده است","توجه شده","توقف کرده","توقیف شد","داشت حمله می‌شد","خبردار شد","گرفتار آمده است","مسخره شد","مقصر شناخته شد","مضاعف شده است","ممکن شده است","نقشه کشیده خواهد شد","آغاز شده بود","آماده شده","ارزیابی شدیم","پذیرایی شدیم","تولید شده ","استفاده شده","آسفالت شده","اخراج شدیم","خلق شدیم","خیس شدیم","داشت آماده می‌شد","باز می‌شدند","داشتند باز پس گرفته می‌شدند","بشمار می‌آمدند","بررسی می‌شدند","پاره می‌شدند","پیدا شده است","زخم خورده است","انعام گرفتیم","زخم شده است","ضایع شده است","شکست یافتیم","شروع شده","گول خوردیم","دزدی رفته بود","انجام می‌گرفتند"," سر رفته است","سر آمده است","روشن می‌شدند","راهنمایی شدیم","تکان می‌خوردند","دیده شدیم","تلفیق می‌شدند","تخلیه می‌شدند","توافق شده بود","توجه شده است","توقف کرده است","توقیف شدیم","حمله شده","خبردار شدیم","گرفتار آمده بود","مسخره شدیم","مقصر شناخته شدیم","مضاعف شده بود","ممکن شده بود","آغاز شود","آماده شده است","ارزیابی شدید","پذیرایی شدید","تولید شده است","استفاده شده است","آسفالت شده است","اخراج شدید","خلق شدید","خیس شدید","داشتند آماده می‌شدند","داشت باز می‌شد","باز پس گرفته شده","داشت بشمار می‌آمد","داشت بررسی می‌شد","پاره شده","پیدا شده بود","زخم خورده بود","انعام گرفتید","زخم شده‌اند","ضایع شده بود","شکست یافتید","شروع شده است","گول خوردید","دزدی می‌رود","داشت انجام می‌گرفت","سر رفته بود","سر آمده بود","داشت روشن می‌شد","راهنمایی شدید","داشت تکان می‌خورد","دیده شدید","داشت تلفیق می‌شد","داشت تخلیه می‌شد","توافق شود","توجه شده بود","توقف کرده بود","توقیف شدید","حمله شده است","خبردار شدید","گرفتار خواهد آمد","مسخره شدید","مقصر شناخته شدید","مضاعف شود","ممکن شود","آغاز می‌شود","آماده شده بود","ارزیابی شدند","پذیرایی شدند","تولید شده بود","استفاده شده بود","آسفالت شده بود","اخراج شدند","خلق شدند","خیس شدند","آماده شده","داشتند باز می‌شدند","باز پس گرفته شده است","داشتند بشمار می‌آمدند","داشتند بررسی می‌شدند","پاره شده است","پیدا شده بودند","زخم خورده بودند","انعام گرفتند","زخم شده بود","ضایع شده بودند","شکست یافتند","شروع شده‌اند","گول خوردند","دزدی رفته باشد","داشتند انجام می‌گرفتند","دارد سر می‌رود","سر خواهد آمد","داشتند روشن می‌شدند","راهنمایی شدند","داشتند تکان می‌خوردند","دیده شدند","داشتند تلفیق می‌شدند","داشتند تخلیه می‌شدند","توافق می‌شود","توجه می‌شود","توقف می‌کند","توقیف شدند","حمله شده بود","خبردار شدند","مسخره شدند","مقصر شناخته شدند","مضاعف می‌شود","ممکن خواهد شد","آراستن","آزردن","آزمودن","آشفتن","آغشتن","آفریدن","آلودن","آمدن","آمیختن","آوردن","آویختن","اُفتادن","اَفراشتن","اَفروختن","اَفزودن","اَفشاندن","اَنباشتن","اَنداختن","اَندوختن","برانگیختن","بافتن","بخشودن","بخشیدن","بردن","برگرداندن","برگزیدن","بستن","بلعیدن","بوسیدن","بوییدن","پاشیدن","پختن","پذیرفتن","پراکندن","پرداختن","پرستیدن","پرسیدن","پژمردن","پسندیدن","پوشیدن","پوشاندن","پیچیدن","پیوستن","پیمودن","تافتن","تراشیدن","ترساندن","ترکیدن","ترکاندن","تَکاندن","تنیدن","توانستن","جوشاندن","جوشیدن","جَویدن","جوییدن","چاپیدن","چرخییدن","چسباندن","چسبیدن","چشیدن","چیدن","خاستن","خشکاندن","خراشیدن","خریدن","خواندن","خوردن","دادن","دریدن","دزدیدن","دوختن","دوشیدن","راندن","ربودن","رساندن","رسیدن","ریختن","زادن","زدن","زدودن","ساختن","سابیدن","ساییدن","ستاندن","ستودن","سرشتن","سرودن","سوختن","سوزاندن","انجام شدن","شستن","شکافتن","شکاندن","شکستن","شکُفتن","شمردن","شناساندن","شِنُفتن","شنیدن","طلبیدن","فرساییدن","فرستادن","فرسودن","فرمودن","فروختن","فریفتن","فِشُردن","کاستن","کاشتن","کُشتن","کشیدن","کَفتن","کوبیدن","گُداختن","گذاشتن","گرداندن","گرفتن","گزاردن","گَزیدن","گُستراندن","گُستَردن","گُسستن","گُسیختن","گشودن","گفتن","گُماشتن","مالیدن","نامیدن","نگاشتن","نواختن","نَوردیدن","نِوِشتن","نوشیدن","نهادن","نهفتن","واگذاشتن","وانهادن","افتادن","ورانداختن","ورزیدن","ویرایش کردن","یافتن","ستاندن","آراسته شد","آزرده شدم","آزموده شدم","آشفته شدم","آغشته شد","آفریده شد","آلوده شد","آمد","آمیخته شد","آورده شد","آویخته شد","افتاده شده","افراشته شد","افروخته شد","افزوده شد","افشانده شد","انباشته شد","انداخته شد","اندوخته شد","برانگیخته شد","بافته شد","بخشوده شد","بخشیده شد","برده شد","برگردانده شد","برگزیده شده","بسته شد","بلعیده شد","بوسیده شدم","بوییده شد","پاشیده شد","پخته شد","پذیرفته شدم","پراکنده شد","پرداخته شد","پرستیده شد","پرسیده شد","پژمرده شد","پسندیده شد","پوشیده شد","پیچیده شد","پیوسته شده","پیموده شد","تافته شد","تراشیده شد","ترسانده شدم","ترکیده شد","تکانده شد","تنیده شد","جوشانده شد","جوشیده شد","جویده شد","جوییده شده","چاپیده شدم","چرخیده شد","چسبانده شد","چسبیده شد","چشیده شد","چیده شد","خاسته شد","خشکیده شد","خراشیده شد","خریده شد","خوانده شد","خورده شد","داده شد","دریده شد","دزدیده شد","دوخته شد","دوشیده شد","رانده شد","ربوده شد","رسانده شد","رسیده شد","ریخته شد","زاده شد","زده شد","زدوده شد","ساخته شد","سابیده شد","ستانده شد","ستوده شد","سرشته شد","سروده می‌شود","سوخته شد","سوزانده شد","انجام شد","شسته شد","شکافته شد","شکانده شد","شکسته شد","شکفته شد","شمرده شد","شناسانده شد","شنفته شد","شنیده شد","طلبیده شدم","فرساییده شد","فرستاده شد","فرسوده شد","فرموده شد","فروخته شد","فریفته شد","فشرده شد","کاسته شد","کاشته شد","کشته شد","کشیده شد","گفته شد","کوبیده شد","گداخته شده","گذاشته شد","گردانده شد","گرفته شد","گزارده شد","گزیده شد","گسترانده شد","گسترده شد","گسسته شد","گسیخته شد","گشوده شد","گفته شد","گماشته شده","مالیده شد","نامیده شد","نگاشته شد","نواخته شد","نوردیده شد","نوشته شد","نوشیده شد","نهاده شد","نهفته شده","واگذاشته شد","وانهاده شد","افتاده شد","ورانداخته شد","ورزیده شد","ویرایش شد","یافته شد","ستانده شد","آراسته شدند","آزرده شدی","آزموده شدی","آشفته شدی","آغشته شده","آفریده شدیم","آلوده شدند","آمدند","آمیخته شدند","آورده شدند","آویخته شدند","افتاده شده است","افراشته شدند","داشت افروخته می‌شد","افزوده شدند","افشانده شدند","انباشته شدند","انداخته شدند","اندوخته شدند","برانگیخته می‌شد","بافته شدند","بخشوده شدند","بخشیده شدند","برده شدند","برگردانده شدند","برگزیده شده است","بسته شدند","بلعیده شدند","بوسیده شد","بوییده شده","پاشیده شده","پخته شدند","پذیرفته شد","پراکنده شدند","پرداخته شده","پرستیده می‌شود","پرسیده شدند","پژمرده شدند","پسندیده شدند","پوشیده شدند","پیچیده شده","پیوسته شده است","پیموده شده","تافته شدند","تراشیده شدند","ترسانده شد","ترکیده شده","تکانده شدند","تنیده شده","داشت جوشانده می‌شد","داشت جوشیده می‌شد","جویده شده","جوییده شده است","چاپیده شدی","چرخیده شدند","چسبانده شدند","چسبیده شدند","چشیده شدند","چیده شدند","خاسته شدند","خشکیده شدند","خراشیده شدند","خریده شدند","خوانده شدند","خورده شدند","داده شدند","دریده شدند","دزدیده شدند","دوخته شدند","دوشیده شدند","رانده شدند","ربوده شدند","رسانده شده","رسیده شده","داشت ریخته می‌شد","زاده شده","داشت زده می‌شد","زدوده شده","ساخته شدند","سابیده شدند","ستانده شده","ستوده می‌شد","سرشته شده","سروده شوده","داشت سوخته می‌شد","سوزانده شدند","انجام شدند","شسته شدند","شکافته شدند","شکانده شدند","شکسته شدند","شکفته شدند","شمرده شدند","شناسانده شدند","شنفته می‌شد","شنیده می‌شد","طلبیده شدی","فرساییده شدند","فرستاده شدند","فرسوده شدند","فرموده شده","فروخته شدند","داشت فریفته می شد","فشرده شده","کاسته می‌شد","کاشته شده","کشته شدند","کشیده شدند","گفته شده","داشت کوبیده می‌شد","گداخته شده است","داشت گذاشته می‌شد","گردانده شده","داشت گرفته می‌شد","گزارده شده","گزیده شدم","گسترانده شده","گسترده شده","گسسته شده","گسیخته شده","داشت گشوده می‌شد","داشت گفته می‌شد","گماشته شده است","مالیده شده","نامیده شده","داشت نگاشته می‌شد","نواخته می‌شد","نوردیده شده","نوشته شدند","نوشیده شده","نهاده شده","نهفته شده است","واگذاشته شده","وانهاده شده","افتاده شدند","ورانداخته شده","ورزیده شده","ویرایش شدند","یافته شدند","ستانده شده","آراسته شده","آزرده شد","آزموده شد","آشفته شد"," آغشته شده است","آفریده شدند","داشت آلوده می‌شد","داشت می‌آمد","آمیخته می‌شد","آورده می‌شد","آویخته شده","افتاده شده بود","افراشته شده","افروخته شده","داشت افزوده می‌شد","افشانده شده","داشت انباشته می‌شد","انداخته می‌شد","اندوخته می‌شد","برانگیخته شده","داشت بافته می‌شد","بخشوده شده","بخشیده شده","داشت برده می‌شد","برگردانده شده","برگزیده شده بود","بسته می‌شد","بلعیده شده","بوییده شده است","پاشیده شده است","پخته می‌شد","پذیرفته شدند","پراکنده می‌شد","پرداخته شده است","پرستیده خواهد شد","داشت پرسیده می‌شد","پژمرده می‌شد","پسندیده شده","داشت پوشیده می‌شد","پیچیده شده است","پیموده شده است","تافته شده","داشت تراشیده می‌شد","ترسانده شدند","ترکیده شده است","تکانده شده","تنیده شده است","جوشانده شده","جوشیده شده","جویده شده است","چاپیده شد","چرخیده شده","داشت چسبانده می‌شد","چسبیده شده","چشیده شده","داشت چیده می‌شد","خاسته شده","خشکیده شده","خراشیده شده","خریده شده","داشت خوانده می‌شد","خورده می‌شد","داده شده","دریده شده","داشت دزدیده می‌شد","داشت دوخته می‌شد","داشت دوشیده می‌شد","رانده شده","ربوده شده","رسانده شده است","رسیده شده است","ریخته شده","زاده شده است","زده شده","زدوده شده است","داشت ساخته می‌شد","داشت سابیده می‌شد","ستانده شده است","ستوده شده","سرشته شده است","سروده شوده است","داشتند سوخته می‌شدند","داشت سوزانده می‌شد","انجام می‌شد","شسته می‌شد","داشت شکافته می‌شد","داشت شکانده می‌شد","شکسته می‌شد","شکفته می‌شد","شمرده شده","شناسانده شده","داشت شنفته می‌شد","داشت شنیده می‌شد","طلبیده شد","فرساییده شده","فرستاده شده","داشت فرسوده می‌شد","فرموده شده است","فروخته می‌شد","فریفته شده","فشرده شده است","داشت کاسته می‌شد","کاشته شده است","کشته شده","داشت کشیده می‌شد","گفته شده است","کوبیده می‌شود","گداخته شد","گذاشته شده","گردانده شده است","گرفته شده","گزارده شده است","گزیده شدی","گسترانده شده است","گسترده شده است","گسسته شده است","گسیخته شده است","گشوده شده","گفته شده","گماشته خواهد شد","مالیده شده است","نامیده شده است","نگاشته شده","داشت نواخته می‌شد","نوردیده شده است","داشت نوشته می‌شد","نوشیده شده است","نهاده شده است","نهفته شده بود","واگذاشته شده است","وانهاده شده است","افتاده شده","ورانداخته شده است","ورزیده شده است","ویرایش شده","یافته شده","ستانده شده","آراسته شده است","آزرده شدیم","آزموده شدیم","آشفته شدیم","آغشته شده بود","آفریده شده‌ام","داشتند آلوده می‌شدند","آمیخته می‌شدند","آورده می‌شدند","آویخته شده است","افتاده شده بودند","افراشته شده است","افروخته شده است","داشتند افزوده می‌شدند","افشانده شده است","داشتند انباشته می‌شدند","انداخته می‌شدند","اندوخته می‌شدند","برانگیخته شده است","داشتند بافته می‌شدند","بخشوده شده است","بخشیده شده است","داشتند برده می‌شدند","برگردانده شده است","برگزیده خواهد شد","بسته می‌شدند","بلعیده شده است","پاشیده شده بود","پخته می‌شدند","پذیرفته شده‌ام","پراکنده می‌شدند","پرداخته شده بود","پرستیده بشود","پرسیده شده","پژمرده می‌شدند","پسندیده شده است","داشتند پوشیده می‌شدند","پیچیده شده بود","پیموده شده بود","تافته شده است","داشتند تراشیده می‌شدند","ترسانده شده","تکانده شده است","تنیده شده بود","جوشانده شده است","جوشیده شده است","جویده بشود","چاپیده شدیم","چرخیده شده است","چسبانده شده","چسبیده شده است","چشیده شده است","داشتند چیده می‌شدند","خاسته شده است","خشکیده شده است","خراشیده شده است","خریده شده است","داشتند خوانده می‌شدند","خورده می‌شدند","داده شده است","دریده شده است","دزدیده شده","داشتند دوخته می‌شدند","داشتند دوشیده می‌شدند","رانده شده است","ربوده شده است","رسانده شده بود","رسیده شده بود","ریخته شده است","زاده شده بود","زده شده است","زدوده شده بود","داشتند ساخته می‌شدند","داشتند سابیده می‌شدند","ستانده شده بود","ستوده شده است","سروده شوده بود","سوخته شده","داشتند سوزانده می‌شدند","انجام می‌شدند","شسته می‌شدند","داشتند شکافته می‌شدند","داشتند شکانده می‌شدند","شکسته می‌شدند","شکفته می‌شدند","شمرده شده است","شناسانده شده است","شنفته شده","شنیده شده","طلبیده شدیم","فرساییده شده است","فرستاده شده است","فرسوده شده","فروخته می‌شدند","فریفته شده است","فشرده شده بود","کاسته شده","کاشته شده بود","کشته شده است","کشیده شده","گفته شده بود","گذاشته شده است","گردانده بشود","گرفته شده است","گزارده شده باشد","گزیده شد","گسترانده شده بود","گسترده شده بود","گسسته شده بود","گشوده شده است","گفته شده است","مالیده می‌شود","نگاشته شده است","نواخته شده","دارد نوردیده می‌شود","داشتند نوشته می‌شدند","نوشیده شده بود","افتاده شده است","ورانداخته شده بود","ویرایش شده است","یافته شده است","ستانده شده بود","آراسته شده بود","آزرده شدید","آزموده شدید","آشفته شدید","آغشته شده بودند","آفریده شده‌ای","آلوده شده","آمده است","داشت آمیخته می‌شد","داشت آورده می‌شد","آویخته شده‌اند","افتاده خواهد شد","افراشته شده بود","افروخته شده بود","افزوده شده","افشانده شده بود","انباشته شده","داشت انداخته می‌شد","داشت اندوخته می‌شد","برانگیخته شده بود","بافته شده","بخشوده شده‌اند","بخشیده شده اند","برده شده","برگردانده شده‌اند","داشت بسته می‌شد","داشت پخته می‌شد","پذیرفته شده","داشت پراکنده می‌شد","پرداخته شود","پرسیده شده است","داشت پژمرده می‌شد","پسندیده شده بود","پوشیده شده","پیموده خواهد شد","تافته شود","تراشیده شده","ترسانده شده است","تکانده شده‌اند","جوشانده شده بود","جوشیده شده بود","چاپیده شدید","چرخیده شده بود","چسبانده شده است","چسبیده شده‌اند","چشیده شده بود","چیده شده","خاسته شده بود","خشکیده شده‌اند","خراشیده شده بود","خریده شده بودند","خوانده شده","داشت خورده می‌شد","داده شده‌اند","دزدیده شده است","دوخته شده","دوشیده شده","رانده شده بود","ربوده شده‌اند","رسانده می‌شود","رسیده خواهد شد","ریخته شده بود","زده شده بود","زدوده خواهد شد","ساخته شده","سابیده شده","ستانده شود","ستوده می‌شود","سوخته شده است","سوزانده شده","داشت انجام می‌شد","داشت شسته می‌شد","شکافته شده","شکانده شده","داشت شکسته می‌شد","داشت شکفته می‌شد","شمرده شده بود","شناسانده خواهد شد","شنفته شده است","شنیده شده است","طلبیده شدید","فرساییده شده بود","فرستاده شده بود","فرسوده شده است","داشت فروخته می‌شد","دارد فشرده می‌شود","کاسته شده است","کاشته شود","کشته شده‌اند","کشیده شده است","گفته بشود","گذاشته شده بود","گرفته شده بود","گزیده شدیم","گسسته خواهد شد","گشوده شده بود","گفته شده بود","مالیده بشود","نواخته شده است","نوردیده بشود","نوشته شده","افتاده شده بود","ورانداخته خواهد شد","ویرایش شده‌اند","یافته شده‌اند","ستانده شود","آراسته شود","آزرده شدند","آزموده شدند","آشفته شدند","آفریده شده","آلوده شده است","آمده‌اند","داشتند آمیخته می‌شدند","داشتند آورده می‌شدند","آویخته شده بود","افتاده خواهند شد","افراشته بشود","افروخته می‌شود","افزوده شده است","افشانده شده بودند","انباشته شده است","داشتند انداخته می‌شدند","اندوخته شده","برانگیخته شود","بافته شده است","بخشوده شود","بخشیده شود","برده شده است","برگردانده شده بود","داشتند بسته می‌شدند","پخته شده","پذیرفته شده است","داشتند پراکنده می‌شدند","پرداخته خواهد شد","پرسیده شده‌اند","داشتند پژمرده می‌شدند","پسندیده شود","پوشیده شده است","پیموده بشود","تافته بشود","تراشیده شده است","ترسانده شده‌اند","دارد جوشانده می‌شود","جوشیده شود","چاپیده شدند","چرخیده شده بودند","چسبانده شده بود","چسبیده شده بود","چشیده شود","چیده شده است","خشکیده خواهد شد","خراشیده شده بودند","خریده خواهد شد","خوانده شده است","داشتند خورده می‌شدند","داده شده بود","دزدیده شده‌اند","دوخته شده است","دوشیده شده است","رانده شده باشد","ربوده شده بود","رسانده خواهد شد","رسیده شده باشد","دارد ریخته می‌شود","دارد زده می‌شود","ساخته شده است"," سابیده شده است","ستانده خواهد شد","ستوده می‌شوند","سوخته شده‌اند","سوزانده شده است","داشتند انجام می‌شدند","داشتند شسته می‌شدند","شکافته شده است","شکانده شده است","داشتند شکسته می‌شدند","داشتند شکفته می‌شدند","شمرده شده بودند","شناسانده خواهند شد","شنفته می‌شود","شنیده شده بود","طلبیده شدند","فرساییده خواهد شد","فرستاده خواهد شد","فرسوده شده بود","داشتند فروخته می‌شدند","فشرده خواهد شد","کاسته شده بود","کاشته خواهد شد","کشته شده بود","کشیده شده بود","گرفته می‌شود","گزیده شدید","گشوده شده بودند","گفته شده باشد","نواخته شده بود","نوشته شده است","افتاده شده بودند","ورانداخته خواهند شد","ویرایش شده بود","یافته شده بود","ستانده خواهد شد"],{areWordsInSentence:f}=n.languageProcessing;function m(e){return f(p,e)}const{AbstractResearcher:y}=n.languageProcessing;class b extends y{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{passiveConstructionType:"morphological",language:"fa",functionWords:o,transitionWords:r,twoPartTransitionWords:a,sentenceLength:c,firstWordExceptions:i}),Object.assign(this.helpers,{createBasicWordForms:g,getStemmer:d,isPassiveSentence:m})}}(window.yoast=window.yoast||{}).Researcher=t})();js/dist/languages/de.js000064400000307545147206602470011045 0ustar00(()=>{var e={429:e=>{var t=function(e,t){var r;for(r=0;r1?1:a)+s[s.length-1].length};return{addRule:function(e,t){n.push({regex:e,type:t})},onText:function(e){for(var t=s+e,l=r(n,t);l&&l.max_index!==t.length;)i(t.substring(0,l.max_index),l.rule.type),t=t.substring(l.max_index),l=r(n,t);s=t},end:function(){if(0!==s.length){var e=t(n,s);if(!e){var r=new Error("unable to tokenize");throw r.tokenizer2={buffer:s,line:l,col:a},r}i(s,e.type)}}}}}},t={};function r(s){var n=t[s];if(void 0!==n)return n.exports;var l=t[s]={exports:{}};return e[s](l,l.exports,r),l.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};(()=>{"use strict";r.r(s),r.d(s,{default:()=>jt});const e=window.yoast.analysis,t=["das","dem","den","der","des","die","ein","eine","einem","einen","einer","eines","eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","denen","deren","derer","dessen","diese","diesem","diesen","dieser","dieses","jene","jenem","jenen","jener","jenes","welch","welcher","welches"],n=["bekommst","bekommt","bekamst","bekommest","bekommet","bekämest","bekämst","bekämet","bekämt","gekriegt","gehörst","gehört","gehörtest","gehörtet","gehörest","gehöret","erhältst","erhält","erhaltet","erhielt","erhieltest","erhieltst","erhieltet","erhaltest"],l=["werde","wirst","wird","werden","werdet","wurde","ward","wurdest","wardst","wurden","wurdet","worden","werdest","würde","würdest","würden","würdet","bekomme","bekommen","bekam","bekamen","bekäme","bekämen","kriege","kriegst","kriegt","kriegen","kriegte","kriegtest","kriegten","kriegtet","kriegest","krieget","gehöre","gehören","gehörte","gehörten","erhalte","erhalten","erhielten","erhielte"],a=["werden","bekommen","kriegen","gehören","erhalten"],i={participleLike:n,otherAuxiliaries:l.concat(a),filteredAuxiliaries:n.concat(l),infinitiveAuxiliaries:a,all:n.concat(l,a)},b=["aber","abschließend","abschliessend","alldieweil","allerdings","also","anderenteils","andererseits","andernteils","anfaenglich","anfänglich","anfangs","angenommen","anschliessend","anschließend","aufgrund","ausgenommen","ausserdem","außerdem","beispielsweise","bevor","beziehungsweise","bspw","bzw","d.h","da","dabei","dadurch","dafuer","dafür","dagegen","daher","dahingegen","danach","dann","darauf","darum","dass","davor","dazu","dementgegen","dementsprechend","demgegenüber","demgegenueber","demgemaess","demgemäß","demzufolge","denn","dennoch","dergestalt","derweil","desto","deshalb","desungeachtet","deswegen","doch","dort","drittens","ebenfalls","ebenso","endlich","ehe","einerseits","einesteils","entsprechend","entweder","erst","erstens","falls","ferner","folgerichtig","folglich","fürderhin","fuerderhin","genauso","hierdurch","hierzu","hingegen","immerhin","indem","indes","indessen","infolge","infolgedessen","insofern","insoweit","inzwischen","jedenfalls","jedoch","kurzum","m.a.w","mitnichten","mitunter","möglicherweise","moeglicherweise","nachdem","nebenher","nichtsdestotrotz","nichtsdestoweniger","ob","obenrein","obgleich","obschon","obwohl","obzwar","ohnehin","richtigerweise","schliesslich","schließlich","seit","seitdem","sobald","sodass","so dass","sofern","sogar","solang","solange","somit","sondern","sooft","soviel","soweit","sowie","sowohl","statt","stattdessen","trotz","trotzdem","überdies","übrigens","ueberdies","uebrigens","ungeachtet","vielmehr","vorausgesetzt","vorher","waehrend","während","währenddessen","waehrenddessen","weder","wegen","weil","weiter","weiterhin","wenn","wenngleich","wennschon","wennzwar","weshalb","widrigenfalls","wiewohl","wobei","wohingegen","z.b","zudem","zuerst","zufolge","zuletzt","zumal","zuvor","zwar","zweitens"],u=b.concat(["abgesehen von","abgesehen davon","als dass","als ob","als wenn","anders ausgedrückt","anders ausgedrueckt","anders formuliert","anders gefasst","anders gefragt","anders gesagt","anders gesprochen","anstatt dass","auch wenn","auf grund","auf jeden fall","aus diesem grund","ausser dass","außer dass","ausser wenn","außer wenn","besser ausgedrückt","besser ausgedrueckt","besser formuliert","besser gesagt","besser gesprochen","bloss dass","bloß dass","darüber hinaus","das heisst","das heißt","des weiteren","dessen ungeachtet","ebenso wie","genauso wie","geschweige denn","im fall","im falle","im folgenden","im gegensatz dazu","im gegenteil","im grunde genommen","in diesem sinne","je nachdem","kurz gesagt","mit anderen worten","ohne dass","so dass","umso mehr als","umso weniger als","umso mehr, als","umso weniger, als","unbeschadet dessen","und zwar","ungeachtet dessen","unter dem strich","zum beispiel","zunächst einmal"]);function g(e){let t=e;return e.forEach((r=>{(r=r.split("-")).length>0&&r.filter((t=>!e.includes(t))).length>0&&(t=t.concat(r))})),t}const h=i.filteredAuxiliaries,o=["das","dem","den","der","des","die","ein","eine","einem","einen","einer","eines"],c=["eins","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf","zwölf","zwoelf","dreizehn","vierzehn","fünfzehn","fuenfzehn","sechzehn","siebzehn","achtzehn","neunzehn","zwanzig","hundert","einhundert","zweihundert","dreihundert","vierhundert","fünfhundert","fuenfhundert","sechshundert","siebenhundert","achthundert","neunhundert","tausend","million","milliarde","billion","billiarde"],d=["erste","erster","ersten","erstem","erstes","zweite","zweites","zweiter","zweitem","zweiten","dritte","dritter","drittes","dritten","drittem","vierter","vierten","viertem","viertes","vierte","fünfte","fünfter","fünftes","fünften","fünftem","fuenfte","fuenfter","fuenftem","fuenften","fuenftes","sechste","sechster","sechstes","sechsten","sechstem","siebte","siebter","siebten","siebtem","siebtes","achte","achter","achten","achtem","achtes","neunte","neunter","neuntes","neunten","neuntem","zehnte","zehnter","zehnten","zehntem","zehntes","elfte","elfter","elftes","elften","elftem","zwölfte","zwölfter","zwölften","zwölftem","zwölftes","zwoelfte","zwoelfter","zwoelften","zwoelftem","zwoelftes","dreizehnte","dreizehnter","dreizehntes","dreizehnten","dreizehntem","vierzehnte","vierzehnter","vierzehntes","vierzehnten","vierzehntem","fünfzehnte","fünfzehnten","fünfzehntem","fünfzehnter","fünfzehntes","fuenfzehnte","fuenfzehnten","fuenfzehntem","fuenfzehnter","fuenfzehntes","sechzehnte","sechzehnter","sechzehnten","sechzehntes","sechzehntem","siebzehnte","siebzehnter","siebzehntes","siebzehntem","siebzehnten","achtzehnter","achtzehnten","achtzehntem","achtzehntes","achtzehnte","nehnzehnte","nehnzehnter","nehnzehntem","nehnzehnten","nehnzehntes","zwanzigste","zwanzigster","zwanzigstem","zwanzigsten","zwanzigstes"],w=["ich","du","er","sie","es","wir","ihr"],m=["mich","dich","ihn","uns","euch"],f=["denen","deren","derer","dessen","diese","diesem","diesen","dieser","dieses","jene","jenem","jenen","jener","jenes","welch","welcher","welches","derjenige","desjenigen","demjenigen","denjenigen","diejenige","derjenigen","dasjenige","diejenigen"],p=["mein","meine","meinem","meiner","meines","meinen","dein","deine","deinem","deiner","deines","deinen","sein","seine","seinem","seiner","seines","ihre","ihrem","ihren","ihrer","ihres","unser","unsere","unserem","unseren","unserer","unseres","euer","eure","eurem","euren","eurer","eures","einanders"],k=["manche","manch","viele","viel","vieler","vielen","vielem","all","alle","aller","alles","allen","allem","allerlei","solcherlei","einige","etliche","wenige","weniger","wenigen","wenigem","weniges","wenig","wenigerer","wenigeren","wenigerem","wenigere","wenigeres","wenig","bisschen","paar","kein","keines","keinem","keinen","keine","mehr","genug","mehrere","mehrerer","mehreren","mehrerem","mehreres","verschiedene","verschiedener","verschiedenen","verschiedenem","verschiedenes","verschiedne","verschiedner","verschiednen","verschiednem","verschiednes","art","arten","sorte","sorten"],y=["sich"],z=["einander"],v=["andere","anderer","anderem","anderen","anderes","andren","andern","andrem","anderm","andre","andrer","andres","beide","beides","beidem","beider","beiden","etwas","irgendetwas","irgendein","irgendeinen","irgendeinem","irgendeines","irgendeine","irgendeiner","irgendwas","irgendwessen","irgendwer","irgendwen","irgendwem","irgendwelche","irgendwelcher","irgendwelchem","irgendwelchen","irgendwelches","irgendjemand","irgendjemanden","irgendjemandem","irgendjemandes","irgendwie","wer","wen","wem","wessen","was","welchen","welchem","welche","jeder","jedes","jedem","jeden","jede","jedweder","jedweden","jedwedem","jedwedes","jedwede","jeglicher","jeglichen","jeglichem","jegliches","jegliche","jedermann","jedermanns","jemand","jemanden","jemandem","jemands","jemandes","man","meinesgleichen","sämtlich","saemtlich","sämtlicher","saemtlicher","sämtlichen","saemtlichen","sämtlichem","saemtlichem","sämtliches","saemtliches","sämtliche","saemtliche","solche","solcher","solchen","solchem","solches","niemand","niemanden","niemandem","niemandes","niemands","nichts","zweiter"],E=["warum","wie","wo","woher","wohin","wann"],F=["dahinter","damit","daneben","daran","daraus","darin","darunter","darüber","darueber","davon","dazwischen","hieran","hierauf","hieraus","hierbei","hierfuer","hierfür","hiergegen","hierhinter","hierin","hiermit","hiernach","hierum","hierunter","hierueber","hierüber","hiervor","hierzwischen","hierneben","hiervon","wodurch","wofür","wofuer","wogegen","wohinter","womit","wonach","woneben","woran","worauf","woraus","worin","worum","worunter","worüber","worueber","wovon","wovor","wozu","wozwischen"],B=["hier","dorthin","hierher","dorther"],j=["allenfalls","keinesfalls","anderenfalls","andernfalls","andrenfalls","äußerstenfalls","bejahendenfalls","bestenfalls","eintretendenfalls","entgegengesetztenfalls","erforderlichenfalls","gegebenenfalls","geringstenfalls","gleichfalls","günstigenfalls","günstigstenfalls","höchstenfalls","möglichenfalls","notfalls","nötigenfalls","notwendigenfalls","schlimmstenfalls","vorkommendenfalls","zutreffendenfalls","keineswegs","durchwegs","geradenwegs","geradeswegs","geradewegs","gradenwegs","halbwegs","mittwegs","unterwegs"],x=["habe","hast","hat","habt","habest","habet","hatte","hattest","hatten","hätte","haette","hättest","haettest","hätten","haetten","haettet","hättet","hab","bin","bist","ist","sind","sei","seiest","seien","seiet","war","warst","waren","wart","wäre","waere","wärest","waerest","wärst","waerst","wären","waeren","wäret","waeret","wärt","waert","seid","darf","darfst","dürft","duerft","dürfe","duerfe","dürfest","duerfest","dürfet","duerfet","durfte","durftest","durften","durftet","dürfte","duerfte","dürftest","duerftest","dürften","duerften","dürftet","duerftet","kann","kannst","könnt","koennt","könne","koenne","könnest","koennest","könnet","koennet","konnte","konntest","konnten","konntet","könnte","koennte","könntest","koenntest","könnten","koennten","könntet","koenntet","mag","magst","mögt","moegt","möge","moege","mögest","moegest","möget","moeget","mochte","mochtest","mochten","mochtet","möchte","moechte","möchtest","moechtest","möchten","moechten","möchtet","moechtet","muss","muß","musst","mußt","müsst","muesst","müßt","mueßt","müsse","muesse","müssest","muessest","müsset","muesset","musste","mußte","musstest","mußtest","mussten","mußten","musstet","mußtet","müsste","muesste","müßte","mueßte","müsstest","muesstest","müßtest","mueßtest","müssten","muessten","müßten","mueßten","müsstet","muesstet","müßtet","mueßtet","soll","sollst","sollt","solle","sollest","sollet","sollte","solltest","sollten","solltet","will","willst","wollt","wolle","wollest","wollet","wollte","wolltest","wollten","wolltet","lasse","lässt","laesst","läßt","laeßt","lasst","laßt","lassest","lasset","ließ","ließest","ließt","ließen","ließe","ließet","liess","liessest","liesst","liessen","liesse","liesset"],A=["haben","dürfen","duerfen","können","koennen","mögen","moegen","müssen","muessen","sollen","wollen","lassen"],D=["bleibe","bleibst","bleibt","bleibest","bleibet","blieb","bliebst","bliebt","blieben","bliebe","bliebest","bliebet","heiße","heißt","heißest","heißet","heisse","heisst","heissest","heisset","hieß","hießest","hießt","hießen","hieße","hießet","hiess","hiessest","hiesst","hiessen","hiesse","hiesset","giltst","gilt","geltet","gelte","geltest","galt","galtest","galtst","galten","galtet","gälte","gaelte","gölte","goelte","gältest","gaeltest","göltest","goeltest","gälten","gaelten","gölten","goelten","gältet","gaeltet","göltet","goeltet","aussehe","aussiehst","aussieht","ausseht","aussehest","aussehet","aussah","aussahst","aussahen","aussaht","aussähe","aussaehe","aussähest","aussaehest","aussähst","aussaehst","aussähet","aussaehet","aussäht","aussaeht","aussähen","aussaehen","scheine","scheinst","scheint","scheinest","scheinet","schien","schienst","schienen","schient","schiene","schienest","schienet","erscheine","erscheinst","erscheint","erscheinest","erscheinet","erschien","erschienst","erschienen","erschient","erschiene","erschienest","erschienet"],S=["bleiben","heißen","heissen","gelten","aussehen","scheinen","erscheinen"],$=["a","à","ab","abseits","abzüglich","abzueglich","als","am","an","angelegentlich","angesichts","anhand","anlässlich","anlaesslich","ans","anstatt","anstelle","auf","aufs","aufseiten","aus","ausgangs","ausschließlich","ausschliesslich","außerhalb","ausserhalb","ausweislich","bar","behufs","bei","beidseits","beiderseits","beim","betreffs","bezüglich","bezueglich","binnen","bis","contra","dank","diesseits","durch","einbezüglich","einbezueglich","eingangs","eingedenk","einschließlich","einschliesslich","entgegen","entlang","exklusive","fern","fernab","fuer","für","fuers","fürs","gegen","gegenüber","gegenueber","gelegentlich","gemäß","gemaeß","gen","getreu","gleich","halber","hinsichtlich","hinter","hinterm","hinters","im","in","inklusive","inmitten","innerhalb","innert","ins","je","jenseits","kontra","kraft","längs","laengs","längsseits","laengsseits","laut","links","mangels","minus","mit","mithilfe","mitsamt","mittels","nach","nächst","naechst","nah","namens","neben","nebst","nördlich","noerdlich","nordöstlich","nordoestlich","nordwestlich","oberhalb","ohne","östlich","oestlich","per","plus","pro","quer","rechts","rücksichtlich","ruecksichtlich","samt","seitens","seitlich","seitwärts","seitwaerts","südlich","suedlich","südöstlich","suedoestlich","südwestlich","suedwestlich","über","ueber","überm","ueberm","übern","uebern","übers","uebers","um","ums","unbeschadet","unerachtet","unfern","unter","unterhalb","unterm","untern","unters","unweit","vermittels","vermittelst","vermöge","vermoege","via","vom","von","vonseiten","vor","vorbehaltlich","wegen","wider","zeit","zu","zugunsten","zulieb","zuliebe","zum","zur","zusätzlich","zusaetzlich","zuungunsten","zuwider","zuzüglich","zuzueglich","zwecks","zwischen"],C=["und","oder","umso"],R=["auch","noch","nur"],q=["nun","so","gleichwohl"],W=["sage","sagst","sagt","sagest","saget","sagte","sagtest","sagten","sagtet","gesagt","fragst","fragt","fragest","fraget","fragte","fragtest","fragten","fragtet","gefragt","erkläre","erklärst","erklärt","erklaere","erklaerst","erklaert","erklärte","erklärtest","erklärtet","erklärten","erklaerte","erklaertest","erklaertet","erklaerten","denke","denkst","denkt","denkest","denket","dachte","dachtest","dachten","dachtet","dächte","dächtest","dächten","dächtet","daechte","daechtest","daechten","daechtet","finde","findest","findet","gefunden"],T=["sagen","erklären","erklaeren","denken","finden"],P=["sehr","recht","überaus","ueberaus","ungemein","weitaus","einigermaßen","einigermassen","ganz","schwer","tierisch","ungleich","ziemlich","übelst","uebelst","stark","volkommen","durchaus","gar"],M=["geschienen","meinst","meint","meinest","meinet","meinte","meintest","meinten","meintet","gemeint","stehe","stehst","steht","gehe","gehst","geht","gegangen","ging","gingst","gingen","gingt"],O=["tun","machen","stehen","wissen","gehen","kommen"],U=["einerlei","egal","neu","neue","neuer","neuen","neues","neuem","neuerer","neueren","neuerem","neueres","neuere","neuester","neuster","neuesten","neusten","neuestem","neustem","neuestes","neustes","neueste","neuste","alt","alter","alten","altem","altes","alte","ältere","älteren","älterer","älteres","ältester","ältesten","ältestem","ältestes","älteste","aeltere","aelteren","aelterer","aelteres","aeltester","aeltesten","aeltestem","aeltestes","aelteste","gut","guter","gutem","guten","gutes","gute","besser","besserer","besseren","besserem","besseres","bester","besten","bestem","bestes","beste","größte","grösste","groß","großer","großen","großem","großes","große","großerer","großerem","großeren","großeres","großere","großter","großten","großtem","großtes","großte","gross","grosser","grossen","grossem","grosses","grosse","grosserer","grosserem","grosseren","grosseres","grossere","grosster","grossten","grosstem","grosstes","grosste","einfacher","einfachen","einfachem","einfaches","einfache","einfacherer","einfacheren","einfacherem","einfacheres","einfachere","einfachste","einfachster","einfachsten","einfachstes","einfachstem","schnell","schneller","schnellen","schnellem","schnelles","schnelle","schnellere","schnellerer","schnelleren","schnelleres","schnellerem","schnellster","schnellste","schnellsten","schnellstem","schnellstes","weit","weiten","weitem","weites","weiterer","weiteren","weiterem","weiteres","weitere","weitester","weitesten","weitestem","weitestes","weiteste","eigen","eigener","eigenen","eigenes","eigenem","eigene","eigenerer","eignerer","eigeneren","eigneren","eigenerem","eignerem","eigeneres","eigneres","eigenere","eignere","eigenster","eigensten","eigenstem","eigenstes","eigenste","wenigster","wenigsten","wenigstem","wenigstes","wenigste","minderer","minderen","minderem","mindere","minderes","mindester","mindesten","mindestes","mindestem","mindeste","lang","langer","langen","langem","langes","längerer","längeren","längerem","längeres","längere","längster","längsten","längstem","längstes","längste","laengerer","laengeren","laengerem","laengeres","laengere","laengster","laengsten","laengstem","laengstes","laengste","tief","tiefer","tiefen","tiefem","tiefes","tiefe","tieferer","tieferen","tieferem","tieferes","tiefere","tiefster","tiefsten","tiefstem","tiefste","tiefstes","hoch","hoher","hohen","hohem","hohes","hohe","höher","höherer","höhere","höheren","höherem","höheres","hoeherer","hoehere","hoeheren","hoeherem","hoeheres","höchster","höchste","höchsten","höchstem","höchstes","hoechster","hoechste","hoechsten","hoechstem","hoechstes","regulär","regulärer","regulären","regulärem","reguläres","reguläre","regulaer","regulaerer","regulaeren","regulaerem","regulaeres","regulaere","regulärerer","reguläreren","regulärerem","reguläreres","regulärere","regulaererer","regulaereren","regulaererem","regulaereres","regulaerere","regulärster","regulärsten","regulärstem","regulärstes","regulärste","regulaerster","regulaersten","regulaerstem","regulaerstes","regulaerste","normal","normaler","normalen","normalem","normales","normale","normalerer","normaleren","normalerem","normaleres","normalere","normalster","normalsten","normalstem","normalstes","normalste","klein","kleiner","kleinen","kleinem","kleines","kleine","kleinerer","kleineres","kleineren","kleinerem","kleinere","kleinster","kleinsten","kleinstem","kleinstes","kleinste","winzig","winziger","winzigen","winzigem","winziges","winzigerer","winzigeren","winzigerem","winzigeres","winzigere","winzigster","winzigsten","winzigstem","winzigste","winzigstes","sogenannt","sogenannter","sogenannten","sogenanntem","sogenanntes","sogenannte","kurz","kurzer","kurzen","kurzem","kurzes","kurze","kürzerer","kürzeres","kürzeren","kürzerem","kürzere","kuerzerer","kuerzeres","kuerzeren","kuerzerem","kuerzere","kürzester","kürzesten","kürzestem","kürzestes","kürzeste","kuerzester","kuerzesten","kuerzestem","kuerzestes","kuerzeste","wirklicher","wirklichen","wirklichem","wirkliches","wirkliche","wirklicherer","wirklicheren","wirklicherem","wirklicheres","wirklichere","wirklichster","wirklichsten","wirklichstes","wirklichstem","wirklichste","eigentlicher","eigentlichen","eigentlichem","eigentliches","eigentliche","schön","schöner","schönen","schönem","schönes","schöne","schönerer","schöneren","schönerem","schöneres","schönere","schönster","schönsten","schönstem","schönstes","schönste","real","realer","realen","realem","reales","realerer","realeren","realerem","realeres","realere","realster","realsten","realstem","realstes","realste","derselbe","denselben","demselben","desselben","dasselbe","dieselbe","derselben","dieselben","gleicher","gleichen","gleichem","gleiches","gleiche","gleicherer","gleicheren","gleicherem","gleicheres","gleichere","gleichster","gleichsten","gleichstem","gleichstes","gleichste","bestimmter","bestimmten","bestimmtem","bestimmtes","bestimmte","bestimmtere","bestimmterer","bestimmterem","bestimmteren","bestimmteres","bestimmtester","bestimmtesten","bestimmtestem","bestimmtestes","bestimmteste","überwiegend","ueberwiegend","zumeist","meistens","meisten","meiste","meistem","meistes","großenteils","grossenteils","meistenteils","weithin","ständig","staendig","laufend","dauernd","andauernd","immerfort","irgendwo","irgendwann","ähnlicher","ähnlichen","ähnlichem","ähnliches","ähnliche","ähnlich","ähnlicherer","ähnlicheren","ähnlicherem","ähnlicheres","ähnlichere","ähnlichster","ähnlichsten","ähnlichstem","ähnlichstes","ähnlichste","schlecht","schlechter","schlechten","schlechtem","schlechtes","schlechte","schlechterer","schlechteren","schlechterem","schlechteres","schlechtere","schlechtester","schlechtesten","schlechtestem","schlechtestes","schlechteste","schlimm","schlimmer","schlimmen","schlimmem","schlimmes","schlimme","schlimmerer","schlimmeren","schlimmerem","schlimmeres","schlimmere","schlimmster","schlimmsten","schlimmstem","schlimmstes","schlimmste","toll","toller","tollen","tollem","tolles","tolle","tollerer","tolleren","tollerem","tollere","tolleres","tollster","tollsten","tollstem","tollstes","tollste","super","mögliche","möglicher","mögliches","möglichen","möglichem","möglich","moegliche","moeglicher","moegliches","moeglichen","moeglichem","moeglich","nächsten","nächster","nächstem","nächste","nächstes","naechsten","voll","voller","vollen","vollem","volle","volles","vollerer","volleren","vollerem","vollere","volleres","vollster","vollsten","vollstem","vollste","vollstes","außen","ganzer","ganzen","ganzem","ganze","ganzes","gern","gerne","oben","unten","zurück","zurueck","nicht","eher","ehere","eherem","eheren","eheres","eheste","ehestem","ehensten","ehesten"],I=["ach","aha","oh","au","bäh","baeh","igitt","huch","hurra","hoppla","nanu","oha","olala","pfui","tja","uups","wow","grr","äh","aeh","ähm","aehm","öhm","oehm","hm","mei","mhm","okay","richtig","eijeijeijei"],N=["g","el","tl","wg","be","bd","cl","dl","dag","do","gl","gr","kg","kl","cb","ccm","l","ms","mg","ml","mi","pk","pr","pp","sc","sp","st","sk","ta","tr","cm","mass"],V=["sekunde","sekunden","minute","minuten","stunde","stunden","uhr","tag","tages","tags","tage","tagen","woche","wochen","monat","monate","monates","monats","monaten","jahr","jahres","jahrs","jahre","jahren","morgens","mittags","abends","nachts","heute","gestern","morgen","vorgestern","übermorgen","uebermorgen"],L=["ding","dinge","dinges","dinger","dingern","dingen","sache","sachen","weise","weisen","wahrscheinlichkeit","zeug","zeuge","zeuges","zeugen","mal","einmal","teil","teile","teiles","teilen","prozent","prozents","prozentes","prozente","prozenten","beispiel","beispiele","beispieles","beispiels","beispielen","aspekt","aspekte","aspektes","aspekts","aspekten","idee","ideen","ahnung","ahnungen","thema","themas","themata","themen","fall","falle","falles","fälle","fällen","faelle","faellen","mensch","menschen","leute"],_=["nix","nixe","nixes","nixen","usw.","amen","ja","nein","euro"],H=(g([].concat(A,a,O,S,T)),g([].concat(d,U)),g([].concat(o,$,C,f,P,k)),g([].concat(b,j,w,m,["mir","dir","ihm","ihnen"],y,I,c,D,W,x,h,M,v,R,q,E,B,_,F,N,V,L,z,p)),g([].concat(o,c,d,f,p,y,z,w,m,k,v,E,F,B,j,h,a,x,A,D,S,$,C,R,q,W,T,b,["etwa","absolut","unbedingt","wieder","definitiv","bestimmt","immer","äußerst","aeußerst","höchst","hoechst","sofort","augenblicklich","umgehend","direkt","unmittelbar","nämlich","naemlich","natürlich","natuerlich","besonders","hauptsächlich","hauptsaechlich","jetzt","eben","heutzutage","eindeutig","wirklich","echt","wahrhaft","ehrlich","aufrichtig","wahrheitsgemäß","letztlich","einmalig","unübertrefflich","normalerweise","gewöhnlich","gewoehnlich","üblicherweise","ueblicherweise","sonst","fast","nahezu","beinahe","knapp","annähernd","annaehernd","geradezu","bald","vielleicht","wahrscheinlich","wohl","voraussichtlich","zugegeben","ursprünglich","insgesamt","tatsächlich","eigentlich","wahrhaftig","bereits","schon","oft","häufig","haeufig","regelmäßig","regelmaeßig","gleichmäßig","gleichmaeßig","einfach","lediglich","bloß","bloss","halt","wahlweise","eventuell","manchmal","teilweise","nie","niemals","nimmer","jemals","allzeit","irgendeinmal","anders","momentan","gegenwärtig","gegenwaertig","nebenbei","anderswo","woanders","anderswohin","anderorts","insbesondere","namentlich","sonderlich","ausdrücklich","ausdruecklich","vollends","kürzlich","kuerzlich","jüngst","juengst","unlängst","unlaengst","neuerdings","neulich","letztens","neuerlich","verhältnismäßig","verhaeltnismaessig","deutlich","klar","offenbar","anscheinend","genau","u.a","damals","zumindest"],P,M,O,I,U,N,L,_,V,["fr","hr","dr","prof"],["jr","jun","sen","sr"]))),G=[":","aber","als","bevor","bis","da","damit","daß","dass","denn","doch","ehe","falls","gleichwohl","indem","indes","indessen","insofern","insoweit","nachdem","nun","ob","obgleich","obschon","obwohl","obzwar","oder","seitdem","sobald","sodass","sofern","solange","sondern","sooft","soviel","soweit","sowie","trotz","und","ungeachtet","waehrend","während","weil","welche","welchem","welchen","welcher","welches","wem","wen","wenn","wenngleich","wennschon","wer","wes","wessen","wie","wiewohl","wohingegen","zumal"],Z=[["anstatt","dass"],["bald","bald"],["dadurch","dass"],["dessen ungeachtet","dass"],["entweder","oder"],["einerseits","andererseits"],["erst","wenn"],["je","desto"],["je","umso"],["umso","umso"],["mal","mal"],["nicht nur","sondern auch"],["ob","oder"],["ohne","dass"],["so","dass"],["sowohl","als auch"],["sowohl","wie auch"],["teils","teils"],["unbeschadet dessen","dass"],["weder","noch"],["wenn","auch"],["wenn","schon"],["nicht weil","sondern"]],Q=JSON.parse('{"vowels":"aeiouyäöüáéâàèîêâûôœ","deviations":{"vowels":[{"fragments":["ouil","deaux","deau$","oard","äthiop","euil","veau","eau$","ueue","lienisch","ance$","ence$","time$","once$","ziat","guette","ête","ôte$","[hp]omme$","[qdscn]ue$","aire$","ture$","êpe$","[^q]ui$","tiche$","vice$","oile$","zial","cruis","leas","coa[ct]","[^i]deal","[fw]eat","[lsx]ed$"],"countModifier":-1},{"fragments":["aau","a[äöüo]","äue","äeu","aei","aue","aeu","ael","ai[aeo]","saik","aismus","ä[aeoi]","auä","éa","e[äaoö]","ei[eo]","ee[aeiou]","eu[aäe]","eum$","eü","o[aäöü]","poet","oo[eo]","oie","oei[^l]","oeu[^f]","öa","[fgrz]ieu","mieun","tieur","ieum","i[aiuü]","[^l]iä","[^s]chien","io[bcdfhjkmpqtuvwx]","[bdhmprv]ion","[lr]ior","[^g]io[gs]","[dr]ioz","elioz","zioni","bio[lnorz]","iö[^s]","ie[ei]","rier$","öi[eg]","[^r]öisch","[^gqv]u[aeéioöuü]","quie$","quie[^s]","uäu","^us-","^it-","üe","naiv","aisch$","aische$","aische[nrs]$","[lst]ien","dien$","gois","[^g]rient","[aeiou]y[aeiou]","byi","yä","[a-z]y[ao]","yau","koor","scient","eriel","[dg]oing"],"countModifier":1},{"fragments":["eauü","ioi","ioo","ioa","iii","oai","eueu"],"countModifier":1}],"words":{"full":[{"word":"beach","syllables":1},{"word":"beat","syllables":1},{"word":"beau","syllables":1},{"word":"beaune","syllables":1},{"word":"belle","syllables":1},{"word":"bouche","syllables":1},{"word":"brake","syllables":1},{"word":"cache","syllables":1},{"word":"chaiselongue","syllables":2},{"word":"choke","syllables":1},{"word":"cordiale","syllables":3},{"word":"core","syllables":1},{"word":"dope","syllables":1},{"word":"eat","syllables":1},{"word":"eye","syllables":1},{"word":"fake","syllables":1},{"word":"fame","syllables":1},{"word":"fatigue","syllables":2},{"word":"femme","syllables":1},{"word":"force","syllables":1},{"word":"game","syllables":1},{"word":"games","syllables":1},{"word":"gate","syllables":1},{"word":"grande","syllables":1},{"word":"ice","syllables":1},{"word":"ion","syllables":2},{"word":"joke","syllables":1},{"word":"jupe","syllables":1},{"word":"maisch","syllables":1},{"word":"maische","syllables":2},{"word":"move","syllables":1},{"word":"native","syllables":2},{"word":"nice","syllables":1},{"word":"one","syllables":1},{"word":"pipe","syllables":1},{"word":"prime","syllables":1},{"word":"rate","syllables":1},{"word":"rhythm","syllables":2},{"word":"ride","syllables":1},{"word":"rides","syllables":1},{"word":"rien","syllables":2},{"word":"save","syllables":1},{"word":"science","syllables":2},{"word":"siècle","syllables":1},{"word":"site","syllables":1},{"word":"suite","syllables":1},{"word":"take","syllables":1},{"word":"taupe","syllables":1},{"word":"universe","syllables":3},{"word":"vogue","syllables":1},{"word":"wave","syllables":1},{"word":"zion","syllables":2}],"fragments":{"global":[{"word":"abreaktion","syllables":4},{"word":"adware","syllables":2},{"word":"affaire","syllables":3},{"word":"aiguière","syllables":2},{"word":"anisette","syllables":3},{"word":"appeal","syllables":2},{"word":"backstage","syllables":2},{"word":"bankrate","syllables":2},{"word":"baseball","syllables":2},{"word":"basejump","syllables":2},{"word":"beachcomber","syllables":3},{"word":"beachvolleyball","syllables":4},{"word":"beagle","syllables":2},{"word":"beamer","syllables":2},{"word":"beamer","syllables":2},{"word":"béarnaise","syllables":3},{"word":"beaufort","syllables":2},{"word":"beaujolais","syllables":3},{"word":"beauté","syllables":2},{"word":"beauty","syllables":2},{"word":"belgier","syllables":3},{"word":"bestien","syllables":2},{"word":"biskuit","syllables":2},{"word":"bleach","syllables":1},{"word":"blue","syllables":1},{"word":"board","syllables":1},{"word":"boat","syllables":1},{"word":"bodysuit","syllables":3},{"word":"bordelaise","syllables":3},{"word":"break","syllables":1},{"word":"build","syllables":1},{"word":"bureau","syllables":2},{"word":"business","syllables":2},{"word":"cabrio","syllables":3},{"word":"cabriolet","syllables":4},{"word":"cachesexe","syllables":2},{"word":"camaieu","syllables":3},{"word":"canyon","syllables":2},{"word":"case","syllables":1},{"word":"catsuit","syllables":2},{"word":"centime","syllables":3},{"word":"chaise","syllables":2},{"word":"champion","syllables":2},{"word":"championat","syllables":3},{"word":"chapiteau","syllables":3},{"word":"chateau","syllables":2},{"word":"château","syllables":2},{"word":"cheat","syllables":1},{"word":"cheese","syllables":1},{"word":"chihuahua","syllables":3},{"word":"choice","syllables":1},{"word":"circonflexe","syllables":3},{"word":"clean","syllables":1},{"word":"cloche","syllables":1},{"word":"close","syllables":1},{"word":"clothes","syllables":1},{"word":"commerce","syllables":2},{"word":"crime","syllables":1},{"word":"crossrate","syllables":2},{"word":"cuisine","syllables":2},{"word":"culotte","syllables":2},{"word":"death","syllables":1},{"word":"defense","syllables":2},{"word":"détente","syllables":2},{"word":"dread","syllables":1},{"word":"dream","syllables":1},{"word":"dresscode","syllables":2},{"word":"dungeon","syllables":2},{"word":"easy","syllables":2},{"word":"engagement","syllables":3},{"word":"entente","syllables":2},{"word":"eye-catcher","syllables":3},{"word":"eyecatcher","syllables":3},{"word":"eyeliner","syllables":3},{"word":"eyeword","syllables":2},{"word":"fashion","syllables":2},{"word":"feature","syllables":2},{"word":"ferien","syllables":3},{"word":"fineliner","syllables":3},{"word":"fisheye","syllables":2},{"word":"flake","syllables":1},{"word":"flambeau","syllables":2},{"word":"flatrate","syllables":2},{"word":"fleece","syllables":1},{"word":"fraîche","syllables":1},{"word":"freak","syllables":1},{"word":"frites","syllables":1},{"word":"future","syllables":2},{"word":"gaelic","syllables":2},{"word":"game-show","syllables":2},{"word":"gameboy","syllables":2},{"word":"gamepad","syllables":2},{"word":"gameplay","syllables":2},{"word":"gameport","syllables":2},{"word":"gameshow","syllables":2},{"word":"garigue","syllables":2},{"word":"garrigue","syllables":2},{"word":"gatefold","syllables":2},{"word":"gateway","syllables":2},{"word":"geflashed","syllables":2},{"word":"georgier","syllables":4},{"word":"goal","syllables":1},{"word":"grapefruit","syllables":2},{"word":"great","syllables":1},{"word":"groupware","syllables":2},{"word":"gueule","syllables":1},{"word":"guide","syllables":1},{"word":"guilloche","syllables":2},{"word":"gynäzeen","syllables":4},{"word":"gynözeen","syllables":4},{"word":"haircare","syllables":2},{"word":"hardcore","syllables":2},{"word":"hardware","syllables":2},{"word":"head","syllables":1},{"word":"hearing","syllables":2},{"word":"heart","syllables":1},{"word":"heavy","syllables":2},{"word":"hedge","syllables":1},{"word":"heroin","syllables":3},{"word":"inclusive","syllables":3},{"word":"initiative","syllables":4},{"word":"inside","syllables":2},{"word":"jaguar","syllables":3},{"word":"jalousette","syllables":3},{"word":"jeans","syllables":1},{"word":"jeunesse","syllables":2},{"word":"juice","syllables":1},{"word":"jukebox","syllables":2},{"word":"jumpsuit","syllables":2},{"word":"kanarien","syllables":4},{"word":"kapriole","syllables":4},{"word":"karosserielinie","syllables":6},{"word":"konopeen","syllables":4},{"word":"lacrosse","syllables":2},{"word":"laplace","syllables":2},{"word":"late-","syllables":1},{"word":"lead","syllables":1},{"word":"league","syllables":1},{"word":"learn","syllables":1},{"word":"légière","syllables":2},{"word":"lizenziat","syllables":4},{"word":"load","syllables":1},{"word":"lotterielos","syllables":4},{"word":"lounge","syllables":1},{"word":"lyzeen","syllables":3},{"word":"madame","syllables":2},{"word":"mademoiselle","syllables":3},{"word":"magier","syllables":3},{"word":"make-up","syllables":2},{"word":"malware","syllables":2},{"word":"management","syllables":3},{"word":"manteau","syllables":2},{"word":"mausoleen","syllables":4},{"word":"mauve","syllables":1},{"word":"medien","syllables":3},{"word":"mesdames","syllables":2},{"word":"mesopotamien","syllables":6},{"word":"milliarde","syllables":3},{"word":"missile","syllables":2},{"word":"miszellaneen","syllables":5},{"word":"mousse","syllables":1},{"word":"mousseline","syllables":3},{"word":"museen","syllables":3},{"word":"musette","syllables":2},{"word":"nahuatl","syllables":2},{"word":"noisette","syllables":2},{"word":"notebook","syllables":2},{"word":"nuance","syllables":3},{"word":"nuklease","syllables":4},{"word":"odeen","syllables":3},{"word":"offline","syllables":2},{"word":"offside","syllables":2},{"word":"oleaster","syllables":4},{"word":"on-stage","syllables":2},{"word":"online","syllables":2},{"word":"orpheen","syllables":3},{"word":"parforceritt","syllables":3},{"word":"patiens","syllables":2},{"word":"patient","syllables":2},{"word":"peace","syllables":1},{"word":"peace","syllables":1},{"word":"peanuts","syllables":2},{"word":"people","syllables":2},{"word":"perineen","syllables":4},{"word":"peritoneen","syllables":5},{"word":"picture","syllables":2},{"word":"piece","syllables":1},{"word":"pipeline","syllables":2},{"word":"plateau","syllables":2},{"word":"poesie","syllables":3},{"word":"poleposition","syllables":4},{"word":"portemanteau","syllables":3},{"word":"portemonnaie","syllables":3},{"word":"primerate","syllables":2},{"word":"primerate","syllables":2},{"word":"primetime","syllables":2},{"word":"protease","syllables":4},{"word":"protein","syllables":3},{"word":"prytaneen","syllables":4},{"word":"quotient","syllables":2},{"word":"radio","syllables":3},{"word":"reader","syllables":2},{"word":"ready","syllables":2},{"word":"reallife","syllables":2},{"word":"repeat","syllables":2},{"word":"retake","syllables":2},{"word":"rigole","syllables":2},{"word":"risolle","syllables":2},{"word":"road","syllables":1},{"word":"roaming","syllables":2},{"word":"roquefort","syllables":2},{"word":"safe","syllables":1},{"word":"savonette","syllables":3},{"word":"sciencefiction","syllables":3},{"word":"search","syllables":1},{"word":"selfmade","syllables":2},{"word":"septime","syllables":3},{"word":"serapeen","syllables":4},{"word":"service","syllables":2},{"word":"serviette","syllables":2},{"word":"share","syllables":1},{"word":"shave","syllables":1},{"word":"shore","syllables":1},{"word":"sidebar","syllables":2},{"word":"sideboard","syllables":2},{"word":"sidekick","syllables":2},{"word":"silhouette","syllables":3},{"word":"sitemap","syllables":2},{"word":"slide","syllables":1},{"word":"sneak","syllables":1},{"word":"soap","syllables":1},{"word":"softcore","syllables":2},{"word":"software","syllables":2},{"word":"soutanelle","syllables":3},{"word":"speak","syllables":1},{"word":"special","syllables":2},{"word":"spracheinstellung","syllables":5},{"word":"spyware","syllables":2},{"word":"square","syllables":1},{"word":"stagediving","syllables":3},{"word":"stakeholder","syllables":3},{"word":"statement","syllables":2},{"word":"steady","syllables":2},{"word":"steak","syllables":1},{"word":"stealth","syllables":1},{"word":"steam","syllables":1},{"word":"stoned","syllables":1},{"word":"stracciatella","syllables":4},{"word":"stream","syllables":1},{"word":"stride","syllables":1},{"word":"strike","syllables":1},{"word":"suitcase","syllables":2},{"word":"sweepstake","syllables":2},{"word":"t-bone","syllables":2},{"word":"t-shirt","syllables":1},{"word":"tailgate","syllables":2},{"word":"take-off","syllables":2},{"word":"take-over","syllables":3},{"word":"takeaway","syllables":3},{"word":"takeoff","syllables":2},{"word":"takeover","syllables":3},{"word":"throat","syllables":1},{"word":"time-out","syllables":2},{"word":"timelag","syllables":2},{"word":"timeline","syllables":2},{"word":"timesharing","syllables":3},{"word":"toast","syllables":1},{"word":"traubenmaische","syllables":4},{"word":"tristesse","syllables":2},{"word":"usenet","syllables":2},{"word":"varietät","syllables":4},{"word":"varieté","syllables":4},{"word":"vinaigrette","syllables":3},{"word":"vintage","syllables":2},{"word":"violett","syllables":3},{"word":"voice","syllables":1},{"word":"wakeboard","syllables":2},{"word":"washed","syllables":1},{"word":"waveboard","syllables":2},{"word":"wear","syllables":1},{"word":"wear","syllables":1},{"word":"website","syllables":2},{"word":"white","syllables":1},{"word":"widescreen","syllables":2},{"word":"wire","syllables":1},{"word":"yacht","syllables":1},{"word":"yorkshire","syllables":2},{"word":"éprouvette","syllables":3,"notFollowedBy":["n"]},{"word":"galette","syllables":2,"notFollowedBy":["n"]},{"word":"gigue","syllables":1,"notFollowedBy":["n"]},{"word":"groove","syllables":1,"notFollowedBy":["n"]},{"word":"morgue","syllables":1,"notFollowedBy":["n"]},{"word":"paillette","syllables":2,"notFollowedBy":["n"]},{"word":"raclette","syllables":2,"notFollowedBy":["n"]},{"word":"roulette","syllables":2,"notFollowedBy":["n"]},{"word":"spike","syllables":1,"notFollowedBy":["n"]},{"word":"style","syllables":1,"notFollowedBy":["n"]},{"word":"tablette","syllables":2,"notFollowedBy":["n"]},{"word":"grunge","syllables":1,"notFollowedBy":["r"]},{"word":"size","syllables":1,"notFollowedBy":["r"]},{"word":"value","syllables":1,"notFollowedBy":["r"]},{"word":"quiche","syllables":1,"notFollowedBy":["s"]},{"word":"house","syllables":1,"notFollowedBy":["n","s"]},{"word":"sauce","syllables":1,"notFollowedBy":["n","s"]},{"word":"space","syllables":1,"notFollowedBy":["n","s"]},{"word":"airline","syllables":2,"notFollowedBy":["n","r"]},{"word":"autosave","syllables":3,"notFollowedBy":["n","r"]},{"word":"bagpipe","syllables":2,"notFollowedBy":["n","r"]},{"word":"bike","syllables":1,"notFollowedBy":["n","r"]},{"word":"dance","syllables":1,"notFollowedBy":["n","r"]},{"word":"deadline","syllables":2,"notFollowedBy":["n","r"]},{"word":"halfpipe","syllables":2,"notFollowedBy":["n","r"]},{"word":"headline","syllables":2,"notFollowedBy":["n","r"]},{"word":"home","syllables":1,"notFollowedBy":["n","r"]},{"word":"hornpipe","syllables":2,"notFollowedBy":["n","r"]},{"word":"hotline","syllables":2,"notFollowedBy":["n","r"]},{"word":"infoline","syllables":3,"notFollowedBy":["n","r"]},{"word":"inline","syllables":2,"notFollowedBy":["n","r"]},{"word":"kite","syllables":1,"notFollowedBy":["n","r"]},{"word":"rollerblade","syllables":1,"notFollowedBy":["n","r"]},{"word":"score","syllables":1,"notFollowedBy":["n","r"]},{"word":"skyline","syllables":2,"notFollowedBy":["n","r"]},{"word":"slackline","syllables":2,"notFollowedBy":["n","r"]},{"word":"slice","syllables":1,"notFollowedBy":["n","r","s"]},{"word":"snooze","syllables":1,"notFollowedBy":["n","r"]},{"word":"storyline","syllables":3,"notFollowedBy":["n","r"]},{"word":"office","syllables":2,"notFollowedBy":["s","r"]},{"word":"space","syllables":1,"notFollowedBy":["n","s","r"]},{"word":"tease","syllables":1,"notFollowedBy":["n","s","r"]},{"word":"cache","syllables":1,"notFollowedBy":["t"]}],"atBeginningOrEnd":[{"word":"case","syllables":1},{"word":"life","syllables":1},{"word":"teak","syllables":1},{"word":"team","syllables":1},{"word":"creme","syllables":1,"notFollowedBy":["n","r"]},{"word":"crème","syllables":1,"notFollowedBy":["n","r"]},{"word":"drive","syllables":1,"notFollowedBy":["n","r"]},{"word":"skate","syllables":1,"notFollowedBy":["n","r"]},{"word":"update","syllables":2,"notFollowedBy":["n","r"]},{"word":"upgrade","syllables":2,"notFollowedBy":["n","r"]}],"atBeginning":[{"word":"anion","syllables":3},{"word":"facelift","syllables":2},{"word":"jiu","syllables":1},{"word":"pace","syllables":1},{"word":"shake","syllables":1},{"word":"tea","syllables":1},{"word":"trade","syllables":1},{"word":"deal","syllables":1}],"atEnd":[{"word":"face","syllables":1},{"word":"file","syllables":1},{"word":"mousse","syllables":1},{"word":"plate","syllables":1},{"word":"tape","syllables":1},{"word":"byte","syllables":1,"alsoFollowedBy":["s"]},{"word":"cape","syllables":1,"alsoFollowedBy":["s"]},{"word":"five","syllables":1,"alsoFollowedBy":["s"]},{"word":"hype","syllables":1,"alsoFollowedBy":["s"]},{"word":"leak","syllables":1,"alsoFollowedBy":["s"]},{"word":"like","syllables":1,"alsoFollowedBy":["s"]},{"word":"make","syllables":1,"alsoFollowedBy":["s"]},{"word":"phone","syllables":1,"alsoFollowedBy":["s"]},{"word":"rave","syllables":1,"alsoFollowedBy":["s"]},{"word":"regime","syllables":2,"alsoFollowedBy":["s"]},{"word":"statue","syllables":2,"alsoFollowedBy":["s"]},{"word":"store","syllables":1,"alsoFollowedBy":["s"]},{"word":"wave","syllables":1,"alsoFollowedBy":["s"]},{"word":"date","syllables":1,"notFollowedBy":["n"]},{"word":"image","syllables":2,"notFollowedBy":["s"]}]}}}}'),J={productPages:{parameters:{recommendedMinimum:3,recommendedMaximum:6,acceptableMaximum:7,acceptableMinimum:1}}},Y=window.lodash;var K=r(429),X=r.n(K);const ee=new RegExp("["+["'","‘","’","‛","`","‹","›"].join("")+"]","g");function te(e){return function(e){return e.replace(/[“”〝〞〟‟„『』«»]/g,'"')}(function(e){return e.replace(ee,"'")}(e))}const re=["address","article","aside","blockquote","canvas","dd","div","dl","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","noscript","ol","output","p","pre","section","table","tfoot","ul","video"],se=["b","big","i","small","tt","abbr","acronym","cite","code","dfn","em","kbd","strong","samp","time","var","a","bdo","br","img","map","object","q","script","span","sub","sup","button","input","label","select","textarea"],ne=(new RegExp("^("+re.join("|")+")$","i"),new RegExp("^("+se.join("|")+")$","i"),new RegExp("^<("+re.join("|")+")[^>]*?>$","i")),le=new RegExp("^]*?>$","i"),ae=new RegExp("^<("+se.join("|")+")[^>]*>$","i"),ie=new RegExp("^]*>$","i"),be=/^<([^>\s/]+)[^>]*>$/,ue=/^<\/([^>\s]+)[^>]*>$/,ge=/^[^<]+$/,he=/^<[^><]*$/,oe=//g;let ce,de=[];(0,Y.memoize)((function(e){const t=[];let r=0,s="",n="",l="";return e=e.replace(oe,""),de=[],ce=X()((function(e){de.push(e)})),ce.addRule(ge,"content"),ce.addRule(he,"greater-than-sign-content"),ce.addRule(ne,"block-start"),ce.addRule(le,"block-end"),ce.addRule(ae,"inline-start"),ce.addRule(ie,"inline-end"),ce.addRule(be,"other-element-start"),ce.addRule(ue,"other-element-end"),ce.onText(e),ce.end(),(0,Y.forEach)(de,(function(e,a){const i=de[a+1];switch(e.type){case"content":case"greater-than-sign-content":case"inline-start":case"inline-end":case"other-tag":case"other-element-start":case"other-element-end":case"greater than sign":i&&(0!==r||"block-start"!==i.type&&"block-end"!==i.type)?n+=e.src:(n+=e.src,t.push(n),s="",n="",l="");break;case"block-start":0!==r&&(""!==n.trim()&&t.push(n),n="",l=""),r++,s=e.src;break;case"block-end":r--,l=e.src,""!==s&&""!==l?t.push(s+n+l):""!==n.trim()&&t.push(n),s="",n="",l=""}r<0&&(r=0)})),t})),new RegExp("^<("+re.join("|")+")[^>]*?>","i"),new RegExp("]*?>$","i");const we=new RegExp("^[.]$"),me=/^<[^><]*$/,fe=/^<([^>\s/]+)[^>]*>$/im,pe=/^<\/([^>\s]+)[^>]*>$/im,ke=/^\s*[[({]\s*$/,ye=/^\s*[\])}]\s*$/,ze=function(e,t=!1,r="",s=!1){const n="("+(e=(0,Y.map)(e,(function(e){return s&&(e=function(e){const t=[{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}];for(let r=0;r]+)>)/gi," "))}(function(e){return function(e){return e.replace(/\s/g," ")}(e=function(e){return e.replace(/\u2014/g," ")}(e=function(e){return e.replace(/ /g," ")}(e)))}(e)),t?e:function(e,t=!1,r="",s=""){let n,l;return n="id"===s?'[ \\u00a0\\n\\r\\t.,()”“〝〞〟‟„"+;!¡?¿:/»«‹›'+r+"<>":'[ \\u00a0\\u2014\\u06d4\\u061f\\u060C\\u061B\\n\\r\\t.,()”“〝〞〟‟„"+\\-;!¡?¿:/»«‹›'+r+"<>",l=t?"($|((?="+n+"]))|((['‘’‛`])("+n+"])))":"($|("+n+"])|((['‘’‛`])("+n+"])))","(^|"+n+"'‘’‛`])"+e+l}(e,!0,r)}))).join(")|(")+")";return new RegExp(n,"ig")}(["A.D.","Adm.","Adv.","B.C.","Br.","Brig.","Cmrd.","Col.","Cpl.","Cpt.","Dr.","Esq.","Fr.","Gen.","Gov.","Hon.","Jr.","Lieut.","Lt.","Maj.","Mr.","Mrs.","Ms.","Msgr.","Mx.","No.","Pfc.","Pr.","Prof.","Pvt.","Rep.","Reps.","Rev.","Rt. Hon.","Sen.","Sens.","Sgt.","Sps.","Sr.","St.","vs.","i.e.","e.g.","viz.","Mt."].map((e=>e.replace(".","\\.")))),ve="(^|$|["+[" ","\\n","\\r","\\t"," ","۔","؟","،","؛"," ",".",",","'","(",")",'"',"+","-",";","!","?",":","/","»","«","‹","›","<",">","”","“","〝","〞","〟","‟","„"].map((e=>"\\"+e)).join("")+"])",Ee=new RegExp(ve+"[A-Za-z]$"),Fe=/<\/?([^\s]+?)(\s|>)/,Be=["p","div","h1","h2","h3","h4","h5","h6","span","li","main"];class je{constructor(){this.sentenceDelimiters='”〞〟„』›»’‛`"?!…۔؟'}getSentenceDelimiters(){return this.sentenceDelimiters}isNumber(e){return!(0,Y.isNaN)(parseInt(e,10))}isBreakTag(e){return/<\/?br/.test(e)}isQuotation(e){return"'"===(e=te(e))||'"'===e}endsWithOrdinalDot(){return!1}isPunctuation(e){return"¿"===e||"¡"===e}removeDuplicateWhitespace(e){return e.replace(/\s+/," ")}isCapitalLetter(e){return e!==e.toLocaleLowerCase()}isSmallerThanSign(e){return"<"===e}getNextTwoCharacters(e){let t="";return(0,Y.isUndefined)(e[0])||(t+=e[0].src),(0,Y.isUndefined)(e[1])||(t+=e[1].src),t=this.removeDuplicateWhitespace(t),t}isLetterFromSpecificLanguage(e){return[/^[\u0590-\u05fe]+$/i,/^[\u0600-\u06FF]+$/i,/^[\uFB8A\u067E\u0686\u06AF]+$/i].some((t=>t.test(e)))}isValidSentenceBeginning(e){return this.isCapitalLetter(e)||this.isLetterFromSpecificLanguage(e)||this.isNumber(e)||this.isQuotation(e)||this.isPunctuation(e)||this.isSmallerThanSign(e)}isSentenceStart(e){return!(0,Y.isUndefined)(e)&&("html-start"===e.type||"html-end"===e.type||"block-start"===e.type)}isSentenceEnding(e){return!(0,Y.isUndefined)(e)&&("full-stop"===e.type||"sentence-delimiter"===e.type)}isPartOfPersonInitial(e,t,r,s){return!(0,Y.isUndefined)(e)&&!(0,Y.isUndefined)(r)&&!(0,Y.isUndefined)(s)&&!(0,Y.isUndefined)(t)&&"full-stop"===e.type&&"sentence"===t.type&&Ee.test(t.src)&&"sentence"===r.type&&1===r.src.trim().length&&"full-stop"===s.type}tokenizeSmallerThanContent(e,t,r){const s=e.src.substring(1),n=this.createTokenizer();this.tokenize(n.tokenizer,s);const l=this.getSentencesFromTokens(n.tokens,!1);if(l[0]=(0,Y.isUndefined)(l[0])?"<":"<"+l[0],this.isValidSentenceBeginning(l[0])&&(t.push(r),r=""),r+=l[0],l.length>1){t.push(r),r="",l.shift();const e=l.pop();l.forEach((e=>{t.push(e)}));const s=new RegExp("[."+this.getSentenceDelimiters()+"]$");e.match(s)?t.push(e):r=e}return{tokenSentences:t,currentSentence:r}}createTokenizer(){const e=new RegExp("^["+this.getSentenceDelimiters()+"]$"),t=new RegExp("^[^."+this.getSentenceDelimiters()+"<\\(\\)\\[\\]]+$"),r=[],s=X()((function(e){r.push(e)}));return s.addRule(we,"full-stop"),s.addRule(me,"smaller-than-sign-content"),s.addRule(fe,"html-start"),s.addRule(pe,"html-end"),s.addRule(ke,"block-start"),s.addRule(ye,"block-end"),s.addRule(e,"sentence-delimiter"),s.addRule(t,"sentence"),{tokenizer:s,tokens:r}}tokenize(e,t){e.onText(t);try{e.end()}catch(e){console.error("Tokenizer end error:",e,e.tokenizer2)}}endsWithAbbreviation(e){const t=e.match(ze);if(!t)return!1;const r=t.pop();return e.endsWith(r)}isValidTagPair(e,t){const r=e.src,s=t.src,n=r.match(Fe)[1];return n===s.match(Fe)[1]&&Be.includes(n)}getSentencesFromTokens(e,t=!0){let r,s,n=[],l="";do{s=!1;const t=e[0],r=e[e.length-1];t&&r&&"html-start"===t.type&&"html-end"===r.type&&this.isValidTagPair(t,r)&&(e=e.slice(1,e.length-1),s=!0)}while(s&&e.length>1);return e.forEach(((t,s)=>{let a,i,b;const u=e[s+1],g=e[s-1],h=e[s+2];switch(i=this.getNextTwoCharacters([u,h]),a=i.length>=2,r=a?i[1]:"",t.type){case"html-start":case"html-end":this.isBreakTag(t.src)?(n.push(l),l=""):l+=t.src;break;case"smaller-than-sign-content":b=this.tokenizeSmallerThanContent(t,n,l),n=b.tokenSentences,l=b.currentSentence;break;case"sentence":case"block-start":l+=t.src;break;case"sentence-delimiter":if(l+=t.src,!(0,Y.isUndefined)(u)&&"block-end"!==u.type&&"sentence-delimiter"!==u.type&&this.isCharacterASpace(u.src[0])){if(this.isQuotation(t.src)&&g&&"."!==g.src)break;this.isQuotation(t.src)||"…"===t.src?l=this.getValidSentence(a,r,i,u,n,l):(n.push(l),l="")}break;case"full-stop":if(l+=t.src,i=this.getNextTwoCharacters([u,h]),a=i.length>=2,r=a?i[1]:"",this.endsWithAbbreviation(l))break;if(a&&this.isNumber(i[0]))break;if(this.isPartOfPersonInitial(t,g,u,h))break;if(this.endsWithOrdinalDot(l))break;l=this.getValidSentence(a,r,i,u,n,l);break;case"block-end":if(l+=t.src,i=this.getNextTwoCharacters([u,h]),a=i.length>=2,r=a?i[0]:"",a&&this.isNumber(i[0])||this.isSentenceEnding(g)&&!this.isValidSentenceBeginning(r)&&!this.isSentenceStart(u))break;this.isSentenceEnding(g)&&(this.isSentenceStart(u)||this.isValidSentenceBeginning(r))&&(n.push(l),l="")}})),""!==l&&n.push(l),t&&(n=(0,Y.map)(n,(function(e){return e.trim()}))),n}getValidSentence(e,t,r,s,n,l){return(e&&this.isValidSentenceBeginning(t)&&this.isCharacterASpace(r[0])||this.isSentenceStart(s))&&(n.push(l),l=""),l}isCharacterASpace(e){return/\s/.test(e)}}const xe="(^|["+[" ","\\n","\\r","\\t"," ","۔","؟","،","؛"," ",".",",","'","(",")",'"',"+","-",";","!","?",":","/","»","«","‹","›","<",">","”","“","〝","〞","〟","‟","„"].map((e=>"\\"+e)).join("")+"])",Ae=new RegExp(xe+"\\d{1,3}\\.$");class De extends je{constructor(){super()}endsWithOrdinalDot(e){return Ae.test(e.trim())}}const Se=(0,Y.memoize)((function(e,t=!0){const r=new De,{tokenizer:s,tokens:n}=r.createTokenizer();return r.tokenize(s,e),0===n.length?[]:r.getSentencesFromTokens(n,t)}),((...e)=>JSON.stringify(e))),$e=/^((ge)\S+t($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>]))/gi,Ce=/^(((be|ent|er|her|ver|zer|über|ueber)\S+([^s]t|sst))($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>]))/gi,Re=/(ab|an|auf|aus|vor|wieder|zurück)(ge)\S+t($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi,qe=/((ab|an|auf|aus|vor|wieder|zurück)(be|ent|er|her|ver|zer|über|ueber)\S+([^s]t|sst))($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi,We=/\S+iert($|[ \n\r\t.,'()"+\-;!?:/»«‹›<>])/gi,Te=function(e){return e.match($e)||[]},Pe=function(e){return e.match(Ce)||[]},Me=function(e){return e.match(Re)||[]},Oe=function(e){return e.match(qe)||[]},Ue=function(e){return e.match(We)||[]};function Ie(){return{verbsBeginningWithGe:Te,verbsBeginningWithErVerEntBeZerHerUber:Pe,verbsWithGeInMiddle:Me,verbsWithErVerEntBeZerHerUberInMiddle:Oe,verbsEndingWithIert:Ue}}const Ne=["angefangen","aufgerissen","ausgesehen","befohlen","befunden","begonnen","bekommen","bewiesen","beworben","empfohlen","empfunden","entschieden","erschrocken","erwogen","gebacken","gebeten","gebissen","geblasen","geblieben","gebogen","geboren","geborgen","geboten","gebraten","gebrochen","gebunden","gediehen","gedroschen","gedrungen","gefahren","gefallen","gefangen","geflogen","geflohen","geflossen","gefressen","gefroren","gefunden","gegangen","gegeben","gegessen","geglichen","geglitten","gelungen","gegolten","gegoren","gegossen","gegraben","gegriffen","gehalten","gehangen","gehauen","geheissen","geheißen","gehoben","geholfen","geklungen","gekniffen","gekommen","gekrochen","geladen","gelassen","gelaufen","gelegen","gelesen","geliehen","gelitten","gelogen","gelungen","gemessen","gemieden","genesen","genommen","genossen","gepfiffen","gepriesen","gequollen","geraten","gerieben","gerissen","geritten","gerochen","geronnen","gerufen","gerungen","geschaffen","geschehen","geschieden","geschienen","geschlafen","geschlagen","geschlichen","geschliffen","geschlossen","geschlungen","geschmissen","geschmolzen","geschnitten","geschoben","gescholten","geschoren","geschossen","geschrieben","geschrien","geschritten","geschunden","geschwiegen","geschwollen","geschwommen","geschworen","geschwunden","geschwungen","gesehen","gesessen","gesoffen","gesonnen","gespien","gesponnen","gesprochen","gesprossen","gesprungen","gestanden","gestiegen","gestochen","gestohlen","gestorben","gestoßen","gestossen","gestrichen","gestritten","gesungen","gesunken","getan","getragen","getreten","getrieben","getroffen","getrogen","getrunken","gewachsen","gewaschen","gewichen","gewiesen","gewoben","gewogen","gewonnen","geworben","geworfen","gewrungen","gezogen","gezwungen","misslungen","überbacken","ueberbacken","überbehalten","ueberbehalten","überbekommen","ueberbekommen","überbelegen","ueberbelegen","überbezahlen","ueberbezahlen","überboten","ueberboten","übergebunden","uebergebunden","überbunden","ueberbunden","überblasen","ueberblasen","überbraten","ueberbraten","übergebraten","uebergebraten","überbremst","ueberbremst","übergeblieben","uebergeblieben","übereinandergelegen","uebereinandergelegen","übereinandergeschlagen","uebereinandergeschlagen","übereinandergesessen","uebereinandergesessen","übereinandergestanden","uebereinandergestanden","übereingefallen","uebereingefallen","übereingekommen","uebereingekommen","übereingetroffen","uebereingetroffen","übergefallen","uebergefallen","übergessen","uebergessen","überfahren","ueberfahren","übergefahren","uebergefahren","überfallen","ueberfallen","überfangen","ueberfangen","überflogen","ueberflogen","überflossen","ueberflossen","übergeflossen","uebergeflossen","überfressen","ueberfressen","überfroren","ueberfroren","übergegeben","uebergegeben","übergeben","uebergeben","übergegangen","uebergegangen","übergangen","uebergangen","übergangen","uebergangen","übergossen","uebergossen","übergriffen","uebergriffen","übergegriffen","uebergegriffen","übergehalten","uebergehalten","überhandgenommen","ueberhandgenommen","überhangen","ueberhangen","übergehangen","uebergehangen","übergehoben","uebergehoben","überhoben","ueberhoben","überkommen","ueberkommen","übergekommen","uebergekommen","überladen","ueberladen","übergeladen","uebergeladen","überlassen","ueberlassen","übergelassen","uebergelassen","überlaufen","ueberlaufen","übergelaufen","uebergelaufen","überlesen","ueberlesen","übergelegen","uebergelegen","übergenommen","uebergenommen","übernommen","uebernommen","übergequollen","uebergequollen","überrissen","ueberrissen","überritten","ueberritten","übergeschossen","uebergeschossen","überschlafen","ueberschlafen","überschlagen","ueberschlagen","übergeschlagen","uebergeschlagen","übergeschlossen","uebergeschlossen","überschnitten","ueberschnitten","überschrieben","ueberschrieben","überschrieen","ueberschrieen","überschrien","ueberschrien","überschritten","ueberschritten","überschwungen","ueberschwungen","übergesehen","uebergesehen","übersehen","uebersehen","übergesotten","uebergesotten","übergesotten","uebergesotten","übersponnen","uebersponnen","übersprochen","uebersprochen","übersprungen","uebersprungen","übergesprungen","uebergesprungen","überstochen","ueberstochen","übergestochen","uebergestochen","überstanden","ueberstanden","übergestanden","uebergestanden","überstiegen","ueberstiegen","übergestiegen","uebergestiegen","übergestrichen","uebergestrichen","überstrichen","ueberstrichen","übertragen","uebertragen","übertroffen","uebertroffen","übertrieben","uebertrieben","übertreten","uebertreten","übergetreten","uebergetreten","überwachsen","ueberwachsen","überwiesen","ueberwiesen","überworfen","ueberworfen","übergeworfen","uebergeworfen","überwogen","ueberwogen","überwunden","ueberwunden","überzogen","ueberzogen","übergezogen","uebergezogen","verdorben","vergessen","verglichen","verloren","verstanden","verschwunden","vorgeschlagen"],{getWords:Ve}=e.languageProcessing,Le=Ie(),_e=Le.verbsBeginningWithErVerEntBeZerHerUber,He=Le.verbsBeginningWithGe,Ge=Le.verbsWithGeInMiddle,Ze=Le.verbsWithErVerEntBeZerHerUberInMiddle,Qe=Le.verbsEndingWithIert,Je=["geht","gämsbart","gemsbart","geäst","gebarungsbericht","geähnelt","geartet","gebäudetrakt","gebet","gebiet","gebietsrepräsentant","gebildbrot","gebirgsart","gebirgsgrat","gebirgskurort","gebirgsluft","gebirgsschlucht","geblüt","geblütsrecht","gebohntkraut","gebot","gebrauchsgut","gebrauchstext","gebrauchsverlust","gebrauchtgerät","gebrauchtwagengeschäft","gebrauchtwagenmarkt","geburt","geburtsakt","geburtsgeschwulst","geburtsgewicht","geburtsort","geburtsrecht","geburtsstadt","geburtstagsfest","geckenart","gedächtniskonzert","gedächtniskunst","gedächtnisverlust","gedankenarmut","gedankenexperiment","gedankenflucht","gedankengut","gedankenschritt","gedankenwelt","gedenkkonzert","gedicht","geest","gefahrengebiet","gefahrenmoment","gefahrenpunkt","gefahrgut","gefahrguttransport","gefährt","gefälligkeitsakzept","gefallsucht","gefangenenanstalt","gefangenentransport","gefängnisarzt","gefängniskluft","gefäßnaht","gefecht","gefechtsabschnitt","gefechtsbereit","gefechtsgebiet","gefechtsgewicht","gefechtshut","gefechtsmast","gefechtsmast","geflecht","geflügelaufzucht","geflügelleberwurst","geflügelmarkt","geflügelmast","geflügelpest","geflügelsalat","geflügelwurst","geflügelzucht","gefolgsleute","gefrett","gefriergerät","gefriergut","gefrierobst","gefrierpunkt","gefrierschnitt","gefühlsarmut","gefühlswelt","gegenangebot","gegenansicht","gegenargument","gegengeschäft","gegengewalt","gegengewicht","gegenkandidat","gegenkompliment","gegenkonzept","gegenlicht","gegenmacht","gegenpapst","gegenpart","gegensatzwort","gegenstandpunkt","gegenstandsgebiet","gegenwart","gegenwartskunst","gegenwelt","gegenwort","gehaart","gehandicapt","gehandikapt","geheimagent","geheimbericht","geheimdokument","geheimfavorit","geheimkontakt","geheimkult","geheimnisverrat","geheimpolizist","geheimrat","geheimrezept","geheimtext","gehirnakrobat","gehirngeschwulst","gehirnhaut","gehirnsandgeschwulst","gehirntot","gehirntrust","gehöft","gehörlosensport","geigenkonzert","geißbart","geißblatt","geißhirte","geißhirt","geist","geisterfahrt","geisterstadt","geisterwelt","geistesarmut","geistesart","geistesfürst","geistesgegenwart","geistesgestört","geistesprodukt","geistestat","geistesverwandt","geisteswelt","geklüft","geländefahrt","geländeritt","geländesport","gelangweilt","gelaut","geläut","gelblicht","gelbrost","gelbsucht","gelbwurst","gelcoat","geldausgabeautomat","geldautomat","geldgeschäft","geldheirat","geldinstitut","geldmarkt","geldsurrogat","geldtransport","geldverlust","gelehrtenstreit","gelehrtenwelt","geleit","geleitboot","geleitwort","gelenkgicht","gelenkwassersucht","geleucht","geltungssucht","gelüst","gemächt","gemeindeamt","gemeindebürgerrecht","gemeindegut","gemeindekirchenrat","gemeindepräsident","gemeinderat","gemeingeist","gemeingut","gemeinschaftsgeist","gemeinschaftsprojekt","gemeinschaftsunterkunft","gemengesaat","gemüseart","gemüsebeet","gemüsegeschäft","gemüsemarkt","gemüsesaft","gemüsesalat","gemüsezucht","gemüt","gemütsarmut","gemütsart","gemütsathlet","gemütskalt","genausogut","genausooft","genausoweit","gendefekt","generalagent","generalarzt","generalat","generalbassinstrument","generalbaßinstrument","generalbundesanwalt","generalgouvernement","generalintendant","generalist","generalkonsulat","generalleutnant","generaloberst","generalresident","generalsekretariat","generalstaaten","generalstaatsanwalt","generalsuperintendent","generalüberholt","generalvikariat","generalvollmacht","generationenkonflikt","generativist","genist","genitivattribut","genitivobjekt","genmanipuliert","gennesaret","genotzüchtigt","gent","genuasamt","genussgift","genußgift","genusssucht","genuss-sucht","genußsucht","genverändert","geobiont","geodät","geografieunterricht","geographieunterricht","geokrat","geophyt","gepäckfracht","geradeausfahrt","geradesogut","gefälligst","gerant","gerät","gerätewart","geräuschlaut","gerbextrakt","gericht","gerichtsarzt","gerichtsort","gerichtspräsident","germanisiert","germanist","germanistikstudent","gerodelt","geröllschicht","geröllschutt","geront","gerontokrat","gerstenbrot","gerstensaft","gerstenschrot","gerücht","gerüst","gesamtansicht","gesamtaspekt","gesamtdurchschnitt","gesamtgewicht","gesamtgut","gesamt","gesamtklassement","gesamtunterricht","gesandtschaftsrat","gesangskunst","gesangspart","gesangssolist","gesangsunterricht","gesangunterricht","geschäft","geschäftsaufsicht","geschäftsbericht","geschäftsgeist","geschäftswelt","geschenkpaket","geschichtsunterricht","geschicklichkeitstest","geschicklichkeitstest","geschlecht","geschlechtsakt","geschlechtslust","geschlechtsprodukt","geschlechtswort","geschmackstest","geschwindigkeitslimit","geschworenengericht","geschwulst","gesellschaftsfahrt","gesellschaftsschicht","gesetzblatt","gesetzespaket","gesetzestext","gesicht","gesichtshaut","gesichtspunkt","gesichtsschnitt","gesichtsverlust","gespenst","gespensterfurcht","gespinst","gespött","gesprächstherapeut","gestalt","gestaltungselement","gesteinsart","gesteinschutt","gesteinsschicht","gestüt","gestüthengst","verantwortungsbewusst","verantwortungsbewußt","getast","getränkeabholmarkt","getränkeautomat","getränkemarkt","getreideart","getreideaussaat","getreideexport","getreideimport","getreideprodukt","getreideschnitt","getreidevorrat","gewährfrist","gewalt","gewaltakt","gewaltbereit","gewalttat","gesprächsbereit","gewaltverbot","gewaltverzicht","gewässerbett","gewässerwart","gewebeschicht","gewebsrest","gewicht","gewichtsprozent","gewichtsverlust","gewerbeamt","gewerbearzt","gewerbeaufsicht","gewerbeaufsichtsamt","gewerbegebiet","gewerberecht","gewerbsunzucht","gewerkschaft","gewerkschaftsjournalist","gewindestift","gewinnsucht","gewinst","gewissensangst","gewissenskonflikt","gewitterfront","gewitterluft","gewohnheitsrecht","gewürzextrakt","gewürzkraut","gezücht","erbbaurecht","erbfolgerecht","erbfolgestreit","erbgut","erbhofrecht","erblast","erbpacht","erbrecht","erbschaftsstreit","erbsenkraut","erbbedingt","erbberechtigt","erblasst","erblaßt","erbswurst","erbverzicht","erbwort","erbzinsgut","erdbebengebiet","erdbeerjogurt","erdbeerjoghurt","erdbeeryoghurt","erdbeerkompott","erdbeerrot","erdbeersaft","erdbeersekt","erdengut","erdenlust","erdfrucht","erdgeist","erdkundeunterricht","erdlicht","erdmittelpunkt","erdnussfett","erdölprodukt","erdölproduzent","erdsatellit","erdschicht","erdsicht","erdtrabant","erdverhaftet","eremit","erfahrungsbericht","erfahrungshorizont","erfahrungswelt","erfindergeist","erfolgsaussicht","erfolgsorientiert","erfolgsrezept","erfolgsverwöhnt","erfüllungsort","erfurt","ergänzungsheft","ergänzungssport","ergänzungstest","ergostat","ergotherapeut","erholungsgebiet","erholungsort","erkundungsfahrt","erlaucht","erläuterungstext","erlebnisbericht","erlebnisorientiert","erlebniswelt","ernährungsamt","ernst","ernstgemeint","ernteaussicht","erntedankfest","erntefest","erntemonat","ernteresultat","eroberungsabsicht","eroberungsgeist","eroberungslust","eroberungssucht","eröffnungskonzert","ersatzgeschwächt","ersatzgut","ersatzkandidat","ersatzobjekt","ersatzpräparat","ersatzreservist","ersatztorwart","erscheinungsfest","erscheinungsort","erscheinungswelt","erschließungsgebiet","erst","erstbundesligist","erstfahrt","erstgebot","erstgeburt","erstgeburtsrecht","erstklassbillett","erstklaßbillett","erstkommunikant","erstkonsument","erstligist","erstplatziert","erstplaciert","erstplaziert","erstrecht","ertragsaussicht","erwartungsangst","erwartungshorizont","erwerbseinkünfte","erythrit","erythroblast","erythrozyt","erzählertalent","erzählgut","erzählkunst","erzähltalent","erzamt","erzdemokrat","erzeugungsschlacht","erzfaschist","erziehungsanstalt","erziehungsberechtigt","erziehungsinstitut","erzkommunist","erzprotestant","veranlassungswort","veranschaulicht","veranschlagt","verantwortungsbewusst","verantwortungsbewußt","veräußerungsverbot","verbalist","verbalkontrakt","verbändestaat","verbannungsort","verbildlicht","verbindungspunkt","verbindungsstudent","verbraucherkredit","verbrauchermarkt","verbrauchsgut","verbrechernest","verbrechersyndikat","verbrecherwelt","verbreitungsgebiet","verbrennungsprodukt","verdachtsmoment","verdampfungsgerät","verdauungstrakt","verdikt","veredelungsprodukt","verehrerpost","vereinspräsident","vereinsrecht","vereinssport","verfahrensrecht","verfassungsfahrt","verfassungsgericht","verfassungsrecht","verfassungsstaat","verfolgungsrecht","verfremdungseffekt","verfügungsgewalt","verfügungsrecht","verfügungsberechtigt","verführungskunst","vergegenständlicht","vergegenwärtigt","vergeltungsakt","vergenossenschaftlicht","vergissmeinnicht","vergißmeinnicht","vergleichsmonat","vergleichsobjekt","vergleichspunkt","vergnügungsetablissement","vergnügungsfahrt","vergnügungssucht","vergrößerungsgerät","verhaltensgestört","verhältniswahlrecht","verhältniswort","verhandlungsangebot","verhandlungsbereit","versandbereit","verteidigungsbereit","verhandlungsmandat","verhandlungsort","verhandlungspunkt","verhöramt","verist","verjährungsfrist","verkaufsagent","verkaufsangebot","verkaufsargument","verkaufsautomat","verkaufsfront","verkaufshit","verkaufsobjekt","verkaufsorientiert","verkaufspunkt","verkehrsamt","verkehrsdelikt","verkehrsinfarkt","verkehrsknotenpunkt","verkehrslicht","verkehrsnachricht","verkehrspolizist","verkehrsrecht","verkehrsunterricht","verkehrsverbot","verklarungsbericht","verknüpfungspunkt","verkündungsblatt","verlagsanstalt","verlagsprospekt","verlagsrecht","verlagsrepräsentant","verlagssignet","verlust","verlustgeschäft","verlust","verlustgeschäft","verlustpunkt","vermessungsamt","vermittlungsamt","vermögensrecht","vermont","vermummungsverbot","verneinungswort","vernichtungswut","vernunft","vernunftheirat","verordnungsblatt","verpackungsflut","verpflichtungsgeschäft","verrat","versammlungsort","versammlungsrecht","versandgeschäft","versandgut","versart","verschlusslaut","verschnitt","verschwendungssucht","versehrtensport","versicherungsagent","versicherungsanstalt","versicherungsrecht","verskunst","versöhnungsfest","versorgungsamt","versorgungsberechtigt","versorgungsgebiet","versorgungsgut","versorgungsstaat","verstakt","verständigungsbereit","verstellungskunst","verstürznaht","versuchsanstalt","versuchsobjekt","versuchsprojekt","vertebrat","verteidigungsbudget","verteidigungsetat","verteidigungspakt","verteilungskonflikt","verteilungszahlwort","vertikalschnitt","vertikutiergerät","vertragsgerecht","vertragspunkt","vertragsrecht","vertragsstaat","vertragstext","vertragswerkstatt","vertrauensanwalt","vertrauensarzt","vertrauensverlust","vertriebsrecht","vervielfältigungsrecht","vervielfältigungszahlwort","verwaltungsakt","verwaltungsgericht","verwaltungsrat","verwaltungsrecht","verwundetentransport","verzicht","verzweiflungsakt","verzweiflungstat","entbindungsanstalt","entdeckungsfahrt","entenbrust","entenfett","entertainment","enthusiast","entlastungsmoment","entlüftungsschacht","entnazifizierungsgericht","entoblast","entoparasit","entrechat","entrefilet","entrepot","entscheidungsfurcht","entscheidungsgewalt","entscheidungsrecht","entscheidungsschlacht","entstehungsort","entsteht","entwässerungsschacht","entwicklungsabschnitt","entwicklungsinstitut","entwicklungsprojekt","entwicklungsschritt","entziehungsanstalt","zerat","zerebrallaut","zerfallsprodukt","zergliederungskunst","zerit","zermatt","zersetzungsprodukt","zerstörungslust","zerstörungswut","zertifikat","zerussit","zervelat","zervelatwurst","beamtenrecht","beamtenschicht","beamtenstaat","beat","beatmungsgerät","beaufort","becherfrucht","beckengurt","becquereleffekt","bedarfsgut","bedenkfrist","bedienungselement","bedienungsgerät","bedienungskomfort","bedingtgut","bedürfnisanstalt","beeinflusst","beeinflußt","beerdigungsanstalt","beerdigungsinstitut","beerenfrucht","beerenobst","beerensaft","beet","befasst","befaßt","befehlsgewalt","beförderungsentgelt","beförderungsrecht","begabungstest","begegnungsort","begleitinstrument","begleittext","begleitwort","begnadigungsrecht","begräbt","begrenzungslicht","begriffswelt","begriffswort","begrüßungswort","behaviorist","behebungsfrist","behelfsausfahrt","behelfsunterkunft","behindertengerecht","behindertensport","behindertentransport","behmlot","beiblatt","beiboot","beignet","beiheft","beikost","beilast","beileidswort","beinamputiert","beinhaut","beirat","beirut","beistandskredit","beistandspakt","beitritt","beitrittsabsicht","beitrittsgebiet","beiwacht","beiwort","beizgerät","bekehrungswut","bekennergeist","bekennermut","bekleidungsamt","bekommen","belegarzt","belegbett","belegfrist","belehrungssucht","belemnit","belesprit","beleuchtungseffekt","beleuchtungsgerät","belfast","belkantist","belcantist","belletrist","bellizist","belt","benedikt","benediktenkraut","benefiziant","benefiziat","benefizkonzert","beneluxstaat","bentonit","benzindunst","beratungspunkt","bereit","bereicherungsabsicht","bereitschaftsarzt","bergamt","bergeslast","bergfahrt","bergfest","berggeist","berggrat","bergluft","bergpredigt","bergsport","berg-und-Tal-Fahrt","bergwacht","bergwelt","bericht","berichtsmonat","beritt","bermudashort","bernbiet","berserkerwut","berufsaussicht","berufssoldat","berufssport","berufsstart","berufstracht","berufsverbot","berufungsfrist","berufungsgericht","berufungsrecht","berührungsangst","berührungspunkt","besanmast","besatzungsgebiet","besatzungsmacht","besatzungsrecht","besatzungssoldat","besatzungsstatut","beschaffungsamt","beschäftigungstherapeut","beschlächt","beschlussrecht","beschlußrecht","beschmet","beschneidungsfest","beschlächt","beschlussrecht","beschlußrecht","beschmet","beschneidungsfest","beschwerdefrist","beschwerderecht","beschwörungskunst","beseitigungsanstalt","besetzungsgebiet","besetzungsmacht","besetzungsstatut","besichtigungsfahrt","besitzrecht","besoldungsrecht","besprechungspunkt","besserungsanstalt","bestattungsinstitut","bestimmungsort","bestimmungswort","bestinformiert","bestqualifiziert","bestrahlungsgerät","bestrenommiert","bestsituiert","bestverkauft","besucherrat","besuchsrecht","betpult","betracht","betreibungsamt","betriebsarzt","betriebsfest","betriebsrat","betriebswirt","bett","bettelmusikant","bettelvogt","bettstatt","bettwurst","beulenpest","beutegut","beutekunst","beuterecht","bevölkerungsschicht","bewahranstalt","bewährungsfrist","bewegungsarmut","beweislast","bewußt","bewusst","beziehungsgeflecht","bezirksamt","bezirksarzt","bezirksgericht","bezirkskabinett","bezirksschulrat","bezirksstadt","bezugspunkt","bezugsrecht","heraklit","herat","herbalist","herbst","herbstmonat","herbstpunkt","herdbuchzucht","herdeninstinkt","herfahrt","heringsfilet","heringssalat","herkuleskraut","herkunft","herkunftsort","hermaphrodit","heroenkult","heroinsucht","heroldsamt","heroldskunst","herostrat","herrenabfahrt","herrenbrot","herrendienst","herrenfest","herrenhut","herrenrecht","herrenschnitt","herrenwelt","herrgott","herrnhut","herrschaftsgebiet","herrschaftsgewalt","herrschaftsinstrument","herrschergeschlecht","herrscherkult","herrschsucht","herstellungsart","herzacht","herzangst","herzblatt","herzblut","herzensangst","herzensgut","herzenslust","herzenstrost","herzgeliebt","herzinfarkt","herzinnenhaut","herzklappendefekt","herzogshut","herzlichst","herzpatient","herzpunkt","herzspezialist","überbackt","ueberbackt","überbacktet","ueberbacktet","überbietet","ueberbietet","überbot","ueberbot","überbotet","ueberbotet","überbindet","ueberbindet","überbandet","ueberbandet","überbläst","ueberblaest","überbliest","ueberbliest","überbrät","ueberbraet","überbratet","ueberbratet","überbriet","ueberbriet","überbrietet","ueberbrietet","überbringt","ueberbringt","überbrachtet","ueberbrachtet","überbrücktet","ueberbruecktet","überbrühtet","ueberbrühtet","überbrülltet","ueberbruelltet","überbuchtet","ueberbuchtet","überbürdetet","ueberbuerdetet","überdecktet","ueberdecktet","überdehntet","ueberdehntet","überdenkt","ueberdenkt","überdachtet","ueberdachtet","überdosiertet","ueberdosiertet","überdrehtet","ueberdrehtet","überdrucktet","ueberdrucktet","überdüngtet","ueberdüngtet","übereignetet","uebereignetet","übereiltet","uebereiltet","übererfülltet","uebererfuelltet","überißt","ueberisst","ueberißt","überisst","überesst","ueberesst","übereßt","uebereßt","überaßt","ueberaßt","überesset","ueberesset","überäßet","ueberaesset","überfährt","ueberfaehrt","überfahrt","ueberfahrt","überfuhrt","ueberfuhrt","überfällt","ueberfaellt","überfallet","ueberfallet","überfielt","ueberfielt","überfielet","ueberfielet","überfängt","ueberfaengt","überfingt","ueberfingt","überfinget","ueberfinget","überfärbet","ueberfaerbet","überfettetet","ueberfettetet","überfirnisset","ueberfirnisset","überfirnißtet","ueberfirnisstet","überfischet","ueberfischet","überfischtet","ueberfischtet","überflanktet","ueberflanktet","überflanktet","ueberflanktet","überfliegt","ueberfliegt","überflieget","ueberflieget","überflöget","ueberflöget","überflösset","ueberfloesset","überflosst","ueberflosst","überfloßt","ueberflosst","überfließt","ueberfliesst","überflutetet","ueberflutetet","überformet","ueberformet","überformtet","ueberformtet","überfrachtetet","ueberfrachtetet","überfracht","ueberfracht","überfraget","ueberfraget","überfragtet","ueberfragtet","überfremdetet","ueberfremdetet","überfrisst","ueberfrisst","überfrißt","ueberfrißt","überfresst","ueberfresst","überfreßt","ueberfreßt","überfresset","ueberfresset","überfraßt","ueberfraßt","ueberfrasst","überfräßet","ueberfraesset","überfriert","ueberfriert","überfrieret","ueberfrieret","überfrort","ueberfrort","überfröret","ueberfroeret","überfrört","ueberfroert","überführet","ueberfuehret","überführtet","ueberfuehrtet","überfüllet","ueberfuellet","übergibt","uebergibt","übergebt","uebergebt","übergebet","uebergebet","übergabt","uebergabt","übergäbet","uebergaebet","übergäbt","uebergaebt","übergeht","uebergeht","übergehet","uebergehet","übergingt","uebergingt","übergewichtetet","uebergewichtetet","übergießet","uebergiesset","übergießt","uebergiesst","übergösset","uebergoesset","übergosst","uebergosst","uebergoßt","übergipset","uebergipset","übergipstet","uebergipstet","übergipset","uebergipset","übergipstet","uebergipstet","überglänzet","ueberglaenzet","überglänztet","ueberglaenztet","überglaset","ueberglaset","überglastet","ueberglastet","überglühet","uebergluehet","überglühtet","uebergluehtet","übergoldetet","uebergoldetet","übergraset","uebergraset","übergrastet","uebergrastet","übergrätschet","uebergraetschet","übergrätschtet","uebergraetschtet","übergreift","uebergreift","übergreifet","uebergreifet","übergrifft","uebergrifft","übergriffet","uebergriffet","übergreift","uebergreift","übergreifet","uebergreifet","übergriffet","uebergriffet","übergrifft","uebergrifft","übergrünet","uebergruenet","übergrüntet","uebergruentet","überhat","ueberhat","überhabt","ueberhabt","überhabet","ueberhabet","überhattet","ueberhattet","überhättet","ueberhaettet","überhält","ueberhaelt","überhaltet","ueberhaltet","überhielt","ueberhielt","überhieltet","ueberhieltet","überhändiget","ueberhaendiget","überhändigtet","ueberhaendigtet","überhängt","ueberhaengt","überhänget","ueberhaenget","überhingt","ueberhingt","überhinget","ueberhinget","überhängt","ueberhaengt","überhänget","ueberhaenget","überhängtet","ueberhaengtet","überhänget","ueberhaenget","überhängtet","ueberhaengtet","überhängt","ueberhaengt","überhänget","ueberhaenget","überhingt","ueberhingt","überhinget","ueberhinget","überhastetet","ueberhastetet","überhäufet","ueberhaeufet","überhäuftet","ueberhaeuftet","überhebt","ueberhebt","überhebet","ueberhebet","überhobt","ueberhobt","überhöbet","ueberhoebet","überhebt","ueberhebt","überhebet","ueberhebet","überhobt","ueberhobt","überheiztet","ueberheiztet","überheizet","ueberheizet","überhöhet","ueberhoehet","überhöhtet","ueberhoehtet","überhitzet","ueberhitzet","überhitztet","ueberhitztet","überholet","ueberholet","überholtet","ueberholtet","überhöret","ueberhoeret","überhörtet","ueberhoertet","überinterpretieret","ueberinterpretieret","überinterpretiertet","ueberinterpretiertet","überinterpretieret","ueberinterpretieret","überinterpretiertet","ueberinterpretiertet","überklebet","ueberklebet","überklebtet","ueberklebtet","überkleidetet","ueberkleidetet","überkochet","ueberkochet","überkochtet","ueberkochtet","überkommet","ueberkommet","überkamt","ueberkamt","überkämet","ueberkaemet","überkämt","ueberkaemt","überkompensieret","ueberkompensieret","überkompensiertet","ueberkompensiertet","überkreuzet","ueberkreuzet","überkreuztet","ueberkreuztet","überkronet","ueberkronet","überkrontet","ueberkrontet","überkrustetet","ueberkrustetet","überladet","ueberladet","überludet","ueberludet","überlüdet","ueberluedet","überlappet","ueberlappet","überlapptet","ueberlapptet","überlasset","ueberlasset","überlaßt","ueberlaßt","ueberlasst","ueberlasst","überlässt","ueberlaesst","überließt","ueberließt","ueberliesst","überließet","ueberließet","ueberliesset","überlastet","ueberlastet","überlastetet","ueberlastetet","überläuft","ueberlaeuft","überlaufet","ueberlaufet","überlieft","ueberlieft","überliefet","ueberliefet","überlebet","ueberlebet","überlebtet","ueberlebtet","überleget","ueberleget","überlegtet","ueberlegtet","überlegt","ueberlegt","überleget","ueberleget","überlegtet","ueberlegtet","überleitet","ueberleitet","überleitetet","ueberleitetet","überleset","ueberleset","überlast","ueberlast","überläset","ueberlaeset","überliegt","ueberliegt","überlieget","ueberlieget","überlagt","ueberlagt","überläget","ueberlaeget","überlägt","ueberlaegt","überlistetet","ueberlistetet","übermachet","uebermachet","übermachtet","uebermachtet","übermalet","uebermalet","übermaltet","uebermaltet","übermalet","uebermalet","übermaltet","uebermaltet","übermannet","uebermannet","übermanntet","uebermanntet","übermarchtet","uebermarchtet","übermarchet","uebermarchet","übermästetet","uebermaestetet","übermüdetet","uebermuedetet","übernächtiget","uebernaechtiget","übernächtigtet","uebernaechtigtet","übernimmt","uebernimmt","übernehmt","uebernehmt","übernehmet","uebernehmet","übernahmt","uebernahmt","übernähmet","uebernaehmet","übernähmt","uebernaehmt","übernutzet","uebernutzet","übernutztet","uebernutztet","überpflanzt","ueberpflanzt","überpflanzet","ueberpflanzet","überpflanztet","ueberpflanztet","überplanet","ueberplanet","überplantet","ueberplantet","überprüfet","ueberpruefet","überprüftet","ueberprueftet","überquillt","ueberquillt","überquellt","ueberquellt","überquellet","ueberquellet","überquollt","ueberquollt","überquöllet","ueberquoellet","ueberquöllt","ueberquoellt","überqueret","ueberqueret","überquertet","ueberquertet","überraget","ueberraget","überragtet","ueberragtet","überragt","ueberragt","überraget","ueberraget","überragtet","ueberragtet","überraschet","ueberraschet","überraschtet","ueberraschtet","überreagieret","ueberreagieret","überreagiertet","ueberreagiertet","überrechnetet","ueberrechnetet","überredetet","ueberredetet","überreglementieret","ueberreglementieret","überreglementiertet","ueberreglementiertet","überregulieret","ueberregulieret","überreguliertet","ueberreguliertet","überreichet","ueberreichet","überreichtet","ueberreichtet","überreißet","ueberreisset","überrisset","ueberrisset","überreitet","ueberreitet","überrittet","ueberrittet","überreizet","ueberreizet","überreiztet","ueberreiztet","überrennet","ueberrennet","überrenntet","ueberrenntet","überrollet","ueberrollet","überrolltet","ueberrolltet","überrundetet","ueberrundetet","übersäet","uebersaeet","übersätet","uebersaetet","übersättiget","uebersaettiget","uebersaettigtet","übersättigtet","überschattetet","ueberschattetet","überschätzet","ueberschaetzet","überschätztet","ueberschaetztet","überschauet","ueberschauet","überschautet","ueberschautet","überschäumt","ueberschaeumt","überschäumet","ueberschaeumet","überschäumtet","ueberschaeumtet","überschießt","ueberschießt","ueberschiesst","überschießet","ueberschiesset","ueberschießet","überschosst","ueberschosst","überschosst","ueberschosst","überschoßt","ueberschoßt","überschösset","ueberschoesset","überschlafet","ueberschlafet","überschliefet","ueberschliefet","überschlieft","ueberschlieft","überschlaget","ueberschlaget","überschlüget","ueberschlueget","überschlügt","ueberschluegt","überschlägt","ueberschlaegt","überschlagt","ueberschlagt","überschlaget","ueberschlaget","überschlugt","ueberschlugt","überschlüget","ueberschlueget","überschlügt","ueberschluegt","überschlägt","ueberschlaegt","überschlagt","ueberschlagt","überschlaget","ueberschlaget","überschlugt","ueberschlugt","überschlüget","ueberschlueget","ueberschluegt","überschlügt","überschließt","ueberschließt","ueberschliesst","überschließet","ueberschliesset","überschlosst","ueberschlosst","überschloßt","ueberschlosst","überschlösset","ueberschloesset","überschmieret","ueberschmieret","überschmiertet","ueberschmiertet","überschminket","ueberschminket","überschminktet","ueberschminktet","überschnappt","ueberschnappt","überschnappet","ueberschnappet","überschnapptet","ueberschnapptet","überschneidet","ueberschneidet","überschnittet","ueberschnittet","überschneiet","ueberschneiet","überschneitet","ueberschneitet","überschreibet","ueberschreibet","überschriebet","ueberschriebet","überschriebt","ueberschriebt","überschreiet","ueberschreiet","überschrieet","ueberschrieet","überschriet","ueberschriet","überschriet","ueberschriet","überschreitet","ueberschreitet","überschritt","ueberschritt","überschrittet","ueberschrittet","überschuldetet","ueberschuldetet","überschüttet","ueberschüttet","überschüttetet","ueberschüttetet","überschüttetet","ueberschuettetet","überschwappt","ueberschwappt","überschwappet","ueberschwappet","überschwapptet","ueberschwapptet","überschwemmet","ueberschwemmet","überschwemmtet","ueberschwemmtet","überschwinget","ueberschwinget","überschwangt","ueberschwangt","überschwänget","ueberschwaenget","überschwängt","ueberschwaengt","übersieht","uebersieht","überseht","ueberseht","übersehet","uebersehet","übersaht","uebersaht","übersähet","uebersaehet","übersäht","uebersaeht","übersähet","uebersaehet","übersäht","uebersaeht","übersandtet","uebersandtet","übersendetet","uebersendetet","übersensibilisieret","uebersensibilisieret","übersensibilisiertet","uebersensibilisiertet","übersetzt","uebersetzt","übersetzet","uebersetzet","übersetztet","uebersetztet","übersetzet","uebersetzet","übersetztet","uebersetztet","übersiedet","uebersiedet","übersiedetet","uebersiedetet","übersott","uebersott","übersottet","uebersottet","übersöttet","uebersoettet","übersiedet","uebersiedet","übersiedetet","uebersiedetet","übersott","uebersott","übersottet","uebersottet","übersöttet","uebersoettet","überspannet","ueberspannet","überspanntet","ueberspanntet","überspielet","ueberspielet","überspieltet","ueberspieltet","überspinnet","ueberspinnet","überspännet","ueberspaennet","überspännt","ueberspaennt","überspönnet","ueberspoennet","überspönnt","ueberspoennt","überspitzet","ueberspitzet","überspitztet","ueberspitztet","übersprechet","uebersprechet","überspracht","ueberspracht","übersprächet","ueberspraechet","übersprächt","ueberspraecht","überspringt","ueberspringt","überspringet","ueberspringet","überspränget","ueberspraenget","übersprängt","ueberspraengt","überspringt","ueberspringt","überspringet","ueberspringet","übersprangt","uebersprangt","überspränget","ueberspraenget","übersprängt","ueberspraengt","übersprühet","ueberspruehet","übersprühtet","ueberspruehtet","übersprühet","ueberspruehet","übersprühtet","ueberspruehtet","überspület","ueberspuelet","überspültet","überspueltet","übersticht","uebersticht","überstecht","ueberstecht","überstechet","ueberstechet","überstacht","ueberstacht","überstächet","ueberstaechet","überstächt","ueberstaecht","übersticht","uebersticht","überstecht","ueberstecht","überstechet","ueberstechet","überstacht","ueberstacht","überstächet","ueberstaechet","überstächt","ueberstaecht","überstehet","ueberstehet","überstandet","überstandet","überständet","überstaendet","überstündet","überstuendet","übersteht","uebersteht","überstehet","ueberstehet","überstandet","ueberstandet","überständet","ueberstaendet","überstündet","ueberstuendet","übersteiget","uebersteiget","überstieget","ueberstieget","überstiegt","ueberstiegt","übersteigt","uebersteigt","übersteiget","uebersteiget","überstiegt","ueberstiegt","überstieget","ueberstieget","überstellet","ueberstellet","überstilisieret","ueberstilisieret","überstimmet","ueberstimmet","überstimmtet","ueberstimmtet","überstrahlet","ueberstrahlet","überstrahltet","ueberstrahltet","überstrapazieret","ueberstrapazieret","überstrapaziertet","ueberstrapaziertet","überstreicht","ueberstreicht","überstreichet","ueberstreichet","überstricht","ueberstricht","überstrichet","ueberstrichet","überstreichet","ueberstreichet","überstrichet","ueberstrichet","überstricht","ueberstricht","überstreift","ueberstreift","überstreifet","ueberstreifet","überstreiftet","ueberstreiftet","überstreuet","ueberstreuet","überstreutet","ueberstreutet","überströmet","ueberstroemet","überströmtet","überstroemtet","überstülpt","überstuelpt","ueberstuelpet","überstülpet","überstülptet","ueberstuelptet","überstürzet","ueberstuerzet","überstürztet","ueberstuerztet","übertäubet","uebertaeubet","übertäubtet","uebertaeubtet","übertauchet","uebertauchet","übertauchtet","uebertauchtet","übertippet","uebertippet","übertipptet","uebertipptet","übertönet","uebertoenet","übertöntet","uebertoentet","übertouret","uebertouret","übertourtet","uebertourtet","überträgt","uebertraegt","übertragt","uebertragt","übertraget","uebertraget","übertrugt","uebertrugt","übertrüget","uebertrueget","übertrügt","uebertruegt","übertrainieret","uebertrainieret","übertrainiertet","uebertrainiertet","übertreffet","uebertreffet","übertraft","uebertraft","überträfet","uebertraefet","überträft","uebertraeft","übertreibt","uebertreibt","übertreibet","uebertreibet","übertriebet","uebertriebet","übertriebt","uebertriebt","übertritt","uebertritt","übertretet","uebertretet","übertrat","uebertrat","übertratet","uebertratet","überträtet","uebertraetet","übertritt","uebertritt","übertretet","uebertretet","übertrat","uebertrat","übertratet","uebertratet","überträtet","uebertraetet","übertrumpfet","uebertrumpfet","übertrumpftet","uebertrumpftet","übertünchet","uebertuenchet","übertünchtet","überversorget","ueberversorget","überversorgtet","ueberversorgtet","übervorteilet","uebervorteilet","übervorteiltet","uebervorteiltet","überwachet","ueberwachet","überwachtet","ueberwachtet","überwachset","ueberwachset","überwüchset","ueberwuechset","überwallt","ueberwallt","überwallet","ueberwallet","überwalltet","ueberwalltet","überwallet","ueberwallet","überwalltet","ueberwalltet","überwältiget","ueberwaeltiget","überwältigtet","ueberwaeltigtet","überwalzet","ueberwalzet","überwalztet","ueberwalztet","überwälzet","ueberwaelzet","überwälztet","ueberwaelztet","überwechtetet","ueberwechtetet","überwächtetet","ueberwaechtetet","überwehet","ueberwehet","überwehtet","ueberwehtet","überweidetet","ueberweidetet","überweist","ueberweist","überweiset","ueberweiset","überwiest","ueberwiest","überwieset","ueberwieset","überweißet","ueberweisset","überweißtet","ueberweisstet","überwirft","ueberwirft","überwerft","ueberwerft","überwerfet","ueberwerfet","überwarft","ueberwarft","überwürfet","ueberwuerfet","überwürft","ueberwuerft","überwirft","ueberwirft","überwerft","ueberwerft","überwerfet","ueberwerfet","überwarft","ueberwarft","überwürfet","ueberwuerfet","überwürft","ueberwuerft","überwertetet","ueberwertetet","überwiegt","ueberwiegt","überwieget","ueberwieget","überwogt","ueberwogt","überwöget","ueberwoeget","überwögt","ueberwoegt","überwindet","ueberwindet","überwandet","ueberwandet","überwändet","ueberwaendet","überwölbet","ueberwoelbet","überwölbtet","ueberwoelbtet","ueberwuerzet","ueberwuerzet","überwürztet","ueberwuerztet","überzahlet","ueberzahlet","überzahltet","ueberzahltet","überzahltet","ueberzahltet","überzeichnetet","ueberzeichnetet","überzeuget","ueberzeuget","überzeugtet","ueberzeugtet","überzieht","ueberzieht","überziehet","ueberziehet","überzogt","ueberzogt","überzöget","ueberzoeget","überzögt","ueberzoegt","überzüchtetet","ueberzuechtetet","überangebot","ueberangebot","überbrückungskredit","ueberbrückungskredit","übereinkunft","uebereinkunft","überfahrt","ueberfahrt","überflugverbot","ueberflugverbot","überflutungsgebiet","ueberflutungsgebiet","überfracht","ueberfracht","überfrucht","ueberfrucht","übergangslaut","uebergangslaut","übergebot","uebergebot","übergewicht","uebergewicht","überhangmandat","ueberhangmandat","überhangsrecht","ueberhangsrecht","überholverbot","ueberholverbot","überladenheit","ueberladenheit","überlandfahrt","ueberlandfahrt","überlast","ueberlast","überlegenheit","ueberlegenheit","übermacht","uebermacht","übermaßverbot","uebermassverbot","übermut","uebermut","überraschungseffekt","ueberraschungseffekt","überraschungsgast","ueberraschungsgast","überraschungsmoment","ueberraschungsmoment","überredungskunst","ueberredungskunst","überreiztheit","ueberreiztheit","überrest","ueberrest","überschicht","ueberschicht","überschnitt","ueberschnitt","überschrift","ueberschrift","überschwemmungsgebiet","ueberschwemmungsgebiet","überseegebiet","ueberseegebiet","überseegeschäft","ueberseegeschaeft","übersicht","uebersicht","überspanntheit","ueberspanntheit","überspitztheit","ueberspitztheit","übertragungsrecht","uebertragungsrecht","übertriebenheit","uebertriebenheit","übertritt","uebertritt","überwachungsdienst","ueberwachungsdienst","überwachungsstaat","ueberwachungsstaat","überwelt","ueberwelt","überwinterungsgebiet","ueberwinterungsgebiet","überzeugtheit","ueberzeugtheit","überzeugungstat","ueberzeugungstat","überziehungskredit","ueberziehungskredit"],{indices:Ye,values:Ke}=e.languageProcessing,{getIndicesByWord:Xe,getIndicesByWordList:et}=Ye,{Clause:tt}=Ke,rt=/\S+(apparat|arbeit|dienst|haft|halt|keit|kraft|not|pflicht|schaft|schrift|tät|wert|zeit)($|[ \n\r\t.,'()"+-;!?:/»«‹›<>])/gi,{getClausesSplitOnStopWords:st,createRegexFromArray:nt}=e.languageProcessing,lt={Clause:class extends tt{constructor(e,t){super(e,t),this._participles=function(e){const t=Ve(e),r=[];return(0,Y.forEach)(t,(function(e){(0!==He(e).length||0!==Ge(e).length||0!==_e(e).length||0!==Ze(e).length||0!==Qe(e).length||Ne.includes(e))&&r.push(e)})),r}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const e=this.getParticiples().filter((e=>!(this.hasNounSuffix(e)||(0,Y.includes)(Je,e)||this.hasHabenSeinException(e)||(0,Y.includes)(n,e))));this.setPassive(e.length>0)}hasNounSuffix(e){return null!==e.match(rt)}hasHabenSeinException(e){const t=Xe(e,this.getClauseText());let r=et(["haben","sein"],this.getClauseText());if(0===t.length||0===r.length)return!1;r=(0,Y.map)(r,"index");const s=t[0];return(0,Y.includes)(r,s.index+s.match.length+1)}},regexes:{auxiliaryRegex:nt(i.all),stopwordRegex:nt(G)}};function at(e){return st(e,lt)}const it=function(e,t){const r=new RegExp("^"+e.participleStemmingClasses[1].regex);return new RegExp("^"+e.participleStemmingClasses[0].regex).test(t)?t.slice(2,t.length-2):r.test(t)?t.slice(2,t.length-1):null},bt=function(e,t,r,s,n){for(const l of t)if(new RegExp("^"+l+r).test(e)){const t=e.slice(l.length-e.length);return l+t.slice(s,t.length-n)}return null},ut=function(e,t){const r=e.prefixes.separableOrInseparable;for(const s of e.participleStemmingClasses){const n=s.regex,l=s.startStem,a=s.endStem,i=s.separable?e.prefixes.separable:e.prefixes.inseparable;let b=bt(t,i,n,l,a);if(b)return b;if(b=bt(t,r,n,l,a),b)return b}return null},gt=function(e){let t=e.search(/[aeiouyäöü][^aeiouyäöü]/);return-1!==t&&(t+=2),-1!==t&&t<3&&(t=3),t},ht=function(e){const t=e.search(/(em|ern|er)$/g),r=e.search(/(e|en|es)$/g);let s=e.search(/([bdfghklmnrt]s)$/g);-1!==s&&s++;let n="",l=1e4;return-1!==t?(n="a",l=t,{index1:l,optionUsed1:n}):-1!==r?(n="b",l=r,{index1:l,optionUsed1:n}):-1!==s?(n="c",l=s,{index1:l,optionUsed1:n}):{index1:l,optionUsed1:n}},ot=function(e){const t=e.search(/(en|er|est)$/g);let r=e.search(/(.{3}[bdfghklmnt]st)$/g);-1!==r&&(r+=4);let s=1e4;return-1!==t?s=t:-1!==r&&(s=r),s},ct=function(e,t,r,s){return 1e4!==t&&-1!==s&&t>=s&&(e=e.substring(0,t),"b"===r&&-1!==e.search(/niss$/)&&(e=e.substring(0,e.length-1))),e},dt=function(e,t,r){return 1e4!==t&&-1!==r&&t>=r&&(e=e.substring(0,t)),e},wt=function(e,t){const r=e.veryIrregularVerbs.find((e=>e.forms.includes(t)));return r?r.stem:null},{flattenSortLength:mt}=e.languageProcessing,ft=function(e,t){const r=e.exceptionStems;for(const e of r){const r=e.find((e=>t.endsWith(e)));if(r)return t.slice(0,t.length-r.length)+e[0]}return null},pt=function(e,t){const r=e.exceptions;for(const e of Object.keys(r)){const s=r[e];for(const e of s)if(e.includes(t))return e[0]}return null},kt=function(e,t){let r=t;const s=e.strongAndIrregularVerbs.stems;let n=mt(e.prefixes).find((e=>t.startsWith(e)));if(n){const e=r.slice(n.length,r.length);e.length>2?r=e:n=null}for(const e of s){let t=e.stems;if(t=(0,Y.flatten)(Object.values(t)),t.includes(r))return n?n+e.stems.present:e.stems.present}return null};const{baseStemmer:yt}=e.languageProcessing;function zt(e){const t=(0,Y.get)(e.getData("morphology"),"de",!1);return t?e=>function(e,t){const r=t.verbs,s=function(e,t){const r=wt(e,t);if(r)return r;t=(t=(t=(t=t.replace(/([aeiouyäöü])u([aeiouyäöü])/g,"$1U$2")).replace(/([aeiouyäöü])y([aeiouyäöü])/g,"$1Y$2")).replace(/([aeiouyäöü])i([aeiouyäöü])/g,"$1I$2")).replace(/([aeiouyäöü])e([aeiouyäöü])/g,"$1E$2");const s=gt(t),n=ht(t).index1,l=ht(t).optionUsed1;t=ct(t,n,l,s);const a=ot(t);return(t=(t=(t=(t=dt(t,a,s)).replace(/U/g,"u")).replace(/Y/g,"y")).replace(/I/g,"i")).replace(/E/g,"e")}(r,e);return ft(t.nouns,s)||pt(t.adjectives,s)||kt(r,s)||function(e,t){if(Ie().length>0||Je.includes(t))return"";let r=it(e,t);return r||(r=ut(e,t),r||null)}(r,e)||s}(e,t):yt}const{formatNumber:vt}=e.helpers;function Et(e){const t=180-e.averageWordsPerSentence-58.5*e.numberOfSyllables/e.numberOfWords;return vt(t)}function Ft(e){return e=e.toLowerCase(),H.includes(e)}const{AbstractResearcher:Bt}=e.languageProcessing;class jt extends Bt{constructor(e){super(e),Object.assign(this.config,{language:"de",passiveConstructionType:"periphrastic",firstWordExceptions:t,functionWords:H,stopWords:G,transitionWords:u,twoPartTransitionWords:Z,syllables:Q,keyphraseLength:J}),Object.assign(this.helpers,{getClauses:at,getStemmer:zt,fleschReadingScore:Et,memoizedTokenizer:Se,checkIfWordIsFunction:Ft})}}})(),(window.yoast=window.yoast||{}).Researcher=s})();js/dist/languages/id.js000064400000053210147206602470011034 0ustar00(()=>{"use strict";var a={d:(i,e)=>{for(var n in e)a.o(e,n)&&!a.o(i,n)&&Object.defineProperty(i,n,{enumerable:!0,get:e[n]})},o:(a,i)=>Object.prototype.hasOwnProperty.call(a,i),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},i={};a.r(i),a.d(i,{default:()=>pa});const e=window.yoast.analysis,n=["sebuah","seorang","sang","si","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas","seratus","seribu","sejuta","semiliar","setriliun","ini","itu","hal","ia"],s=["adakalanya","agak","agar","akhirnya","alhasil","andaikan","bahkan","bahwasannya","berikut","betapapun","biarpun","biasanya","contohnya","dahulunya","diantaranya","dikarenakan","disebabkan","dulunya","faktanya","hasilnya","intinya","jadi","jua","juga","kadang-kadang","kapanpun","karena","karenanya","kedua","kelak","kemudian","kesimpulannya","khususnya","langsung","lantaran","maka","makanya","masih","memang","meski","meskipun","misalnya","mulanya","nantinya","nyatanya","pendeknya","pertama","ringkasnya","rupanya","seakan-akan","sebaliknya","sebelum","sebetulnya","sedangkan","segera","sehingga","sekali-sekali","sekalipun","sekiranya","selagi","selain","selama","selanjutnya","semasa","semasih","semenjak","sementara","semula","sepanjang","serasa","seraya","seringkali","sesungguhnya","setelahnya","seterusnya","setidak-tidaknya","setidaknya","sewaktu-waktu","sewaktu","tadinya","tentunya","terakhir","terdahulu","terlebih","ternyata","terpenting","terutama","terutamanya","tetapi","umpamanya","umumnya","utamanya","walau","walaupun","yaitu","yakni","akibatnya","hingga","kadang","kendatipun","ketiga","lainnya","manakala","namun","pastinya","pertama-tama","sampai-sampai","sebaliknya","sebelumnya","sebetulnya","sesekali"],t=s.concat(["agar supaya","akan tetapi","apa lagi","asal saja","bagaimanapun juga","bahkan jika","bahkan lebih","begitu juga","berbeda dari","biarpun begitu","biarpun demikian","bilamana saja","cepat atau lambat","dalam hal ini","dalam jangka panjang","dalam kasus ini","dalam kasus lain","dalam kedua kasus","dalam kenyataannya","dalam pandangan","dalam situasi ini","dalam situasi seperti itu","dan lagi","dari awal","dari pada","dari waktu ke waktu","demikian juga","demikian pula","dengan serentak","dengan cara yang sama","dengan jelas","dengan kata lain","dengan ketentuan","dengan nyata","dengan panjang lebar","dengan pemikiran ini","dengan syarat bahwa","dengan terang","di pihak lain","di sisi lain","dibandingkan dengan","disebabkan oleh","ditambah dengan","hanya jika","harus diingat","hasil dari","hingga kini","kalau tidak","kalau-kalau","kali ini","kapan saja","karena alasan itulah","karena alasan tersebut","kecuali kalau","kendatipun begitu","kendatipun demikian","lebih jauh","lebih lanjut","maka dari itu","meskipun demikian","oleh karena itu","oleh karenanya","oleh sebab itu","pada akhirnya","pada awalnya","pada dasarnya","pada intinya","pada kenyataannya","pada kesempatan ini","pada mulanya","pada saat ini","pada saat","pada situasi ini","pada umumnya","pada waktu yang sama","pada waktunya","paling tidak","pendek kata","penting untuk disadari","poin penting lainnya","saat ini","sama halnya","sama pentingnya","sama sekali","sampai sekarang","sebab itu","sebagai akibatnya","sebagai contoh","sebagai gambaran","sebagai gantinya","sebagai hasilnya","sebagai tambahan","sebelum itu","secara bersamaan","secara eksplisit","secara keseluruhan","secara keseluruhan","secara khusus","secara menyeluruh","secara signifikan","secara singkat","secara umum","sejalan dengan ini","sejalan dengan itu","sejauh ini","sekali lagi","sekalipun begitu","sekalipun demikian","sementara itu","seperti yang bisa dilihat","seperti yang sudah saya katakan","seperti yang sudah saya tunjukkan","sesudah itu","setelah ini","setelah itu","tak pelak lagi","tanpa menunda-nunda lagi","tentu saja","terutama sekali","tidak perlu dipertanyakan lagi","tidak sama","tidak seperti","untuk alasan ini","untuk alasan yang sama","untuk memperjelas","untuk menekankan","untuk menyimpulkan","untuk satu hal","untuk sebagian besar","untuk selanjutnya","untuk tujuan ini","walaupun demikian","yang lain","yang terakhir","yang terpenting","begitu pula","berbeda dengan","betapapun juga","dalam hal itu","di samping itu","hal pertama yang perlu diingat","kadang kala","karena itu","lagi pula","lambat laun","mengingat bahwa","meskipun begitu","pada umumnya","pada waktu","saat ini juga","sampai saat ini","sebagian besar","secara terperinci","selain itu","seperti yang sudah dijelaskan","seperti yang tertera di","tak seperti","tanpa memperhatikan","tentu saja","untuk memastikan","untuk menggambarkan","walaupun begitu"]);function u(a){let i=a;return a.forEach((e=>{(e=e.split("-")).length>0&&e.filter((i=>!a.includes(i))).length>0&&(i=i.concat(e))})),i}const r=["si","sang","kaum","sri","hang","dang","para"],d=["nol","satu","dua","tiga","empat","lima","enam","tujuh","delapan","sembilan","sepuluh","sebelas","seratus","seribu","sejuta","semiliar","setriliun"],k=["kesatu","pertama","kedua","ketiga","keempat","kelima","keenam","ketujuh","kedelapan","kesembilan","kesepuluh","kesebelas","keseratus","keseribu"],l=["aku","saya","engkau","kau","kamu","anda","kita","kami","kalian","ia","dia","beliau","mereka","dikau","daku","beta","sayalah","engkaulah","kaulah","kamulah","andalah","kitalah","kamilah","kalianlah","dialah","kamu-kamu","saya-saya","mereka-mereka","beliau-beliau","anda-anda","mereka-merekalah","beliau-beliaulah","kamu-kamulah","anda-andalah"],m=["yang"],g=["ini","itu","tersebut","tadi","inilah","itulah"],p=["milikku","milikmu","miliknya","punyanya","punyaku","punyamu","kepunyaannya","kepunyaanmu","kepunyaanku"],h=["belasan","puluhan","ribuan","miliaran","triliunan","setengah","seperdua","sepertiga","seperempat","seperlima","seperenam","sepertujuh","seperdelapan","sepersembilan","sepersepuluh","sedikit","setiap","banyak","semua","lebih","kurang","sebagian","cukup","beberapa","berpuluh-puluh","beratus-ratus","beribu-ribu","berjuta-juta","ratusan","paling","tiap-tiap"],o=["diriku","dirinya","dirimu"],b=["lain","lainnya","seseorang","sesuatu","siapa-siapa","apa-apa","semuanya","segalanya","seluruhnya","keduanya","ketiganya","ketiga-tiganya","kedua-duanya","dua-duanya","tiga-tiganya","masing-masing","apapun","siapapun","manapun","sedemikian","demikian"],y=["apa","manakah","mana","apanya","inikah","itukah","manalagi"],c=["siapa","siapakah","kamukah","andakah","sayakah","akukah","diakah","merekakah","engkaukah","kamikah","kitakah","beliaukah","iakah","dirinyakah","dirikukah","siapatah","siapalah","siapanya"],f=["bagaimana","mengapa","kenapa","kapan","berapa","kapankah","berapakah","bagaimanakah","apakah","kapanpun","apatah","apalah","berapatah","berapalah","mengapakah","mengapatah","mengapalah","kenapakah","kenapatah","kenapalah","kapantah","kapanlah","manatah","mananya","manalah","bagaimanatah","bagaimanalah","bilamana","bilamanakah","bilamanatah","bilamananya","bilamanalah","keberapa","mampukah","beginikah","begitukah"],j=["selalu","sekali","berkali-kali"],S=["dapat","dapatkah","bisa","bisakah","boleh","bolehkah","akan","akankah","bukan","dapatlah","bisatah","bisanya","bisalah","bolehtah","bolehnya","bolehlah","akantah","akannya","akanlah","harus","haruskah","harustah","harusnya","haruslah","bukankah","bukantah","bukannya","bukanlah","mungkin","mungkinkah","mungkintah","mungkinlah","belum","belumkah","belumlah","sudah","sudahkah","sudahlah","takkan","masih","masihkah","pernah","pernahkah"],w=["adalah","ialah","merupakan","ada","berada"],W=["antara","seantero","bagai","bagaikan","bagi","buat","dari","demi","dengan","di","terhadap","menjelang","ke","kecuali","sekeliling","mengenai","sekitar","melalui","selama","lepas","lewat","oleh","selewat","pada","sepanjang","per","seputar","bersama","sejak","semenjak","seperti","serta","tentang","menuju","menurut","untuk","tanpa","adapun","antar","diantara","silam","lalu","selaku","melalui","sebagai","bahwasanya"],x=["atas","bawah","dalam","luar","depan","belakang","sebelah","samping"],P=["dan","atau","lalu","kemudian","serta","sedangkan","sementara","sambil","seraya","ataupun","ataukah"],N=["maupun","bukan","begitu","baru","hanya"],v=["setelah","sehabis","sejak","sampai","ketika","waktu","tatkala","saat","kalau","jika","jikalau","bila","bilamana","apabila","asal","asalkan","seandainya","andaikata","sekiranya","karena","sebab","lantaran","gara-gara","mentang-mentang","kalau-kalau","supaya","agar","guna","sehingga","hingga","sampai","sebelum","sesudah","meski","meskipun","kendati","kendatipun","walau","walaupun","sekalipun","biarpun","sungguhpun","padahal","seakan-akan","seolah-olah","daripada","alih-alih","melainkan","apalagi","bahwa","saja"],R=["kata","bilang","berkata","mengeklaim","bertanya","menayakan","menyatakan","tanya","klaim","jelas","jelaskan","menjelaskan","dijelaskan","ditanya","pikir","berpikir","berbicara","membicarakan","mengumumkan","diumumkan","dibicarakan","mendiskusikan","menyarankan","disarankan","mengerti"],O=["sangat","amat","terlalu","terlampau","sungguh","serba","agak","begitu","demikian","makin","semakin","kian","tambah","bertambah","begini","amatlah"],B=["ada","punya","milik","terlihat","kelihatan","mari","marilah","membuat","dibuat","menunjukkan","ditunjukkan","pergi","ambil","diambil","meletkakkan","letakkan","ambilkan","mencoba","dicoba","bermakna","berarti","terdiri","memastikan","dipastikan","mengandung","termasuk","maknanya","artinya","ingin","inginkan"],E=["terbesar","besar","terkecil","kecil","terbaru","baru","tertua","tua","lalu","semudah","termudah","mudah","cepat","jauh","susah","keras","panjang","rendah","pendek","tinggi","biasa","simpel","kebanyakan","baru-baru","lagi","selesai","mungkin","umum","baik","buruk","bagus","utama","sama","tertentu","biasanya","spesifik","langsung","dekat","terbaru","berbeda","beda","sibuk","terkini","penting","terpenting","sebesar","sekecil","setua","termuda","semuda","muda","tercepat","secepat","termudah","semudah","terjauh","sejauh","tersusah","sesusah","terkeras","sekeras","sepanjang","terpanjang","terpendek","sependek","terbiasa","tersimpel","sesimpel","terbaik","sebaik","terburuk","seburuk","sebagus","terbagus","terutama","terdekat","sedekat","tersibuk","sepenting","lambat","terlambat","luas","terluas","seluas","keren","tersedia","cepat-cepat","erat-erat","betul-betul","diam-diam","keras-keras","jauh-jauh","secepat-cepatnya","baik-baik","sebaik-baiknya","sekeras-kerasnya","lekas-lekas","selekas-lekasnya","tinggi-tinggi","setinggi-tingginya","seberat-beratnya","sejauh-jauhnya","sedikit-dikitnya","sekurang-kurangnya","setidak-tidaknya","sedapat-dapatnya","seenak-enaknya","seenaknya","seadanya","sekenanya","selambat-lambatnya","selebih-lebihnya","sedikitnya","sepenuhnya","besar-besaran","kecil-kecilan","habis-habisan","mati-matian","terang-terangan","terus-terusan","untung-untungan","kesekian","berdua-dua","bertiga-tiga","berdua","bertiga","berempat","berlima","berenam","bertujuh","berdelapan","bersembilan","bersepuluh","bersebelas","berseratus","berseribu","berduaan","agaknya","sepenting-pentingnya","sepanjang-panjangnya","spesifik","spesial","semuda-mudanya","setua-tuanya","seburuk-buruknya","seluas-luasnya","terlebih","selamanya","selama-lamanya","mampu","begini","beginilah","begitu","begitulah","sebegini","sebegitu","semula","pasti","pastilah","pastinya","dini","sedini","sering","seringnya","jarang","terbanyak"],F=["bah","cis","ih","idih","sialan","buset","aduh","waduh","duh","aduhai","amboi","asyik","wah","syukur","alhamdulillah","untung","aduh","aih","aih","lo","duilah","eh","oh","ah","astaga","astagfirullah","masyaallah","masa","alamak","gila","ayo","yuk","mari","hai","he","hai","halo"],M=["sdm","sdt","gr","kg","cm","mg","ml","l","dl","cl","ons","lbr","cc","bh","ltr","pon"],T=["detik","menit","jam","detik-detik","menit-menit","jam-jam","hari","hari-hari","minggu","minggu-minggu","bulan","bulan-bulan","tahun","tahun-tahun","besok","kemarin","lusa","malam-malam","siang-siang","subuh","bedug","keesokan"],A=["cara","barang","masalah","bagian","bagian-bagian","aspek","aspek-aspek","ide","item","tema","hal","perkara","faktor","faktor-faktor","detil","perbedaan","adanya","beginian","rupanya","diri"],C=["tidak","iya","tak","tentu","ok","oke","amin","dll","maaf","tolong","mohon","jangan","sebagainya","hanya","cuma","jangankan","janganlah","tolonglah"],$=(u(["lah","pun","dong","kan","sih","toh","nah","lho","kok","ding"]),u([].concat(k,["sebuah","seorang","seekor","sebiji","selembar","secarik","sehelai","sebutir","sebatang","sebidang","sebentuk","sebilah","sekuntum","sepatah","sepucuk","setangkai","seutas","sebelah","segenggam","segugus","sepiring","sejenis","semacam","sepotong","setetes","suatu"])),u([].concat(r,P,g,O,p,["bu","pak","bang","nak","kak","dik"])),u([].concat(j,l,o,F,d,S,w,R,B,b,N,v,y,c,f,["putus-putusnya","jemu-jemunya","jera-jeranya","puas-puasnya","bosan-bosannya","henti-hentinya","berhenti-hentinya"],C,x,M,T,A,E,m,W,h,s)),u([].concat(r,d,k,g,p,o,l,h,b,y,c,f,x,j,S,w,W,P,N,v,R,["yakni","yaitu","artinya","awalnya","akhirnya","makanya","malahan","malah","memang","nantinya","nanti","pula","seketika","sekarang","benar-benar","kadang","justru","tetapi","tapi"],O,B,F,E,M,A,C,["tuan","nyonya","nona","bang","pak","bu","bang","kak","prof","gus","ning","kyai","ustad","ustadzah","nyai","raden","tengku"],m,s,T))),_=[["baik","maupun"],["bukan","melainkan"],["bukan","tetapi"],["bukannya","melainkan"],["bukannya","tetapi"],["tidak","melainkan"],["tidak","tetapi"],["tidak hanya","tetapi juga"],["begitu","sehingga"],["begitu","sampai"],["demikian","sehingga"],["demikian","sampai"],["sedemikian","sehingga"],["sedemikian","sampai"],["meskipun","namun"],["biarpun","namun"],["bukan hanya","melainkan juga"],["sedemikian rupa","sehingga"],["sebaiknya","daripada"],["entah","entah"],["kalau","maka"],["apabila","maka"],["apa","atau"],["jangankan","pun"],["saja","apalagi"],["apakah","atau"]],L=window.lodash,{buildFormRule:q,createRulesFromArrays:z}=e.languageProcessing,D=["a","e","i","o","u"];function H(a){let i=0;for(let n=0;nn.startsWith(a)))}const{flattenSortLength:G,buildFormRule:J,createRulesFromArrays:Q}=e.languageProcessing,U=function(a,i){if((a.startsWith("ber")||a.startsWith("per"))&&K(a,3,i.stemming.beginningModification.rBeginning))return a.replace(/^(ber|per)/i,"r");if(/^peng/i.test(a)&&K(a,4,i.stemming.beginningModification.kBeginning))return a.replace(/^peng/i,"k");const e=Q(i.stemming.regexRules.removeSecondOrderPrefixes);return J(a,e)||a},V=function(a,i){let e=a.length;const n=i.stemming.regexRules.removeSuffixes,s=i.stemming.doNotStemWords.doNotStemSuffix,t=G(i.stemming.doNotStemWords.doNotStemPrefix.doNotStemFirstOrderPrefix),u=G(i.stemming.doNotStemWords.doNotStemPrefix.doNotStemSecondOrderPrefix);return t.some((i=>a.startsWith(i)))||(a=function(a,i){const e=function(a,i){const e=i.stemming.beginningModification;if(/^[mp]en/i.test(a)&&K(a,3,e.nBeginning))return a.replace(/^[mp]en/i,"n");if(/^[mp]eng/i.test(a)&&K(a,4,e.kBeginning))return a.replace(/^[mp]eng/i,"k");if(/^[mp]em/i.test(a)){if(K(a,3,e.pBeginning))return a.replace(/^(mem|pem)/i,"p");if(K(a,3,e.mBeginning))return a.replace(/^(mem|pem)/i,"m")}const n=function(a,i){const e=a.stemming.doNotStemWords.doNotStemPrefix.doNotStemFirstOrderPrefix.doNotStemTer;if(i.startsWith("keter")&&(i=i.substring(2,i.length)),i.startsWith("ter"))return e.some((a=>i.startsWith(a)))?i:K(i,3,a.stemming.beginningModification.rBeginning)?i.replace(/^ter/i,"r"):i.substring(3,i.length)}(i,a);return n||void 0}(a,i);if(e)return e;const n=Q(i.stemming.regexRules.removeFirstOrderPrefixes);return J(a,n)||a}(a,i)),e===a.length?(u.some((i=>a.startsWith(i)))||(a=U(a,i)),H(a)>2&&(a=I(a,n,s,i))):(e=a.length,H(a)>2&&(a=I(a,n,s,i)),e===a.length||u.includes(a)||H(a)>2&&(a=U(a,i))),a},X=function(a,i){a=function(a,i){const e=i.stemming.singleSyllableWords,n=i.stemming.singleSyllableWordsSuffixes,s=a;if(a=function(a,i){return a.startsWith("di")&&K(a,2,i.stemming.singleSyllableWords)?a.substring(2,a.length):/^[mp]enge/i.test(a)&&K(a,5,i.stemming.singleSyllableWords)?a.substring(5,a.length):a}(a,i),e.some((i=>a.startsWith(i)))&&H(a)<=3&&function(a,i){for(const e of i)if(a.match(e))return!0}(a,n)){a=I(a,i.stemming.regexRules.removeParticle,i.stemming.doNotStemWords.doNotStemParticle,i),a=I(a,i.stemming.regexRules.removePronoun,i.stemming.doNotStemWords.doNotStemPronounSuffix,i);const n=I(a,i.stemming.regexRules.removeSuffixes,i.stemming.doNotStemWords.doNotStemSuffix,i);e.includes(n)&&(a=n)}return(H(a)>1||1===a.length)&&(a=s),a}(a,i);const e=i.stemming.doNotStemWords.doNotStemParticle,n=i.stemming.doNotStemWords.doNotStemPronounSuffix;if(H(a)<=2)return a;const s=V(a,i);return e.includes(s)||n.includes(s)?s:(H(a=I(a,i.stemming.regexRules.removeParticle,e,i))>2&&(a=I(a,i.stemming.regexRules.removePronoun,n,i)),H(a)>2&&(a=V(a,i)),a)},{baseStemmer:Y}=e.languageProcessing;function Z(a){const i=(0,L.get)(a.getData("morphology"),"id",!1);return i?a=>function(a,i){if(i.stemming.shouldNotBeStemmed.includes(a))return a;const e=function(a,i){if(-1===a.indexOf("-"))return null;const e=a.split("-");if(2===e.length){let a=e[0],n=e[1];if(a=X(a,i),n=X(n,i),a.substring(1)===(n.startsWith("ng")||n.startsWith("ny")?n.substring(2):n.substring(1))){const e=i.stemming.nonPluralReduplications;return e.includes(a)&&e.includes(n)?a+"-"+a:a}}return null}(a,i);return e||X(a,i)}(a,i):Y}const aa=["diskontinuitas","diskualifikasi","diskriminatif","diskriminator","digitalisasi","disinformasi","disintegrasi","diskriminasi","disorientasi","distabilitas","diktatorial","disinfektan","disinsentif","diskrepansi","distributor","diagnostik","dialketika","diktatoris","dinosaurus","diplomatik","diplomatis","direktorat","dirgantara","disimilasi","diskontinu","diskulpasi","disparitas","dispensasi","distilator","distingtif","distribusi","diversitas","diafragma","diagnosis","diakritik","diakronis","dialektal","dialektik","dialektis","digenesis","digitalis","dilematik","diminutif","dinamisme","dingklang","diplomasi","dirgahayu","disertasi","disfungsi","diskredit","diskursif","disleksia","dislokasi","dismutasi","disonansi","disosiasi","dispenser","disposisi","distilasi","distingsi","divestasi","diabeter","diagonal","dialisis","diameter","diaspora","difraksi","digestif","diglosia","dikotomi","diktator","dilatasi","dimorfik","dinamika","dioksida","diopsida","diplomat","direktur","disentri","disensus","disiplin","diskotek","diskresi","dispersi","disrupsi","distansi","distorsi","diagram","difabel","digdaya","digital","digresi","diletan","dimensi","dinamik","dinamis","dinamit","dinasti","dioksin","diorama","diploma","diptera","direksi","dirigen","disagio","disiden","disjoki","diskoid","diskusi","disuasi","dividen","diadem","diakon","dialek","dialog","diaper","diayah","diesel","dilasi","dinamo","diniah","diorit","diare","diode","didih","didik","didis","digit","dikau","dikir","diksi","dikte","dinas","dipan","dirah","direk","disko","dinda","difusi","dilema","dingin","diniah","diorit","dirham","disket","diskon","divisi","diftong","difteri","dinding","dingkis","dingkit","dioksin","diorama","diploma","dirigen","disiden","displin","disjoki","diskusi","distrik","dividen","digestif","diglosia","dikotomi","dingklik","dioksida","diplomat","direktur","disentri","diskresi","disorder","dispersi","distansi","disrupsi","divergen","dingklang","diplomasi","dirgahayu","disertasi","disfungsi","disilabik","diskredit","disleksia","dislokasi","disosiasi","dispenser","disposisi","distilasi","dinosaurus","diplomatik","diplomatis","dirgantara","disimilasi","diskontinu","disparitas","distilator","distribusi","divergensi","diversitas","disabilitas","disinfektan","diskrepansi","disintegrasi","diskriminasi","diskriminatif","diskontinuitas","diskualifikasi"],{getWords:ia}=e.languageProcessing;function ea(a){const i=ia(a.toLowerCase());let e=i.filter((a=>a.length>4));if(e=e.filter((a=>a.startsWith("di"))),0===e.length)return!1;for(const a of aa)e=e.filter((i=>!i.startsWith(a)));return e=e.filter((function(a){let e=!0;const n=i.indexOf(a);return"untuk"===i[n-1]&&(e=!1),e})),0!==e.length}const na="\\–\\-\\(\\)_\\[\\]’‘“”〝〞〟‟„\"'.?!:;,¿¡«»‹›—×+&۔؟،؛。。!‼?⁇⁉⁈‥…・ー、〃〄〆〇〈〉《》「」『』【】〒〓〔〕〖〗〘〙〚〛〜〝〞〟〠〶〼〽{}|~⦅⦆「」、[]・¥$%@&'()*/:;<>\\\<>",sa=(na.split(""),new RegExp("^["+na+"]+")),ta=new RegExp("["+na+"]+$"),ua=new Map([["amp;","&"],["lt;","<"],["gt;",">"],["quot;",'"'],["apos;","'"],["ndash;","–"],["mdash;","—"],["copy;","©"],["reg;","®"],["trade;","™"],["pound;","£"],["yen;","¥"],["euro;","€"],["dollar;","$"],["deg;","°"],["asymp;","≈"],["ne;","≠"],["nbsp;"," "]]),ra=(new RegExp("&("+[...ua.keys()].join("|")+")","ig"),new Map);ua.forEach(((a,i)=>ra.set("#"+i,a)));const da=new RegExp("^("+[...ra.keys()].join("|")+")"),ka=new RegExp("("+[...ra.keys()].join("|")+")$"),la=/([\s\t\u00A0\u2013\u2014[\]])/,ma=function(a){if(!a)return[];return(a=>{const i=[];return a.forEach((a=>{const e=[],n=[];for(;sa.test(a)&&!da.test(a);)e.push(a[0]),a=a.slice(1);for(;ta.test(a)&&!ka.test(a);)n.unshift(a[a.length-1]),a=a.slice(0,-1);let s=[...e,a,...n];s=s.filter((a=>""!==a)),i.push(...s)})),i})(a.split(la).filter((a=>""!==a)))},{AbstractResearcher:ga}=e.languageProcessing;class pa extends ga{constructor(a){super(a),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"id",passiveConstructionType:"morphological",firstWordExceptions:n,functionWords:$,transitionWords:t,twoPartTransitionWords:_,areHyphensWordBoundaries:!1}),Object.assign(this.helpers,{getStemmer:Z,isPassiveSentence:ea,splitIntoTokensCustom:ma})}}(window.yoast=window.yoast||{}).Researcher=i})();js/dist/languages/ca.js000064400000006723147206602470011032 0ustar00(()=>{"use strict";var e={d:(a,t)=>{for(var r in t)e.o(t,r)&&!e.o(a,r)&&Object.defineProperty(a,r,{enumerable:!0,get:t[r]})},o:(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},a={};e.r(a),e.d(a,{default:()=>c});const t=window.yoast.analysis,r=["abans","així","alhora","aleshores","altrament","anteriorment","breument","bàsicament","contràriament","després","doncs","efectivament","endemés","especialment","evidentment","finalment","fins a","fins que","generalment","igualment","malgrat","mentre","mentrestant","parallelament","paral·lelament","però","perquè","quan","primerament","resumidament","resumint","segurament","segons això","sens dubte","sinó","sobretot","també","tanmateix"].concat(["a banda d'això","a continuació","a diferència de","a fi de","a fi que","a força de","a manera de resum","a més","a partir d'aquí","a partir d'ara","a tall d'exemple","a tall de recapitulació","a tall de resum","al capdavall","al contrari","al mateix temps","amb relació a","tot plegat","ara bé","atès que","com a conseqüència","com a exemple","com a resultat","com a resum","com que","comptat i debatut","considerant que","convé destacar","convé recalcar","convé ressaltar que","d'altra banda","d’una banda","d’una forma breu","de la mateixa manera","de manera parallela","de manera paral·lela","de manera que","de tota manera","degut a","deixant de banda","dit d'una altra manera","donat que","en a resum","en lloc de","en altres paraules","en aquest sentit","en canvi","en conclusió","en conjunt","en conseqüència","encara que","en darrer lloc","en darrer terme","en definitiva","en efecte","en general","en particular","en pocs mots","en poques paraules","en primer lloc","en relació amb","en resum","en segon lloc","en síntesi","en suma","en tercer lloc","en últim terme","és a dir","és més","és per això que","fins i tot","gràcies a","gràcies de","igual com","igual que","ja que","llevat que","més aviat","més tard","més endavant","no obstant","o sia","o sigui","òbviament","pel fet que","pel general","pel que","per acabar","per això","per altra banda","per aquest motiu","per causa de","per causa que","per cert","per començar","per concloure","per concretar","per contra","per exemple","per illustrar","per il·lustrar","per l'altra part","per l'altre cantó","per la qual cosa","per mitjà de","per posar un exemple","per raó de","per raó que","per tal de","per tal que","per tant","per últim","per un cantó","per un costat","per una altra banda","per una part","quant a","recapitulant","respecte de","s'ha de tenir en compte que","sempre que","tal com s’ha dit","tan bon punt","tan aviat com","tenint en compte que","tot i","tot seguit","val a dir","val la pena dir que","vist que"]),n=[["ara","ara"],["ni","ni"]],s={recommendedLength:25},{baseStemmer:l}=t.languageProcessing;function i(){return l}const{AbstractResearcher:o}=t.languageProcessing;class c extends o{constructor(e){super(e),delete this.defaultResearches.getFleschReadingScore,delete this.defaultResearches.getPassiveVoiceResult,delete this.defaultResearches.getSentenceBeginnings,delete this.defaultResearches.functionWordsInKeyphrase,Object.assign(this.config,{language:"ca",functionWords:[],transitionWords:r,twoPartTransitionWords:n,sentenceLength:s}),Object.assign(this.helpers,{getStemmer:i})}}(window.yoast=window.yoast||{}).Researcher=a})();js/dist/languages/tr.js000064400000207407147206602470011076 0ustar00(()=>{"use strict";var i={d:(e,r)=>{for(var a in r)i.o(r,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},o:(i,e)=>Object.prototype.hasOwnProperty.call(i,e),r:i=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})}},e={};i.r(e),i.d(e,{default:()=>p});const r=window.yoast.analysis,a=["bunlar","şunlar","onlar”, “burası","orası","şurası","burayı","orayı","şurayı”, “buraya","oraya","şuraya”, “burada","orada","şurada”, “buradan","oradan","şuradan","bu","şu","o","bir","íki","üç","dört","beş","altı","yedi","sekiz","dokuz","on"],s=["fakat","halbuki","hatta","üstelik","ancak","oysa","sonuçta","yalnız","çünkü","oysaki","kısacası","özetle","böylelikle","ama","lakin","ayrıca","açıkcası","yani","sonucunda","böylece","kısaca","veya","veyahut","zira","öyleyse","sonrasında","ardından","vakıa","gerçi","karşın","tümüyle","bütünüyle","tamamıyla","genelde","diğer","başka","önce","öncesinde","sonra","yanısıra","ama","muhakkak","kesinlikle","şüphesiz","elbet","elbette","kuşkusuz","başlıca","bilakis","aksine","tersine","devamında","özellikle","bilhassa","nihayet","nihayetinde","neticede","ayrıyeten","dahası","çoğunlukla","genellikle","genelde","dolayısıyla","gelgelelim","aslında","doğrusu","mamafih","binaenaleyh","evvelce","önceden","şöylelikle","örneğin","mesela","nitekim","mademki","şimdi","halihazırda","i̇laveten","aynen","nazaran","nedeniyle","yüzünden","umumiyetle","ekseriye","amacıyla","gayesiyle","velhasıl","ezcümle","özetlersek","etraflıca","tafsilatlı","genişçe","bilfiil","filhakika","evvela","i̇lkin","en önce","birincisi","i̇kincisi","üçüncüsü","sonuncusu","tıpkı","topyekun","hem","kah","ister","ya","gerekse","sayesinde","sebebiyle","üzere","göre","uyarınca","halen","gerçekten","madem","yoksa"],t=s.concat(["o halde","bundan böyle","demek ki","ne yazık ki","görüldüğü gibi","i̇lk olarak","son olarak","ne var ki","buna rağmen","yine de","başka bir deyişle","açıklamak gerekirse","özetlemek gerekirse","kısaca söylemek gerekirse","görüldüğü gibi","ve bunun gibi","halbu ki","buna göre","ona göre","ek olarak","her ne kadar","velev ki","olmakla beraber","bile olsa","i̇le beaber","i̇le birlikte","her şeye rağmen","bütün yanlarıyla","bütün yönleriyle","ele alacak olursak","baştan sona","diğer bir","başka bir","daha önce","daha sonra","bundan başka","bunun yanında","bunun yanı sıra","bununla birlikte","buna ilaveten","bunun dışında","elbette ki","muhakkak ki","belli başlı","karşılaştırmak gerekirse","karşılaştırmalı olarak","aynı zamanda","sonuç olarak","diğer taraftan","diğer bir taraftan","buna karşılık","tam tersine","buna bağlı olarak","buna parelel olarak","i̇kinci olarak","üçüncü olarak","aynı derecede","eşit olarak","başta olmak üzere","en sonunda","açık bir şekilde","ana hatlarıyla","genel itibariyle","genel anlamda","genel olarak","bunun için","bu nedenle","bundan dolayı","bu sebeple","dolayısı ile","her halükarda","aynı biçimde","aynı şekilde","bu esnada","bu arada","hal böyleyken","bağlı kalmaksızın","açık olarak","belli ki","ayrıntılı olarak","bundan önce","sözün kısası","az ve öz bir şekilde","tüm ayrıntılarıyla","bu şekilde","o yüzden","bu sayede","buradan hareketle","buna mukabil","en önemlisi","her şeyden önce","esas olarak","hepsinden önce","hepsinden öte","hepsinden ötesi","her şeyin üzerinde","her şeyin ötesinde","hepsinden önemlisi","asıl önemlisi","her şeyi hesaba katarak","bütün olarak","her şey göz önüne alındığında","pararel olarak","diğer bir nokta","diğer açıdan","öyle ya da böyle","doğrusunu söylemek gerekirse","i̇şin doğrusu","aslına bakılırsa","gerçek şu ki","hattı zatında","aslına bakıldığında","aslına bakarsak","i̇şin aslı","sonuç itibariyle","örnek olarak","örneleyecek olursak","görülebileceği gibi","görülebileceği üzere","görüldüğü üzere","söylendiği gibi","söylenildiği gibi","söylediği gibi","söylediğim gibi","olduğu kadar","önceden belirtildiği gibi","önceden söylendiği gibi","yukarıda gösterildiği gibi","eninde sonunda","önünde sonunda","şu anda","bu sırada","bununla beraber","bu noktada","bunun ışığında","bunların ışığında","aşikar olarak","aynı sebeple","bir de","doğru da olsa","doğru bile olsa","öyle bile olsa","öyle de olsa","i̇le ilgili","olsa bile","eğer ki","olsa dahi","ondan dolayı","o sebepten dolayı","bu yüzden","onun için","esas itibarıyla","aynı sebepten dolayı","bu amaçla","zaman zaman","arada sırada","dönem dönem","arada bir","diyelim ki","farz edelim ki","farz edersek","kısaca söylecek olursak","tek kelimeyle","birkaç kelimeyle","sözün özü","en nihayetinde","uzun uzadıya","her iki durumda da","özü itibariyle","amacı ile","olması için","başka bir ifadeyle","diğer bir deyişle","i̇lk önce","bir yandan","bir taraftan","hatırlatmak gerekirse","bu bağlamda","gel gelelim","her şey hesaba katılırsa","bütüne bakıldığında","belirtildiği gibi","bir başka ifadeyle","lafı toparlamak gerekirse","bu düşünceyle","bu maksatla","bu doğrultuda","bu niyetle","ne de","ya da","aksi durumda","bu durum","olup olmadığı","diğer yandan","öte yandan","ne olursa olsun"]),n=function(i){let e=i;return i.forEach((r=>{(r=r.split("-")).length>0&&r.filter((e=>!i.includes(e))).length>0&&(e=e.concat(r))})),e}([].concat(["bir"],["i̇ki","üç","dört","beş","altı","yedi","sekiz","dokuz","on","on bir","on i̇ki","on üç","on dört","on beş","on altı","on yedi","on sekiz","on dokuz","yirmi","yirmi bir","yirmi i̇ki","yirmi üç","yirmi dört","yirmi beş","yirmi altı","yirmi yedi","yirmi sekiz","yirmi dokuz","otuz","kırk","elli","altmış","yetmiş","seksen","doksan","yüz","bin","milyon","milyar"],["birinci","i̇kinci","üçüncü","dördüncü","beşinci","altıncı","yedinci","sekizinci","dokuzuncu","onuncu"],["tam","yarım","çeyrek","üçte biri","üçte ikisi","tamamı","yarısı","çeyreği","üçte biri","üçte ikisi"],["ben","sen","o","biz","siz","onlar","beni","seni","onu","bizi","sizi","onları","bizleri","sizleri","bana","sana","ona","bize","size","onlara","bizlere","sizlere","bende","sende","onda","bizde","sizde","onlarda","bizlerde","sizlerde","benden","senden","ondan","bizden","sizden","onlardan","bizlerden","sizlerden","benim","senin","onun","bizim","sizin","onların","bizlerin","sizlerin","bu","şu","o","öteki","beriki","bura","şura","ora","burası","şurası","orası","böylesi","şöylesi","öylesi","bunlar","şunlar","onlar","ötekiler","berikiler","buralar","şuralar","oralar","birbiri","birbirimiz","birbiriniz","birbirleri","birbirimizi","birbirinizi","birbirlerini","birbirimize","birbirinize","birbirlerine","birbirimizde","birbirinizde","birbirlerinde","birbirimizden","birbirinizden","birbirlerinden","birbirimizle","birbirinizle","birbirleriyle"],["kim","kimi","kime","kimde","kimden","kimin","kiminle","ne","neyi","neyde","neyden","neyle","ne için","niçin","niye","ne diye","nere","nereyi","nereye","nerede","nereden","neresi","neden","hangi","hangisi","kaç","kaçı","kaçıncı","kaçta","nasıl","ne kadar","ne zaman","mı","hangi","hangisi","kimler","kimleri","kimlere","kimlerde","kimlerden","neler","neleri","nelere","nelerde","nelerden","hangiler","hangileri","hangilere"],["hepsi","bazısı","çoğu","birçoğu","birazı","hepsi","bütünü","yeteri kadarı","birkaçı","biri","her ikisi","i̇kisinden biri","hiç biri","diğeri","tümü","bir kısmı","pek çoğu","her biri","bazı","çok","çoğu","birçok","biraz","bütün","yeteri kadar","birkaç","bir","her iki","hiç bir","diğer","tüm","bir kısım","pek çok","her bir"],["kendi","kendim","kendimi","kendime","kendimde","kendimden","kendin","kendini","kendine","kendinde","kendinden","kendisi","kendiyle","kendileri","kendilerine","kendilerinde","kendilerinden","kendileriyle"],["kimi","kimse","biri","birisi","başkası","bazısı","bir çoğu","bir takımı","birkaçı","birazı","herkes","hepsi","hepimiz","hiçbiri","herhangi biri","her biri","şey","falan","filan","falanca","öteberi","tümü","bütünü","kimileri","kimseler","birileri","başkaları","bazıları","bir çokları","herkesler"],["i̇çin","gibi","kadar","ancak","yalnız","i̇le","sadece","sanki","değil","üzere","dair","karşın","rağmen","özgü","doğru","dek","değin","ait","beri","başka","itibaren","dolayı","ötürü","adeta","sırf","diye","tek","karşı"],["ve","i̇le","veya","ya da","yahut","veyahut","ama","fakat","lakin","yalnız","ancak","oysa","oysaki","halbu ki","ne var ki","çünkü","zira","de","da","ki","meğer","madem","mademki","demek","demek ki","üstelik","hatta","yani","hem...hem","hem de","ne","kah","i̇ster","ister","açıkcası","bile","ya","da","ise","öyleyse","kim bilir","gerek","gerekse de","ta ki","zati"],["demek","dedim","dedin","dedi","dedik","dediniz","dediler","der","söylemek","söyledim","söyledin","söyledi","söyledik","söylediniz","söylediler","söyler","söylerler","sormak","sordum","sordun","sordu","sorduk","sordunuz","sordular","sorar","sorarlar","belirtmek","belirttim","belirttin","belirtti","belirttik","belirttiniz","belirttiler","belirtir","belirtirler","açıklamak","açıkladım","açıkladın","açıkladı","açıkladık","açıkladınız","açıkladılar","açıklar","açıklarlar","düşünmek","düşündüm","düşündün","düşündü","düşündük","düşündünüz","düşündüler","düşünür","düşünürler","konuşmak","konuşdum","konuştun","konuştu","konuştuk","konuştunuz","konuştular","konuşur","konuşurlar","bildirmek","bildirdim","bildirdin","bildirdi","bildirdik","bildirdiniz","bildirdiler","birdirir","bildirirler","ele","almak","aldım","aldın","aldı","aldık","aldınız","aldılar","önermek","önerdim","önerdin","önerdi","önerdik","önerdiniz","önerdiler","önerir","önerirler","anlamak","anladım","anladın","anladı","anladık","anladınız","anladılar","anlar","anlarlar"],["en","daha","pek çok","en çok","fazla","epey","epeyce","bayağı","oldukça","pek","gayet","fazlaca","fevkalede","tamamen","fena halde","fena şekilde","gerçekten","zerre kadar","biraz","son derece","deli gibi","en","çok","azıcık"],["etmek","olmak","yapmak","kalmak","gelmek","kalmak","bulunmak","demek","dilemek","söylemek","durmak","eylemek","yazmak","durmak","vermek","kabul","teşekkür","memnun","seyir","zan","bilmek"],["yeni","eski","önceki","i̇yi","büyük","küçük","kolay","zor","hızlı","yavaş","yüksek","alçak","kısa","uzun","i̇nce","kalın","gerçek","yalan","yanlış","basit","zor","aynı","farklı","belli","belirsiz","modern","geleneksel","muhtemel","yaygın","genç","yaşlı","zamansız","acı","tatlı","tuzlu","sıcak","soğuk","kalabalık","sakin","yalnız","dar","geniş","siyah","beyaz","mavi","kırmızı","sarı","temiz","kirli","muhteşem","nazik","kibar","akıllı","zeki","gizli","açık","kapalı","dikkatli","gürültülü","sevinçli","eski","önce","i̇yi","büyük","küçük","kolay","zor","hızlı","yavaş","yüksek","alçak","kısa","uzun","i̇nce","kalın","gerçek","yanlış","basit","zor","aynı","farklı","belli","belirsiz","modern","geleneksel","muhtemel","yaygın","nadir","genç","yaşlı","zamansız","acı","tatlı","tuzlu","sıcak","soğuk","kalabalık","sakin","yalnız","dar","geniş","siyah","beyaz","mavi","kırmızı","sarı","temiz","kirli","muhteşem","nazik","kibar","akıllı","zeki","gizli","açık","kapalı","dikkatle","gürültülü","uzun","sevinçle","aşağı","yukarı","sağa","sola","i̇çeri dışarı","bugün","yarın","haftaya","seneye","ne zaman","nereye","neden","niye","ne kadar","nasıl","ne"],["ey","hey","bre","hişt","şşt","ah","ahh","ee","vay","i̇mdat","hah","ay","aa","aaa","hay allah","aman","aman dikkat","vah","ya","yaa","ooo","of","tüh","peh","aman","haydi","sakın","yuh"],["çay kaşığı","çay k.","yemek kaşığı","yemek k.","tatlı kaşığı","tatlı k.","çay bardağı","çay b.","su bardağı","su b.","kahve fincanı","kahve f.","tepeleme","tepeleme kaşık","tepeleme bardak","gr","ml","kg","mg","cl","oz","çeyrek","tam","yarım","üçte biri","üçte ikisi","parmak"],["saniye","saniyeler","dakika","dakikalar","saat","saatler","gün","günler","hafta","haftalar","ay","aylar","yıl","yıllar","bugün","yarın","dün","sabah","öğlen","akşam","gece","gündüz"],["şey","şeyler","olasılık","çeşit","kişi"],["hapşu","hapşırık","hapşurmak","horr","horultu","horlamak","şırıl","şırıltı","şırıldamak","hışır","hışırtı","hışırdamak","gıcır","gıcırtı","gıcırdamak","çatır","çatırtı","çatırdamak","pat","patlamak","vın","vınlamak","zırr","zırıltı","zırlamak","tık","tıkırtı","tıkırdamak","çıt","çıtırtı","çıtırdamak","fokur","fokurtu","fokurdamak","kıt","kıtırtı","kıtırdamak","patırtı"],["bayan","bay","hanımefendi","hanfendi","hanım","beyefendi","beyfendi","bey","sayın","profesör","prof.","doktor","dr."],s)),h=[["ne","ne"],["gerek","gerek"],["olsun","olmasın"]],o={recommendedLength:15,percentages:{slightlyTooMany:20,farTooMany:25}},l=window.lodash;class u{get b(){return Object.prototype.hasOwnProperty.call(this,"_$esjava$b")?this._$esjava$b:this._$esjava$b=""}set b(i){this._$esjava$b=i}length$esjava$0(){return this.b.length}replace$esjava$3(i,e,r){if(0===i&&e===this.b.length)this.b=r;else{const a=this.b.substring(0,i),s=this.b.substring(e);this.b=a+r+s}}substring$esjava$2(i,e){return this.b.substring(i,e)}charAt$esjava$1(i){return this.b.charCodeAt(i)}subSequence$esjava$2(i,e){throw new Error("NotImpl: CharSequence::subSequence")}toString$esjava$0(){return this.b}length(...i){return 0===i.length?this.length$esjava$0(...i):super.length(...i)}replace(...i){return 3===i.length?this.replace$esjava$3(...i):super.replace(...i)}substring(...i){return 2===i.length?this.substring$esjava$2(...i):super.substring(...i)}charAt(...i){return 1===i.length?this.charAt$esjava$1(...i):super.charAt(...i)}subSequence(...i){return 2===i.length?this.subSequence$esjava$2(...i):super.subSequence(...i)}toString(...i){return 0===i.length?this.toString$esjava$0(...i):super.toString(...i)}}class m{static toCharArray$esjava$1(i){const e=i.length,r=new Array(e);for(let a=0;a=this.limit)return!1;let a=this.current.charAt(this.cursor);return!(a>r||a>3]&1<<(7&a))||(this.cursor++,0)))}in_grouping_b$esjava$3(i,e,r){if(this.cursor<=this.limit_backward)return!1;let a=this.current.charAt(this.cursor-1);return!(a>r||a>3]&1<<(7&a))||(this.cursor--,0)))}out_grouping$esjava$3(i,e,r){if(this.cursor>=this.limit)return!1;let a=this.current.charAt(this.cursor);return a>r||a>3]&1<<(7&a))&&(this.cursor++,!0))}out_grouping_b$esjava$3(i,e,r){if(this.cursor<=this.limit_backward)return!1;let a=this.current.charAt(this.cursor-1);return a>r||a>3]&1<<(7&a))&&(this.cursor--,!0))}in_range$esjava$2(i,e){if(this.cursor>=this.limit)return!1;const r=this.current.charAt(this.cursor);return!(r>e||re||r=this.limit)return!1;const r=this.current.charAt(this.cursor);return(r>e||re||r>1);let l=0,u=n0)break;if(a===r)break;if(o)break;o=!0}}for(;;){const e=i[r];if(n>=e.s_size){if(this.cursor=s+e.s_size,null===e.method)return e.result;let i;if(i=e.method.call(e.methodobject),this.cursor=s+e.s_size,i)return e.result}if(r=e.substring_i,r<0)return 0}}find_among_b$esjava$2(i,e){let r=0,a=e;const s=this.cursor,t=this.limit_backward;let n=0,h=0,o=!1;for(;;){const e=r+(a-r>>1);let l=0,u=n=0;_--){if(s-u===t){l=-1;break}if(l=this.current.charAt(s-1-u)-m.s[_],0!==l)break;u++}if(l<0?(a=e,h=u):(r=e,n=u),a-r<=1){if(r>0)break;if(a===r)break;if(o)break;o=!0}}for(;;){const e=i[r];if(n>=e.s_size){if(this.cursor=s-e.s_size,null===e.method)return e.result;let i;if(i=e.method.call(e.methodobject),this.cursor=s-e.s_size,i)return e.result}if(r=e.substring_i,r<0)return 0}}replace_s$esjava$3(i,e,r){const a=r.length-(e-i);return this.current.replace(i,e,r),this.limit+=a,this.cursor>=e?this.cursor+=a:this.cursor>i&&(this.cursor=i),a}slice_check$esjava$0(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length())throw new Error("Snowball: faulty slice operation")}slice_from$esjava$1(i){this.slice_check$esjava$0(),this.replace_s$esjava$3(this.bra,this.ket,i)}slice_del$esjava$0(){this.slice_from$esjava$1("")}insert$esjava$3(i,e,r){const a=this.replace_s$esjava$3(i,e,r);i<=this.bra&&(this.bra+=a),i<=this.ket&&(this.ket+=a)}slice_to$esjava$1(i){return this.slice_check$esjava$0(),i.replace(0,i.length(),this.current.substring(this.bra,this.ket)),i}setCurrent(...i){return 1===i.length?this.setCurrent$esjava$1(...i):super.setCurrent(...i)}getCurrent(...i){return 0===i.length?this.getCurrent$esjava$0(...i):super.getCurrent(...i)}copy_from(...i){return 1===i.length?this.copy_from$esjava$1(...i):super.copy_from(...i)}in_grouping(...i){return 3===i.length?this.in_grouping$esjava$3(...i):super.in_grouping(...i)}in_grouping_b(...i){return 3===i.length?this.in_grouping_b$esjava$3(...i):super.in_grouping_b(...i)}out_grouping(...i){return 3===i.length?this.out_grouping$esjava$3(...i):super.out_grouping(...i)}out_grouping_b(...i){return 3===i.length?this.out_grouping_b$esjava$3(...i):super.out_grouping_b(...i)}in_range(...i){return 2===i.length?this.in_range$esjava$2(...i):super.in_range(...i)}in_range_b(...i){return 2===i.length?this.in_range_b$esjava$2(...i):super.in_range_b(...i)}out_range(...i){return 2===i.length?this.out_range$esjava$2(...i):super.out_range(...i)}out_range_b(...i){return 2===i.length?this.out_range_b$esjava$2(...i):super.out_range_b(...i)}eq_s(...i){return 2===i.length?this.eq_s$esjava$2(...i):super.eq_s(...i)}eq_s_b(...i){return 2===i.length?this.eq_s_b$esjava$2(...i):super.eq_s_b(...i)}eq_v(...i){return 1===i.length?this.eq_v$esjava$1(...i):super.eq_v(...i)}eq_v_b(...i){return 1===i.length?this.eq_v_b$esjava$1(...i):super.eq_v_b(...i)}find_among(...i){return 2===i.length?this.find_among$esjava$2(...i):super.find_among(...i)}find_among_b(...i){return 2===i.length?this.find_among_b$esjava$2(...i):super.find_among_b(...i)}replace_s(...i){return 3===i.length?this.replace_s$esjava$3(...i):super.replace_s(...i)}slice_check(...i){return 0===i.length?this.slice_check$esjava$0(...i):super.slice_check(...i)}slice_from(...i){return 1===i.length?this.slice_from$esjava$1(...i):super.slice_from(...i)}slice_del(...i){return 0===i.length?this.slice_del$esjava$0(...i):super.slice_del(...i)}insert(...i){return 3===i.length?this.insert$esjava$3(...i):super.insert(...i)}slice_to(...i){return 1===i.length?this.slice_to$esjava$1(...i):super.slice_to(...i)}}class k extends _{stem$esjava$0(){throw"NotImpl < stem$esjava$0 >"}stem(...i){return 0===i.length?this.stem$esjava$0(...i):super.stem(...i)}}class c extends k{constructor(i){super(),c.morphologyData=i.externalStemmer}static get methodObject(){return delete c.methodObject,c.methodObject=null}static get a_0(){return delete c.a_0,c.a_0=[new m(c.morphologyData.a_0.SuffixM,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixN,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixMiz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixNiz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixMuz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixNuz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixMuzDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixNuzDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixMizUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_0.SuffixNizUndotted,-1,-1,"",c.methodObject)]}static get a_1(){return delete c.a_1,c.a_1=[new m(c.morphologyData.a_1.SuffixLeri,-1,-1,"",c.methodObject),new m(c.morphologyData.a_1.SuffixLariUndotted,-1,-1,"",c.methodObject)]}static get a_2(){return delete c.a_2,c.a_2=[new m(c.morphologyData.a_2.SuffixNi,-1,-1,"",c.methodObject),new m(c.morphologyData.a_2.SuffixNu,-1,-1,"",c.methodObject),new m(c.morphologyData.a_2.SuffixNuDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_2.SuffixNiUndotted,-1,-1,"",c.methodObject)]}static get a_3(){return delete c.a_3,c.a_3=[new m(c.morphologyData.a_3.SuffixInDotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_3.SuffixUn,-1,-1,"",c.methodObject),new m(c.morphologyData.a_3.SuffixUnDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_3.SuffixInUndotted,-1,-1,"",c.methodObject)]}static get a_4(){return delete c.a_4,c.a_4=[new m(c.morphologyData.a_4.SuffixA,-1,-1,"",c.methodObject),new m(c.morphologyData.a_4.SuffixE,-1,-1,"",c.methodObject)]}static get a_5(){return delete c.a_5,c.a_5=[new m(c.morphologyData.a_5.SuffixNa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_5.SuffixNe,-1,-1,"",c.methodObject)]}static get a_6(){return delete c.a_6,c.a_6=[new m(c.morphologyData.a_6.SuffixDa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_6.SuffixTa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_6.SuffixDe,-1,-1,"",c.methodObject),new m(c.morphologyData.a_6.SuffixTe,-1,-1,"",c.methodObject)]}static get a_7(){return delete c.a_7,c.a_7=[new m(c.morphologyData.a_7.SuffixNda,-1,-1,"",c.methodObject),new m(c.morphologyData.a_7.SuffixNde,-1,-1,"",c.methodObject)]}static get a_8(){return delete c.a_8,c.a_8=[new m(c.morphologyData.a_8.SuffixDan,-1,-1,"",c.methodObject),new m(c.morphologyData.a_8.SuffixTan,-1,-1,"",c.methodObject),new m(c.morphologyData.a_8.SuffixDen,-1,-1,"",c.methodObject),new m(c.morphologyData.a_8.SuffixTen,-1,-1,"",c.methodObject)]}static get a_9(){return delete c.a_9,c.a_9=[new m(c.morphologyData.a_9.SuffixNdan,-1,-1,"",c.methodObject),new m(c.morphologyData.a_9.SuffixNden,-1,-1,"",c.methodObject)]}static get a_10(){return delete c.a_10,c.a_10=[new m(c.morphologyData.a_10.SuffixLa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_10.SuffixLe,-1,-1,"",c.methodObject)]}static get a_11(){return delete c.a_11,c.a_11=[new m(c.morphologyData.a_11.SuffixCa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_11.SuffixCe,-1,-1,"",c.methodObject)]}static get a_12(){return delete c.a_12,c.a_12=[new m(c.morphologyData.a_12.SuffixImDotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_12.SuffixUm,-1,-1,"",c.methodObject),new m(c.morphologyData.a_12.SuffixUmDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_12.SuffixImUndotted,-1,-1,"",c.methodObject)]}static get a_13(){return delete c.a_13,c.a_13=[new m(c.morphologyData.a_13.SuffixSin,-1,-1,"",c.methodObject),new m(c.morphologyData.a_13.SuffixSun,-1,-1,"",c.methodObject),new m(c.morphologyData.a_13.SuffixSunDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_13.SuffixSinUndotted,-1,-1,"",c.methodObject)]}static get a_14(){return delete c.a_14,c.a_14=[new m(c.morphologyData.a_14.SuffixIzDotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_14.SuffixUz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_14.SuffixUzDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_14.SuffixIzUndotted,-1,-1,"",c.methodObject)]}static get a_15(){return delete c.a_15,c.a_15=[new m(c.morphologyData.a_15.SuffixSiniz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_15.SuffixSunuz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_15.SuffixSunuzDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_15.SuffixSinizUndotted,-1,-1,"",c.methodObject)]}static get a_16(){return delete c.a_16,c.a_16=[new m(c.morphologyData.a_16.SuffixLar,-1,-1,"",c.methodObject),new m(c.morphologyData.a_16.SuffixLer,-1,-1,"",c.methodObject)]}static get a_17(){return delete c.a_17,c.a_17=[new m(c.morphologyData.a_17.SuffixNiz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_17.SuffixNuz,-1,-1,"",c.methodObject),new m(c.morphologyData.a_17.SuffixNuzDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_17.SuffixNizUndotted,-1,-1,"",c.methodObject)]}static get a_18(){return delete c.a_18,c.a_18=[new m(c.morphologyData.a_18.SuffixDir,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixTir,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixDur,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixTur,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixDurDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixTurDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixDirUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_18.SuffixTirUndotted,-1,-1,"",c.methodObject)]}static get a_19(){return delete c.a_19,c.a_19=[new m(c.morphologyData.a_19.SuffixCasinaUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_19.SuffixCesine,-1,-1,"",c.methodObject)]}static get a_20(){return delete c.a_20,c.a_20=[new m(c.morphologyData.a_20.SuffixDi,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTi,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDik,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTik,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDuk,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTuk,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDukDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTukDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDikUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTikUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDim,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTim,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDum,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTum,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDumDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTumDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDimUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTimUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDin,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTin,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDun,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTun,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDunDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTunDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDinUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTinUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDu,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTu,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDuDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTuDieresis,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixDiUndotted,-1,-1,"",c.methodObject),new m(c.morphologyData.a_20.SuffixTiUndotted,-1,-1,"",c.methodObject)]}static get a_21(){return delete c.a_21,c.a_21=[new m(c.morphologyData.a_21.SuffixSa,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSe,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSak,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSek,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSam,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSem,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSan,-1,-1,"",c.methodObject),new m(c.morphologyData.a_21.SuffixSen,-1,-1,"",c.methodObject)]}static get a_22(){return delete c.a_22,c.a_22=[new m(c.morphologyData.a_22.SuffixMisCedilla,-1,-1,"",c.methodObject),new m(c.morphologyData.a_22.SuffixMusCedilla,-1,-1,"",c.methodObject),new m(c.morphologyData.a_22.SuffixMusDieresisCedilla,-1,-1,"",c.methodObject),new m(c.morphologyData.a_22.SuffixMisUndottedCedilla,-1,-1,"",c.methodObject)]}static get a_23(){return delete c.a_23,c.a_23=[new m(c.morphologyData.a_23.SuffixB,-1,1,"",c.methodObject),new m(c.morphologyData.a_23.SuffixC,-1,2,"",c.methodObject),new m(c.morphologyData.a_23.SuffixD,-1,3,"",c.methodObject),new m(c.morphologyData.a_23.SuffixGSoft,-1,4,"",c.methodObject)]}static get g_vowel(){return delete c.g_vowel,c.g_vowel=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1]}static get g_U(){return delete c.g_U,c.g_U=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1]}static get g_vowel1(){return delete c.g_vowel1,c.g_vowel1=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]}static get g_vowel2(){return delete c.g_vowel2,c.g_vowel2=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130]}static get g_vowel3(){return delete c.g_vowel3,c.g_vowel3=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]}static get g_vowel4(){return delete c.g_vowel4,c.g_vowel4=[17]}static get g_vowel5(){return delete c.g_vowel5,c.g_vowel5=[65]}static get g_vowel6(){return delete c.g_vowel6,c.g_vowel6=[65]}get B_continue_stemming_noun_suffixes(){return Object.prototype.hasOwnProperty.call(this,"_$esjava$B_continue_stemming_noun_suffixes")?this._$esjava$B_continue_stemming_noun_suffixes:this._$esjava$B_continue_stemming_noun_suffixes=!1}set B_continue_stemming_noun_suffixes(i){this._$esjava$B_continue_stemming_noun_suffixes=i}get I_strlen(){return Object.prototype.hasOwnProperty.call(this,"_$esjava$I_strlen")?this._$esjava$I_strlen:this._$esjava$I_strlen=0}set I_strlen(i){this._$esjava$I_strlen=i}r_check_vowel_harmony$esjava$0(){let i,e,r,a,s,t,n,h,o,l,u;i=this.limit-this.cursor;i:for(;;){e=this.limit-this.cursor;e:do{if(!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break e;this.cursor=this.limit-e;break i}while(0);if(this.cursor=this.limit-e,this.cursor<=this.limit_backward)return!1;this.cursor--}i:do{r=this.limit-this.cursor;e:do{if(!this.eq_s_b$esjava$2(1,"a"))break e;r:for(;;){a=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel1,97,305))break a;this.cursor=this.limit-a;break r}while(0);if(this.cursor=this.limit-a,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"e"))break e;r:for(;;){s=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel2,101,252))break a;this.cursor=this.limit-s;break r}while(0);if(this.cursor=this.limit-s,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"ı"))break e;r:for(;;){t=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel3,97,305))break a;this.cursor=this.limit-t;break r}while(0);if(this.cursor=this.limit-t,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"i"))break e;r:for(;;){n=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel4,101,105))break a;this.cursor=this.limit-n;break r}while(0);if(this.cursor=this.limit-n,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"o"))break e;r:for(;;){h=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel5,111,117))break a;this.cursor=this.limit-h;break r}while(0);if(this.cursor=this.limit-h,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"ö"))break e;r:for(;;){o=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel6,246,252))break a;this.cursor=this.limit-o;break r}while(0);if(this.cursor=this.limit-o,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);this.cursor=this.limit-r;e:do{if(!this.eq_s_b$esjava$2(1,"u"))break e;r:for(;;){l=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel5,111,117))break a;this.cursor=this.limit-l;break r}while(0);if(this.cursor=this.limit-l,this.cursor<=this.limit_backward)break e;this.cursor--}break i}while(0);if(this.cursor=this.limit-r,!this.eq_s_b$esjava$2(1,"ü"))return!1;e:for(;;){u=this.limit-this.cursor;r:do{if(!this.in_grouping_b$esjava$3(c.g_vowel6,246,252))break r;this.cursor=this.limit-u;break e}while(0);if(this.cursor=this.limit-u,this.cursor<=this.limit_backward)return!1;this.cursor--}}while(0);return this.cursor=this.limit-i,!0}r_mark_suffix_with_optional_n_consonant$esjava$0(){let i,e,r,a,s,t,n;i:do{i=this.limit-this.cursor;e:do{if(e=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"n"))break e;if(this.cursor=this.limit-e,this.cursor<=this.limit_backward)break e;if(this.cursor--,r=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break e;this.cursor=this.limit-r;break i}while(0);this.cursor=this.limit-i,a=this.limit-this.cursor;e:do{if(s=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"n"))break e;return this.cursor=this.limit-s,!1}while(0);if(this.cursor=this.limit-a,t=this.limit-this.cursor,this.cursor<=this.limit_backward)return!1;if(this.cursor--,n=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))return!1;this.cursor=this.limit-n,this.cursor=this.limit-t}while(0);return!0}r_mark_suffix_with_optional_s_consonant$esjava$0(){let i,e,r,a,s,t,n;i:do{i=this.limit-this.cursor;e:do{if(e=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"s"))break e;if(this.cursor=this.limit-e,this.cursor<=this.limit_backward)break e;if(this.cursor--,r=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break e;this.cursor=this.limit-r;break i}while(0);this.cursor=this.limit-i,a=this.limit-this.cursor;e:do{if(s=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"s"))break e;return this.cursor=this.limit-s,!1}while(0);if(this.cursor=this.limit-a,t=this.limit-this.cursor,this.cursor<=this.limit_backward)return!1;if(this.cursor--,n=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))return!1;this.cursor=this.limit-n,this.cursor=this.limit-t}while(0);return!0}r_mark_suffix_with_optional_y_consonant$esjava$0(){let i,e,r,a,s,t,n;i:do{i=this.limit-this.cursor;e:do{if(e=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"y"))break e;if(this.cursor=this.limit-e,this.cursor<=this.limit_backward)break e;if(this.cursor--,r=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break e;this.cursor=this.limit-r;break i}while(0);this.cursor=this.limit-i,a=this.limit-this.cursor;e:do{if(s=this.limit-this.cursor,!this.eq_s_b$esjava$2(1,"y"))break e;return this.cursor=this.limit-s,!1}while(0);if(this.cursor=this.limit-a,t=this.limit-this.cursor,this.cursor<=this.limit_backward)return!1;if(this.cursor--,n=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_vowel,97,305))return!1;this.cursor=this.limit-n,this.cursor=this.limit-t}while(0);return!0}r_mark_suffix_with_optional_U_vowel$esjava$0(){let i,e,r,a,s,t,n;i:do{i=this.limit-this.cursor;e:do{if(e=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_U,105,305))break e;if(this.cursor=this.limit-e,this.cursor<=this.limit_backward)break e;if(this.cursor--,r=this.limit-this.cursor,!this.out_grouping_b$esjava$3(c.g_vowel,97,305))break e;this.cursor=this.limit-r;break i}while(0);this.cursor=this.limit-i,a=this.limit-this.cursor;e:do{if(s=this.limit-this.cursor,!this.in_grouping_b$esjava$3(c.g_U,105,305))break e;return this.cursor=this.limit-s,!1}while(0);if(this.cursor=this.limit-a,t=this.limit-this.cursor,this.cursor<=this.limit_backward)return!1;if(this.cursor--,n=this.limit-this.cursor,!this.out_grouping_b$esjava$3(c.g_vowel,97,305))return!1;this.cursor=this.limit-n,this.cursor=this.limit-t}while(0);return!0}r_mark_possessives$esjava$0(){return 0!==this.find_among_b$esjava$2(c.a_0,10)&&!!this.r_mark_suffix_with_optional_U_vowel$esjava$0()}r_mark_sU$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&!!this.in_grouping_b$esjava$3(c.g_U,105,305)&&!!this.r_mark_suffix_with_optional_s_consonant$esjava$0()}r_mark_lArI$esjava$0(){return 0!==this.find_among_b$esjava$2(c.a_1,2)}r_mark_yU$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&!!this.in_grouping_b$esjava$3(c.g_U,105,305)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_nU$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_2,4)}r_mark_nUn$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_3,4)&&!!this.r_mark_suffix_with_optional_n_consonant$esjava$0()}r_mark_yA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_4,2)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_nA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_5,2)}r_mark_DA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_6,4)}r_mark_ndA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_7,2)}r_mark_DAn$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_8,4)}r_mark_ndAn$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_9,2)}r_mark_ylA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_10,2)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_ki$esjava$0(){return!!this.eq_s_b$esjava$2(2,"ki")}r_mark_ncA$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_11,2)&&!!this.r_mark_suffix_with_optional_n_consonant$esjava$0()}r_mark_yUm$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_12,4)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_sUn$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_13,4)}r_mark_yUz$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_14,4)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_sUnUz$esjava$0(){return 0!==this.find_among_b$esjava$2(c.a_15,4)}r_mark_lAr$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_16,2)}r_mark_nUz$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_17,4)}r_mark_DUr$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_18,8)}r_mark_cAsInA$esjava$0(){return 0!==this.find_among_b$esjava$2(c.a_19,2)}r_mark_yDU$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_20,32)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_ysA$esjava$0(){return 0!==this.find_among_b$esjava$2(c.a_21,8)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_ymUs_$esjava$0(){return!!this.r_check_vowel_harmony$esjava$0()&&0!==this.find_among_b$esjava$2(c.a_22,4)&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_mark_yken$esjava$0(){return!!this.eq_s_b$esjava$2(3,"ken")&&!!this.r_mark_suffix_with_optional_y_consonant$esjava$0()}r_stem_nominal_verb_suffixes$esjava$0(){let i,e,r,a,s,t,n,h,o,l;this.ket=this.cursor,this.B_continue_stemming_noun_suffixes=!0;i:do{i=this.limit-this.cursor;e:do{r:do{e=this.limit-this.cursor;a:do{if(!this.r_mark_ymUs_$esjava$0())break a;break r}while(0);this.cursor=this.limit-e;a:do{if(!this.r_mark_yDU$esjava$0())break a;break r}while(0);this.cursor=this.limit-e;a:do{if(!this.r_mark_ysA$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-e,!this.r_mark_yken$esjava$0())break e}while(0);break i}while(0);this.cursor=this.limit-i;e:do{if(!this.r_mark_cAsInA$esjava$0())break e;r:do{r=this.limit-this.cursor;a:do{if(!this.r_mark_sUnUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-r;a:do{if(!this.r_mark_lAr$esjava$0())break a;break r}while(0);this.cursor=this.limit-r;a:do{if(!this.r_mark_yUm$esjava$0())break a;break r}while(0);this.cursor=this.limit-r;a:do{if(!this.r_mark_sUn$esjava$0())break a;break r}while(0);this.cursor=this.limit-r;a:do{if(!this.r_mark_yUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-r}while(0);if(!this.r_mark_ymUs_$esjava$0())break e;break i}while(0);this.cursor=this.limit-i;e:do{if(!this.r_mark_lAr$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),a=this.limit-this.cursor;r:do{this.ket=this.cursor;a:do{s=this.limit-this.cursor;s:do{if(!this.r_mark_DUr$esjava$0())break s;break a}while(0);this.cursor=this.limit-s;s:do{if(!this.r_mark_yDU$esjava$0())break s;break a}while(0);this.cursor=this.limit-s;s:do{if(!this.r_mark_ysA$esjava$0())break s;break a}while(0);if(this.cursor=this.limit-s,!this.r_mark_ymUs_$esjava$0()){this.cursor=this.limit-a;break r}}while(0)}while(0);this.B_continue_stemming_noun_suffixes=!1;break i}while(0);this.cursor=this.limit-i;e:do{if(!this.r_mark_nUz$esjava$0())break e;r:do{t=this.limit-this.cursor;a:do{if(!this.r_mark_yDU$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-t,!this.r_mark_ysA$esjava$0())break e}while(0);break i}while(0);this.cursor=this.limit-i;e:do{r:do{n=this.limit-this.cursor;a:do{if(!this.r_mark_sUnUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-n;a:do{if(!this.r_mark_yUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-n;a:do{if(!this.r_mark_sUn$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-n,!this.r_mark_yUm$esjava$0())break e}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),h=this.limit-this.cursor;r:do{if(this.ket=this.cursor,!this.r_mark_ymUs_$esjava$0()){this.cursor=this.limit-h;break r}}while(0);break i}while(0);if(this.cursor=this.limit-i,!this.r_mark_DUr$esjava$0())return!1;this.bra=this.cursor,this.slice_del$esjava$0(),o=this.limit-this.cursor;e:do{this.ket=this.cursor;r:do{l=this.limit-this.cursor;a:do{if(!this.r_mark_sUnUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-l;a:do{if(!this.r_mark_lAr$esjava$0())break a;break r}while(0);this.cursor=this.limit-l;a:do{if(!this.r_mark_yUm$esjava$0())break a;break r}while(0);this.cursor=this.limit-l;a:do{if(!this.r_mark_sUn$esjava$0())break a;break r}while(0);this.cursor=this.limit-l;a:do{if(!this.r_mark_yUz$esjava$0())break a;break r}while(0);this.cursor=this.limit-l}while(0);if(!this.r_mark_ymUs_$esjava$0()){this.cursor=this.limit-o;break e}}while(0)}while(0);return this.bra=this.cursor,this.slice_del$esjava$0(),!0}r_stem_suffix_chain_before_ki$esjava$0(){let i,e,r,a,s,t,n,h,o,l,u;if(this.ket=this.cursor,!this.r_mark_ki$esjava$0())return!1;i:do{i=this.limit-this.cursor;e:do{if(!this.r_mark_DA$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),e=this.limit-this.cursor;r:do{this.ket=this.cursor;a:do{r=this.limit-this.cursor;s:do{if(!this.r_mark_lAr$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0(),a=this.limit-this.cursor;t:do{if(!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-a;break t}}while(0);break a}while(0);if(this.cursor=this.limit-r,!this.r_mark_possessives$esjava$0()){this.cursor=this.limit-e;break r}this.bra=this.cursor,this.slice_del$esjava$0(),s=this.limit-this.cursor;s:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-s;break s}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-s;break s}}while(0)}while(0)}while(0);break i}while(0);this.cursor=this.limit-i;e:do{if(!this.r_mark_nUn$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),t=this.limit-this.cursor;r:do{this.ket=this.cursor;a:do{n=this.limit-this.cursor;s:do{if(!this.r_mark_lArI$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0();break a}while(0);this.cursor=this.limit-n;s:do{this.ket=this.cursor;t:do{h=this.limit-this.cursor;n:do{if(!this.r_mark_possessives$esjava$0())break n;break t}while(0);if(this.cursor=this.limit-h,!this.r_mark_sU$esjava$0())break s}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),o=this.limit-this.cursor;t:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-o;break t}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-o;break t}}while(0);break a}while(0);if(this.cursor=this.limit-n,!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-t;break r}}while(0)}while(0);break i}while(0);if(this.cursor=this.limit-i,!this.r_mark_ndA$esjava$0())return!1;e:do{l=this.limit-this.cursor;r:do{if(!this.r_mark_lArI$esjava$0())break r;this.bra=this.cursor,this.slice_del$esjava$0();break e}while(0);this.cursor=this.limit-l;r:do{if(!this.r_mark_sU$esjava$0())break r;this.bra=this.cursor,this.slice_del$esjava$0(),u=this.limit-this.cursor;a:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-u;break a}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-u;break a}}while(0);break e}while(0);if(this.cursor=this.limit-l,!this.r_stem_suffix_chain_before_ki$esjava$0())return!1}while(0)}while(0);return!0}r_stem_noun_suffixes$esjava$0(){let i,e,r,a,s,t,n,h,o,l,u,m,_,k,c,d,b,$,f,y,g,j,v,w,p,z,D;i:do{i=this.limit-this.cursor;e:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),e=this.limit-this.cursor;r:do{if(!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-e;break r}}while(0);break i}while(0);this.cursor=this.limit-i;e:do{if(this.ket=this.cursor,!this.r_mark_ncA$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),r=this.limit-this.cursor;r:do{a:do{a=this.limit-this.cursor;s:do{if(this.ket=this.cursor,!this.r_mark_lArI$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0();break a}while(0);this.cursor=this.limit-a;s:do{this.ket=this.cursor;t:do{s=this.limit-this.cursor;n:do{if(!this.r_mark_possessives$esjava$0())break n;break t}while(0);if(this.cursor=this.limit-s,!this.r_mark_sU$esjava$0())break s}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),t=this.limit-this.cursor;t:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-t;break t}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-t;break t}}while(0);break a}while(0);if(this.cursor=this.limit-a,this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-r;break r}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-r;break r}}while(0)}while(0);break i}while(0);this.cursor=this.limit-i;e:do{this.ket=this.cursor;r:do{n=this.limit-this.cursor;a:do{if(!this.r_mark_ndA$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-n,!this.r_mark_nA$esjava$0())break e}while(0);r:do{h=this.limit-this.cursor;a:do{if(!this.r_mark_lArI$esjava$0())break a;this.bra=this.cursor,this.slice_del$esjava$0();break r}while(0);this.cursor=this.limit-h;a:do{if(!this.r_mark_sU$esjava$0())break a;this.bra=this.cursor,this.slice_del$esjava$0(),o=this.limit-this.cursor;s:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-o;break s}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-o;break s}}while(0);break r}while(0);if(this.cursor=this.limit-h,!this.r_stem_suffix_chain_before_ki$esjava$0())break e}while(0);break i}while(0);this.cursor=this.limit-i;e:do{this.ket=this.cursor;r:do{l=this.limit-this.cursor;a:do{if(!this.r_mark_ndAn$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-l,!this.r_mark_nU$esjava$0())break e}while(0);r:do{u=this.limit-this.cursor;a:do{if(!this.r_mark_sU$esjava$0())break a;this.bra=this.cursor,this.slice_del$esjava$0(),m=this.limit-this.cursor;s:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-m;break s}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-m;break s}}while(0);break r}while(0);if(this.cursor=this.limit-u,!this.r_mark_lArI$esjava$0())break e}while(0);break i}while(0);this.cursor=this.limit-i;e:do{if(this.ket=this.cursor,!this.r_mark_DAn$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0(),_=this.limit-this.cursor;r:do{this.ket=this.cursor;a:do{k=this.limit-this.cursor;s:do{if(!this.r_mark_possessives$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0(),c=this.limit-this.cursor;t:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-c;break t}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-c;break t}}while(0);break a}while(0);this.cursor=this.limit-k;s:do{if(!this.r_mark_lAr$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0(),d=this.limit-this.cursor;t:do{if(!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-d;break t}}while(0);break a}while(0);if(this.cursor=this.limit-k,!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-_;break r}}while(0)}while(0);break i}while(0);this.cursor=this.limit-i;e:do{this.ket=this.cursor;r:do{b=this.limit-this.cursor;a:do{if(!this.r_mark_nUn$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-b,!this.r_mark_ylA$esjava$0())break e}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),$=this.limit-this.cursor;r:do{a:do{f=this.limit-this.cursor;s:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0())break s;if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0())break s;break a}while(0);this.cursor=this.limit-f;s:do{this.ket=this.cursor;t:do{y=this.limit-this.cursor;n:do{if(!this.r_mark_possessives$esjava$0())break n;break t}while(0);if(this.cursor=this.limit-y,!this.r_mark_sU$esjava$0())break s}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),g=this.limit-this.cursor;t:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-g;break t}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-g;break t}}while(0);break a}while(0);if(this.cursor=this.limit-f,!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-$;break r}}while(0)}while(0);break i}while(0);this.cursor=this.limit-i;e:do{if(this.ket=this.cursor,!this.r_mark_lArI$esjava$0())break e;this.bra=this.cursor,this.slice_del$esjava$0();break i}while(0);this.cursor=this.limit-i;e:do{if(!this.r_stem_suffix_chain_before_ki$esjava$0())break e;break i}while(0);this.cursor=this.limit-i;e:do{this.ket=this.cursor;r:do{j=this.limit-this.cursor;a:do{if(!this.r_mark_DA$esjava$0())break a;break r}while(0);this.cursor=this.limit-j;a:do{if(!this.r_mark_yU$esjava$0())break a;break r}while(0);if(this.cursor=this.limit-j,!this.r_mark_yA$esjava$0())break e}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),v=this.limit-this.cursor;r:do{this.ket=this.cursor;a:do{w=this.limit-this.cursor;s:do{if(!this.r_mark_possessives$esjava$0())break s;this.bra=this.cursor,this.slice_del$esjava$0(),p=this.limit-this.cursor;t:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-p;break t}}while(0);break a}while(0);if(this.cursor=this.limit-w,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-v;break r}}while(0);if(this.bra=this.cursor,this.slice_del$esjava$0(),this.ket=this.cursor,!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-v;break r}}while(0);break i}while(0);this.cursor=this.limit-i,this.ket=this.cursor;e:do{z=this.limit-this.cursor;r:do{if(!this.r_mark_possessives$esjava$0())break r;break e}while(0);if(this.cursor=this.limit-z,!this.r_mark_sU$esjava$0())return!1}while(0);this.bra=this.cursor,this.slice_del$esjava$0(),D=this.limit-this.cursor;e:do{if(this.ket=this.cursor,!this.r_mark_lAr$esjava$0()){this.cursor=this.limit-D;break e}if(this.bra=this.cursor,this.slice_del$esjava$0(),!this.r_stem_suffix_chain_before_ki$esjava$0()){this.cursor=this.limit-D;break e}}while(0)}while(0);return!0}r_post_process_last_consonants$esjava$0(){let i;if(this.ket=this.cursor,i=this.find_among_b$esjava$2(c.a_23,4),0===i)return!1;switch(this.bra=this.cursor,i){case 0:return!1;case 1:this.slice_from$esjava$1("p");break;case 2:this.slice_from$esjava$1("ç");break;case 3:this.slice_from$esjava$1("t");break;case 4:this.slice_from$esjava$1("k")}return!0}r_append_U_to_stems_ending_with_d_or_g$esjava$0(){let i,e,r,a,s,t,n,h,o,l,u,m,_,k,d;i=this.limit-this.cursor;i:do{e=this.limit-this.cursor;e:do{if(!this.eq_s_b$esjava$2(1,"d"))break e;break i}while(0);if(this.cursor=this.limit-e,!this.eq_s_b$esjava$2(1,"g"))return!1}while(0);this.cursor=this.limit-i;i:do{r=this.limit-this.cursor;e:do{a=this.limit-this.cursor;r:for(;;){s=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break a;this.cursor=this.limit-s;break r}while(0);if(this.cursor=this.limit-s,this.cursor<=this.limit_backward)break e;this.cursor--}r:do{t=this.limit-this.cursor;a:do{if(!this.eq_s_b$esjava$2(1,"a"))break a;break r}while(0);if(this.cursor=this.limit-t,!this.eq_s_b$esjava$2(1,"ı"))break e}while(0);this.cursor=this.limit-a;{const i=this.cursor;this.insert$esjava$3(this.cursor,this.cursor,"ı"),this.cursor=i}break i}while(0);this.cursor=this.limit-r;e:do{n=this.limit-this.cursor;r:for(;;){h=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break a;this.cursor=this.limit-h;break r}while(0);if(this.cursor=this.limit-h,this.cursor<=this.limit_backward)break e;this.cursor--}r:do{o=this.limit-this.cursor;a:do{if(!this.eq_s_b$esjava$2(1,"e"))break a;break r}while(0);if(this.cursor=this.limit-o,!this.eq_s_b$esjava$2(1,"i"))break e}while(0);this.cursor=this.limit-n;{const i=this.cursor;this.insert$esjava$3(this.cursor,this.cursor,"i"),this.cursor=i}break i}while(0);this.cursor=this.limit-r;e:do{l=this.limit-this.cursor;r:for(;;){u=this.limit-this.cursor;a:do{if(!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break a;this.cursor=this.limit-u;break r}while(0);if(this.cursor=this.limit-u,this.cursor<=this.limit_backward)break e;this.cursor--}r:do{m=this.limit-this.cursor;a:do{if(!this.eq_s_b$esjava$2(1,"o"))break a;break r}while(0);if(this.cursor=this.limit-m,!this.eq_s_b$esjava$2(1,"u"))break e}while(0);this.cursor=this.limit-l;{const i=this.cursor;this.insert$esjava$3(this.cursor,this.cursor,"u"),this.cursor=i}break i}while(0);this.cursor=this.limit-r,_=this.limit-this.cursor;e:for(;;){k=this.limit-this.cursor;r:do{if(!this.in_grouping_b$esjava$3(c.g_vowel,97,305))break r;this.cursor=this.limit-k;break e}while(0);if(this.cursor=this.limit-k,this.cursor<=this.limit_backward)return!1;this.cursor--}e:do{d=this.limit-this.cursor;r:do{if(!this.eq_s_b$esjava$2(1,"ö"))break r;break e}while(0);if(this.cursor=this.limit-d,!this.eq_s_b$esjava$2(1,"ü"))return!1}while(0);this.cursor=this.limit-_;{const i=this.cursor;this.insert$esjava$3(this.cursor,this.cursor,"ü"),this.cursor=i}}while(0);return!0}r_more_than_one_syllable_word$esjava$0(){let i,e;i=this.cursor;{let i=2;i:for(;;){e=this.cursor;e:do{r:for(;;){a:do{if(!this.in_grouping$esjava$3(c.g_vowel,97,305))break a;break r}while(0);if(this.cursor>=this.limit)break e;this.cursor++}i--;continue i}while(0);this.cursor=e;break i}if(i>0)return!1}return this.cursor=i,!0}r_is_reserved_word$esjava$0(){let i,e,r;i:do{i=this.cursor;e:do{e=this.cursor;r:for(;;){a:do{if(!this.eq_s$esjava$2(2,"ad"))break a;break r}while(0);if(this.cursor>=this.limit)break e;this.cursor++}if(this.I_strlen=2,this.I_strlen!==this.limit)break e;this.cursor=e;break i}while(0);this.cursor=i,r=this.cursor;e:for(;;){r:do{if(!this.eq_s$esjava$2(5,"soyad"))break r;break e}while(0);if(this.cursor>=this.limit)return!1;this.cursor++}if(this.I_strlen=5,this.I_strlen!==this.limit)return!1;this.cursor=r}while(0);return!0}r_postlude$esjava$0(){let i,e,r;i=this.cursor;i:do{if(!this.r_is_reserved_word$esjava$0())break i;return!1}while(0);this.cursor=i,this.limit_backward=this.cursor,this.cursor=this.limit,e=this.limit-this.cursor;i:do{if(!this.r_append_U_to_stems_ending_with_d_or_g$esjava$0())break i}while(0);this.cursor=this.limit-e,r=this.limit-this.cursor;i:do{if(!this.r_post_process_last_consonants$esjava$0())break i}while(0);return this.cursor=this.limit-r,this.cursor=this.limit_backward,!0}stem$esjava$0(){let i,e;if(!this.r_more_than_one_syllable_word$esjava$0())return!1;this.limit_backward=this.cursor,this.cursor=this.limit,i=this.limit-this.cursor;i:do{if(!this.r_stem_nominal_verb_suffixes$esjava$0())break i}while(0);if(this.cursor=this.limit-i,!this.B_continue_stemming_noun_suffixes)return!1;e=this.limit-this.cursor;i:do{if(!this.r_stem_noun_suffixes$esjava$0())break i}while(0);return this.cursor=this.limit-e,this.cursor=this.limit_backward,!!this.r_postlude$esjava$0()}stem(...i){return 0===i.length?this.stem$esjava$0(...i):super.stem(...i)}}const d=c,{baseStemmer:b}=r.languageProcessing;function $(i){const e=(0,l.get)(i.getData("morphology"),"tr",!1);return e?i=>function(i,e){i=(i=i.toLowerCase()).replace("'","");const r=new d(e);return r.setCurrent(i),r.stem(),r.getCurrent()}(i,e):b}const f=["nmak","nmek","nir","nır","nür","nur","nıyor","niyor","ndı","ndi","ndu","ndü","nmış","nmiş","nmuş","nmüş","necek","nacak","nmıştı","nmişti","nmuştu","nmüştü","nıyordu","niyordu","nuyordu","nüyordu","necekti","nacaktı","nsa","nse","nmalı","nmeli","nmaz","nmez","anmak","enmek","ınmak","inmek","unmak","ünmek","anır","enir","ınır","inir","unur","ünür","anıyor","eniyor","ınıyor","iniyor","unuyor","ünüyor","andı","endi","ındı","indi","undu","ündü","anmış","enmiş","ınmış","inmiş","unmuş","ünmüş","anacak","enecek","ınacak","inecek","unacak","ünecek","ınmıştı","inmişti","unmuştu","ünmüştü","ınıyordu","iniyordu","unuyordu","ünüyordu","necekti","nacaktı","ansa","ense","ınsa","inse","unsa","ünse","anmalı","enmeli","ınmalı","inmeli","unmalı","ünmeli","anmaz","enmez","ınmaz","inmez","unmaz","ünmez","ılmak","ilmek","ulmak","ülmek","ılır","ilir","ulur","ülür","ılınıyor","iliniyor","ulunuyor","ülüyor","ıldı","ildi","uldu","üldü","ılmış","ilmiş","ulmuş","ülmül","ılacak","ilecek","ulacak","ülecek","ılmıştı","ilmişti","ulmuştu","ülmüştü","ılıyordu","iliyordu","uluyordu","ülüyordu","necekti","nacaktı","ılsa","ilse","ulsa","ülse","ılmalı","ilmeli","ulmalı","ülmeli","ılmaz","ilmez","ulmaz","ülmez"],y=["kullanmak","ulanmak","bağlanmak","alınmak","boşanmak","kaçınmak","hazırlanmak","olunmak","sığınmak","taşınmak","arlanmak","sakınmak","zanmak","tırmanmak","i̇nanmak","arınmak","kullanmak","isınmak","yıkanmak","öğrenmek","öğrenmek","düşünmek","renmek","düşünmek","ünmek","dönmek","değinmek","eğlenmek","lenmek","öğünmek","deyinmek","örenmek","görünmek","öğrenmek","güvenmek","beğenmek","sünmek","geçinmek","tükenmek","kabullenmek","öğrenmek","kabullenmek","sinir","peynir","münir","alınır","kazanır","yorumlanır","kullanır","uygulanır","dayanır","sağlanır","i̇nanır","özenir","elenir","öğrenir","tersinir","yaşanır","toplanır","tanır","senir","rastlanır","renir","münir","kaynaklanır","bağlanır","hazırlanır","güvenir","enir","söylenir","başlanır","davranır","kapanır","oynanır","uzanır","tanımlanır","tanınır","souvenir","öğrenir","taşınır","konteyner","uyanır","beğenir","hesaplanır","sanır","saklanır","yakalanır","aranır","algılanır","hoşlanır","karşılanır","tamamlanır","münir","yayınlanır","yıkanır","tekrarlanır","atanır","bir","karasenir","i̇ndüklenir","zorlanır","avenir","erdenir","kas-sinir","utanır","üstenir","katlanır","beyazpeynir","şekillenir","sonuçlanır","doğranır","narin","faydalanır","kilinir","hızlanır","yararlanır","kutlanır","saptanır","nedendir","kalınır","ayarlanır","kıskanır","hastalanır","suvenir","yapılabilinir","canlanır","ekillenir","hacklenir","haşlanır","sonuçlanır","resetlenir","beğenir","açıklanır","programming-sinir","i̇sindir","odaklanır","pionir","çalınır","peynir","tutuklanır","sınır","taşımalık","anır","kanır","adanır","lanır","ültanır","rastlanır","haktanır","güneysınır","i̇nanır","açılır-kapanır","sağlanır","tanrı tanır","bağlanır","tanır","yansır","kullanır","açıklanır","dizaynır","düşünür","görünür","siyanür","dünür","düşünür","ünür","çürür","ömür","nür","öğünür","onur","aynur","i̇lknur","ayşenur","öznur","konur","binnur","alinur","gülnur","hükmolunur","atanur","rıza nur","yurdanur","şennur","fatmanur","şennur","zinnur","adanur","semanur","elanur","düşünür","baykonur","edanur","göknur","günnur","beyzanur","görünür","nisanur","saynur","mecnur","lunur","stem","cemalnur","i̇lknur","aynur","elnur","addolunur","ayşenur","birnur","sedanur","alanur","esmanur","elifnur","şahnur","aydanur","senanur","ecenur","havvanur","bozunur","bennur","en-nur","tennur","konur","reddolunur","sondur","olunur","şeymanur","şerefnur","fernur","stem","ceynur","zeynur","gökçenur","mervenur","ernur","sonunur","biyobozunur","şemsinur","haşrolunur","incinur","lanıyor","kulanıyor","nıyor","rastlanıyor","kullanıyor","kaynaklanıyor","kazanıyor","yaşanıyor","alınıyor","i̇nanıyor","tanıyor","hazırlanıyor","dayanıyor","söyleniyor","sanıyor","uygulanıyor","yanıyor","eleniyor","davranıyor","aranıyor","öğreniyor","sağlanıyor","kapanıyor","zorlanıyor","tanınıyor","kombinleniyor","yayınlanıyor","oynanıyor","beğeniyor","uyanıyor","planlanıyor","toplanıyor","reniyor","niyor","öğreniyor","bağlanıyor","uzanıyor","algılanıyor","söyleniyor","tanımlanıyor","vurgulanıyor","karşılanıyor","kınıyor","saklanıyor","başlanıyor","yükleniyor","sıralanıyor","alındı","kendi","pazubandı","nındı","irgandı","yapsındı","yarabandı","açıklandı","bağlandı","kendi","efendi","beyefendi","hanımefendi","i̇kindi","hocaefendi","hindi","bindi","gandi","nakşibendi","selendi","beyefendi","bondi","alindi","kazandı","veliefendi","hanendi","hacklendi","burundi","kullandı","i̇vrindi","başlandı","yasandı","lendi","yayınlandı","andı","merkezefendi","demirhindi","vivendi","grandi","ögrendi","aczmendi","mundi","kapandı","hanendi","kandil","i̇nsandı","çinhindi","randi","yandı","şimdi","semerkant","açıklandı","ravalpindi","tamamlandı","kadınefendi","landi","brendi","beğendi","gecekondu","hindu","soundu","katmandu","kundu","olsundu","poundu","katmandu","duşundu","emrolundu","vahyolundu","hindu","lundu","candu","roundu","göründü","paundu","fırdöndü","düşündü","fondü","üründü","gündöndü","mumsöndü","kendü","i̇nanmış","ınmış","i̇spatlanmış","nınmış","bağlanmış","hazırlanmış","lenmiş","hacklenmiş","öğrenmiş","i̇ndüklenmiş","sinterlenmiş","begenmiş","alinmiş","kombinlenmiş","lânetlenmiş","editlenmiş","yenmiş","temperlenmiş","beyenmiş","kazanmiş","olsunmuş","emrolunmuş","lunmuş","yunmuş","özüdönmüş","söylenecek","düşünecek","öğrenecek","lenecek","düşünecek","düzenlenecek","öğrenecek","renecek","nacak","alınacak","lanacak","kazanmıştı","lenmişti","emrolunmuştu","i̇nanıyordu","kullanıyordu","tanıyordu","dayanıyordu","görünüyordu","düşünüyordu","nuyordu","düşünüyordu","ünüyordu","fransa","floransa","lufthansa","prensa","yakınsa","konsa","hansa","sansa","mensa","türkiye-fransa","türbülansa","ofansa","hiltonsa","almanya-fransa","yünsa","jinsa","ınsa","nınsa","winsa","hünsa","extensa","demansa","fıransa","advansa","tnsa","ingiltere-fransa","ambiyansa","ünsa","rönesansa","cheonsa","malpensa","densa","finanse","ense","lanse","adsense","response","defense","sübvanse","pense","intense","expense","alphonse","kompanse","mumkunse","odense","fluminense","ninse","offense","intellisense","nonsense","anse","pfsense","immense","gorunse","hernedense","danse","mightyadsense","hisense","hortense","adriaanse","süspanse","önmeli","ögrenmeli","taşınmaz","kuşkonmaz","sınmaz","alınmaz","taşınmaz","lanmaz","osanmaz","hoşlanmaz","sönmez","dönmez","bölünmez","ersönmez","dönmez","görünmez","üşenmez","sönmez","görünmez","yinmez","sönmez","kullanmak","bağlanmak","boşanmak","hazırlanmak","öğrenmek","öğrenmek","renmek","eğlenmek","lenmek","örenmek","öğrenmek","sığınmak","değinmek","deyinmek","düşünmek","erişilebilir","güvenilir","aktarabilecek"],g=["sevi","giyi","gezi","ayrı","tıka","ayrı","sarı","övü","boşa","besle","kırı","soyu","yıka","süsle","içle","besle","tara","çeki","çözü","hazırla","üzü","yıkı","yıka","kovu","sıkı","söyle","kaçı","kapa","kası","koru","sarsı","sığı","kurula","yakı","yoru","taşı","uza","takı","yala","atı","iyileş","sinirle","dövü"],{getWords:j}=r.languageProcessing;function v(i){let e=j(i).filter((i=>i.length>5));return e=e.filter((i=>!y.includes(i))),e=function(i){return i.filter((i=>g.some((e=>f.some((function(r){return!new RegExp("^"+e+r+"$").test(i)}))))))}(e),e.some((i=>f.some((e=>i.endsWith(e)))))}const{AbstractResearcher:w}=r.languageProcessing;class p extends w{constructor(i){super(i),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"tr",passiveConstructionType:"morphological",firstWordExceptions:a,functionWords:n,transitionWords:t,twoPartTransitionWords:h,sentenceLength:o}),Object.assign(this.helpers,{getStemmer:$,isPassiveSentence:v})}}(window.yoast=window.yoast||{}).Researcher=e})();js/dist/languages/pl.js000064400001376141147206602470011067 0ustar00(()=>{"use strict";var a={d:(n,o)=>{for(var i in o)a.o(o,i)&&!a.o(n,i)&&Object.defineProperty(n,i,{enumerable:!0,get:o[i]})},o:(a,n)=>Object.prototype.hasOwnProperty.call(a,n),r:a=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})}},n={};a.r(n),a.d(n,{default:()=>ka});const o=window.yoast.analysis,i=["jeden","jedna","jedno","dwa","dwie","trzy","cztery","pięć","sześć","siedem","osiem","dziewięć","dziesięć","ta","to","ten","te","ci","taki","tacy","taka","taką","takich","takie","takiego","takiej","takiemu","takim","takimi","tamten","tamta","tamto","tamci","tamte","tamtą","tamtego","tamtej","tamtemu","tamtych","tamtym","tamtymi","tą","tę","tego","tej","temu","tych","tymi","tym","tak"],z=["aby","abym","abyśmy","abyś","abyście","acz","aczkolwiek","albowiem","ale","aliści","bo","bowiem","bynajmniej","choć","chociaż","chociażby","czyli","dlatego","dodatkowo","dopóki","dotychczas","faktycznie","gdy","gdyż","jakkolwiek","iż","jednak","jednakże","jeśli","kiedy","lecz","mianowicie","mimo","np","najpierw","następnie","natomiast","ni","niemniej","niż","notabene","oczywiście","ogółem","ostatecznie","owszem","podobnie","podsumowując","pokrótce","pomimo","ponadto","ponieważ","poprzednio","potem","później","przecież","przeto","przynajmniej","raczej","również","rzeczywiście","skoro","także","też","toteż","tudzież","tymczasem","wedle","według","więc","właściwie","wobec","wpierw","wprawdzie","wreszcie","wskutek","wstępnie","wszakże","wszelako","zamiast","zanim","zarówno","zaś","zatem","zresztą","zwłaszcza","żeby","żebym","żebyś","żebyście","żebyśmy"],e=z.concat(["a konkretnie","a propos","aby wrocić do rzeczy","analogicznie do","bacząc na to że","bądź co bądź","bez wątpienia","bez względu","biorąc pod uwagę","choćby","chodzi o to","chyba że","co do","co gorsza","co prawda","co się tyczy","co ważniejsze","co więcej","dzięki czemu","dzięki któremu","dzięki której","dzięki którym","dzięki temu","faktem jest że","inaczej mówiąc","innymi słowy","jak dotąd","jak już mówiłam","jak już mówiłem","jak już wspomniano","jak widać","jak wiemy","jako przykład","jednym słowem","jeśli chodzi o","jeżeli chodzi o","konkretnie to","krótko mówiąc","łącznie z","mając to na uwadzę","mam na myśli","mamy na myśli","mówiąc w skrócie","na celu","na dłuższą metę","na dodatek","na koniec","na końcu","na przykład","na skutek","na wstęp","na wypadek gdyby","na zakończenie","nade wszystko","należy pamiętać","nawiasem mówiąc","nie mówiąc już","nie mówiąc o tym","nie pomijając","nie schodząc z tematu","nie wspominając już","nie wspominając o","nie wspominając to","nie wspominając że","nie zważając na","o ile","o tyle","od czasu do czasu","od momentu","odnośnie do","ogólnie mówiąc","ogólnie rzecz biorąc","oprócz tego","oznacza to że","po czwarte","po drugie","po piąte","po pierwsze","po to","po trzecie","pod warunkiem","podczas gdy","podczas kiedy","podobnym sposobem","ponad wszystko","poza tym","prawdę mówiąc","prawdę powiedziawszy","prędzej czy później","przechodząc do","przede wszystkim","przez co","przez tą","przez tego","przez to","przy tym","przypuściwszy że","raz na jakiś czas","rzecz jasna","ściśle biorąc","ściśle mówiąc","skutkiem tego","tak czy inaczej","tak czy owak","tak naprawdę","takich jak","takie jak","to znaczy","tym samym","w celu","w ciągu","w dodatku","w efekcie","w innych słowach","w istocie","w każdym razie","w końcu","w konsekwencji","w kwestii","w międzyczasie","w nadziei że","w obawie że","w odróżnieniu","w podobny sposób","w podsumowaniu","w przeciwieństwie do","w przeciwnym razie","w przypadku","w rezultacie","w rozumieniu że","w rzeczy samej","w rzeczywistości","w skrócie","w szczególności","w takim razie","w ten sposób","w tych okolicznościach","w tym przypadku","w wyniku","w wyniku tego","w związku z tym","wbrew pozorom","włącznie z","wracając do rzeczy","wracając do tematu","wręcz przeciwnie","z drugiej strony","z drugiej zaś strony","z jednej strony","z mocy że","z obawy że","z pewnością","z powodu","z przyczyny","z tą intencją","z tego powodu","z uwagi że","zacznijmy od","zakładając że","ze względu na","ze względu że","zważywszy na to","zważywszy że"]);function w(a){let n=a;return a.forEach((o=>{(o=o.split("-")).length>0&&o.filter((n=>!a.includes(n))).length>0&&(n=n.concat(o))})),n}const y=["czterech","czterem","czterema","czternaście","czternastce","czternastek","czternastka","czternastką","czternastkach","czternastkami","czternastkę","czternastki","czternastko","czternastkom","czternastoma","czternastu","cztery","czwórce","czwórek","czwórka","czwórką","czwórkach","czwórkami","czwórkę","czwórki","czwórko","czwórkom","czworo","dwa","dwadzieścia","dwanaście","dwie","dwiema","dwóch","dwójce","dwoje","dwójek","dwójka","dwójką","dwójkach","dwójkami","dwójki","dwójko","dwójkom","dwóm","dwoma","dwudziestce","dwudziestek","dwudziestka","dwudziestką","dwudziestkach","dwudziestkami","dwudziestkę","dwudziestki","dwudziestkom","dwudziestoma","dwudziestu","dwunastce","dwunastek","dwunastka","dwunastką","dwunastkach","dwunastkami","dwunastkę","dwunastki","dwunastko","dwunastkom","dwunastoma","dwunastu","dziesiątce","dziesiątek","dziesiątka","dziesiątką","dziesiątkach","dziesiątkami","dziesiątkę","dziesiątki","dziesiątko","dziesiątkom","dziesięć","dziesięcioma","dziesięciu","dziewiątce","dziewiątek","dziewiątka","dziewiątką","dziewiątkach","dziewiątkami","dziewiątkę","dziewiątki","dziewiątko","dziewiątkom","dziewięć","dziewięcioma","dziewięciorga","dziewięciorgiem","dziewięciorgu","dziewięcioro","dziewięciu","dziewiętnaście","dziewiętnastce","dziewiętnastek","dziewiętnastka","dziewiętnastką","dziewiętnastkach","dziewiętnastkami","dziewiętnastkę","dziewiętnastki","dziewiętnastkom","dziewiętnastoma","dziewiętnastu","jeden","jedenaście","jedenastce","jedenastek","jedenastka","jedenastką","jedenastkach","jedenastkami","jedenastkę","jedenastki","jedenastko","jedenastkom","jedenastoma","jedenastu","jedna","jedną","jednego","jednej","jednemu","jedno","jednym","jedynce","jedynek","jedynka","jedynką","jedynkach","jedynkami","jedynkę","jedynki","jedynko","jedynkom","miliard","miliarda","miliardach","miliardami","miliardem","miliardom","miliardów","miliardowi","miliardy","miliardzie","milion","miliona","milionach","milionami","milionem","milionie","milionom","milionów","milionowi","miliony","ósemce","ósemek","ósemka","ósemką","ósemkach","ósemkami","ósemkę","ósemki","ósemko","ósemkom","osiem","osiemnaście","osiemnastce","osiemnastek","osiemnastka","osiemnastką","osiemnastkach","osiemnastkam","osiemnastkę","osiemnastki","osiemnastko","osiemnastkom","osiemnastoma","osiemnastu","ośmioma","ośmiorga","ośmiorgiem","ośmiorgu","ośmioro","ośmiu","piątce","piątek","piątka","piątką","piątkach","piątkami","piątkę","piątki","piątko","piątkom","pięć","pięcioma","pięciorga","pięciorgiem","pięciorgu","pięcioro","pięciu","piętnaście","piętnastce","piętnastek","piętnastka","piętnastką","piętnastkach","piętnastkami","piętnastkę","piętnastki","piętnastko","piętnastkom","piętnastoma","piętnastu","raz","setce","setek","setka","setkach","setkami","setkę","setki","setkom","siedem","siedemnaście","siedemnastce","siedemnastek","siedemnastka","siedemnastką","siedemnastkach","siedemnastkami","siedemnastkę","siedemnastki","siedemnastko","siedemnastkom","siedemnastoma","siedemnastu","siedmioma","siedmiorga","siedmiorgiem","siedmiorgu","siedmioro","siedmiu","siódemce","siódemek","siódemka","siódemką","siódemkach","siódemkami","siódemkę","siódemki","siódemko","siódemkom","sto","stoma","stu","sześć","sześcioma","sześciorga","sześciorgiem","sześciorgu","sześcioro","sześciu","szesnaście","szesnastce","szesnastek","szesnastka","szesnastką","szesnastkach","szesnastkami","szesnastkę","szesnastki","szesnastko","szesnastkom","szesnastoma","szesnastu","szóstce","szóstek","szóstka","szóstką","szóstkach","szóstkami","szóstkę","szóstki","szóstko","szóstkom","trójce","troje","trójek","trójka","trójką","trójkach","trójkami","trójki","trójko","trójkom","trzech","trzem","trzema","trzy","trzynaście","trzynastce","trzynastek","trzynastka","trzynastką","trzynastkach","trzynastkami","trzynastkę","trzynastki","trzynastko","trzynastkom","trzynastoma","trzynastu","tysiąc","tysiąca","tysiącach","tysiącami","tysiące","tysiącem","tysiącom","tysiącowi","tysiącu","tysięcy"],r=["czternaści","czternasta","czternastą","czternaste","czternastego","czternastej","czternastemu","czternasty","czternastych","czternastym","czternastymi","czwarci","czwarta","czwartą","czwarte","czwartego","czwartej","czwartemu","czwarty","czwartych","czwartym","czwartymi","drudzy","druga","drugą","drugi","drugich","drugie","drugiego","drugiej","drugiemu","drugim","drugimi","dwudzieści","dwudziesta","dwudziestą","dwudzieste","dwudziestego","dwudziestej","dwudziestemu","dwudziesty","dwudziestych","dwudziestym","dwudziestymi","dwunaści","dwunasta","dwunastą","dwunaste","dwunastego","dwunastej","dwunastemu","dwunasty","dwunastych","dwunastym","dwunastymi","dziesiąci","dziesiąta","dziesiątą","dziesiąte","dziesiątego","dziesiątej","dziesiątemu","dziesiąty","dziesiątych","dziesiątym","dziesiątymi","dziewiąci","dziewiąta","dziewiątą","dziewiąte","dziewiątego","dziewiątej","dziewiątemu","dziewiąty","dziewiątych","dziewiątym","dziewiątymi","dziewiętnaści","dziewiętnasta","dziewiętnastą","dziewiętnaste","dziewiętnastego","dziewiętnastej","dziewiętnastemu","dziewiętnasty","dziewiętnastych","dziewiętnastym","dziewiętnastymi","jedenaści","jedenasta","jedenastą","jedenaste","jedenastego","jedenastej","jedenastemu","jedenasty","jedenastych","jedenastym","jedenastymi","osiemnaści","osiemnasta","osiemnastą","osiemnaste","osiemnastego","osiemnastej","osiemnastemu","osiemnasty","osiemnastych","osiemnastym","osiemnastymi","ósma","ósmą","ósme","ósmego","ósmej","ósmemu","óśmi","ósmy","ósmych","ósmym","ósmymi","piąci","piąta","piątą","piąte","piątego","piątej","piątemu","piąty","piątych","piątym","piątymi","pierwsi","pierwsza","pierwszą","pierwsze","pierwszego","pierwszej","pierwszemu","pierwszy","pierwszych","pierwszym","pierwszymi","piętnaści","piętnasta","piętnastą","piętnaste","piętnastego","piętnastej","piętnastemu","piętnasty","piętnastych","piętnastym","piętnastymi","siedemnaści","siedemnasta","siedemnastą","siedemnaste","siedemnastego","siedemnastej","siedemnastemu","siedemnasty","siedemnastych","siedemnastym","siedemnastymi","siódma","siódmą","siódme","siódmego","siódmej","siódmemu","siódmi","siódmy","siódmych","siódmym","siódmymi","szesnaści","szesnasta","szesnastą","szesnaste","szesnastego","szesnastej","szesnastemu","szesnasty","szesnastych","szesnastymi","szóści","szósta","szóstą","szóste","szóstego","szóstej","szóstemu","szósty","szóstych","szóstym","szóstymi","trzeci","trzecia","trzecią","trzecich","trzecie","trzeciego","trzeciej","trzeciemu","trzecim","trzecimi","trzynaści","trzynasta","trzynastą","trzynaste","trzynastego","trzynastej","trzynastemu","trzynasty","trzynastych","trzynastym","trzynastymi"],p=["ja","my","on","ona","one","oni","ono","ty","wy"],s=["cię","ciebie","go","ich","ją","je","jego","mnie","nas","nią","nich","nie","niego","was"],t=["jej","niej"],d=["mi","ci","im","jemu","mu","nam","niemu","nim","tobie","wam"],c=["mną","nami","nią","nim","nimi","tobą","wami"],k=["myśmy","wyście","żeście","żeśmy"],u=["doń","nań","zeń"],l=["ich","jego","jej","ma","mą","me","mego","mej","memu","moi","moich","moim","moimi","mój","moja","moją","moje","mojego","mojej","mojemu","mych","mym","mymi","nasi","nasz","nasza","naszą","nasze","naszego","naszej","naszemu","naszych","naszym","naszymi","swa","swą","swe","swego","swej","swemu","swoi","swoich","swoim","swoimi","swój","swoja","swoją","swoje","swojego","swojej","swojemu","swych","swym","swymi","twa","twą","twe","twego","twej","twemu","twoi","twoich","twoim","twoimi","twój","twoja","twoją","twoje","twojego","twojej","twojemu","twych","twym","twymi","wasi","wasz","wasza","waszą","wasze","waszego","waszej","waszemu","waszych","waszym","waszymi"],m=["się"],b=["siebie","sobą"],g=["czyi","czyich","czyim","czyimi","czyj","czyja","czyją","czyje","czyjego","czyjej","czyjemu","kim","kogo","komu","kto"],j=["czy","czyś","czyśbyś","dlaczego","dokąd","dokądże","dokądżeś","gdzie","gdzież","gdzieżeś","ile","ileż","jak","jakbyś","jakże","jakżebyś","jakżeś","kiedy","którędy","którędyż","skąd","skądże","skądżeś"],h=["co","czego","czemu","czym","jacy","jaka","jaką","jaki","jakich","jakie","jakiego","jakiej","jakiemu","jakim","jakimi","która","którą","które","którego","której","któremu","który","których","którym","którymi","którzy"],f=["coś","czegoś","czemuś","czyichkolwiek","czyichś","czyikolwiek","czyimikolwiek","czyimiś","czyimkolwiek","czyimkolwiem","czyimś","czyiś","czyjakolwiek","czyjąkolwiek","czyjaś","czyjąś","czyjegokolwiek","czyjegoś","czyjejkolwiek","czyjejś","czyjekolwiek","czyjemukolwiek","czyjemuś","czyjeś","czyjkolwiek","czymś","dlaczegoś","dokądkolwiek","dokądś","gdziekolwiek","gdzieś","ilekolwiek","ileś","jacykolwiek","jacyś","jakakolwiek","jakąkolwiek","jakaś","jakąś","jakichkolwiek","jakichś","jakiegokolwiek","jakiegoś","jakiejkolwiek","jakiejś","jakiekolwiek","jakiemukolwiek","jakiemuś","jakieś","jakikolwiek","jakimikolwiek","jakimkolwiek","jakimś","jakiś","jakkolwiek","jakoś","każda","każdą","każde","każdego","każdej","każdemu","każdy","każdym","kiedykolwiek","kiedyś","kimkolwiek","kimś","kogokolwiek","kogoś","komukolwiek","komuś","ktokolwiek","którakolwiek","którąkolwiek","któraś","którąś","którędykolwiek","którędyś","któregokolwiek","któregoś","którejkolwiek","którejś","którekolwiek","któremukolwiek","któremuś","któreś","którychkolwiek","którychś","którykolwiek","którymikolwiek","którymiś","którymkolwiek","którymś","któryś","którzykolwiek","którzyś","ktoś","nawzajem","nic","niczego","niczemu","niczyi","niczyich","niczyim","niczyimi","niczyj","niczyja","niczyją","niczyjego","niczyjej","niczyjemu","niczym","nikim","nikogo","nikogokolwiek","nikomu","nikt","skądkolwiek","skądś","wszyscy","wszyskiego","wszystkich","wszystkie","wszystkiemu","wszystkim","wszystkimi","wszystko","żaden","żadna","żadną","żadne","żadnego","żadnej","żadnemu","żadni","żadnych","żadnym","żadnymi"],x=["ci","dlatego","ów","owa","ową","owe","owego","owej","owemu","owi","owo","owych","owym","stąd","stamtąd","ta","tacy","tak","taka","taką","taki","takich","takie","takiego","takiej","takiemu","takim","takimi","tam","tamci","tamta","tamtą","tamte","tamtego","tamtej","tamtemu","tamten","tamto","tamtych","tamtym","tamtymi","tą","te","tę","tędy","tego","tegoż","tej","temu","ten","to","tu","tutaj","tych","tyle","tyloma","tylu","tym","tymi","wtedy"],P=["ciut","część","części","częścią","częściach","częściami","częściom","dość","dosyć","dużo","kilka","kilkadziesiąt","kilkanaście","kilkaset","kilknasty","kilkoma","kilku","kilkudziesiąte","kilkudziesiątego","kilkudziesiątej","kilkudziesiąty","kilkudziesiątych","kilkudziesiątym","kilkudziesiątymi","kilkudziesięcioma","kilkudziesięciu","kilkunasta","kilkunastą","kilkunaste","kilkunastego","kilkunastej","kilkunastemu","kilkunastoma","kilkunastu","kilkunastym","kilkuset","kilkustoma","kiludziesiąta","mało","malutko","mniej","mnóstwa","mnóstwem","mnóstwie","mnóstwo","mnóstwu","multum","nadto","najmniej","najwięcej","nieco","niedużo","niejednokroć","niektóre","niektórzy","niektórych","niektórym","niektórymi","niemało","niewiele","niewieloma","niewielu","oba","obaj","obie","oboje","obojga","obojgiem","obojgu","obóm","oboma","obu","obydwa","obydwaj","obydwie","obydwiema","obydwóch","obydwoje","obydwojgiem","obydwojgu","obydwóm","obydwoma","obydwu","odrobiną","odrobince","odrobinę","odrobinie","odrobinką","odrobinkę","odrobinki","odrobiny","parę","parędziesiąt","parędziesięcioma","parędziesięciu","paręnaście","paręnastoma","paręnastu","parokroć","paroma","paru","parze","pełno","pół","półczwarta","połowa","połową","połowie","połowy","półtora","półtorej","sporo","trochę","trochu","troszeczkę","troszkę","wcale","więcej","większość","większości","większością","większościach","większościami","większościom","wiele","wielokrotnie","wieloma","wielu"],S=["czasem","często","nigdy","rzadko","zawsze"],Z=["chcą","chcąc","chcąca","chcące","chcący","chce","chcę","chcecie","chcemy","chcesz","chciał","chciała","chciałaby","chciałabym","chciałabyś","chciałam","chciałaś","chciałby","chciałbym","chciałbyś","chciałem","chciałeś","chciały","chciałyby","chciałybyście","chciałybyśmy","chciałyście","chciałyśmy","chcieli","chcieliby","chcielibyście","chcieliście","chcieliśmy","chcono","ma","macie","mają","mając","mam","mamy","masz","miał","miała","miałaby","miałabym","miałabyś","miałam","miałaś","miałby","miałbym","miałbyś","miałem","miałeś","miało","miałoby","miały","miałyby","miałybyście","miałybyśmy","miałyście","miałyśmy","miano","miej","miejąca","miejące","miejący","miejcie","miejmy","mieli","mieliby","mielibyście","mielibyśmy","mieliście","mieliśmy","mogą","mogąc","mogąca","mogące","mogący","mogę","mógł","mogła","mogłaby","mogłabym","mogłabyś","mogłam","mogłaś","mógłby","mógłbym","mógłbyś","mogłem","mogłeś","mogli","mogliby","moglibyście","moglibyśmy","mogliście","mogliśmy","mogły","mogłyby","mogłybyście","mogłybyśmy","mogłyście","mogłyśmy","może","możecie","możemy","możesz","można","możnaby","musi","musiał","musiała","musiałaby","musiałabym","musiałabyś","musiałam","musiałaś","musiałby","musiałbym","musiałbyś","musiałem","musiałeś","musiało","musiałoby","musiały","musiałyby","musiałybyście","musiałybyśmy","musiałyście","musiałyśmy","musiano","musicie","musieli","musieliby","musielibyście","musielibyśmy","musieliście","musieliśmy","musimy","musisz","muszą","musząc","musząca","muszące","muszący","muszę","należy","niech","potrafi","potrafią","potrafiąc","potrafiąca","potrafiące","potrafiący","potraficie","potrafię","potrafiłaby","potrafiłabym","potrafiłabyś","potrafiłam","potrafiłaś","potrafiłbym","potrafiłbyś","potrafiłem","potrafiłeś","potrafili","potrafiliby","potrafilibyście","potrafilibyśmy","potrafiliście","potrafiliśmy","potrafiło","potrafiłoby","potrafiłyby","potrafiłybyście","potrafiłybyśmy","potrafiłyście","potrafiłyśmy","potrafimy","potrafiono","potrafisz","powinien","powinienem","powinieneś","powinna","powinnam","powinnaś","powinne","powinni","powinniście","powinniśmy","powinnyście","powinnyśmy","pozostaje","stają","stając","stająca","stające","stający","staje","staję","stajecie","stajemy","stajesz","stał","stała","stałaby","stałabym","stałabyś","stałam","stałaś","stałby","stałbym","stałbyś","stałem","stałeś","stali","staliby","stalibyście","stalibyśmy","staliście","staliśmy","stało","stały","stałyby","stałybyście","stałybyśmy","stałyście","stałyśmy","stanie","stano","stawać","stawając","stawająca","stawające","stawający","stawał","stawała","stawałaby","stawałabym","stawałabyś","stawałabyście","stawałam","stawałaś","stawałby","stawałbym","stawałbyś","stawałem","stawałeś","stawali","stawaliby","stawalibyście","stawalibyśmy","stawaliście","stawaliśmy","stawały","stawałyby","stawałybyśmy","stawałyście","stawałyśmy","stawano","stawawszy","stawszy","trzeba","warto","wystarczy"],v=["być","zostać"],T=["chcieć","mieć","móc","musieć","potrafić","stać"],C=["bez","beze","blisko","daleko","dla","do","dole","dookoła","górze","jako","koło","ku","między","mimo","na","nad","nade","naokoło","naprzeciwko","niedaleko","nieopodal","niż","o","obok","od","ode","około","oprócz","po","pod","podczas","pode","pomiędzy","ponad","poniżej","poprzek","poprzez","pośród","powyżej","poza","przeciw","przeciwko","przed","przede","przez","przeze","przy","spodem","spośród","spoza","u","w","wbrew","we","wedle","wewnątrz","wpół","wraz","wśród","wzdłuż","z","za","ze","zza"],O=["bliska","daleka","przodu","tyłu"],W=["albo","ani","bądź","i","lub","oraz","tylko"],U=["aż","by","czy","gdyby","jak","jeśli","jeżeli","że"],R=["ano","ciągu","coraz","dzięki","chyba","jakby","jednocześnie","jeszcze","już","nadal","nagle","znowu","prawdopodobnie","niestety","dziś","dzisiaj","oczywiście","względem","m.in.","właśnie","zaraz"],M=["bierz","bierzcie","bierzecie","bierzemy","bierzesz","bierzmy","biorą","biorąc","biorąca","biorące","biorący","biorę","brał","brała","brałaby","brałabym","brałabyś","brałam","brałaś","brałby","brałbym","brałbyś","brałem","brałeś","brali","braliby","bralibyście","bralibyśmy","braliście","braliśmy","brało","brałoby","brały","brałyby","brałybyście","brałybyśmy","brałyście","brałyśmy","brany","da","dacie","dadzą","daj","dają","dając","dająca","dające","dający","dajcie","daje","daję","dajecie","dajemy","dajesz","dajmy","dał","dała","dałaby","dałabym","dałabyś","dałam","dałaś","dałby","dałbym","dałbyś","dałem","dałeś","dali","daliby","dalibyście","dalibyśmy","daliście","daliśmy","dało","dałoby","dały","dałyby","dałybyście","dałybyśmy","dałyście","dałyśmy","dam","damy","dana","dano","dany","dasz","dawaj","dawajcie","dawajmy","dawał","dawała","dawałaby","dawałabym","dawałabyś","dawałam","dawałaś","dawałby","dawałbym","dawałbyś","dawałem","dawałeś","dawali","dawaliby","dawalibyście","dawalibyśmy","dawaliście","dawaliśmy","dawało","dawały","dawałyby","dawałybyście","dawałybyśmy","dawałyście","dawałyśmy","dawana","dawane","dawano","dawany","idą","idąc","idąca","idące","idący","idę","idź","idźcie","idzie","idziecie","idziemy","idziesz","idźmy","rób","róbcie","robi","robią","robiąc","robiąca","robiące","robiący","robicie","robię","robił","robiła","robiłaby","robiłabym","robiłabyś","robiłam","robiłaś","robiłby","robiłbym","robiłbyś","robiłem","robiłeś","robili","robilibiście","robiliby","robilibyśmy","robiliście","robiliśmy","robiło","robiły","robiłyby","robiłybyście","robiłybyśmy","robiłyście","robiłyśmy","robimy","robiono","robiony","robisz","róbmy","stanowi","stanowią","stanowiły","stanowili","stoi","stoicie","stoimy","stoisz","stój","stoją","stojąc","stojąca","stojące","stojący","stójcie","stoję","stójmy","świadczy","szedł","szedłby","szedłbym","szedłbyś","szedłem","szedłeś","szła","szłaby","szłabym","szłabyś","szłam","szłaś","szli","szliby","szlibyście","szlibyśmy","szliście","szliśmy","szło","szłoby","szły","szłyby","szłybyście","szłybyśmy","szłyście","uprawia","uprawiacie","uprawiają","uprawiając","uprawiająca","uprawiające","uprawiający","uprawiał","uprawiała","uprawiałaby","uprawiałabym","uprawiałabyś","uprawiałam","uprawiałaś","uprawiałby","uprawiałbym","uprawiałbyś","uprawiałem","uprawiałeś","uprawiali","uprawialiby","uprawialibyście","uprawialibyśmy","uprawialiście","uprawialiśmy","uprawiało","uprawiałoby","uprawiały","uprawiałyby","uprawiałybyście","uprawiałybyśmy","uprawiałyście","uprawiałyśmy","uprawiam","uprawiamy","uprawiana","uprawiane","uprawiano","uprawiany","uprawiasz","weź","weźcie","wezmą","wezmę","weźmie","weźmiecie","weźmiemy","weźmiesz","weźmy","wykonuj","wykonują","wykonując","wykonująca","wykonujące","wykonujący","wykonujcie","wykonuje","wykonuję","wykonujecie","wykonujemy","wykonujesz","wykonujmy","wykonywał","wykonywała","wykonywałaby","wykonywałabym","wykonywałabyś","wykonywałam","wykonywałaś","wykonywałby","wykonywałbym","wykonywałbyś","wykonywałem","wykonywałeś","wykonywali","wykonywaliby","wykonywalibyście","wykonywalibyśmy","wykonywaliście","wykonywaliśmy","wykonywało","wykonywałoby","wykonywały","wykonywałyby","wykonywałybyście","wykonywałybyśmy","wykonywałyście","wykonywałyśmy","wykonywana","wykonywane","wykonywany","wziął","wziąłby","wziąłbym","wziąłbyś","wziąłem","wziąłeś","wziąwszy","wzięła","wzięłaby","wzięłabym","wzięłabyś","wzięłam","wzięłaś","wzięli","wzięliby","wzięlibyście","wzięlibyśmy","wzięliście","wzięliśmy","wzięło","wzięłoby","wzięły","wzięłyby","wzięłybyście","wzięłybyśmy","wzięłyście","wzięłyśmy","zrób","zróbcie","zrobi","zrobią","zrobiąc","zrobiąca","zrobiące","zrobiący","zrobicie","zrobię","zrobił","zrobiła","zrobiłaby","zrobiłabym","zrobiłabyś","zrobiłam","zrobiłaś","zrobiłby","zrobiłbym","zrobiłbyś","zrobiłem","zrobiłeś","zrobili","zrobilibiście","zrobiliby","zrobilibyśmy","zrobiliście","zrobiliśmy","zrobiło","zrobiły","zrobiłyby","zrobiłybyście","zrobiłybyśmy","zrobiłyście","zrobiłyśmy","zrobimy","zrobiono","zrobiony","zrobisz","zróbmy","powinno","bywa","wiedzieć","znać","wiedział","wiedziała","wiedziały","wiedzieli","znał","znała","znali","znały","powie","wie","zna","zobaczy","powiedzą","powiedziano","powiem","wiedzą","wiedzące","wiedzący","wiedziało","wiedziano","wiem","znają","znające","znający","znało","znam","znane","znano","zobaczą","zobaczę","zobaczone","zobaczono","powiecie","powiedz","powiedzcie","powiedzenie","powiedział","powiedziała","powiedziałaby","powiedziałabym","powiedziałabyś","powiedziałam","powiedziałaś","powiedziałby","powiedziałbym","powiedziałbyś","powiedziałem","powiedziałeś","powiedziało","powiedziałoby","powiedziały","powiedziałyby","powiedziałybyście","powiedziałybyśmy","powiedziałyście","powiedziałyśmy","powiedziawszy","powiedzieć","powiedzieli","powiedzieliby","powiedzielibyście","powiedzielibyśmy","powiedzieliście","powiedzieliśmy","powiedzmy","powiemy","powiesz","wiecie","wiedz","wiedząc","wiedząca","wiedzcie","wiedziałaby","wiedziałabym","wiedziałabyś","wiedziałam","wiedziałaś","wiedziałby","wiedziałbym","wiedziałbyś","wiedziałem","wiedziałeś","wiedziałoby","wiedziałyby","wiedziałybyście","wiedziałybyśmy","wiedziałyście","wiedziałyśmy","wiedzieliby","wiedzielibyście","wiedzielibyśmy","wiedzieliście","wiedzieliśmy","wiedzmy","wiemy","wiesz","znacie","znaj","znając","znająca","znajcie","znajmy","znałaby","znałabym","znałabyś","znałam","znałaś","znałby","znałbym","znałbyś","znałem","znałeś","znaliby","znalibyście","znalibyśmy","znaliście","znaliśmy","znałoby","znałyby","znałybyście","znałybyśmy","znałyście","znałyśmy","znamy","znana","znani","znanie","znany","znasz","zobacz","zobaczcie","zobaczeni","zobaczenie","zobaczmy","zobaczona","zobaczony","zobaczyć","zobaczycie","zobaczył","zobaczyła","zobaczyłaby","zobaczyłabym","zobaczyłabyś","zobaczyłam","zobaczyłaś","zobaczyłby","zobaczyłbym","zobaczyłbyś","zobaczyłem","zobaczyłeś","zobaczyli","zobaczyliby","zobaczylibyście","zobaczylibyśmy","zobaczyliście","zobaczyliśmy","zobaczyło","zobaczyłoby","zobaczyły","zobaczyłyby","zobaczyłybyście","zobaczyłybyśmy","zobaczyłyście","zobaczyłyśmy","zobaczymy","zobaczysz","zobaczywszy"],A=["brać","dać","dawać","iść","robić","stanowić","uprawiać","wykonywać","wziąć","zrobić"],E=["informowali","informowały","informują","informuje","informuję","mówi","mówią","mówię","mówił","mówiła","mówili","mówiły","odpowiada","odpowiadają","odpowiadam","odpowiedział","odpowiedziała","odpowiedziałam","odpowiedziały","odpowiedzieli","odwiedziałam","poinformowałam","poinformowali","poinformowały","powiedział","powiedziała","powiedziałam","powiedziały","powiedzieli","pyta","pytać","pytał","pytała","pytałam","pytali","pytały","pytam","sądzą","sądzę","sądzi","sądzić","sądziłam","sądzili","sądziły","spytał","spytała","spytałam","spytali","spytały","stwierdziały","stwierdzieli","stwierdził","stwierdziła","stwierdziłam","twierdzą","twierdzę","twierdzi","twierdziały","twierdzić","twierdzieli","twierdził","twierdziła","twierdziłam","uważa","uważają","uważał","uważała","uważali","uważały","uważam","wyjaśnia","wyjaśniać","wyjaśniają","wyjaśniam","wyjaśnił","wyjaśniła","wyjaśnili","wyjaśniły","zapytał","zapytała","zapytałam","zapytali","zapytały","zaznacza","zaznaczają","zaznaczam","zaznaczył","zaznaczyła","zaznaczyłam","zaznaczyli","zaznaczyły"],D=["bardziej","bardzo","całkiem","całkowicie","doskonale","dość","dosyć","kompletnie","najbardziej","naprawdę","nawet","nieco","niezbyt","niezmiernie","niezwykle","ogromnie","strasznie","świetnie","wielce","wyjątkowo","zbyt","znacznie","zupełnie"],L=["cała","całą","całe","całego","całej","całemu","cali","cały","całych","całym","całymi","ciekawa","ciekawą","ciekawe","ciekawego","ciekawej","ciekawemu","ciekawi","ciekawy","ciekawych","ciekawym","ciekawymi","dłudzy","długa","długą","długi","długich","długie","długiego","długiej","długiemu","długim","długimi","dłużsi","dłuższa","dłuższą","dłuższe","dłuższego","dłuższej","dłuższemu","dłuższy","dłuższych","dłuższym","dłuższymi","dobra","dobrą","dobre","dobrego","dobrej","dobremu","dobry","dobrych","dobrym","dobrymi","dobrzy","fajna","fajną","fajne","fajnego","fajnej","fajnemu","fajni","fajny","fajnych","fajnym","fajnymi","główna","główną","główne","głównego","głównej","głównemu","główni","główny","głównych","głównym","głównymi","inna","inną","inne","innego","innej","innemu","inni","inny","innych","innym","innymi","krótcy","krótka","krótką","krótki","krótkich","krótkie","krótkiego","krótkiej","krótkiemu","krótkim","krótkimi","krótsi","krótsza","krótszą","krótsze","krótszego","krótszej","krótszemu","krótszych","krótszym","krótszymi","łatwe","łatwego","łatwiejsze","łatwym","lepsi","lepsza","lepszą","lepsze","lepszego","lepszej","lepszemu","lepszy","lepszych","lepszym","lepszymi","mała","małą","małe","małego","małej","małemu","mali","mały","małych","małym","małymi","mniejsi","mniejsza","mniejszą","mniejsze","mniejszego","mniejszej","mniejszemu","mniejszy","mniejszych","mniejszym","mniejszymi","najdłużsi","najdłuższa","najdłuższą","najdłuższe","najdłuższego","najdłuższej","najdłuższemu","najdłuższy","najdłuższych","najdłuższym","najdłuższymi","najkrótsi","najkrótsza","najkrótszą","najkrótsze","najkrótszego","najkrótszej","najkrótszemu","najkrótszych","najkrótszym","najkrótszymi","najłatwiejsze","najlepsi","najlepsza","najlepszą","najlepsze","najlepszego","najlepszej","najlepszemu","najlepszych","najlepszym","najlepszymi","najmniejsi","najmniejsza","najmniejszą","najmniejsze","najmniejszego","najmniejszej","najmniejszemu","najmniejszy","najmniejszych","najmniejszym","najmniejszymi","najniżsi","najniższa","najniższą","najniższe","najniższego","najniższej","najniższemu","najniższy","najniższych","najniższym","najniższymi","najtrudniejsze","najwięksi","największa","największą","największe","największego","największej","największemu","największych","największym","największymi","najwyżsi","najwyższa","najwyższą","najwyższe","najwyższego","najwyższej","najwyższemu","najwyższy","najwyższych","najwyższym","najwyższymi","następna","następną","następne","następnego","następnej","następni","następny","następnych","następnym","następnymi","niewłaściwa","niewłaściwą","niewłaściwe","niewłaściwego","niewłaściwej","niewłaściwemu","niewłaściwi","niewłaściwy","niewłaściwych","niewłaściwym","niewłaściwymi","niscy","niska","niską","niski","niskich","niskie","niskiego","niskiej","niskiemu","niskim","niskimi","niżsi","niższa","niższą","niższe","niższego","niższej","niższemu","niższy","niższych","niższym","niższymi","ostatni","ostatnia","ostatnią","ostatnich","ostatnie","ostatniego","ostatniej","ostatniemu","ostatnim","ostatnimi","poprzedni","poprzednia","poprzednią","poprzednich","poprzednie","poprzedniego","poprzedniej","poprzedniemu","poprzednim","poprzednimi","sam","sama","samą","same","samego","samej","samemu","sami","samo","samych","samym","samymi","trudne","trudnego","trudniejsze","trudnym","więksi","większa","większą","większe","większego","większej","większemu","większych","większym","większymi","wielcy","wielka","wielką","wielki","wielkich","wielkie","wielkiego","wielkiej","wielkiemu","wielkim","wielkimi","właściwa","właściwą","właściwe","właściwego","właściwej","właściwemu","właściwi","właściwy","właściwych","właściwym","właściwymi","wysocy","wysoka","wysoką","wysoki","wysokich","wysokie","wysokiego","wysokiej","wysokiemu","wysokim","wysokimi","wyżsi","wyższa","wyższą","wyższe","wyższego","wyższej","wyższemu","wyższy","wyższych","wyższym","wyższymi","kolejne","różne","złe","kolejnych","różnych","złych","kolejnego","kolejnej","kolejny","kolejnym","różnego","różnej","różny","różnym","złego","złej","zły","złym","kolejna","kolejną","kolejnemu","kolejni","kolejnymi","różna","różną","różnemu","różni","różnymi","zła","złą","złemu","źli","złymi"],F=["blisko","bliżej","ciągle","ciężko","czasami","czasem","częściej","często","dalej","daleko","dawniej","dawno","dobrze","dopiero","fajnie","fajniej","gorzej","inaczej","ładnie","łatwiej","łatwo","lepiej","najbliżej","najczęściej","najdalej","najdawniej","najfajniej","najgorzej","najłatwiej","najlepiej","najniżej","najpóźniej","najprościej","najszybciej","najtrudniej","najwcześniej","najwyżej","naprawdę","niedaleko","niedawno","nisko","niżej","ostatnio","pewno","póżniej","późno","prawie","prościej","prosto","prostu","szybciej","szybko","trochę","trudniej","trudno","wcześnie","wcześniej","wolno","wszędzie","wysoko","wyżej","zazwyczaj","źle","jedynie","obecnie","teraz","szczególnie","zwykle"],_=["dni","dnia","dniach","dniami","dnie","dzień","dzisiaj","godzin","godzina","godzinach","godzinami","godzinę","godziny","jutro","lata","latach","latami","miesiąc","miesiąca","miesiącach","miesiącami","miesiące","miesiącem","miesiącu","miesięcy","minut","minuta","minutach","minutę","minuty","pojutrze","przedwczoraj","rok","rokiem","roku","sekund","sekunda","sekundach","sekundę","sekundy","tydzień","tygodni","tygodnia","tygodniach","tygodniami","tygodnie","tygodniu","wczoraj"],B=["chwila","chwilą","chwilach","chwilami","chwile","chwilę","chwili","chwilom","część","części","częścią","częściach","częściami","częściom","momencie","moment","ogóle","osób","osoba","osobą","osobach","osobami","osobę","osobie","osobom","osoby","powód","powodach","powodami","powodem","powodom","powodów","powodowi","powodu","powody","powodzie","przypadkiem","przypadku","raz","razach","razami","razem","razie","razom","razów","razowi","razu","razy","rodzaj","rodzajach","rodzajami","rodzajem","rodzajom","rodzajów","rodzajowi","rodzaju","rzecz","rzeczą","rzeczach","rzeczami","rzeczom","rzeczy","sposób","sposobem","sprawa","sprawą","sprawach","sprawami","sprawę","sprawie","sprawom","sprawy","temacie","temat","tematach","tematami","tematem","tematom","tematów","tematowi","tematu","tematy"],q=["dr","dyr","mgr","p","pan","pani","panie","panowie","prof","hab"],G=["a","ach","aha","aj","akurat","ał","aua","auć","ba","brawo","e","ech","ehe","ehm","ej","ejże","ekhm","ekstra","jej","jejku","łał","och","oh","oho","oj","ojej","ojejku","phi","precz","super","uwaga","wow"],H=["°C","°F","ar","ary","arów","arach","c","cl","cm","cm²","cm³","dag","deka","dl","f","ft","g","gram","gramów","gramy","ha","hektar","hektary","hektarów","hektarach","in","kg","kilo","km","km²","cm³","l","litr","litrów","litry","łyżeczka","łyżeczkę","łyżeczki","łyżka","łyżkę","łyżki","m","m²","m³","mg","ml","mm","mm²","mm³","szczypta","szczyptę","szczypty","szklanka","szklankę","szklanki","tuzin"],I=["nie","no","oto","tak","sobie","ok","okej","itp","itd","tzw"],J=(w([].concat(r,L,F,A,T,v)),w([].concat(C,W,x,P,D,l,m,b)),w([].concat(z,R,y,p,s,t,d,c,k,u,g,j,h,f,S,O,U,M,E,_,B,q,G,H,I,Z)),w([].concat(C,k,l,y,r,M,A,E,h,g,j))),K=w([].concat(Z,T,m)),N=w([].concat(z,R,y,p,s,t,d,c,k,u,g,j,h,f,S,Z,O,U,M,E,_,B,q,G,H,I,["bądź","bądźcie","bądźmy","będą","będąc","będę","będzie","będziecie","będziemy","będziesz","by","był","była","byłaby","byłabym","byłabyś","byłam","byłaś","byłby","byłbym","byłbyś","byłem","byłeś","byli","byliby","bylibyście","bylibyśmy","byliście","byliśmy","było","byłoby","były","byłyby","byłybyście","byłybyśmy","byłyście","byłyśmy","bym","byś","byście","byśmy","byto","bywało","jest","jestem","jesteś","jesteście","jesteśmy","są","zostają","zostając","zostająca","zostające","zostający","zostaje","zostaję","zostajecie","zostajemy","zostajesz","został","została","zostałaby","zostałabym","zostałabyś","zostałam","zostałaś","zostałby","zostałbym","zostałbyś","zostałem","zostałeś","zostali","zostaliby","zostalibyście","zostalibyśmy","zostaliście","zostaliśmy","zostało","zostaloby","zostały","zostałyby","zostałybyście","zostałybyśmy","zostałyście","zostałyśmy","zostań","zostaną","zostańcie","zostanę","zostanie","zostaniecie","zostaniemy","zostaniesz","zostańmy","zostawało","zostawano","zostawszy"],C,W,x,P,D,l,m,b,r,L,F,A,T,v)),Q=["a","aby","albo","albowiem","ale","bo","bowiem","czy","gdy","gdyby","gdyż","iż","jeśli","jeżeli","lub","ponieważ","zanim","żeby","który","która","które","którzy","którego","której","których","któremu","którym","którą","którymi","że"],V=[["albo","albo"],["ani","ani"],["czy","czy"],["im","tym"],["tak","jak"]],X={percentages:{slightlyTooMany:15,farTooMany:20},cornerstonePercentages:{slightlyTooMany:15,farTooMany:20}},Y=window.lodash,$=["abdykowany","absorbowany","adaptowany","administrowany","adoptowany","adorowany","adresowany","afiszowany","agitowany","akcentowany","akceptowany","aklimatyzowany","akompaniowany","aktualizowany","aktywowany","akumulowany","alaromowany","alienowany","amerykanizowany","amortyzowany","amputowany","analizowany","angażowany","anihilowany","animowany","anonsowany","antropomorfizowany","antydatowany","anulowany","apelowany","aportowany","aranżowany","archiwizowany","aresztowany","argumentowany","artykułowany","ascendowany","asekurowany","asymilowany","asystowany","atakowany","autoryzowany","awanturowany","babrany","baczony","badany","bagatelizowany","bajerowany","bałamucony","balangowany","balansowany","banalizowany","bandażowany","bankrutowany","baraszkowany","barwiony","bawiony","bazgrany","bazowany","bębniony","bełkotany","besztany","biadolony","biczowany","bity","błagany","błaznowany","blefowany","błogosławiony","blokowany","bluzgany","błyskany","błyszczący","boczony","bogacony","bojkotowany","boksowany","bombardowany","bopowany","borowany","brandzlowany","brany","brasowany","bratany","bredzony","brnięty","brodzony","broniony","brudzony","brylowany","budowany","budzony","bujany","bulony","bulwersowany","bumelowany","burzony","butelkowany","bywany","cackany","całowany","capnięty","cechowany","celebrowany","celowany","ceniony","cenzurowany","chciany","chlany","chlapany","chlapnięty","chlastany","chłodzony","chlostany","chlubiony","chodowany","chomikowany","chorowany","chowany","chroniony","chrupany","chrzczony","chuty","chwalony","chwycony","chwytany","chybotany","chylony","ciachnięty","ciągany","ciągnięty","ciemiężony","cierpiany","cieszony","cięty","ciskany","ciśnięty","ciułany","cmokany","cmoknięty","cofany","cofnięty","ćpany","cucony","cudzołożony","cumowany","ćwiartowany","ćwiczony","cykany","cytowany","czajony","czarowany","czczony","czepiany","czepiony","czerpany","czesany","częstowany","czochrany","czołgany","czuty","czytany","czyty","darowany","darty","darzony","datowany","dawany","dbany","deaktywowany","debatowany","dedukowany","dedykowany","defibrylowany","defilowany","definiowany","defraudowany","degradowany","degustowany","deklamowany","deklarowany","dekodowany","dekompresowany","dekorowany","dekretowany","delegowany","delektowany","deliberowany","demaskowany","dementowany","demolowany","demonizowany","demonstrowany","demoralizowany","denerwowany","denuncjowany","depeszowany","depilowany","deportowany","deprawowany","deptany","deratyzowany","destabilizowany","destylowany","desygnowany","determinowany","detonowany","dewastowany","dewaulowany","dezaktywowany","dezorientowany","dezynfekowany","diagnozowany","dilowany","dłubany","dłużony","dmuchany","dmuchnięty","dobiegany","dobierany","dobijany","dobity","dobrany","dobudzony","dobyty","doceniany","doceniony","dochodzony","dochowany","dochowywany","dociągnięty","dociekany","docięty","docinany","dociskany","dociśnięty","doczekany","doczepiony","doczołgany","doczyszczony","doczytany","dodany","dodawany","dodrukowany","dodrukowywany","dofinansowany","dofinansowywany","dogadany","dogadywany","dogadzany","doganiany","doglądany","doglądnięty","dognany","dogodzony","dogoniony","dograny","dogryzany","dogryziony","dogrzany","dogrzebany","doinformowany","dojeżdżany","dojony","dojrzany","dojrzewany","dokańczany","dokarmiany","dokarmiony","dokazany","dokazywany","dokładany","doklejony","dokonany","dokończony","dokonywany","dokopany","dokopywany","dokowany","dokręcany","dokręcony","dokształcany","dokształcony","dokuczany","dokumentowany","dokupiony","dołączany","dołączony","doładowany","dolany","dolewany","doliczony","dołowany","dołożony","domagany","domalowany","domknięty","domniewywany","domówiony","domyślany","domyślony","domyty","doniesiony","donoszony","dopadany","dopadnięty","dopakowany","dopalony","dopasowany","dopasowywany","dopatrywany","dopatrzony","dopchany","dopchnięty","dopełniany","dopełniony","dopieszczony","dopięty","dopijany","dopilnowany","dopingowany","dopisany","dopisywany","dopity","dopłacany","dopłacony","dopłynięty","dopolerowany","dopompowany","dopowiedziany","dopracowany","dopracowywany","doprany","doprawiony","doprecyzowany","doproszony","doprowadzany","doprowadzony","dopucowany","dopuszczany","dopuszczony","dopytywany","dorabiany","doradzany","doradzony","doręczany","doręczony","dorobiony","dorównany","dorównywany","dorwany","dorysowany","dorzucany","dorzucony","doścignięty","dosiadany","dosięgnięty","doskoczony","doskonalony","dosładzany","dosłany","dosłyszany","dosolony","dośrodkowany","dossany","dostany","dostąpiony","dostarczany","dostarczony","dostawany","dostawiany","dostawiony","dostosowany","dostosowywany","dostrajany","dostrojony","dostrzegany","dosunięty","dosuwany","doświadczany","Doświetlony","dosypany","dosypywany","doszkolony","doszlifowany","doszorowany","doszukany","doszukiwany","doszyty","dotankowany","dotankowywany","dotargany","dotaszczony","dotknięty","dotleniony","dotłumaczony","dotowany","dotrwany","dotrzymany","dotrzymywany","dotykany","douczany","douczony","dowalony","dowieziony","dowodzony","dowożony","doznany","doznawany","dozorowany","dozowany","dożyty","dożywiony","dramatyzowany","drapany","drapnięty","draśnięty","drażniony","drążony","dręczony","drenowany","drgany","drgnięty","drukowany","dryblowany","dryfowany","drzemany","dubbingowany","dublowany","duplikowany","duszony","dworowany","dygotany","dyktowany","dymany","dymiony","dyrygowany","dyscyplinowany","dyskredytowany","dyskryminowany","dyskutowany","dyskwalifikowany","dysponowany","dystansowany","dystrybuowany","dywagowany","dźgany","dźgnięty","dziabnięty","dziedziczony","dziękowany","dzielony","dziergany","dzierżony","dziobany","dziurawiony","dziurkowany","dźwigany","dźwignięty","edukowany","edytowany","egzaminowany","egzekutowany","egzekwowany","ekscytowany","ekshumowany","ekskomunikowany","eksmitowany","ekspandowany","eksperymentowany","eksploatowany","eksplorowany","eksponowany","eksportowany","eksterminowany","ekstradowany","ekstrapolowany","eliminowany","emancypowany","emanoway","emigrowany","emitowany","energetyzowany","eskortowany","etykietowany","ewakuowany","ewaluowany","fabrykowany","falowany","fałszowany","farbowany","faszerowany","faulowany","faworyzowany","fechtowany","fermentowany","ferowany","figurowany","filetowany","filmowany","filtrowany","finalizowany","finansowany","firmowany","fleszowany","folgowany","formułowany","forsowany","fotografowany","fundowany","gadany","ganiany","garbiony","gardzony","garnirowany","gaszony","gawędzony","gaworzony","gazowany","gdakany","gderany","generalizowany","generowany","gięty","gilgotany","gładzony","głaskany","głodowany","głodzony","gloryfikowany","głosowany","głoszony","głowiony","gmatwany","gmerany","gnany","gnębiony","gnieciony","gnity","gnojony","godzony","gojony","golnięty","golony","goniony","googlowany","gospodarowany","goszczony","gotowany","grabiony","grany","grasowany","gratulowany","grillowany","grilowany","gromadzony","gromiony","grożony","gruchany","gruchnięty","grupowany","grywany","gryziony","grzany","grzechotany","gubiony","gustowany","gwałcony","gwarantowany","gwizdany","gwizdnięty","hackowany","haftowany","hajtnięty","hamowany","hańbiony","handlowany","harcowany","harmonizowany","harowany","hartowany","hibernowany","hipnotyzowany","hodowany","holowany","hołubiony","honorowany","hospitalizowany","huknięty","hulany","huśtany","idealizowany","identyfikowany","ignorowany","igrany","ilustrowany","imitowany","implantowany","implodowany","imponowany","importowany","improwizowany","indokrynowany","indukowany","infekowany","infiltrowany","informowany","ingerowany","inhalowany","inscenizowany","inspirowany","instalowany","instruowany","insynuowany","integrowany","interpretowany","interweniowany","intonowany","intubowany","inwestowany","inwigilowany","irytowany","iskrzony","izolowany","jadany","jawiony","jazgotany","jednoczony","jedzony","kablowany","kadzony","kalany","kaleczony","kalkulowany","kamerowany","kamienowany","kamuflowany","kanalizowany","kantowanty","kąpany","kapitulowany","kapowany","karany","karbonizowany","karcony","karczowany","karmiony","kartkowany","kąsany","kasowany","kastrowany","katalogowany","katapultowany","katowany","katrupiony","kierowany","kimany","kiszony","kiwany","kiwnięty","kłaniany","klapany","klapnięty","klarowany","klasyfikowany","klębiony","klejony","klepany","klepnięty","klikany","kliknięty","klonowany","kłopotany","kłuty","knocony","knuty","kochany","koczowany","kodowany","kojarzony","kojfnięty","kojony","kolekcjonowany","kolektywizowany","kolidowany","kolonizowany","kolorowany","koloryzowany","kołowany","kołysany","kombinowany","komenderowany","komentowany","komercjalizowany","kompensowany","komplementowany","komplikowany","komponowany","kompromitowany","komunikowany","konany","koncentrowany","kończony","konfabulowany","konfiskowany","konfrontowany","konserwowany","konspirowany","konstruowany","konsultowany","konsumowany","kontaktowany","kontestowany","kontrastowany","kontrolowany","kontrowany","kontynuowany","kontynuuowany","konwertowany","konwojowany","koordynowany","kopany","kopcony","kopiowany","kopnięty","kopulowany","korelowany","korkowany","koronowany","korygowany","korzony","korzystany","koszony","kotwiczony","kozaczony","kozłowany","kpity","kradziony","krajany","krążony","kręcony","kremowany","kreowany","krochmalony","krojony","kropiony","kruszony","krystalizowany","kryty","krytykowany","krzepnięty","krzyczany","krzyknięty","krzywdzony","krzywiony","krzyżowany","kserowany","księgowany","kształcony","kształtowany","kulony","kultywowany","kumulowany","kupczony","kupiony","kupowany","kupywany","kurczony","kurowany","kursowany","kurzony","kuszony","kuty","kwalifikowany","kwestionowany","łączony","ładowany","łagodzony","łajdaczony","lakierowany","łamany","lamentowany","lansowany","lany","łapany","łaskotany","łaszony","latany","łatany","lawirowany","leczony","legalizowany","legitymowany","lekceważony","lepiony","lewitowany","liberowany","licencjonowany","licytowany","liczony","likwidowany","linczowany","liniowany","literowany","litowany","lizany","liznięty","lobbowany","lokalizowany","losowany","łowiony","łożony","lubiany","łudzony","lunatykowany","łupany","łupiony","łuskany","lustrowany","łuszczony","luzowany","łykany","łyknięty","łyżeczkowany","macany","machany","machnięty","mącony","maczany","maganyzowany","maglowany","majaczony","majsterkowany","majtany","maksymalizowany","malowany","maltretowany","mamiony","mamrotany","manewrowany","manifestowany","manipulowany","markowany","marnotrawiony","marnowany","marszczony","marynowany","marznięty","masakrowany","maskowany","masowany","masturbowany","mataczony","materializowany","mawiany","mazany","maznięty","męczony","meldowany","merdany","metabolizowany","miażdżony","mielony","mierzony","mierzwiony","mieszany","miętolony","migany","migdalony","migotany","mijany","miksowany","milowany","minięty","minimalizowany","miotany","mistyfikowany","mitygowany","mizdrzony","mlany","mniemany","mnożony","mobilizowany","mocowany","moczony","modelowany","modernizowany","modlony","modulowany","modyfikowany","molestowany","monitorowany","monopolizowany","montowany","mordowany","motywowany","mówiony","mrożony","mrugany","mrużony","muskany","mutowany","mydlony","mylony","myszkowany","myty","nabazgrany","nabiegany","nabierany","nabity","nabrany","nabrojony","nabrudzony","nabyty","nabywany","nacelowany","nachapany","nachodzony","nachwalony","nachylony","naciągany","naciągnięty","nacierany","nacięty","nacinany","naciskany","naciśnięty","nacjonalizowany","naczepiony","nadany","nadawany","nadchodzony","nadciągany","nadciągnięty","nadcięty","nadesłany","nadgoniony","nadgryzany","nadgryziony","nadinterpretowany","nadłożony","nadmieniany","nadmieniony","nadmuchany","nadrabiany","nadrobiony","nadskakiwany","nadsłuchiwany","nadstawiany","nadstawiony","nadszarpnięty","naduszony","nadużyty","nadużywany","nadwerężany","nadwyrężany","nadwyrężony","nadziany","nadzorowany","naelektryzowany","nafaszerowany","nagabywany","nagadany","nagięty","naginany","nagłaszany","nagłośniony","nagoniony","nagradzany","nagrany","nagrodzony","nagromadzony","nagrywany","nagryzmolony","nagrzany","nagrzebany","nagrzewany","nagwizdany","naigrywany","najechany","najęty","najmowany","nakarmiany","nakarmiony","nakazany","nakazywany","nakierowany","nakierowywany","nakładany","nakłamany","nakłaniany","naklejany","naklejony","naklepany","nakłoniony","nakłuty","nakłuwany","nakopany","nakręcany","nakręcony","nakreślany","nakreślony","nakruszony","nakryty","nakrywany","nakrzyczany","nakupiony","naładowany","nalany","nałapany","nalepiony","nalewany","naliczony","nałowiony","nałożony","namaczany","namagnetyzowany","namalowany","namaszczany","namaszczony","namawiany","namęczony","namierzany","namieszany","namoczony","namówiony","namydlany","namyślony","naniesiony","naoliwiany","naoliwiony","naopowiadany","naostrzony","napadany","napadnięty","napakowany","napalony","naparzany","napastowany","napawany","napchany","napędzany","napełniany","napełniony","napierany","napiętnowany","napięty","napinany","napisany","napluty","napływany","napoczęty","napojony","napompowany","napotkany","napotykany","napraszany","naprawiany","naprawiony","naprężany","naprężony","napromieniowany","naprostowany","naprowadzany","naprowadzony","napsuty","napuszczany","napuszczony","napychany","napytany","narąbany","naradzany","naradzony","narastany","narażany","narażony","nareperowany","narkotyzowany","narodzony","naruszany","naruszony","narwany","narysowany","narzucany","narzucony","nasączany","nasączony","nasadzony","nasiąkany","nasilany","nasilony","naskakiwany","naskoczony","naskrobany","naśladowany","nasłany","nasłuchany","nasłuchiwany","nasmarowany","nastąpiony","nastawiany","nastawiony","nastraszany","nastrojony","nastukany","nasunięty","nasuwany","naświetlany","nasycony","nasyłany","nasypany","naszczany","naszkicowany","naszpikowany","naszprycowany","naszykowany","naszyty","naszywany","natarty","natchnięty","natknięty","natleniony","natłuszczony","natrafiony","natrząsany","natrząsnięty","nauczany","nauczony","nawadniany","nawalony","nawiązany","nawiązywany","nawiedzany","nawiedzony","nawiercony","nawiewany","nawieziony","nawigowany","nawijany","nawilżany","nawilżony","nawinięty","nawlekany","nawodniony","nawoływany","nawoskowany","nawożony","nawpychany","nawracany","nawrócony","nawrzucany","nawtykany","nawymyślany","nazbierany","nazmyślany","naznaczany","naznaczony","nazrywany","nazwany","nazywany","nęcony","negocjowany","negowany","nękany","neutralizowany","niańczony","niecierpliwiony","niedoceniany","niedowidziany","nienawidzony","niesiony","nikolony","niszczony","nitkowany","niuchany","niweczony","niwelowany","nokautowany","nominowany","notowany","nucony","numerowany","nurtowany","obaczony","obadany","obalany","obalony","obandażowany","obarczany","obarczony","obawiany","obchodzony","obciągnięty","obciążony","obcięty","obcinany","obcyndalany","obczajany","obczajony","obdarowany","obdarty","obdarzany","obdarzony","obdzielony","obdzierany","obdzwaniany","obdzwoniony","obejmowany","oberwany","obessany","obezwładniany","obezwładniony","obfotografowany","obfotografowywany","obgadany","obgadywany","obgryzany","obgryziony","obiecany","obiecywany","obierany","obijany","obity","objadany","objaśniany","objawiany","objawiony","objechany","objęty","objeżdżany","obkręcany","oblany","obłapiany","obłapywany","obłaskawiany","obłaskawiony","obleciany","obleganu","oblewany","obliczany","obliczony","oblizany","obłowiony","obłożony","obluzowany","obluzowywany","obmacany","obmacywany","obmawiany","obmyślany","obmyślony","obmyty","obmywany","obnażany","obniżany","obniżony","obnoszony","obowiązywany","obozowany","obrabiany","obrabowany","obracany","obradowany","obramowany","obraniany","obrany","obrastany","obrażany","obrażony","obrobiony","obrócony","obrodzony","obroniony","obrysowany","obrywany","obryzgany","obrzezany","obrzucany","obrzucony","obrzygany","obsadzany","obsadzony","obściskiwany","obserwowany","obsiany","obsikany","obsikiwany","obskakiwany","obskoczony","obskubany","obskubywany","obśliniany","obśliniony","obsługiwany","obsłużony","obsmarowany","obstawiany","obstawiony","obstrzeliwany","obsunięty","obsuwany","obsypany","obsypywany","obszukany","obszukiwany","obtaczany","obtarty","obtoczony","obudzony","obwąchany","obwąchiwany","obwiązany","obwiązywany","obwieszany","obwieszczany","obwieszczony","obwieszony","obwijany","obwiniany","obwinięty","obwołany","obyty","obżerany","ocalany","ocalony","ocechowany","oceniany","oceniony","ocenzurowany","ochładzany","ochlapany","ochlapywany","ochłodzony","ochłonięty","ochraniany","ochroniony","ochrzaniany","ochrzczony","ociągany","ocielony","ocieplany","ocieplony","ocierany","ocknięty","ocucony","ocuty","oczarowywany","oczekiwany","oczerniany","oczerniony","oczyszczany","oczyszczony","odarty","odbębniony","odbetonowany","odbezpieczany","odbezpieczony","odbijany","odbity","odblokowany","odbudowany","odbudowywany","odbutowany","odbyty","odcedzany","odchorowany","odchowany","odchudzany","odchudzony","odchylany","odchylony","odciągany","odciągnięty","odciążony","odcierpiony","odcięty","odcinany","odcisnięty","odcumowany","odcyfrowany","odcyfrowywany","odczarowany","odczekany","odczepiany","odczepiony","odczuty","odczuwany","odczyniony","odczytany","odczytywany","oddalany","oddany","oddawany","oddelegowany","oddychany","oddzielany","oddzielony","odebrany","odegnany","odegrany","odejmowany","odepchnięty","oderwany","odeskortowany","odesłany","odespany","odessany","odetkany","odetnięty","odezwany","odfiltrowany","odgadnięty","odgadywany","odganiany","odgarniany","odgarnięty","odgięty","odgniatany","odgoniony","odgradzany","odgrażany","odgrodzony","odgruzowany","odgrywany","odgryzany","odgryziony","odgrzany","odgrzebany","odgrzebywany","odgrzewany","odgwizdany","odhaczony","odholowany","odinstalowany","odizolowany","odjedzony","odjęty","odjonizowany","odkażany","odkażony","odkładany","odklejony","odkochany","odkodowany","odkodowywany","odkopany","odkopywany","odkorkowany","odkręcany","odkręcony","odkrojony","odkryty","odkrywany","odkupiony","odkupywany","odkurzany","odkurzony","odkuty","odłączany","odłączony","odłamywany","odlany","odlatywany","odlepiany","odlewany","odliczany","odliczony","odłożony","odłupany","odmachany","odmachiwany","odmalowany","odmarszczony","odmawiany","odmeldowany","odmieniany","odmieniony","odmierzany","odmierzony","odmieszany","odmontowany","odmówiony","odmrażany","odmrożony","odnajdowany","odnaleziony","odnawiany","odniesiony","odnoszony","odnotowany","odnotowywany","odnowiony","odpakowany","odpakowywany","odpalany","odpalony","odpałzowany","odparowany","odparty","odpędzany","odpicowany","odpieczętowany","odpierany","odpięty","odpiłowany","odpiłowywany","odpinany","odpisany","odpisywany","odpłacany","odplamiony","odplątany","odpłynięty","odpowietrzony","odpracowany","odpracowywany","odprasowany","odprawiany","odprawiony","odprężany","odprostowany","odprowadzany","odprowadzony","odpruty","odpryskany","odpukany","odpukiwany","odpuszczany","odpuszczony","odpychany","odrąbany","odrabiany","odrąbywany","odradzany","odradzony","odrapany","odrastany","odratowany","odreagowany","odremontowany","odrestaurowany","odrestaurowywany","odrobaczany","odrobiony","odroczony","odrodzony","odrośnięty","odróżniany","odróżniony","odrysowany","odrywany","odrzucany","odrzucony","odsączany","odsączony","odsadzony","odseparowany","odsiadywany","odsiany","odsiewany","odsłaniany","odsłonięty","odsłuchany","odsłuchiwany","odsłużony","odśnieżany","odśnieżony","odsolony","odśpiewany","odsprzedany","odsprzedawany","odstąpiony","odstawiany","odstawiony","odstępowany","odstraszany","odstręczony","odstresowany","odstrzeliwany","odstrzelony","odsunięty","odsuwany","odświeżany","odświeżony","odsyłany","odsypywany","odsysany","odszczekany","odszczekiwany","odsztafirowany","odszukany","odszyfrowany","odszyfrowywany","odszykowany","odtrąbiony","odtrącony","odtruty","odtwarzany","odtworzony","oduczony","odurzony","odwalany","odwalony","odwiązany","odwiązywany","odwiedzany","odwiedzony","odwieszony","odwieziony","odwijany","odwinięty","odwlekany","odwodniony","odwodzony","odwołany","odwoływany","odwożony","odwracany","odwrócony","odwzajemniony","odwzorowany","odżegnany","odziany","odziedziczony","odznaczany","odznaczony","odzwieciedlony","odzwierciedlany","odzwoniony","odzwyczajony","odzyskany","odzyskiwany","odżyty","odzywiany","odżywiony","oferowany","ofiarowany","ofiarowywany","ogarniany","ogarnięty","oglądany","ogłaszany","ogłoszony","ogłupiany","ogłupiony","ogłuszony","ogołocony","ogolony","ograbiany","ograbiony","ograniczany","ograniczony","ograny","ogrodzony","ogryziony","ogrzany","ogrzewany","okablowany","okaleczony","okantowany","okąpany","okazany","okazywany","okiełznany","okładany","okłamany","okłamywany","oklaskiwany","oklejony","oklepany","okopany","okopywany","okpiony","okradany","okradziony","okraszony","okrążany","okrążony","okręcany","okręcony","określany","określony","okrojony","okryty","okrywany","okrzyknięty","okulawiony","okupiony","okupowany","olany","olewany","olśnięty","omamiony","omawiany","omdlewany","omijany","ominięty","omotany","omówiony","onanizowany","onieśmielany","onieśmielony","opadnięty","opakowany","opalany","opalony","opancerzony","opanowany","opanowywany","oparty","oparzony","opasany","opatentowany","opatrywany","opatrzony","opatulony","opchnięty","opędzany","opędzony","operowany","opętany","opętywany","opieczętowany","opiekowany","opierany","opijany","opisany","opisywany","opity","opłacany","opłacony","opłakany","opłakiwany","opłukany","opluty","opluwany","opływany","opodatkowany","opodatkowywany","oponowany","oporządzany","oporządzony","opowiadany","opowiedziany","opóźniany","opóźniony","opracowany","opracowywany","oprawiany","oprawiony","oprowadzany","oprowadzony","opróżniany","opróżniony","opryskany","opryskiwany","opublikowany","opukany","opuszczany","opuszczony","opychany","opylony","orany","orbowany","organizowany","orientowany","oroszony","orzekany","orżnięty","osaczany","osaczony","osadzany","osądzany","osadzony","osądzony","oscylowany","osiadany","osiągany","osiągnięty","osiedlany","osiedlony","osiedzony","osierocony","osiodłany","oskalpowany","oskarżony","oskrobany","oskrzydlany","oskrzydlony","oskubany","oskubywany","osłabiany","osłabiony","oślepiany","oślepiony","oślepnięty","ośliniany","osłodzony","osłoniony","osłuchany","osmalony","ośmielony","ośmieszany","ośmieszony","ostrzegany","ostrzelany","ostrzelity","ostrzony","ostudzony","osunięty","osuszany","osuszony","osuwany","oswajany","oświadczany","oświadczony","oświecany","oświeciony","oświetlany","oświetlony","oswobadzany","oswobodzony","oswojony","oszacowany","oszałamiany","oszczany","oszczędzany","oszczędzony","oszklony","oszlifowany","oszołomiony","oszpecony","oszukany","oszukiwany","oszwabiony","otaczany","otarty","otoczony","otruty","otruwany","otrząsany","otrząśnięty","otrzepany","otrzeźwiony","otrzymany","otrzymywany","otulony","otumaniony","otwierany","otworzony","otwarty","owany","owdowiony","owiany","owijany","owinięty","ozdabiany","ozdobiony","ozdrowiony","ożeniony","oznaczany","oznaczony","oznajmiany","oznajmiony","oznakowany","ożyty","ożywany","ożywiany","ożywiony","pachnący","pacnąty","pakowany","paktowany","pałany","pałaszowany","palnięty","palony","pamiętany","panoszony","paprany","parafrazowany","paraliżowany","parkowany","parowany","partaczony","parzony","pastowany","paszony","patrolowany","patroszony","patrzony","pauzowany","pchany","pchnięty","pdholowany","pedałowany","pękany","pęknięty","pełniony","penetrowany","perforowany","perfumowany","perswadowany","piastowany","pichcony","pielęgnowany","pielony","pieniony","pieszczony","piętnowany","pięty","pijany","pikietowany","piknikowany","pikowany","pilnowany","pilotowany","piłowany","pisany","pisywany","pity","płacony","plądrowany","plamiony","planowany","płaszczony","plątany","płatany","pławiony","plewiony","płonący","płoszony","plotkowany","plugawiony","płukany","pluskany","pluty","pobaraszkowany","pobierany","pobity","pobłażany","pobłogosławiony","pobrany","pobrudzony","pobudzany","pobudzony","pobujany","pocałowany","pocerowany","pochłaniany","pochlapany","pochlebiany","pochłonięty","pochowany","pochwalany","pochwalony","pochwycony","pochylany","pochylony","pociachany","pociągany","pociągnięty","pocierany","pocieszany","pocieszony","pocięty","pocony","pocukrowany","poćwiartowany","poczesany","poczęstowany","poczęty","poczochrany","poczuty","poczytany","poczytywany","podany","podarowany","podarty","podawany","podążony","podbierany","podbijany","podbity","podbudowany","podbudowywany","podburzany","podburzony","podchwycony","podciągany","podciągnięty","podcierany","podcięty","podcinany","podczepiony","poddany","poddawany","podebrany","podejmowany","podejrzany","podejrzewany","podelektowany","podeptany","poderwany","podesłany","podglądany","podgolony","podgoniony","podgryzany","podgrzany","podgrzewany","podjadany","podjedzony","podjęty","podkablowany","podkarmiony","podkładany","podklejony","podkolorowany","podkołowany","podkopany","podkopywany","podkradany","podkradnięty","podkręcany","podkręcony","podkreślany","podkreślony","podkształcony","podkulony","podkupiony","podkurzony","podkuty","podłączany","podłączony","podładowany","podłamany","podlany","podłapany","podleczony","podlegany","podlewany","podliczany","podliczony","podlizany","podlizywany","podłożony","podmalowany","podmieniany","podmieniony","podmuchany","podmyty","podnajęty","podniecany","podniecony","podniesiony","podnoszony","podołany","podopingowany","podostrzony","podotykany","podpadnięty","podpalany","podpalony","podparty","podpatrywany","podpatrzony","podpieczętowany","podpiekany","podpierany","podpięty","podpiłowany","podpinany","podpisany","podpisywany","podpłacony","podpłynięty","podpompowany","podporządkowany","podporządkowywany","podpowiadany","podpowiedziany","podprowadzany","podpuszczany","podpuszczony","podpychany","podpytany","podrabiany","podrapany","podrasowany","podratowany","podrażniony","podręczony","podregulowany","podreperowany","podretuszowany","podrobiony","podroczony","podróżowany","podrygiwany","podrywany","podrzucany","podrzucony","podrzynany","podsadzony","podskubywany","podsłuchany","podsłuchiwany","podsmażany","podsmażony","podśpiewywany","podstawiany","podstawiony","podstemplowany","podstrojony","podsumowany","podsumowywany","podsunięty","podsuwany","podświetlany","podsycany","podsycony","podsyłany","podsypany","podszczypywany","podszkolony","podszlifowany","podszykowany","podszyty","podszywany","podtapiany","podtarty","podtopiony","podtrzymany","podtrzymywany","podtuczony","poduczany","podupadany","poduszony","podwajany","podwalany","podważany","podwędzony","podwiązany","podwieszany","podwieziony","podwijany","podwinięty","podwojony","podwożony","podwyżany","podwyższany","podwyższony","podyktowany","podyskutowany","podziabany","podziałany","podziałkowany","podziękowany","podzielony","podziurawiony","podziwiany","podźwignięty","poeksperymentowany","pofarbowany","pofatygowany","pofilmowany","poganiany","pogardzany","pogardzony","pogarszany","pogaszony","pogładzony","pogłaskany","pogłębiany","pogłębiony","pogłośniony","pogmatwany","pognębiony","pognieciony","pogodzony","pogoniony","pogorszony","pogotowany","pograbiony","pogrążany","pogrążony","pogrożony","pogrubiany","pogrubiony","pogruchany","pogruchotany","pogrupowany","pogrywany","pogryzany","pogryziony","pogrzany","pogrzebany","pogubiony","pogwałcany","pohamowany","pohandlowany","poharatowany","pohuśtany","poinformowany","poinstruowany","pojednany","pojęty","pojmięty","pojmowany","pojony","pokajany","pokaleczony","pokarany","pokarmiony","pokąsany","pokatalogowany","pokazany","pokazywany","pokiereszowany","pokierowany","pokiwany","pokładany","poklepany","poklepywany","pokłoniony","pokłuty","pokochany","pokolorowany","pokoloryzowany","pokołysany","pokombinowany","pokomplikowany","pokonany","pokończony","pokonywany","pokopany","pokrajany","pokrążony","pokręcony","pokrojony","pokruszony","pokryty","pokrywany","pokrzepiany","pokrzepiony","pokrzyżowany","pokuszony","pokutowany","połączony","polakierowany","połamany","polany","połapany","połaskotany","połatany","polecany","połechtany","polecony","poleczony","polegany","polemizowany","polepszany","polepszony","polerowany","polewany","policzkowany","policzony","polimeryzowany","polizany","połknięty","polowany","połowiony","położony","polubiony","poluźniony","poluzowany","połykany","pomacany","pomachany","pomagany","pomalowany","pomarynowany","pomasowany","pomazany","pomęczony","pomiatany","pomieszany","pomieszczony","pomijany","pominięty","pomiziany","pomknięty","pomnażany","pomniejszany","pomniejszony","pomnożony","pomoczony","pompowany","pomydlony","pomylony","pomyszkowany","pomywany","ponabijany","ponaciskany","ponadziewany","ponaglany","ponaglony","ponagrywany","ponaklejany","ponakłuwany","ponakrywany","ponaprawiany","ponawiany","poniańczony","poniechany","ponieiwerany","poniesiony","poniszczony","poniżany","poniżony","ponoszony","ponowiony","ponudzony","poobcinany","poobcowany","poobczajany","poobijany","poobmacywany","poobracany","poobserwowany","poodbijany","poodcinany","poodgryzany","poodkurzany","poodprawiany","poodsuwany","poodwalany","pooglądany","poograniczany","poopalany","poopiekany","poopwiadany","pootwierany","popadany","popakowany","popalony","poparty","poparzony","popchany","popchnięty","popędzany","popędzony","popękany","popełniany","popełniony","poperfumowany","popierany","popieszczony","popijany","popilnowany","popisany","popity","popłacony","popłakiwany","poplamiony","poplątany","popluskany","popodcinany","popodziwiany","popoprawiany","poprany","poprasowany","poprawiany","poprawiony","poproszony","poprowadzony","popryskany","poprzebierany","poprzeciągany","poprzecinany","poprzedzany","poprzeglądany","poprzeklinany","poprzekopywany","poprzemieszczany","poprzenoszony","poprzesadzany","poprześladowany","poprzestawiany","poprzesuwany","poprzewieszany","poprzewracany","poprzycinany","poprzymierzany","poprzytulany","poprzywiązywany","popsuty","popudrowany","popukany","popularyzowany","popuszczany","popuszczony","popychany","popykany","popytany","porabiany","porachowany","poraniony","poratowany","porażony","poręczony","porównany","porozbierany","porozbijany","porozciągany","porozcinany","porozdawany","porozdzielany","porozmieszczany","poróżniony","porozpędzany","porozpieszczany","porozprowadzany","porozpruwany","porozrzucany","porozstawiany","porozsyłany","porozumiewany","porozwalany","porozwiązywany","porozwieszany","porozwożony","portretowany","poruszany","poruszony","porwany","porysowany","porywany","porządkowany","porządzony","porzucany","porzucony","posądzany","posadzony","posądzony","pościągany","pościelony","pościerany","pościgany","pościnany","pościskany","posegregowany","posiadany","posiany","posiekany","posilany","posiłkowany","posilony","posiłowany","posiniaczony","posiorbany","poskąpiony","poskładany","posklejany","poskramiany","poskręcany","poskrobany","poskromiony","poskubany","posłany","posłodzony","poślubiany","poślubiony","posługiwany","posmakowany","posmarowany","posolony","posortowany","pospekulowany","pospieszany","pośpieszany","pośpiewany","pospinany","pospłacany","posprawdzany","posprzątany","posprzedawany","pośredniczony","possany","postanowiony","postany","postarany","postawiony","postemplowany","posterowany","postradany","postraszony","postrugany","postrzegany","postrzelany","postrzelony","postukany","postymulowany","posunięty","posuwany","poświącany","poświadczony","poświecony","poświęcony","poświętowany","poświntuszony","posyłany","posypany","posypywany","poszarpany","poszastany","poszatkowany","poszczuty","poszczycony","poszczypany","poszerzany","poszerzony","poszorowany","poszpiegowany","poszturchany","poszukany","poszukiwany","poszwędany","poszybowany","potakiwany","potarmoszony","potarty","potasowany","potęgowany","potępiany","potępiony","potknięty","potoczony","potopiony","potorturowany","potrącany","potrącony","potraktowany","potrojony","potruty","potrząsany","potrzaskany","potrząsnięty","potrząśnięty","potrzymany","Poturbowany","poturlany","potwierdzony","potykany","poucinany","pouczany","pouczony","poudawany","poukładany","pouprawiany","poupychany","pourywany","poustawiany","poużywany","powąchany","powachlowany","powalany","powalony","poważany","powbijany","powciągany","powciskany","powdychany","powęszony","powetowany","powiadamiany","powiadomiony","powiązany","powiedziany","powiedzony","powiększany","powielany","powielony","powierzany","powierzony","powieszony","powiewany","powinszowany","powitany","powity","powkładany","powlekany","powłóczony","powodowany","powołany","powoływany","powożony","powpychany","powrócony","powrzucany","powsadzany","powściągnięty","powspominany","powstrzymany","powtarzany","powtórzony","powybierany","powybijany","powycierany","powycinany","powyciskany","powydawany","powyganiany","powyginany","powyjaśniany","powyjmowany","powyłączany","powymiatany","powymieniany","powynoszony","powypełniany","powypisywany","powyrywany","powyrzucany","powystrzelany","powysyłany","powywalany","powywieszany","powywracany","powzięty","pozabawiany","pozabijany","pozacierany","pożądany","pożądlony","pozadzierany","pozakładany","pozaklinany","pozałatwiany","pozamiatany","pozamieniany","pozamrażany","pozamykany","pozapalany","pozapinany","pozapisywany","pozapraszany","pożarty","pozasłaniany","pozastrzelany","pozatykany","pozbawiany","pozbawiony","pozbierany","pozbyty","pozbywany","pozdejmowany","pozdrawiany","pozdrowiony","pożegnany","pożerany","pozmiatany","pozmieniany","pozmywany","poznaczony","poznany","poznawany","poznęcany","pozorowany","pozostawiany","pozostawiony","pozowany","pozrywany","pozszywany","pożuty","pozwalniany","pozwany","pozwiązywany","pozwiedzany","pozwolony","pożyczany","pożyczony","pozyskany","pożyty","pozywany","pożywiany","pożywiony","praktykowany","prany","prasowany","prawiony","prażony","precyzowany","preferowany","prenumerowany","prezentowany","próbowany","procesowany","produkowany","profanowany","profilowany","prognozowany","programowany","projektowany","proklamowany","prolongowany","promieniowany","promowany","propagowany","proponowany","prosperowany","prostowany","proszkowany","proszony","protestowany","protokołowany","prowadzony","prowokowany","pruty","pryskany","pryśnięty","przeanalizowany","przearanżowany","przebaczany","przebaczony","przebadany","przebiegnięty","przebierany","przebijany","przebity","przebolony","przebrany","przebudowany","przebudowywany","przebudzany","przebudzony","przebukowany","przebyty","przebywany","przeceniany","przeceniony","przechlapany","przechodzony","przechowany","przechowywany","przechrzcony","przechwycony","przechwytywany","przechylany","przechylony","przechytrzany","przechytrzony","przeciągany","przeciągnięty","przeciążany","przeciążony","przeciekany","przecierany","przecierpiany","przecięty","przecinany","przeciskany","przeciśnięty","przeciwstawiany","przećwiczony","przeczekany","przeczesany","przeczesywany","przeczołgany","przeczuty","przeczuwany","przeczyszczony","przeczytany","przedarty","przedawkowany","przedawkowywany","przedekorowany","przedłożony","przedłużany","przedłużony","przedmuchany","przedobrzony","przedostany","przedostawany","przedsiewzięty","przedstawiany","przedstawiony","przedymany","przedyskutowany","przedzierany","przedziurawiony","przedziurkowany","przeegzaminowany","przefaksowany","przefarbowany","przefasonowany","przefasowany","przefaxowany","przefiltrowany","przeformowany","przeforsowany","przegadany","przeganany","przeganiany","przegapiany","przegapiony","przegięty","przeginany","przeglądany","przeglądnięty","przegłodzony","przegłosowany","przegoniony","przegotowany","przegotowywany","przegrabiony","przegradzany","przegrany","przegrupowany","przegrupowywany","przegrywany","przegryzany","przegryziony","przegrzany","przegrzebany","przegrzewany","przehandlowany","przeholowany","przeinstalowany","przeistoczony","przejadany","przejaskrawiany","przejaśniony","przejawiany","przejawiony","przejechany","przejęty","przejeżdżany","przejmowany","przejrzany","przekabacany","przekabacony","przekablowany","przekalibrowany","przekalkulowany","przekarmiany","przekąszony","przekazywany","przekierowany","przekierowywany","przekimany","przekładany","przeklejony","przeklęty","przeklinany","przeklnięty","przekłuty","przekonany","przekonfigurowany","przekonstruowany","przekonwertowany","przekonywany","przekopany","przekopywany","przekoziołkowany","przekraczany","przekręcany","przekręcony","przekreślany","przekreślony","przekroczony","przekrojony","przekrzyczony","przekrzywiony","przekształcany","przekształcony","przekupiony","przekupywany","przekuty","przekwalifikowany","przełączany","przełączony","przeładowany","przeładowywany","przełamany","przełamywany","przelany","przelatywany","przeleciany","przelewany","przeleżany","przelicytowany","przeliczany","przeliczony","przeliterowany","przełknięty","przełożony","przełykany","przełyknięty","przemalowany","przemalowywany","przemaszerowany","przemawiany","przemeblowany","przemęczony","przemielony","przemieniany","przemierzony","przemieszczany","przemieszczony","przemijany","przemilczany","przemilczony","przeminięty","przemknięty","przemodelowany","przemusztrowany","przemycany","przemycony","przemyślany","przemyślony","przemyty","przemywany","przenegocjowany","przeniesiony","przenikany","przeniknięty","przenoszony","przeobrażany","przeobrażony","przeoczany","przeoczony","przeorany","przeorganizowany","przeorientowany","przepadany","przepakowany","przepalony","przeparkowany","przepchany","przepchnięty","przepędzany","przepędzony","przepełniany","przepełniony","przepijany","przepiłowany","przepisany","przepisywany","przepity","przepłacany","przepłacony","przepłakany","przeplanowany","przepłoszony","przepłukany","przepłukiwany","przepłynięty","przepływany","przepompowany","przepompowywany","przepowiadany","przepowiedziany","przepracowany","przepracowywany","przeprany","przeprawiany","przeprawiony","przeprogramowany","przeprojektowany","przeprowadzany","przeprowadzony","przepuszczany","przepuszczony","przepychany","przepytany","przepytywany","przerąbany","przerabiany","przeradzany","przerastany","przerażony","przeredagowany","przerejestrowany","przerobiony","przerodzony","przerośnięty","przerwany","przerysowany","przerywany","przerzedzany","przerzucany","przerzucony","przesączony","przesadzany","przesądzany","przesadzony","przesądzony","prześcigany","prześcignięty","przesiadany","przesiadywany","przesiany","przesiedlany","przesiedlony","przesiedziany","przesiewany","przesilony","przeskakiwany","przeskalowany","przeskanowany","przeskoczony","przeskrobany","prześladowany","przesłaniany","przesłany","prześledzony","prześlizgnięty","przesłodzony","przesłonięty","przesłuchany","przesłuchiwany","przesmarowany","przesolony","przesortowany","przespany","prześpiewany","przessany","przestawiany","przestawiony","przestemplowany","przestraszony","przestrojony","przestrzegany","przestrzelony","przestudiowany","przesunięty","przesuwany","prześwietlany","prześwietlony","przesyłany","przesypany","przesypiany","przesypywany","przeszarżowany","przeszczepiany","przeszczepiony","przeszkadzany","przeszkolony","przeszmuglowany","przeszukany","przeszukiwany","przeszyty","przeszywany","przetaczany","przetańczony","przetapetowany","przetarty","przetestowany","przetkany","przetoczony","przetopiony","przetrącony","przetransformowany","przetransmitowany","przetransponowany","przetransportowany","przetrawiony","przetrwany","przetrząsany","przetrząśnięty","przetrzepany","przetrzymany","przetrzymywany","przetwarzany","przetworzony","przewalany","przewalczony","przewaletowany","przewalony","przeważany","przeważony","przewertowany","przewiązany","przewiązywany","przewidywany","przewidziany","przewiercany","przewiercony","przewieszany","przewieszony","przewietrzony","przewieziony","przewijany","przewinięty","przewitany","przewodniczony","przewodzony","przewożony","przewracany","przewrócony","przewyższany","przeymierzany","przeżarty","przeżeglowany","przeżegnany","przeziębiony","przezimowany","przeznaczany","przeznaczony","przeżuty","przezwyciężany","przezwyciężony","przeżyty","przezywany","przeżywany","przodowany","przpochlebiony","przwdziewany","przybastowany","przybierany","przybijany","przybity","przybliżany","przybliżony","przybrany","przycelowany","przycepiony","przychylony","przyciągany","przyciągnięty","przyciemniony","przycięty","przycinany","przyciskany","przyciśnięty","przyciszony","przyćmiewany","przyćmiony","przycumowany","przyczepiany","przyczesany","przyczołgany","przyczyniony","przydepnięty","przydeptany","przyduszony","przydzielany","przydzielony","przygarnięty","przygaszony","przygazowany","przygładzany","przygnębiany","przygniatany","przygnieciony","przygotowany","przygruchany","przygrywany","przygryzany","przygryziony","przygrzany","przygwożdżony","przyhamowany","przyholowany","przyjany","przyjęty","przyjmowany","przyjrzany","przykładany","przyklejony","przyklepany","przykopany","przykręcany","przykręcony","przykrócony","przykryty","przykrywany","przykurzony","przykuty","przykuwany","przyłączany","przyłączony","przylany","przyłapany","przylegany","przylepiany","przylepiony","przyłożony","przymierzony","przymilany","przymknięty","przymocowany","przymuszany","przynależony","przyniesiony","przynoszony","przynudzany","przyostrzony","przyozdabiany","przyozdobiony","przypadnięty","przypakowany","przypakowywany","przypalany","przypalony","przyparty","przypasowany","przypatrywany","przypatrzony","przypieczętowany","przypiekany","przypierany","przypięty","przypilnowany","przypiłowany","przypinany","przypisany","przypisywany","przypłacony","przyplątany","przypłynięty","przypodobany","przypominany","przypomniany","przyporządkowany","przyprawiany","przyprawiony","przyprowadzony","przypucowany","przypudrowany","przypuszczany","przypuszczony","przyrównany","przyrządzany","przyrządzony","przysiadany","przysiągnięty","przyskrzydlony","przyskrzyniany","przyskrzyniony","przysłaniany","przysłany","przysłodzony","przysłoniony","przysłuchiwany","przysługiwany","przysłużony","przysmażany","przysmażony","przyspieszany","przyspieszony","przysporzony","przysposobiony","przyśrubowywany","przyssany","przystąpiony","przystawiany","przystawiony","przystemplowany","przystopowany","przystosowany","przystrojony","przysunięty","przysuwany","przyswajany","przyświecany","przyświęcony","przyswojony","przysyłany","przysypany","przyszpilony","przyszykowany","przyszyty","przyszywany","przytaczany","przytargany","przytarty","przytaszczany","przytępiany","przytępiony","przytkany","przytłaczany","przytłoczony","przytłumiony","przytoczony","przytrafiony","przytroczony","przytruwany","przytrzasnięty","przytrzymany","przytrzymywany","przytulany","przytulony","przytwierdzany","przytwierdzony","przytykany","przyuczony","przyuważony","przywabiony","przywalany","przywalony","przywarowany","przywarty","przywdziany","przywiązany","przywiązywany","przywidziany","przywieziony","przywitany","przywłaszczany","przywłaszczony","przywołany","przywoływany","przywożony","przywracany","przywrócony","przyznaczony","przyznany","przyznawany","przyzwalany","przyzwany","przyzwyczajany","przyzwyczajony","przyzywany","psiamany","pstrykany","pstryknięty","psuty","publikowany","puchnięty","pucowany","pudłowany","pudrowany","puknięty","punktowany","pustoszony","puszczany","puszczony","puszkowany","puszony","pykany","pytany","rabowany","rachowany","racjonalizowany","racjonowany","raczony","radowany","raniony","raportowany","ratowany","ratyfikowany","reaktywowany","realizowany","reanimowany","recytowany","ręczony","redagowany","redukowany","reformowany","refowany","regenerowany","regionalizowany","regulowany","reinkarnowany","rejestrowany","reklamowany","rekomendowany","rekompensowany","rekonstruowany","rekreowany","rekrutowany","rekwirowany","relacjonowany","relaksowany","remodulowany","remontowany","renegocjowany","reorganizowany","reperowany","replikowany","represejonowany","reprezentowany","reprodukowany","resetowany","resocjalizowany","respektowany","resuscytowany","retuszowany","rewanżowany","rewidowany","rezerwowany","rezonowany","rezygnowany","reżyserowany","robiony","rodzony","rojony","rolowany","romansowany","roniony","rozbawiany","rozbawiony","rozbierany","rozbijany","rozbity","rozbłyśnięty","rozbrajany","rozbrojony","rozbudowany","rozbudowywany","rozbudzany","rozbudzony","rozbujany","rozcapierzony","rozchmurzony","rozchodzony","rozchylany","rozchylony","rozciągany","rozciągnięty","rozcieńczany","rozcieńczony","rozcierany","rozcięty","rozcinany","rozczarowany","rozczarowywany","rozczesany","rozczłonkowany","rozczulany","rozczytany","rozdany","rozdawany","rozdeptany","rozdmuchany","rozdmuchiwany","rozdrabniany","rozdrapany","rozdrapywany","rozdrażniany","rozdrażniony","rozduszony","rozdwojony","rozdysponowany","rozdzielany","rozdzielony","rozdzierany","rozdziewiczony","rozebrany","rozedrany","rozegrany","rozegrywany","rozepchany","rozerwany","rozesłany","rozgarnięty","rozgaszczany","rozgięty","rozglaszany","rozgłoszony","rozgniatany","rozgnieciony","rozgniewany","rozgoniony","rozgraniczony","rozgrany","rozgromiony","rozgrywany","rozgryzany","rozgryziony","rozgrzany","rozgrzebywany","rozgrzeszony","rozgrzewany","rozhuśtany","rozjaśniany","rozjaśniony","rozjechany","rozjedzony","rozjuszany","rozjuszony","rozkazany","rozkazywany","rozkładany","rozklejany","rozklejony","rozkołysany","rozkopany","rozkopywany","rozkoszowany","rozkręcany","rozkręcony","rozkrojony","rozkruszony","rozkuty","rozkuwany","rozkwaszony","rozkwaterowany","rozkwitany","rozkwitnięty","rozłączony","rozładowany","rozładowywany","rozłamany","rozlany","rozlewany","rozliczany","rozliczony","rozlokowany","rozłożony","rozłupany","rozluźniany","rozmanażany","rozmasowany","rozmawiany","rozmazany","rozmazywany","rozmiękczony","rozmieniany","rozmieniony","rozmieszczany","rozmieszczony","rozminięty","rozmnożony","rozmontowany","rozmówiony","rozmrażany","rozmrożony","rozmyślany","rozmyty","różnicowany","rozniecany","roznieciony","rozniesiony","różniony","roznoszony","rozochocony","rozpaczany","rozpakowany","rozpakowywany","rozpalany","rozpalony","rozpamiętywany","rozpaskudzany","rozpatrywany","rozpatrzony","rozpędzany","rozpędzony","rozpętany","rozpieszczany","rozpieszczony","rozpięty","rozpiłowany","rozpinany","rozpisany","rozpisywany","rozplanowany","rozpłaszczany","rozpłaszczony","rozplątany","rozplątywany","rozpłynięty","rozpoczęty","rozpoczynany","rozpogodzony","rozporządzany","rozporządzony","rozpościerany","rozpostrzony","rozpowiadany","rozpowiedziany","rozpowszechniany","rozpowszechniony","rozpoznany","rozpoznawany","rozpracowany","rozpraszany","rozprawiany","rozprawiczony","rozprawiony","rozprostowany","rozproszony","rozprowadzany","rozprowadzony","rozpruty","rozpruwany","rozprzestrzeniany","rozprzestrzeniony","rozpuszczany","rozpuszczony","rozpychany","rozpylany","rozpylony","rozpytany","rozpytywany","rozrastany","rozreklamowany","rozrobiony","rozrośnięty","rozróżniany","rozróżniony","rozruszany","rozrysowany","rozrywany","rozrzucany","rozsadzany","rozsadzony","rozsądzony","rozścielony","rozsiany","rozsiekany","rozsiewany","rozsiodłany","rozsławiany","rozsławiony","rozsmarowany","rozsmarowywany","rozśmieszany","rozstany","rozstąpiony","rozstawany","rozstawiany","rozstawiony","rozstrojony","rozstrząsany","rozstrzeliwany","rozstrzelony","rozstrzygany","rozstrzygnięty","rozsunięty","rozsupłany","rozświetlany","rozświetlony","rozsyłany","rozsypany","rozsypywany","rozszarpany","rozszarpywany","rozszczepiany","rozszczepiony","rozszerzany","rozszerzony","rozszyfrowany","roztaczany","roztapiany","roztarty","roztoczony","roztopiony","roztrwoniony","roztrząsany","roztrzaskany","rozumiany","rozumowany","rozwalany","rozwalony","rozwarty","rozważany","rozważony","rozweselany","rozweselony","rozwiany","rozwiązany","rozwiązywany","rozwidniany","rozwiedziony","rozwierany","rozwiercony","rozwieszany","rozwieszony","rozwiewany","rozwieziony","rozwikłany","rozwinięty","rozwlekany","rozwodzony","rozwścieczany","rozwścieczony","rozzłoszczony","rugany","ruinowany","rujnowany","runięty","ruszany","ruszony","rwany","ryczany","ryglowany","rymowany","rysowany","ryty","ryzykowany","rządzony","rzeźbiony","rżnięty","rzucany","rzucony","rzygany","sabotażowany","sączony","sadzany","sadzony","sądzony","salutowany","salwowany","sankcjonowany","satysfakcjonowany","scalony","scementowany","scentrowany","scharakteryzowany","schładzany","schlany","schlapany","schlebiony","schłodzony","schowany","schroniony","schrupany","schrzaniony","schwytany","schylany","ściągnięty","ścielony","ściemniany","ściemniony","ścierany","ścierpiony","ścięty","ścigany","ścinany","ściskany","ściśnięty","ściszany","ściszony","sędziowany","segregowany","selekcjonowany","separowany","sępiony","serwowany","sfabrykowany","sfajczony","sfałszowany","sfaulowany","sfilmowany","sfinalizowany","sfinansowany","sfingowany","sformalizowany","sformatowany","sformowany","sformułowany","sforsowany","sfotografowany","shimmerowany","siany","siekany","siorbany","skadrowany","skakany","skalany","skaleczony","skalibrowany","skalkulowany","skalpowany","skanalizowany","skandowany","skanowany","skapitulowany","skarcony","skarżony","skasowany","skatalogowany","skazany","skażony","skazywany","skierowany","składany","składowany","skłaniany","sklasyfikowany","skleciony","sklejany","sklejony","sklepany","skłócony","skłoniony","sklonowany","sknocony","skojarzony","skolonizowany","skołowany","skombinowany","skomentowany","skompensowany","skompletowany","skomplikowany","skomponowany","skompresowany","skompromitowany","skomunikowany","skonany","skoncentrowany","skończony","skondensowany","skonfigurowany","skonfiskowany","skonfrontowany","skonkretyzowany","skonsolidowany","skonstruowany","skonsultowany","skonsumowany","skontaktowany","skontrolowany","skoordynowany","skopany","skopiowany","skorektowany","skorumpowany","skorygowany","skorzystany","skoszony","skracany","skradziony","skręcany","skręcony","skremowany","skreślany","skreślony","skrobany","skrobnięty","skrócony","skrojony","skropiony","skruszony","skrystalizowany","skryty","skrytykowany","skrywany","skrzecowany","skrzepnięty","skrzyczany","skrzyty","skrzywdzony","skrzyżowany","skserowany","skubany","skubnięty","skulony","skumulowany","skupiany","skupiony","skupowany","skurczony","skuszony","skuty","skuwany","skwitowany","słany","sławiony","śledzony","śliniony","ślizgany","słodzony","słuchany","słyszany","smagany","smarowany","smażony","śmiecony","smuty","smyrany","snuty","sondowany","sortowany","spafycikowany","spakowany","spalany","spałaszowany","spalony","spałowany","spamiętany","spaprany","sparafrazowany","sparaliżowany","sparowany","spartaczony","spartolony","sparzony","spasowany","spatałaszony","spauzowany","spawany","spawiony","specjalizowany","spędzany","spędzony","spekulowany","spełniany","spełniony","spenetrowany","spętany","spierany","spięty","śpiewany","spiłowany","spinany","spisany","spiskowany","spisywany","spity","spłacany","spłacony","splądrowany","splajtowany","splamiony","spłaszczony","splatany","splątany","spłatany","spławiany","spławiony","spłodzony","spłonięty","spłoszony","spłukany","spłukiwany","spluwany","spływany","spoczęty","spoczywany","spodziewany","spojony","spolaryzowany","spoliczkowany","sponiewierany","sponsorowany","spopielany","spopielony","spopularyzowany","sportretowany","sporządzany","sporządzony","spostrzegany","spotęgowany","spotkany","spotykany","spoufalany","spowalniany","spowiadany","spowodowany","spowolniony","spoźniony","spóźniony","spożytkowany","spożyty","spożywany","sprany","sprasowany","spraszany","sprawdzony","sprawiony","sprawowany","sprecyzowany","spreparowany","sprężany","sprężony","spróbowany","sprofanowany","sprofilowany","sprostowany","sproszkowany","sproszony","sprowadzany","sprowadzony","sprowokowany","spryskany","spryskiwany","sprywatyzowany","sprzątany","sprzątnięty","sprzeczany","sprzedany","sprzedawany","sprzeniewierzony","spudłowany","spustoszony","spuszczany","spuszczony","spychany","ssany","stabilizowany","stacjonowany","staczany","staranowany","starczany","stargowany","startowany","stawiany","stawiony","stemplowany","stenografowany","stepowany","sterowany","sterroryzowany","sterylizowany","stłamszony","stłumiony","stnięty","stoczony","stołowany","stonowany","stopiony","stopniowany","storpedowany","stosowany","strącany","stracony","strącony","strajkowany","straszony","stratowany","strawiony","streamowany","stresowany","streszczany","streszczony","strofowany","strojony","stroszony","strugany","struty","strymowany","strząsany","strzaskany","strząśnięty","strzelony","strzepany","strzępiony","strzepnięty","strzepywany","studiowany","studzony","stukany","stuknięty","stulony","stwardniony","stwarzany","stwierdzany","stwierdzony","stworzony","stykany","stylizowany","stymulowany","sugerowany","sumowany","sunięty","swatany","swawolony","świadczony","świecony","święcony","świerzbiony","świętowany","świntuszony","sycony","sygnalizowany","symulowany","synchronizowany","sypany","sypnięty","szachrowany","szacowany","szafowany","szamotany","szanowany","szargany","szarpany","szarpnięty","szarżowany","szasowany","szastany","szatkowany","szczędzony","szczepiony","szczerzony","szczuty","szczycony","szczypany","szczytowany","szefowany","szemrany","szepnięty","szeptany","szerzony","szkalowany","szkicowany","szklony","szkodzony","szkolony","szlachtowany","szlifowany","szmuglowany","szokowany","szorowany","szpachlowany","szpanowany","szperany","szprycowany","sztachnięty","szturchany","szturchnięty","szturmowany","szufladkowany","szuflowany","szukany","szulerowany","szwankowany","szydełkowany","szydzony","szyfrowany","szykanowany","szykowany","szyty","taktowany","tamowany","tankowany","tapetowany","taplany","taranowany","targany","targnięty","targowany","tarmoszony","tarty","tarzany","tasowany","taszczony","tatuowany","tchnięty","telefonowany","telegrfowany","teleportowany","temperowany","teoretyzowany","tępiony","terroryzowany","testowany","tkany","tknięty","tłamszony","tłoczony","tłumaczony","tłumiony","toczony","tolerowany","tonowany","topiony","torowany","torturowany","towarzyszony","trąbiony","trącany","tracony","trącony","trafiany","trafiony","tragizowany","traktowany","transferowany","transformowany","transmitowany","transportowany","tratowany","trawiony","trenowany","tresowany","triumfowany","tropiony","troszczony","truty","trwoniony","trymowany","tryskany","tryśnięty","tryumfowany","trywializowany","trzaskany","trzasnięty","trzepany","trzepnięty","trzepotany","trzęsiony","trzymany","tuczony","tułany","tulony","turlany","tuszowany","twistowany","tworzony","tykany","tyranizowany","tyrany","tytułowany","uaktualniany","uaktualniony","uaktywniany","uaktywniony","uargumentowany","uatrakcyjniony","ubabrany","ubarwiany","ubarwiony","ubawiony","ubezpieczany","ubezpieczony","ubezwłasnowolniony","ubiczowany","ubiegany","ubierany","ubijany","ubity","ubłagany","ubliżany","ubliżony","ubolewany","ubóstwiany","ubrany","ubroczony","ubrudzony","ucałowany","ucharakteryzowany","uchowany","uchroniony","uchwalany","uchwalony","uchwycony","uchylany","uchylony","uciągnięty","ucieleśniany","ucierany","ucierpiany","ucięty","ucinany","uciskany","uciśnięty","uciszany","uciszony","uciułany","ucywilizowany","uczczony","uczepiony","uczesany","uczęszczany","uczony","ucztowany","uczuty","uczyniony","udany","udaremniony","udawany","udekorowany","udeptywany","uderzany","uderzony","udobruchany","udokumentowany","udomawiany","udomowiony","udoskonalany","udoskonalony","udostępniany","udostępniony","udowadniany","udowodniony","Udramatyzowany","udręczony","udrożniony","udupiony","uduszony","udzielany","udzielony","udźwignięty","ueiwarygodniony","ufany","ufarbowany","uformowany","ufortyfikowany","ufundowany","ugadany","uganiany","ugaszany","ugaszony","ugięty","uginany","ugłaskany","ugniatany","ugodzony","ugoszczony","ugotowany","ugrany","ugruntowany","ugryziony","ugrzęznięty","uhistoryzowany","uhonorowany","uiścity","ujadany","ujarzmiany","ujarzmiony","ujawniany","ujawniony","ujęty","ujeżdżany","ujeżdżony","ujmowany","ujrzany","ukamieniowany","ukarany","ukartowany","ukąszony","ukatrupiony","ukazany","ukazywany","ukierowany","ukierunkowany","układany","uklepany","ukłoniony","ukłuty","uknuty","ukojony","ukołysany","ukończony","ukonkretniony","ukoronowany","ukradziony","ukręcany","ukręcony","ukrojony","ukryty","ukrywany","ukrzyżowany","ukształtowany","ukuty","ułagodzony","ułaskawiany","ułaskawiony","ulatniany","ułatwiany","ułatwiony","uleczany","uleczony","ulegany","ulepiony","ulepszany","ulepszony","ulokowany","ulotniony","ułożony","umacniany","umalowany","umartwiany","umawiany","umazany","umeblowany","umiejscowiony","umieszczany","umieszczony","umilany","umilony","umknięty","umniejszany","umniejszony","umocniony","umocowany","umoczony","umodelowany","umorzony","umotywowany","umówiony","umożliwiany","umożliwiony","umroczniony","umyty","unaoczniony","unicestwiany","unicestwiony","uniemożliwainy","uniemożliwiony","unierochomiony","uniesiony","unieszczęśliwiany","unieszczęśliwiony","unieszkodliwiany","unieszkodliwiony","unieważniany","unieważniony","uniewinniony","uniezależniony","unikany","uniknięty","unormowany","unoszony","unowoczesniany","unowocześniany","uodporniony","uogólniany","upakowany","upalany","upalony","upamiętniany","upamiętniony","upaństwowiony","upaprany","uparty","upaskudzony","upchany","upchnięty","upewniany","upewniony","upgradowany","upichcony","upiększany","upiększony","upierany","upierdolony","upięty","upijany","upilnowany","upinany","upity","uplastyczniony","upłynięty","upodabniany","upodobniony","upojony","upokorzany","upokorzony","upolowany","upominany","uporządkowany","upowszechniony","upozorowany","upozowany","uprany","uprasowany","upraszczany","uprawdopodobniony","uprawiany","uproszczony","uproszony","uprowadzany","uprowadzony","uprzątany","uprzątnięty","uprzedony","uprzedzany","uprzyjemniany","uprzyjemniony","uprzykrzany","uprzytomniony","upubliczniany","upubliczniony","upudrowany","upuszczany","upuszczony","upychany","urabiany","uraczany","uradowany","Urągany","uratowany","urażany","urażony","uregulowany","urobiony","uroniony","urośnięty","urozmaicany","urozmaicony","uruchamiany","uruchomiony","urwany","urywany","urządzany","urządzony","urzeczywistniany","urzeczywistniony","urżnięty","usadowiony","usadzony","usamowolniony","usankcjonowany","usatyfakcjonowany","uschnięty","uściskany","uścislony","uściśnięty","usidlony","usiedzony","uskładany","uskoczony","uskuteczniany","uskuteczniony","usłuchany","usługiwany","usłużony","usłyszany","usmażony","uśmiany","uśmiercany","uśmiercony","uśmierzony","uspany","uśpiony","uspokajany","uspokojony","uspołeczniany","usprawiedliwiany","usprawiedliwiony","usprawniony","usprzątany","ustabilizowany","ustalany","ustalony","ustanawiany","ustanowiony","ustąpiony","ustatkowany","ustawiany","ustawiony","ustępowany","ustosunkowany","ustrojony","ustrzegany","ustrzelony","usunięty","ususzony","usuwany","uświadamiany","uświadczony","uświadomiony","uświęcony","uświniony","usychany","usypany","usypiany","usystematyzowany","usytuowany","uszanowany","uszczelniany","uszczęśliwiany","uszczęśliwiony","uszczuplony","uszczypnięty","uszkadzany","uszkodzony","uszlachetniany","uszlachetniony","usztywniony","uszykowany","uszyty","utajniony","utargowany","utarty","utemperowany","utkany","utknięty","utkwiony","utoczony","utopiony","utorowany","utożsamiany","utożsamiony","utracony","utrącony","utrudniany","utrudniony","utrwalany","utrwalony","utrzymywany","utuczony","utulony","utwierdzany","utwierdzony","utworzony","utylizowany","uwalniany","uwalony","uwarunkowany","uważany","uwiązany","uwiązywany","uwidoczniony","uwieczniany","uwieczniony","uwielbiany","uwielbiony","uwieńczony","uwierany","uwierzony","uwieszony","uwieziony","uwięziony","uwijany","uwikłany","uwinięty","uwity","uwłaczany","uwłaszczony","uwodzony","uwolniony","uwsteczniany","uwsteczniony","uwydatniany","uwypiklony","uwzględniany","uwzględniony","użądlony","uzależniany","uzależniony","uzasadniany","uzasadniony","uzbierany","uzbrajany","uzbrojony","uzdrawiany","uzdrowiony","użerany","uzewnętrzniany","uzewnętrzniony","uzgadniany","uzgodniony","uziemiony","uzmysłowiony","uznany","uznawany","uzupełniany","uzupełniony","uzurpowany","użyczany","użyczony","uzyskany","uzyskiwany","użyty","używany","wabiony","wąchany","wachlowany","wahany","walczony","wałkowany","walnięty","walony","ważony","wbijany","wbity","wcelowany","wchłonięty","wciągany","wciągnięty","wcielany","wcielony","wcierany","wcięty","wcinany","wciskany","wciśnięty","wczepiony","wczołgany","wczuty","wczytany","wczytywany","wdany","wdarty","wdawany","wdepnięty","wdeptany","wdetonowany","wdmuchiwany","wdrapany","wdrapywany","wdrażany","wdrążony","wdrożony","wduszony","wdychany","wdzierany","wędkowany","wentylowany","wepchany","wepchnięty","werbowany","weryfikowany","wessany","wetkany","wetknięty","wezwany","wgłębiany","wgniatany","wgnieciony","wgrany","wgryzany","wgryziony","wiązany","wibrowany","widywany","widziany","wiedzony","wielbiony","wiercony","wierzgany","wierzony","wieszany","wietrzony","więżony","wikłany","windowany","winszowany","wiosłowany","wirowany","witany","wity","wizualizowany","wjeżdżany","wkalkulowany","wkładany","wklejany","wklejony","wklepany","wkłuty","wkomponowany","wkopany","wkopywany","wkraczany","wkradany","wkradziony","wkręcany","wkręcony","wkupiony","wkurwiany","wkuty","wkuwany","włączany","włączony","władany","władowany","włamany","włamywany","wlany","wlepiany","wlepiony","wlewany","wliczany","wliczony","włożony","wmanewrowany","wmanipulowany","wmawiany","wmieszany","wmówiony","wmurowany","wmuszony","wnerwiany","wnerwiony","wniesiony","wnikany","wniknięty","wnioskowany","wnoszony","wodowany","wojowany","wołany","woskowany","wożony","wpajany","wpakowany","wparowany","wpasowany","wpatrywany","wpędzany","wpędzony","wperswadowany","wpieniony","wpięty","wpisany","wpisywany","wpłacany","wpłacony","wplatany","wplątany","wplątywany","wpojony","wpompowany","wpraszany","wprawiany","wproszony","wprowadzany","wprowadzony","wpuszczony","wpychany","wrabiany","wręczany","wrobiony","wróżony","wryty","wrzucany","wrzucony","wrzynany","wsadzany","wsadzony","wskazany","wskazywany","wskórany","wskrzeszany","wskrzeszony","wślizgiwany","wślizgnięty","wsłuchany","wsparty","wspierany","wspięty","współczuty","współodczuwany","współtworzony","współżyty","wspomagany","wspominany","wspomniany","wstąpiony","wstawiany","wstawiony","wstrząsany","wstrząśnięty","wstrzelony","wstrzykiwany","wstrzyknięty","wstrzymany","wstrzymywany","wstukany","wsunięty","wsuwany","wsypany","wszamany","wszczepiany","wszczepiony","wszczęty","wszczynany","wszyty","wtajemniczany","wtajemniczony","wtapiany","wtargnięty","wtarty","wtaszczony","wtłoczony","wtopiony","wtrącony","wtryniany","wtulany","wtulony","wtykany","wwalony","wwiercany","wwiercony","wwieziony","wwożony","wyartykułowany","wyautowany","wybaczany","wybaczony","wybadany","wybatożony","wybawiony","wybebeszony","wybełkotany","wybiczowany","wybielany","wybielony","wybierany","wybijany","wybity","wybłagany","wyblaknięty","wybrandzlowany","wybrany","wybroniony","wybrzydzany","wybuchany","wybuchnięty","wybudowany","wybudzany","wybudzony","wyburzany","wyburzony","wycackany","wycałowany","wyceniany","wyceniony","wychlany","wychłostany","wychodowany","wychowany","wychowywany","wychrobotany","wychwalany","wychwycony","wychylany","wychylony","wyciągany","wyciągnięty","wyciekany","wycieniowany","wycierany","wycięty","wycinany","wyciskany","wyciśnięty","wyciszany","wyciszony","wycofany","wyćwiczony","wycyckany","wycyganiony","wyczarowany","wyczarterowany","wyczekany","wyczekiwany","wyczerpany","wyczesany","wyczołgany","wyczołgiwany","wyczuty","wyczuwany","wyczyniany","wyczyszczony","wyczytany","wyczytywany","wydalany","wydalony","wydany","wydębiony","wydedukowany","wydelegowany","wydepilowany","wydeptywany","wydłubany","wydłubywany","wydłużany","wydłużony","wydmuchany","wydmuchiwany","wydobyty","wydobywany","wydojony","wydoroślany","wydostany","wydrany","wydrapany","wydrapywany","wydrążony","wydrukowany","wydukany","wyduszony","wydychany","wydziedziczony","wydzielany","wydzielony","wydzierany","wydzierżawiony","wydziobany","wydziwiany","wydzwaniany","wyedukowany","wyedytowany","wyeeliminowany","wyegzekwowany","wyeksmitowany","wyekspediowany","wyeksploatowany","wyeksponowany","wyeksportowany","wyeliminowany","wyemigrowany","wyemitowany","wyewoluowany","wyfrunięty","wygadany","wygadywany","wyganiany","wygarbowany","wygarniany","wygarnięty","wygasany","wygaśnięty","wygaszany","wygaszony","wygenerowany","wygięty","wyginany","wygładzany","wygładzony","wygłaszany","wygłodzony","wygłosowany","wygłoszony","wygłówkowany","wygnany","wygolony","wygoniony","wygooglowany","wygospodarowany","wygotowany","wygrany","wygrawerowany","wygrażany","wygrywany","wygryziony","wygrzany","wygrzebany","wygrzebywany","wygrzewany","wygubiony","wyhaczony","wyhaftowany","wyhamowany","wyhodowany","wyizolowany","wyjadany","wyjaśniany","wyjaśniony","wyjawiany","wyjawiony","wyjedzony","wyjęty","wyjmowany","wykadrowany","wykalibrowany","wykalkulowany","wykańczany","wykantowany","wykąpany","wykaraskany","wykarczowany","wykarmiany","wykasowany","wykastrowany","wykazany","wykazywany","wykierowany","wykitowany","wykiwany","wykładany","wyklarowany","wyklepany","wyklinany","wykłócany","wykluczany","wykluczony","wykluty","wykłuty","wykminiony","wykolejony","wykołowany","wykombinowany","wykonany","wykończony","wykonywany","wykopany","wykopnięty","wykopywany","wykorkowany","wykorzeniany","wykorzeniony","wykorzystany","wykorzystywany","wykoszony","wykpity","wykradany","wykradnięty","wykręcany","wykręcony","wykreowany","wykreślany","wykreślony","wykrochmalony","wykrojony","wykrwawiany","wykrwawiony","wykryty","wykrywany","wykrzesany","wykrztuszony","wykrzyczony","wykrzykiwany","wykrzyknięty","wykrzywiany","wykształcony","wyksztuszony","wykupiony","wykupywany","wykuty","wykuwany","wyłączany","wyłączony","wylądowany","wyładowany","wyładowywany","wyłajany","wyłamany","wyłamywany","wyłaniany","wylansowany","wylany","wyłapany","wyłapywany","wyławiany","wyleasingowany","wyleczony","wylęgany","wylegimytowany","wylewany","wyłgany","wylicytowany","wyliczany","wyliczony","wylizany","wylizywany","wylogowany","wyłoniony","wylosowany","wyłowiony","wyłożony","wyłudzany","wyłudzony","wyłupany","wyłuskany","wyłuskiwany","wyłuszczony","wyluzowany","wymacany","wymachiwany","wymagany","wymahiwany","wymalowany","wymamrotany","wymanewrowany","wymarzony","wymasowany","wymawiany","wymazany","wymazywany","wymeldowany","wymeldowywany","wymiatany","wymieciony","wymieniany","wymieniony","wymierzany","wymieszany","wymigany","wymigiwany","wymijany","wyminięty","wymknięty","wymoczony","wymodelowany","wymontowany","wymordowany","wymsknięty","wymuszany","wymyślany","wymyślony","wymyty","wynagradzany","wynagrodzony","wynajdowany","wynajdywany","wynajęty","wynajmowany","wynaleziony","wynarodowiony","wynegocjowany","wyniesiony","wyniknięty","wyniszczany","wyniszczony","wyniuchany","wynoszony","wynurzany","wyobrażany","wyobrażony","wyodrębniony","wyolbrzymiany","wyolbrzymiony","wyorbowany","wyosiowany","wyostrzany","wyostrzony","wypaczany","wypakowany","wypakowywany","wypalany","wypalony","wypałowany","wyparowany","wyparty","wypasany","wypastowany","wypatroszony","wypatrywany","wypatrzony","wypchany","wypchnięty","wypędzany","wypędzlowany","wypełniany","wypełniony","wypersfadowany","wyperswadowany","wypierany","wypięty","wypijany","wypinany","wypisany","wypisywany","wypity","wypłacany","wypłacony","wypłakany","wypłakiwany","wypłaszczony","wyplatany","wyplątany","wypleniony","wyplewiony","wypłoszony","wypłukany","wypłukiwany","wypluty","wypluwany","wypocony","wypoczęty","wypolerowany","wypominany","wypomniany","wypompowany","wypompowywany","wyposażony","wypowiadany","wypowiedziany","wypoziomowany","wypożyczany","wypracowany","wypracowywany","wyprany","wyprasowany","wypraszany","wyprawiany","wyprawiony","wypróbowany","wyprodukowany","wyprojektowany","wypromieniowany","wypromowany","wyprostowany","wyprostowywany","wyproszony","wyprowadzany","wyprowadzony","wypróżniany","wypróżniony","wypruty","wypruwany","wyprzedany","wyprzedawany","wyprzedzany","wyprzedzony","wyprzęgany","wypstrykany","wypucowany","wypuszczany","wypuszczony","wypychany","wypytany","wypytywany","wyrąbany","wyrabiany","wyrąbywany","wyratowany","wyrażany","wyrażony","wyrecytowany","wyręczany","wyręczony","wyregulowany","wyrejestrowany","wyremontowany","wyreżyserowany","wyrobiony","wyrolowany","wyrośnięty","wyrównany","wyrównywany","wyróżniany","wyróżniony","wyrugowany","wyruszany","wyrwany","wyrypany","wyrysowany","wyryty","wyrywany","wyrządzony","wyrzeźbiony","wyrżnięty","wyrzucany","wyrzucony","wyrzygany","wyrzynany","wyrzywany","wysączony","wysadzany","wysadzony","wyschnięty","wyściskany","wyselekcjonowany","wysępiony","wysiadywany","wysiedzony","wysilany","wysilony","wyskakiwany","wyskalowany","wyskoczony","wyskrobany","wyskubywany","wysłany","wyśledzony","wyślizgiwany","wyślizgnięty","wysłowiony","wysłuchany","wysłuchiwany","wysmagany","wysmarkany","wysmarowany","wysmażany","wysmażony","wyśmiany","wyśmiewany","wysmołowany","wysmyrany","wyśniony","wysnuty","wysnuwany","wysondowany","wyspecjalizowany","wyśpiewany","wyśpiewywany","wyspowiadany","wysprzątany","wysprzedany","wyssany","wystartowany","wystawiony","wysterelizowany","wysterylizowany","wystosowany","wystosowywany","wystraszony","wystrojony","wystrugany","wystrychnięty","wystrzegany","wystrzelany","wystrzeliwany","wystrzelony","wystudzony","wystukany","wystukiwany","wystygnięty","wysunięty","wysuszany","wysuwany","wyswatany","wyświadczany","wyświadczony","wyświetlany","wyświetlony","wyswobodzony","wysyłany","wysypany","wysypywany","wysysany","wyszabrowany","wyszalany","wyszarpany","wyszarpnięty","wyszasowany","wyszczotkowany","wyszczuplony","wyszeptany","wyszkolony","wyszlifowany","wyszorowany","wyszperany","wyszukany","wyszukiwany","wyszumiony","wyszykowany","wyszyty","wytapetowany","wytargany","wytargowany","wytarty","wytarzany","wytaszczony","wytatuowany","wytchnięty","wytępiony","wytknięty","wytłoczony","wytłumaczony","wytłumiony","wytoczony","wytrąbiony","wytrącany","wytrącony","wytransmitowany","wytransportowany","wytrenowany","wytresowany","wytriangulowany","wytropiony","wytruty","wytrząsany","wytrzasnięty","wytrząśnięty","wytrzebiony","wytrzepany","wytrzeszczany","wytrzeźwiany","wytrzymany","wytrzymywany","wytwarzany","wytworzony","wytyczony","wytykany","wytypowany","wyuczony","wywabiany","wywabiony","wywąchany","wywalany","wywalczony","wywalony","wywarty","wywarzany","wyważany","wyważony","wywęszany","wywężykowany","wywiany","wywiązany","wywiązywany","wywierany","wywiercony","wywieszany","wywieszony","wywietrzony","wywieziony","wywijany","wywindowany","wywinięty","wywłaszczony","wywlekany","wywnętrzniony","wywnioskowany","wywodzony","wywolany","wywoływany","wywoskowany","wywożony","wywracany","wywrócony","wywróżony","wywyższany","wyżalony","wyzbyty","wyzdrowiony","wyżebrany","wyżerany","wyzerowany","wyzionięty","wyznaczany","wyznaczony","wyznany","wyznawany","wyzwalany","wyzwany","wyzwolony","wyzygzakowany","wyżynany","wyzyskany","wyzyskiwany","wyżyty","wyzywany","wyżywany","wyżywiony","wzbijany","wzbity","wzbogacany","wzbogacony","wzbraniany","wzbudzany","wzbudzony","wzburzany","wzburzony","wżeniony","wzięty","wzmacniony","wzmagany","wzmocniony","wznawiany","wzniecany","wznieciony","wzniesięty","wznoszony","wznowiony","wzorowany","wzrośnięty","wzruszony","wzwyżany","wzywany","zaabordowany","zaadaptowany","zaadoptowany","zaadresowany","zaakcentowany","zaakceptowany","zaaklimatyzowany","zaalarmowany","zaanektowany","zaangażowany","zaanonsowany","zaapelowany","zaaplikowany","zaaportowany","zaaprobowany","zaaranżowany","zaaresztowany","zaatakowany","zabaczony","zabalowany","zabandażowany","zabarwiony","zabarykadowany","zabawiany","zabawiony","zabepieczany","zabetonowany","zabezpieczony","zabierany","zabity","zabłądzony","zablefowany","zabłocony","zablokowany","zabraniany","zabrany","zabrnięty","zabroniony","zabrudzony","zabudowany","zabukowany","zabulony","zaburzony","zabutelkowany","zacementowany","zacerowany","zachciany","zachęcany","zachęcony","zachlapany","zachodzony","zachomikowany","zachorowany","zachowany","zachowywany","zachwalany","zachwalony","zachwiany","zachwycony","zaciągany","zaciągnięty","zaciążony","zaciekawiony","zaciemniany","zaciemniony","zacierany","zacieśniony","zacięty","zacinany","zaciskany","zaciśnięty","zaćmiony","zacumowany","zacytowany","zaczadzony","zaczarowany","Zaczepiany","zaczepiony","zaczerpany","zaczesany","zaczęty","zaczołgany","zaczynany","zadarty","zadawalany","zadawany","zadbany","zadebiutowany","zadedykowany","zadeklamowany","zadeklarowany","zademonstrowany","zadenucjowany","zadepeszowany","zadeptany","zadeptywany","zadęty","zadławiony","żądlony","zadłużany","zadłużony","zadokowany","zadomowiony","zadowalany","zadrapany","zadraśnięty","zadręczany","zadręczony","zadrutowany","zadurzany","zadurzony","zaduszony","zadymiony","zadźgany","zadziobany","zadziwiany","zadziwiony","zafakturowany","zafałszowany","zafarbowany","zafiksowany","zafundowany","zagadany","zagadnięty","zagadywany","zagajony","zaganiany","zagapiony","zagarażowany","zagarniany","zagarnięty","zagaszony","zagazowany","zagęszczony","zagięty","zaginany","zaginięty","zagłębiany","zagłębiony","zagłodzony","zagłuszany","zagłuszony","zagmatwany","zagnany","zagnieżdżony","zagojony","zagoniony","zagospodarowany","zagotowany","zagrabiony","zagradzany","zagrażany","zagrodzony","zagrywany","zagryzany","zagryziony","zagrzany","zagrzebany","zagrzewany","zagubiony","zagwarantowany","zahaczony","zahamowany","zahandlowany","zaharowany","zahartowany","zahipnotyzowany","zaholowany","zaimitowany","zaimplantowany","zaimplementowany","zaimprowizowany","zainaugurowany","zainfekowany","zainicjowany","zainkasowany","zainscenizowany","zainspirowany","zainstalowany","zainteresowany","zaintrygowany","zaintubowany","zainwestowany","zaizolowany","zajadany","zajany","zajarany","zajechany","zajęty","zajmowany","zakablowany","zakamuflowany","zakasany","zakasowany","zakąszany","zakatalogowany","zakatowany","zakatrupiony","zakazany","zakażany","zakazywany","zakiszony","zakładany","zaklasyfikowany","zaklejany","zaklejony","zaklepany","zaklepywany","zaklinany","zaklinowany","zakłócany","zakłócony","zaklopotany","zakłuty","zakneblowany","zakodowany","zakolczykowany","zakolorowany","zakołysany","zakomunikowany","zakończony","zakonserwowany","zakopany","zakopywany","zakorzeniany","zakorzeniony","zakoszony","zakosztowany","zakotwiczany","zakotwiczony","zakpiony","zakradany","zakręcany","zakręcony","zakreślany","zakreślony","zakrwawiony","zakryty","zakrywany","zakrzyczany","zakrzyknięty","zakrzywiany","zakrzywiony","zaksięgowany","zaktualizowany","zaktywizowany","zaktywowany","zakumany","zakupiony","zakurzony","zakuty","zakuwany","zakwaterowany","zakwestionować","zakwitnięty","załączony","załadowany","załagodzony","zalamany","zalaminowany","załamywany","zalany","załapany","załatany","załatwiany","załatwiony","zalatywany","zalecany","zalecony","zaleczony","zalegalizowany","zalegany","zalepiany","zalepiony","zalewany","zaliczany","zaliczony","załkany","zalogowany","żałowany","założony","zaludniony","zamacany","zamachnięty","zamącony","zamalowany","zamanewrowany","zamanifestowany","zamarkowany","zamartwiany","zamarynowany","zamarzany","zamarznięty","zamaskowany","zamawiany","zamazany","zamazywany","zamęczany","zamęczony","zameldowany","zamelinowany","zamerykanizowany","zamiatany","zamieniany","zamieniony","zamieszany","zamieszczany","zamieszczony","zamieszkany","zamieszkiwany","zaminowany","zamknięty","zamocowany","zamoczony","zamontowany","zamordowany","zamortyzowany","zamotany","zamówiony","zamrażany","zamroczony","zamrożony","zamulany","zamurowany","zamydlony","zamykany","zanalizowany","zanegowany","zaniechany","zanieczyszczany","zanieczyszczony","zaniedbany","zaniedbywany","zaniepokojony","zaniesiony","zanihilowany","zanikany","zaniknięty","zaniżany","zaniżony","zanoszony","zanotowany","zanucony","zanudzany","zanudzony","zanurzany","zanurzony","zanużony","zaobaczony","zaobserwowany","zaoferowany","zaofiarowany","zaogniany","zaogniony","zaokrąglany","zaokrąglony","zaokrętowany","zaopatrywany","zaopatrzony","zaopiekowany","zaorany","zaostrzany","zaostrzony","zaoszczędzony","zapadany","zapakowany","zapalany","zapalony","zapamiętany","zapamiętywany","zapanowany","zaparkowany","zaparowywany","zaparzany","zaparzony","zapaskudzony","zapauzowany","zapchany","zapędzany","zapełniany","zapełniony","zaperfumowany","zapeszany","zapewniany","zapewniony","zapieczętowany","zapierany","zapięty","zapijany","zapinany","zapisany","zapisuwany","zapity","zapłacony","zapładniany","zaplamiony","zaplanowany","zaplątany","zapłodniony","zaplombowany","zapobiegany","zapodany","zapodawany","zapodziany","zapokojony","zapolowany","zapominany","zapomniany","zapowiadany","zapowiedziany","zapoznany","zapoznawany","zapożyczony","zapracowywany","zaprany","zaprasowywany","zapraszany","zaprawiony","zaprenumerowany","zaprezentowany","Zaprogramowany","zaprojektowany","zaproponowany","zaproszony","zaprotokołowany","zaprowadzany","zaprowadzony","zaprzątany","zaprzeczany","zaprzeczony","zaprzedany","zaprzedawany","zaprzęgany","zaprzepaszczany","zaprzestany","zaprzestawany","zaprzyjaźniony","zapudłowany","zapunktowany","zapuszczany","zapuszczony","zapuszkowany","zapychany","zapylany","zapylony","zapytany","zarabiany","zaranżowany","zarażany","zarażony","zarecytowany","zaręczany","zaręczony","zarejestrowany","zareklamowany","zarekomendowany","zarekomondowany","zarekwirowany","zarezerwowany","zarobiony","żartowany","zarwany","zaryglowany","zarymowany","zarysowany","zarywany","zaryzykowany","zarządzany","zarżnięty","zarzucany","zarzynany","zasadzony","zaścielony","zasegurowany","zaserwowany","zasiadany","zasiany","zasiedlony","zasięgany","zasięgnięty","zasiewany","zasilany","zasilony","zaskakiwany","zaskarbiony","zaskoczony","zaskrobany","zasłaniany","zaślepiany","zaślepiony","zasłodzony","zasłoniony","zasłużony","zasmakowany","zaśmiecany","zaśmiecony","zasmradzany","zasmrodzony","zasmucany","zasmucony","zasolony","zaspakajany","zaśpiewany","zaspokajany","zaspokojony","zasponsorowany","zaśrubowywany","zassany","zastany","zastąpiony","zastawiany","zastawiony","zastępowany","zastopowany","zastosowany","zastraszany","zastraszony","zastrzelony","zasugerowany","zasunięty","zasuwany","zaświadczony","zaświecony","zaświoniony","zasyfiony","zasygnalizowany","zasymilowany","zasymulowany","zasypany","zasypywany","zasysany","zaszachowany","zaszantażowany","zaszargany","zaszczepiany","zaszczepiony","zaszczuty","zaszczycany","zaszczycony","zaszeptany","zaszeregowany","zaszlachtowany","zasznurowany","zaszpachlowany","zasztyletowany","zaszufladkowany","zaszyfrowany","zaszyty","zaszywany","zataczany","zatajany","zatajony","zatamowany","zatankowany","zatapiany","zatargany","zatarty","zatelegrafowany","zatemperowany","zatęskniony","zatkany","zatknięty","zatoczony","zatonięty","zatopiony","zatracany","zatracony","zatriumfowany","zatrudniany","zatrudniony","zatruty","zatruwany","zatrzaskiwany","zatrzaśnięty","zatrząśnięty","zatrzymany","zatrzymywany","zatuszowany","zatwierdzany","zatwierdzony","zatykany","zatynkowany","zatytułowany","zauploadowany","zauroczony","zautomatyzowany","zauważany","zauważony","zawadzany","zawalany","zawalczony","zawalony","zawarty","zaważony","zawdzięczany","zawetowany","zawężony","zawiadamiany","zawiadomiony","zawiązany","zawiązywany","zawiedzony","zawierany","zawierzony","zawieszany","zawieszony","zawieziony","zawijany","zawinięty","zawiniony","zawiśnięty","zawitany","zawładnięty","zawłaszczony","zawodzony","zawojowany","zawołany","zawoskowany","zawożony","zawracany","zawrócony","zawstydzany","zażądany","zażartowany","zazdroszczony","zażegnany","zażenowany","zaznaczany","zaznajomiony","zaznany","zaznawany","zażyczony","zażyty","zażywany","zbaczany","zbadany","zbagatelizowany","zbajerowany","zbałamucony","zbalansowany","zbalsamowany","zbankrutowany","zbawiany","zbawiony","zbesztany","zbezczeszczony","zbierany","zbijany","zbity","zbliżony","zbluzgany","zbojkotowany","zbrojony","zbrukany","zbszczecony","zbudowany","zbudzony","zbuntowany","zburzony","zbyty","zbywany","zchwytany","zcięty","zciszony","zdany","zdarty","zdeaktywowany","zdecydowany","zdefiniowany","zdeflorowany","zdegradowany","zdejmowany","zdeklarowany","zdekodowany","zdekompresowany","zdekoncentrowany","zdekonstruowany","zdelegalizowany","zdemaskowany","zdementowany","zdemolowany","zdemontowany","zdemoralizowany","zdenerwowany","zdeponowany","zdeprymowany","zdeptany","zderzany","zderzony","zdestabilizowany","Zdetonowany","zdetronizowany","zdewastowany","zdewaulowany","zdezerterowany","zdezintegrowany","zdezorientowany","zdezynfektowany","zdiagnozowany","zdjęty","zdławiony","zdmuchiwany","zdmuchnięty","zdobyty","zdobywany","zdołowany","zdominowany","zdopingowany","zdrabniany","zdradzany","zdradzony","zdrapany","zdrapywany","zdrutowany","zdruzgotany","zduplikowany","zduszony","zdwojony","zdyscyplinowany","zdyskredytowany","zdyskwalifikowany","zdystansowany","zdzielony","zdzierany","zdzierżony","zdziesiątkowany","Zdzwoniony","zebrany","zechciany","zedytowany","żegnany","żeniony","zepchnięty","zepsuty","żerowany","zerwany","zerżnięty","zeskakiwany","zeskanowany","zeskrobywany","zesłany","ześlizgiwany","ześlizgnięty","zesmolony","zespawiany","zespolony","zessany","zestawiany","zestawiony","zestresowany","zestrzeliwany","zestrzelony","zeswatany","zeszklony","zeszlifowany","zetknięty","zezłoszczony","zeznany","zeznawany","zezwalany","zezwolony","zfinansowany","zgadany","zgadywany","zgajany","zganiony","zgarnięty","zgaśnięty","zgaszony","zgięty","zginany","zgładzony","zgłaszany","zgłębiany","zgłębiony","zgłośniony","zgłoszony","zgłuszony","zgniatany","zgnieciony","zgnity","zgnojony","zgodzony","zgolony","zgoniony","zgotowany","zgrabiony","zgrillowany","zgromadzany","zgromadzony","zgrupowany","zgrzeszony","zgrzytany","zgubiony","zgwałcony","zhackowany","zhakowany","zhańbiony","zhandlowany","zharmonizowany","zidentyfikowany","ziewany","zignorowany","zilustrowany","zinfiltrowany","zintegrowany","zintensyfikowany","zinterpretowany","zinwentaryzowany","zirytowany","zjadany","zjawiany","zjednany","zjednoczony","zjedzony","zjeżdżony","zkontaktowany","zkserowany","złączony","złagodzony","złajany","złamany","zlany","złapany","zlecany","zlecony","zlekceważony","zlepiany","zlepiony","zlewany","zlicytowany","zliczany","zliczony","zlikwidowany","zlinczowany","zlitowany","zlizany","zlizywany","złoity","zlokalizowany","złomowany","żłopany","złowiony","złożony","złupiony","złuszczany","zluzowany","zmacany","zmącony","zmagany","zmagazynowany","zmajstrowany","zmaksylizowany","zmanipulowany","zmarnowany","zmartwychwstany","zmarznięty","zmasakrowany","zmaterializowany","zmawiany","zmazany","zmazywany","zmbobardowany","zmiatany","zmiażdżony","zmiękczony","zmielony","zmieniany","zmieniony","zmierzany","zmierzony","zmierzwiony","zmieszany","zmieszczony","zmiksowany","zminiaturyzowany","zminimalizowany","zmniejszany","zmniejszony","zmobilizowany","zmoczony","zmodernizowany","zmodyfikowany","zmoknięty","zmonopolizowany","zmontowany","zmostkowany","zmotywowany","zmówiony","zmrożony","zmrużony","zmumifikowany","zmuszany","zmuszony","zmutowany","zmyślany","zmyty","zmywany","znacjonalizowany","znajdowany","znajdywany","znakowany","znaleziony","znany","znęcany","zneutralizowany","zniechęcony","znieczulony","zniekształcany","zniekształcony","znienawidzony","znieprawiony","zniesiony","zniesławiany","zniesławiony","zniewalany","znieważany","znieważony","zniewolony","zniszczony","zniweczony","zniwelowany","zniżany","zniżony","znokautowany","znormalniony","znoszony","znudzony","zobaczony","zobowiązany","zobrazowany","zogniskowany","żonglowany","zoomowany","zoperowany","zoptymalizowany","zorbity","zorganizowany","zorientowany","zostawiany","zostawiony","zpłacony","zprowokowany","zrabowany","zrachowany","zracjonalizowany","zraniony","zraportowany","zrażany","zrażony","zrealizowany","zrecenzowany","zredagowany","zredukowany","zreferowany","zreformowany","zrefowany","zrefundowany","zregenerowany","zrehabilitowany","zreinkarnowany","zreintegrowany","zrekonfigurowany","zrekonstruowany","zrekrutowany","zrekrystalizowany","zrelacjonowany","zrelaksowany","zremiksowany","zremisowany","zreorganizowany","zreperowany","zreplikowany","zresetowany","zresocjalizowany","zrestartowany","zrestrukturyzowany","zrewanżowany","zrewidowany","zrewolucjonizowany","zrezygnowany","zrobiony","zrolowany","zroszony","zrównany","zrównoważony","zrównywany","zróżnicowany","zrozumiany","zrugany","zruinowany","zrujnowany","zrymowany","zrywany","zrzędzony","zrzeszony","zrzucany","zrzucony","zsumowany","zsunięty","zsuwany","zsynchronizowany","zsyntetyzowany","zsypywany","zszargany","zszokowany","zszyty","zszywany","ztarty","żuty","zutylizowany","zużyty","zużywany","zwabiany","zwabiony","zwalany","zwalczony","zwalniany","zwalony","zwany","zwaporyzowany","zwątpiony","zważany","zważony","zwędzony","zwerbalizowany","zwerbowany","zweryfikowany","zwęszony","zwężony","zwiastowany","związany","związywany","zwichnięty","zwiedzany","zwiedzony","zwiększony","zwieńczony","zwierzany","zwieszany","zwieszony","zwietrzony","zwijany","zwilżony","zwinięty","zwizualizowany","zwlekany","zwodowany","zwodzony","zwołany","zwolniony","zwoływany","zwożony","zwracany","zwrócony","zwyciężany","zwymiotowany","życzony","żygany","zygzakowany","zyskany","zyskiwany","żyty","zżarty","zżerany","zżynany","zżyty","abdykowana","absorbowana","adaptowana","administrowana","adoptowana","adorowana","adresowana","afiszowana","agitowana","akcentowana","akceptowana","aklimatyzowana","akompaniowana","aktualizowana","aktywowana","akumulowana","alaromowana","alienowana","amerykanizowana","amortyzowana","amputowana","analizowana","angażowana","anihilowana","animowana","anonsowana","antropomorfizowana","antydatowana","anulowana","apelowana","aportowana","aranżowana","archiwizowana","aresztowana","argumentowana","artykułowana","ascendowana","asekurowana","asymilowana","asystowana","atakowana","autoryzowana","awanturowana","babrana","baczona","badana","bagatelizowana","bajerowana","bałamucona","balangowana","balansowana","banalizowana","bandażowana","bankrutowana","baraszkowana","barwiona","bawiona","bazgrana","bazowana","bębniona","bełkotana","besztana","biadolona","biczowana","bita","błagana","błaznowana","blefowana","błogosławiona","blokowana","bluzgana","błyskana","błyszcząca","boczona","bogacona","bojkotowana","boksowana","bombardowana","bopowana","borowana","brandzlowana","brana","brasowana","bratana","bredzona","brnięta","brodzona","broniona","brudzona","brylowana","budowana","budzona","bujana","bulona","bulwersowana","bumelowana","burzona","butelkowana","bywana","cackana","całowana","capnięta","cechowana","celebrowana","celowana","ceniona","cenzurowana","chciana","chlana","chlapana","chlapnięta","chlastana","chłodzona","chlostana","chlubiona","chodowana","chomikowana","chorowana","chowana","chroniona","chrupana","chrzczona","chuta","chwalona","chwycona","chwytana","chybotana","chylona","ciachnięta","ciągana","ciągnięta","ciemiężona","cierpiana","cieszona","cięta","ciskana","ciśnięta","ciułana","cmokana","cmoknięta","cofana","cofnięta","ćpana","cucona","cudzołożona","cumowana","ćwiartowana","ćwiczona","cykana","cytowana","czajona","czarowana","czczona","czepiana","czepiona","czerpana","czesana","częstowana","czochrana","czołgana","czuta","czytana","czyta","darowana","darta","darzona","datowana","dawana","dbana","deaktywowana","debatowana","dedukowana","dedykowana","defibrylowana","defilowana","definiowana","defraudowana","degradowana","degustowana","deklamowana","deklarowana","dekodowana","dekompresowana","dekorowana","dekretowana","delegowana","delektowana","deliberowana","demaskowana","dementowana","demolowana","demonizowana","demonstrowana","demoralizowana","denerwowana","denuncjowana","depeszowana","depilowana","deportowana","deprawowana","deptana","deratyzowana","destabilizowana","destylowana","desygnowana","determinowana","detonowana","dewastowana","dewaulowana","dezaktywowana","dezorientowana","dezynfekowana","diagnozowana","dilowana","dłubana","dłużona","dmuchana","dmuchnięta","dobiegana","dobierana","dobijana","dobita","dobrana","dobudzona","dobyta","doceniana","doceniona","dochodzona","dochowana","dochowywana","dociągnięta","dociekana","docięta","docinana","dociskana","dociśnięta","doczekana","doczepiona","doczołgana","doczyszczona","doczytana","dodana","dodawana","dodrukowana","dodrukowywana","dofinansowana","dofinansowywana","dogadana","dogadywana","dogadzana","doganiana","doglądana","doglądnięta","dognana","dogodzona","dogoniona","dograna","dogryzana","dogryziona","dogrzana","dogrzebana","doinformowana","dojeżdżana","dojona","dojrzana","dojrzewana","dokańczana","dokarmiana","dokarmiona","dokazana","dokazywana","dokładana","doklejona","dokonana","dokończona","dokonywana","dokopana","dokopywana","dokowana","dokręcana","dokręcona","dokształcana","dokształcona","dokuczana","dokumentowana","dokupiona","dołączana","dołączona","doładowana","dolana","dolewana","doliczona","dołowana","dołożona","domagana","domalowana","domknięta","domniewywana","domówiona","domyślana","domyślona","domyta","doniesiona","donoszona","dopadana","dopadnięta","dopakowana","dopalona","dopasowana","dopasowywana","dopatrywana","dopatrzona","dopchana","dopchnięta","dopełniana","dopełniona","dopieszczona","dopięta","dopijana","dopilnowana","dopingowana","dopisana","dopisywana","dopita","dopłacana","dopłacona","dopłynięta","dopolerowana","dopompowana","dopowiedziana","dopracowana","dopracowywana","doprana","doprawiona","doprecyzowana","doproszona","doprowadzana","doprowadzona","dopucowana","dopuszczana","dopuszczona","dopytywana","dorabiana","doradzana","doradzona","doręczana","doręczona","dorobiona","dorównana","dorównywana","dorwana","dorysowana","dorzucana","dorzucona","doścignięta","dosiadana","dosięgnięta","doskoczona","doskonalona","dosładzana","dosłana","dosłyszana","dosolona","dośrodkowana","dossana","dostana","dostąpiona","dostarczana","dostarczona","dostawana","dostawiana","dostawiona","dostosowana","dostosowywana","dostrajana","dostrojona","dostrzegana","dosunięta","dosuwana","doświadczana","doświetlona","dosypana","dosypywana","doszkolona","doszlifowana","doszorowana","doszukana","doszukiwana","doszyta","dotankowana","dotankowywana","dotargana","dotaszczona","dotknięta","dotleniona","dotłumaczona","dotowana","dotrwana","dotrzymana","dotrzymywana","dotykana","douczana","douczona","dowalona","dowieziona","dowodzona","dowożona","doznana","doznawana","dozorowana","dozowana","dożyta","dożywiona","dramatyzowana","drapana","drapnięta","draśnięta","drażniona","drążona","dręczona","drenowana","drgana","drgnięta","drukowana","dryblowana","dryfowana","drzemana","dubbingowana","dublowana","duplikowana","duszona","dworowana","dygotana","dyktowana","dymana","dymiona","dyrygowana","dyscyplinowana","dyskredytowana","dyskryminowana","dyskutowana","dyskwalifikowana","dysponowana","dystansowana","dystrybuowana","dywagowana","dźgana","dźgnięta","dziabnięta","dziedziczona","dziękowana","dzielona","dziergana","dzierżona","dziobana","dziurawiona","dziurkowana","dźwigana","dźwignięta","edukowana","edytowana","egzaminowana","egzekutowana","egzekwowana","ekscytowana","ekshumowana","ekskomunikowana","eksmitowana","ekspandowana","eksperymentowana","eksploatowana","eksplorowana","eksponowana","eksportowana","eksterminowana","ekstradowana","ekstrapolowana","eliminowana","emancypowana","emanowaa","emigrowana","emitowana","energetyzowana","eskortowana","etykietowana","ewakuowana","ewaluowana","fabrykowana","falowana","fałszowana","farbowana","faszerowana","faulowana","faworyzowana","fechtowana","fermentowana","ferowana","figurowana","filetowana","filmowana","filtrowana","finalizowana","finansowana","firmowana","fleszowana","folgowana","formułowana","forsowana","fotografowana","fundowana","gadana","ganiana","garbiona","gardzona","garnirowana","gaszona","gawędzona","gaworzona","gazowana","gdakana","gderana","generalizowana","generowana","gięta","gilgotana","gładzona","głaskana","głodowana","głodzona","gloryfikowana","głosowana","głoszona","głowiona","gmatwana","gmerana","gnana","gnębiona","gnieciona","gnita","gnojona","godzona","gojona","golnięta","golona","goniona","googlowana","gospodarowana","goszczona","gotowana","grabiona","grana","grasowana","gratulowana","grillowana","grilowana","gromadzona","gromiona","grożona","gruchana","gruchnięta","grupowana","grywana","gryziona","grzana","grzechotana","gubiona","gustowana","gwałcona","gwarantowana","gwizdana","gwizdnięta","hackowana","haftowana","hajtnięta","hamowana","hańbiona","handlowana","harcowana","harmonizowana","harowana","hartowana","hibernowana","hipnotyzowana","hodowana","holowana","hołubiona","honorowana","hospitalizowana","huknięta","hulana","huśtana","idealizowana","identyfikowana","ignorowana","igrana","ilustrowana","imitowana","implantowana","implodowana","imponowana","importowana","improwizowana","indokrynowana","indukowana","infekowana","infiltrowana","informowana","ingerowana","inhalowana","inscenizowana","inspirowana","instalowana","instruowana","insynuowana","integrowana","interpretowana","interweniowana","intonowana","intubowana","inwestowana","inwigilowana","irytowana","iskrzona","izolowana","jadana","jawiona","jazgotana","jednoczona","jedzona","kablowana","kadzona","kalana","kaleczona","kalkulowana","kamerowana","kamienowana","kamuflowana","kanalizowana","kantowanta","kąpana","kapitulowana","kapowana","karana","karbonizowana","karcona","karczowana","karmiona","kartkowana","kąsana","kasowana","kastrowana","katalogowana","katapultowana","katowana","katrupiona","kierowana","kimana","kiszona","kiwana","kiwnięta","kłaniana","klapana","klapnięta","klarowana","klasyfikowana","klębiona","klejona","klepana","klepnięta","klikana","kliknięta","klonowana","kłopotana","kłuta","knocona","knuta","kochana","koczowana","kodowana","kojarzona","kojfnięta","kojona","kolekcjonowana","kolektywizowana","kolidowana","kolonizowana","kolorowana","koloryzowana","kołowana","kołysana","kombinowana","komenderowana","komentowana","komercjalizowana","kompensowana","komplementowana","komplikowana","komponowana","kompromitowana","komunikowana","konana","koncentrowana","kończona","konfabulowana","konfiskowana","konfrontowana","konserwowana","konspirowana","konstruowana","konsultowana","konsumowana","kontaktowana","kontestowana","kontrastowana","kontrolowana","kontrowana","kontynuowana","konwertowana","konwojowana","koordynowana","kopana","kopcona","kopiowana","kopnięta","kopulowana","korelowana","korkowana","koronowana","korygowana","korzona","korzystana","koszona","kotwiczona","kozaczona","kozłowana","kpita","kradziona","krajana","krążona","kręcona","kremowana","kreowana","krochmalona","krojona","kropiona","kruszona","krystalizowana","kryta","krytykowana","krzepnięta","krzyczana","krzyknięta","krzywdzona","krzywiona","krzyżowana","kserowana","księgowana","kształcona","kształtowana","kulona","kultywowana","kumulowana","kupczona","kupiona","kupowana","kupywana","kurczona","kurowana","kursowana","kurzona","kuszona","kuta","kwalifikowana","kwestionowana","łączona","ładowana","łagodzona","łajdaczona","lakierowana","łamana","lamentowana","lansowana","lana","łapana","łaskotana","łaszona","latana","łatana","lawirowana","leczona","legalizowana","legitymowana","lekceważona","lepiona","lewitowana","liberowana","licencjonowana","licytowana","liczona","likwidowana","linczowana","liniowana","literowana","litowana","lizana","liznięta","lobbowana","lokalizowana","losowana","łowiona","łożona","lubiana","łudzona","lunatykowana","łupana","łupiona","łuskana","lustrowana","łuszczona","luzowana","łykana","łyknięta","łyżeczkowana","macana","machana","machnięta","mącona","maczana","maganyzowana","maglowana","majaczona","majsterkowana","majtana","maksymalizowana","malowana","maltretowana","mamiona","mamrotana","manewrowana","manifestowana","manipulowana","markowana","marnotrawiona","marnowana","marszczona","marynowana","marznięta","masakrowana","maskowana","masowana","masturbowana","mataczona","materializowana","mawiana","mazana","maznięta","męczona","meldowana","merdana","metabolizowana","miażdżona","mielona","mierzona","mierzwiona","mieszana","miętolona","migana","migdalona","migotana","mijana","miksowana","milowana","minięta","minimalizowana","miotana","mistyfikowana","mitygowana","mizdrzona","mlana","mniemana","mnożona","mobilizowana","mocowana","moczona","modelowana","modernizowana","modlona","modulowana","modyfikowana","molestowana","monitorowana","monopolizowana","montowana","mordowana","motywowana","mówiona","mrożona","mrugana","mrużona","muskana","mutowana","mydlona","mylona","myszkowana","myta","nabazgrana","nabiegana","nabierana","nabita","nabrana","nabrojona","nabrudzona","nabyta","nabywana","nacelowana","nachapana","nachodzona","nachwalona","nachylona","naciągana","naciągnięta","nacierana","nacięta","nacinana","naciskana","naciśnięta","nacjonalizowana","naczepiona","nadana","nadawana","nadchodzona","nadciągana","nadciągnięta","nadcięta","nadesłana","nadgoniona","nadgryzana","nadgryziona","nadinterpretowana","nadłożona","nadmieniana","nadmieniona","nadmuchana","nadrabiana","nadrobiona","nadskakiwana","nadsłuchiwana","nadstawiana","nadstawiona","nadszarpnięta","naduszona","nadużyta","nadużywana","nadwerężana","nadwyrężana","nadwyrężona","nadziana","nadzorowana","naelektryzowana","nafaszerowana","nagabywana","nagadana","nagięta","naginana","nagłaszana","nagłośniona","nagoniona","nagradzana","nagrana","nagrodzona","nagromadzona","nagrywana","nagryzmolona","nagrzana","nagrzebana","nagrzewana","nagwizdana","naigrywana","najechana","najęta","najmowana","nakarmiana","nakarmiona","nakazana","nakazywana","nakierowana","nakierowywana","nakładana","nakłamana","nakłaniana","naklejana","naklejona","naklepana","nakłoniona","nakłuta","nakłuwana","nakopana","nakręcana","nakręcona","nakreślana","nakreślona","nakruszona","nakryta","nakrywana","nakrzyczana","nakupiona","naładowana","nalana","nałapana","nalepiona","nalewana","naliczona","nałowiona","nałożona","namaczana","namagnetyzowana","namalowana","namaszczana","namaszczona","namawiana","namęczona","namierzana","namieszana","namoczona","namówiona","namydlana","namyślona","naniesiona","naoliwiana","naoliwiona","naopowiadana","naostrzona","napadana","napadnięta","napakowana","napalona","naparzana","napastowana","napawana","napchana","napędzana","napełniana","napełniona","napierana","napiętnowana","napięta","napinana","napisana","napluta","napływana","napoczęta","napojona","napompowana","napotkana","napotykana","napraszana","naprawiana","naprawiona","naprężana","naprężona","napromieniowana","naprostowana","naprowadzana","naprowadzona","napsuta","napuszczana","napuszczona","napychana","napytana","narąbana","naradzana","naradzona","narastana","narażana","narażona","nareperowana","narkotyzowana","narodzona","naruszana","naruszona","narwana","narysowana","narzucana","narzucona","nasączana","nasączona","nasadzona","nasiąkana","nasilana","nasilona","naskakiwana","naskoczona","naskrobana","naśladowana","nasłana","nasłuchana","nasłuchiwana","nasmarowana","nastąpiona","nastawiana","nastawiona","nastraszana","nastrojona","nastukana","nasunięta","nasuwana","naświetlana","nasycona","nasyłana","nasypana","naszczana","naszkicowana","naszpikowana","naszprycowana","naszykowana","naszyta","naszywana","natarta","natchnięta","natknięta","natleniona","natłuszczona","natrafiona","natrząsana","natrząsnięta","nauczana","nauczona","nawadniana","nawalona","nawiązana","nawiązywana","nawiedzana","nawiedzona","nawiercona","nawiewana","nawieziona","nawigowana","nawijana","nawilżana","nawilżona","nawinięta","nawlekana","nawodniona","nawoływana","nawoskowana","nawożona","nawpychana","nawracana","nawrócona","nawrzucana","nawtykana","nawymyślana","nazbierana","nazmyślana","naznaczana","naznaczona","nazrywana","nazwana","nazywana","nęcona","negocjowana","negowana","nękana","neutralizowana","niańczona","niecierpliwiona","niedoceniana","niedowidziana","nienawidzona","niesiona","nikolona","niszczona","nitkowana","niuchana","niweczona","niwelowana","nokautowana","nominowana","notowana","nucona","numerowana","nurtowana","obaczona","obadana","obalana","obalona","obandażowana","obarczana","obarczona","obawiana","obchodzona","obciągnięta","obciążona","obcięta","obcinana","obcyndalana","obczajana","obczajona","obdarowana","obdarta","obdarzana","obdarzona","obdzielona","obdzierana","obdzwaniana","obdzwoniona","obejmowana","oberwana","obessana","obezwładniana","obezwładniona","obfotografowana","obfotografowywana","obgadana","obgadywana","obgryzana","obgryziona","obiecana","obiecywana","obierana","obijana","obita","objadana","objaśniana","objawiana","objawiona","objechana","objęta","objeżdżana","obkręcana","oblana","obłapiana","obłapywana","obłaskawiana","obłaskawiona","obleciana","oblegana","oblewana","obliczana","obliczona","oblizana","obłowiona","obłożona","obluzowana","obluzowywana","obmacana","obmacywana","obmawiana","obmyślana","obmyślona","obmyta","obmywana","obnażana","obniżana","obniżona","obnoszona","obowiązywana","obozowana","obrabiana","obrabowana","obracana","obradowana","obramowana","obraniana","obrana","obrastana","obrażana","obrażona","obrobiona","obrócona","obrodzona","obroniona","obrysowana","obrywana","obryzgana","obrzezana","obrzucana","obrzucona","obrzygana","obsadzana","obsadzona","obściskiwana","obserwowana","obsiana","obsikana","obsikiwana","obskakiwana","obskoczona","obskubana","obskubywana","obśliniana","obśliniona","obsługiwana","obsłużona","obsmarowana","obstawiana","obstawiona","obstrzeliwana","obsunięta","obsuwana","obsypana","obsypywana","obszukana","obszukiwana","obtaczana","obtarta","obtoczona","obudzona","obwąchana","obwąchiwana","obwiązana","obwiązywana","obwieszana","obwieszczana","obwieszczona","obwieszona","obwijana","obwiniana","obwinięta","obwołana","obyta","obżerana","ocalana","ocalona","ocechowana","oceniana","oceniona","ocenzurowana","ochładzana","ochlapana","ochlapywana","ochłodzona","ochłonięta","ochraniana","ochroniona","ochrzaniana","ochrzczona","ociągana","ocielona","ocieplana","ocieplona","ocierana","ocknięta","ocucona","ocuta","oczarowywana","oczekiwana","oczerniana","oczerniona","oczyszczana","oczyszczona","odarta","odbębniona","odbetonowana","odbezpieczana","odbezpieczona","odbijana","odbita","odblokowana","odbudowana","odbudowywana","odbutowana","odbyta","odcedzana","odchorowana","odchowana","odchudzana","odchudzona","odchylana","odchylona","odciągana","odciągnięta","odciążona","odcierpiona","odcięta","odcinana","odcisnięta","odcumowana","odcyfrowana","odcyfrowywana","odczarowana","odczekana","odczepiana","odczepiona","odczuta","odczuwana","odczyniona","odczytana","odczytywana","oddalana","oddana","oddawana","oddelegowana","oddychana","oddzielana","oddzielona","odebrana","odegnana","odegrana","odejmowana","odepchnięta","oderwana","odeskortowana","odesłana","odespana","odessana","odetkana","odetnięta","odezwana","odfiltrowana","odgadnięta","odgadywana","odganiana","odgarniana","odgarnięta","odgięta","odgniatana","odgoniona","odgradzana","odgrażana","odgrodzona","odgruzowana","odgrywana","odgryzana","odgryziona","odgrzana","odgrzebana","odgrzebywana","odgrzewana","odgwizdana","odhaczona","odholowana","odinstalowana","odizolowana","odjedzona","odjęta","odjonizowana","odkażana","odkażona","odkładana","odklejona","odkochana","odkodowana","odkodowywana","odkopana","odkopywana","odkorkowana","odkręcana","odkręcona","odkrojona","odkryta","odkrywana","odkupiona","odkupywana","odkurzana","odkurzona","odkuta","odłączana","odłączona","odłamywana","odlana","odlatywana","odlepiana","odlewana","odliczana","odliczona","odłożona","odłupana","odmachana","odmachiwana","odmalowana","odmarszczona","odmawiana","odmeldowana","odmieniana","odmieniona","odmierzana","odmierzona","odmieszana","odmontowana","odmówiona","odmrażana","odmrożona","odnajdowana","odnaleziona","odnawiana","odniesiona","odnoszona","odnotowana","odnotowywana","odnowiona","odpakowana","odpakowywana","odpalana","odpalona","odpałzowana","odparowana","odparta","odpędzana","odpicowana","odpieczętowana","odpierana","odpięta","odpiłowana","odpiłowywana","odpinana","odpisana","odpisywana","odpłacana","odplamiona","odplątana","odpłynięta","odpowietrzona","odpracowana","odpracowywana","odprasowana","odprawiana","odprawiona","odprężana","odprostowana","odprowadzana","odprowadzona","odpruta","odpryskana","odpukana","odpukiwana","odpuszczana","odpuszczona","odpychana","odrąbana","odrabiana","odrąbywana","odradzana","odradzona","odrapana","odrastana","odratowana","odreagowana","odremontowana","odrestaurowana","odrestaurowywana","odrobaczana","odrobiona","odroczona","odrodzona","odrośnięta","odróżniana","odróżniona","odrysowana","odrywana","odrzucana","odrzucona","odsączana","odsączona","odsadzona","odseparowana","odsiadywana","odsiana","odsiewana","odsłaniana","odsłonięta","odsłuchana","odsłuchiwana","odsłużona","odśnieżana","odśnieżona","odsolona","odśpiewana","odsprzedana","odsprzedawana","odstąpiona","odstawiana","odstawiona","odstępowana","odstraszana","odstręczona","odstresowana","odstrzeliwana","odstrzelona","odsunięta","odsuwana","odświeżana","odświeżona","odsyłana","odsypywana","odsysana","odszczekana","odszczekiwana","odsztafirowana","odszukana","odszyfrowana","odszyfrowywana","odszykowana","odtrąbiona","odtrącona","odtruta","odtwarzana","odtworzona","oduczona","odurzona","odwalana","odwalona","odwiązana","odwiązywana","odwiedzana","odwiedzona","odwieszona","odwieziona","odwijana","odwinięta","odwlekana","odwodniona","odwodzona","odwołana","odwoływana","odwożona","odwracana","odwrócona","odwzajemniona","odwzorowana","odżegnana","odziana","odziedziczona","odznaczana","odznaczona","odzwieciedlona","odzwierciedlana","odzwoniona","odzwyczajona","odzyskana","odzyskiwana","odżyta","odzywiana","odżywiona","oferowana","ofiarowana","ofiarowywana","ogarniana","ogarnięta","oglądana","ogłaszana","ogłoszona","ogłupiana","ogłupiona","ogłuszona","ogołocona","ogolona","ograbiana","ograbiona","ograniczana","ograniczona","ograna","ogrodzona","ogryziona","ogrzana","ogrzewana","okablowana","okaleczona","okantowana","okąpana","okazana","okazywana","okiełznana","okładana","okłamana","okłamywana","oklaskiwana","oklejona","oklepana","okopana","okopywana","okpiona","okradana","okradziona","okraszona","okrążana","okrążona","okręcana","okręcona","określana","określona","okrojona","okryta","okrywana","okrzyknięta","okulawiona","okupiona","okupowana","olana","olewana","olśnięta","omamiona","omawiana","omdlewana","omijana","ominięta","omotana","omówiona","onanizowana","onieśmielana","onieśmielona","opadnięta","opakowana","opalana","opalona","opancerzona","opanowana","opanowywana","oparta","oparzona","opasana","opatentowana","opatrywana","opatrzona","opatulona","opchnięta","opędzana","opędzona","operowana","opętana","opętywana","opieczętowana","opiekowana","opierana","opijana","opisana","opisywana","opita","opłacana","opłacona","opłakana","opłakiwana","opłukana","opluta","opluwana","opływana","opodatkowana","opodatkowywana","oponowana","oporządzana","oporządzona","opowiadana","opowiedziana","opóźniana","opóźniona","opracowana","opracowywana","oprawiana","oprawiona","oprowadzana","oprowadzona","opróżniana","opróżniona","opryskana","opryskiwana","opublikowana","opukana","opuszczana","opuszczona","opychana","opylona","orana","orbowana","organizowana","orientowana","oroszona","orzekana","orżnięta","osaczana","osaczona","osadzana","osądzana","osadzona","osądzona","oscylowana","osiadana","osiągana","osiągnięta","osiedlana","osiedlona","osiedzona","osierocona","osiodłana","oskalpowana","oskarżona","oskrobana","oskrzydlana","oskrzydlona","oskubana","oskubywana","osłabiana","osłabiona","oślepiana","oślepiona","oślepnięta","ośliniana","osłodzona","osłoniona","osłuchana","osmalona","ośmielona","ośmieszana","ośmieszona","ostrzegana","ostrzelana","ostrzelita","ostrzona","ostudzona","osunięta","osuszana","osuszona","osuwana","oswajana","oświadczana","oświadczona","oświecana","oświeciona","oświetlana","oświetlona","oswobadzana","oswobodzona","oswojona","oszacowana","oszałamiana","oszczana","oszczędzana","oszczędzona","oszklona","oszlifowana","oszołomiona","oszpecona","oszukana","oszukiwana","oszwabiona","otaczana","otarta","otoczona","otruta","otruwana","otrząsana","otrząśnięta","otrzepana","otrzeźwiona","otrzymana","otrzymywana","otulona","otumaniona","otwierana","otworzona","otwarta","owana","owdowiona","owiana","owijana","owinięta","ozdabiana","ozdobiona","ozdrowiona","ożeniona","oznaczana","oznaczona","oznajmiana","oznajmiona","oznakowana","ożyta","ożywana","ożywiana","ożywiona","pachnąca","pacnąta","pakowana","paktowana","pałana","pałaszowana","palnięta","palona","pamiętana","panoszona","paprana","parafrazowana","paraliżowana","parkowana","parowana","partaczona","parta","parzona","pastowana","paszona","patrolowana","patroszona","patrzona","pauzowana","pchana","pchnięta","pdholowana","pedałowana","pękana","pęknięta","pełniona","penetrowana","perforowana","perfumowana","perswadowana","piastowana","pichcona","pielęgnowana","pielona","pieniona","pieszczona","piętnowana","pięta","pijana","pikietowana","piknikowana","pikowana","pilnowana","pilotowana","piłowana","pisana","pisywana","pita","płacona","plądrowana","plamiona","planowana","płaszczona","plątana","płatana","pławiona","plewiona","płonąca","płoszona","plotkowana","plugawiona","płukana","pluskana","pluta","pobaraszkowana","pobierana","pobita","pobłażana","pobłogosławiona","pobrana","pobrudzona","pobudzana","pobudzona","pobujana","pocałowana","pocerowana","pochłaniana","pochlapana","pochlebiana","pochłonięta","pochowana","pochwalana","pochwalona","pochwycona","pochylana","pochylona","pociachana","pociągana","pociągnięta","pocierana","pocieszana","pocieszona","pocięta","pocona","pocukrowana","poćwiartowana","poczesana","poczęstowana","poczęta","poczochrana","poczuta","poczytana","poczytywana","podana","podarowana","podarta","podawana","podążona","podbierana","podbijana","podbita","podbudowana","podbudowywana","podburzana","podburzona","podchwycona","podciągana","podciągnięta","podcierana","podcięta","podcinana","podczepiona","poddana","poddawana","podebrana","podejmowana","podejrzana","podejrzewana","podelektowana","podeptana","poderwana","podesłana","podglądana","podgolona","podgoniona","podgryzana","podgrzana","podgrzewana","podjadana","podjedzona","podjęta","podkablowana","podkarmiona","podkładana","podklejona","podkolorowana","podkołowana","podkopana","podkopywana","podkradana","podkradnięta","podkręcana","podkręcona","podkreślana","podkreślona","podkształcona","podkulona","podkupiona","podkurzona","podkuta","podłączana","podłączona","podładowana","podłamana","podlana","podłapana","podleczona","podlegana","podlewana","podliczana","podliczona","podlizana","podlizywana","podłożona","podmalowana","podmieniana","podmieniona","podmuchana","podmyta","podnajęta","podniecana","podniecona","podniesiona","podnoszona","podołana","podopingowana","podostrzona","podotykana","podpadnięta","podpalana","podpalona","podparta","podpatrywana","podpatrzona","podpieczętowana","podpiekana","podpierana","podpięta","podpiłowana","podpinana","podpisana","podpisywana","podpłacona","podpłynięta","podpompowana","podporządkowana","podporządkowywana","podpowiadana","podpowiedziana","podprowadzana","podpuszczana","podpuszczona","podpychana","podpytana","podrabiana","podrapana","podrasowana","podratowana","podrażniona","podręczona","podregulowana","podreperowana","podretuszowana","podrobiona","podroczona","podróżowana","podrygiwana","podrywana","podrzucana","podrzucona","podrzynana","podsadzona","podskubywana","podsłuchana","podsłuchiwana","podsmażana","podsmażona","podśpiewywana","podstawiana","podstawiona","podstemplowana","podstrojona","podsumowana","podsumowywana","podsunięta","podsuwana","podświetlana","podsycana","podsycona","podsyłana","podsypana","podszczypywana","podszkolona","podszlifowana","podszykowana","podszyta","podszywana","podtapiana","podtarta","podtopiona","podtrzymana","podtrzymywana","podtuczona","poduczana","podupadana","poduszona","podwajana","podwalana","podważana","podwędzona","podwiązana","podwieszana","podwieziona","podwijana","podwinięta","podwojona","podwożona","podwyżana","podwyższana","podwyższona","podyktowana","podyskutowana","podziabana","podziałana","podziałkowana","podziękowana","podzielona","podziurawiona","podziwiana","podźwignięta","poeksperymentowana","pofarbowana","pofatygowana","pofilmowana","poganiana","pogardzana","pogardzona","pogarszana","pogaszona","pogładzona","pogłaskana","pogłębiana","pogłębiona","pogłośniona","pogmatwana","pognębiona","pognieciona","pogodzona","pogoniona","pogorszona","pogotowana","pograbiona","pogrążana","pogrążona","pogrożona","pogrubiana","pogrubiona","pogruchana","pogruchotana","pogrupowana","pogrywana","pogryzana","pogryziona","pogrzana","pogrzebana","pogubiona","pogwałcana","pohamowana","pohandlowana","poharatowana","pohuśtana","poinformowana","poinstruowana","pojednana","pojęta","pojmięta","pojmowana","pojona","pokajana","pokaleczona","pokarana","pokarmiona","pokąsana","pokatalogowana","pokazana","pokazywana","pokiereszowana","pokierowana","pokiwana","pokładana","poklepana","poklepywana","pokłoniona","pokłuta","pokochana","pokolorowana","pokoloryzowana","pokołysana","pokombinowana","pokomplikowana","pokonana","pokończona","pokonywana","pokopana","pokrajana","pokrążona","pokręcona","pokrojona","pokruszona","pokryta","pokrywana","pokrzepiana","pokrzepiona","pokrzyżowana","pokuszona","pokutowana","połączona","polakierowana","połamana","polana","połapana","połaskotana","połatana","polecana","połechtana","polecona","poleczona","polegana","polemizowana","polepszana","polepszona","polerowana","polewana","policzkowana","policzona","polimeryzowana","polizana","połknięta","polowana","połowiona","położona","polubiona","poluźniona","poluzowana","połykana","pomacana","pomachana","pomagana","pomalowana","pomarynowana","pomasowana","pomazana","pomęczona","pomiatana","pomieszana","pomieszczona","pomijana","pominięta","pomiziana","pomknięta","pomnażana","pomniejszana","pomniejszona","pomnożona","pomoczona","pompowana","pomydlona","pomylona","pomyszkowana","pomywana","ponabijana","ponaciskana","ponadziewana","ponaglana","ponaglona","ponagrywana","ponaklejana","ponakłuwana","ponakrywana","ponaprawiana","ponawiana","poniańczona","poniechana","ponieiwerana","poniesiona","poniszczona","poniżana","poniżona","ponoszona","ponowiona","ponudzona","poobcinana","poobcowana","poobczajana","poobijana","poobmacywana","poobracana","poobserwowana","poodbijana","poodcinana","poodgryzana","poodkurzana","poodprawiana","poodsuwana","poodwalana","pooglądana","poograniczana","poopalana","poopiekana","poopwiadana","pootwierana","popadana","popakowana","popalona","poparta","poparzona","popchana","popchnięta","popędzana","popędzona","popękana","popełniana","popełniona","poperfumowana","popierana","popieszczona","popijana","popilnowana","popisana","popita","popłacona","popłakiwana","poplamiona","poplątana","popluskana","popodcinana","popodziwiana","popoprawiana","poprana","poprasowana","poprawiana","poprawiona","poproszona","poprowadzona","popryskana","poprzebierana","poprzeciągana","poprzecinana","poprzedzana","poprzeglądana","poprzeklinana","poprzekopywana","poprzemieszczana","poprzenoszona","poprzesadzana","poprześladowana","poprzestawiana","poprzesuwana","poprzewieszana","poprzewracana","poprzycinana","poprzymierzana","poprzytulana","poprzywiązywana","popsuta","popudrowana","popukana","popularyzowana","popuszczana","popuszczona","popychana","popykana","popytana","porabiana","porachowana","poraniona","poratowana","porażona","poręczona","porównana","porozbierana","porozbijana","porozciągana","porozcinana","porozdawana","porozdzielana","porozmieszczana","poróżniona","porozpędzana","porozpieszczana","porozprowadzana","porozpruwana","porozrzucana","porozstawiana","porozsyłana","porozumiewana","porozwalana","porozwiązywana","porozwieszana","porozwożona","portretowana","poruszana","poruszona","porwana","porysowana","porywana","porządkowana","porządzona","porzucana","porzucona","posądzana","posadzona","posądzona","pościągana","pościelona","pościerana","pościgana","pościnana","pościskana","posegregowana","posiadana","posiana","posiekana","posilana","posiłkowana","posilona","posiłowana","posiniaczona","posiorbana","poskąpiona","poskładana","posklejana","poskramiana","poskręcana","poskrobana","poskromiona","poskubana","posłana","posłodzona","poślubiana","poślubiona","posługiwana","posmakowana","posmarowana","posolona","posortowana","pospekulowana","pospieszana","pośpieszana","pośpiewana","pospinana","pospłacana","posprawdzana","posprzątana","posprzedawana","pośredniczona","possana","postanowiona","postana","postarana","postawiona","postemplowana","posterowana","postradana","postraszona","postrugana","postrzegana","postrzelana","postrzelona","postukana","postymulowana","posunięta","posuwana","poświącana","poświadczona","poświecona","poświęcona","poświętowana","poświntuszona","posyłana","posypana","posypywana","poszarpana","poszastana","poszatkowana","poszczuta","poszczycona","poszczypana","poszerzana","poszerzona","poszorowana","poszpiegowana","poszturchana","poszukana","poszukiwana","poszwędana","poszybowana","potakiwana","potarmoszona","potarta","potasowana","potęgowana","potępiana","potępiona","potknięta","potoczona","potopiona","potorturowana","potrącana","potrącona","potraktowana","potrojona","potruta","potrząsana","potrzaskana","potrząsnięta","potrząśnięta","potrzymana","Poturbowana","poturlana","potwierdzona","potykana","poucinana","pouczana","pouczona","poudawana","poukładana","pouprawiana","poupychana","pourywana","poustawiana","poużywana","powąchana","powachlowana","powalana","powalona","poważana","powbijana","powciągana","powciskana","powdychana","powęszona","powetowana","powiadamiana","powiadomiona","powiązana","powiedziana","powiedzona","powiększana","powielana","powielona","powierzana","powierzona","powieszona","powiewana","powinszowana","powitana","powita","powkładana","powlekana","powłóczona","powodowana","powołana","powoływana","powożona","powpychana","powrócona","powrzucana","powsadzana","powściągnięta","powspominana","powstrzymana","powtarzana","powtórzona","powybierana","powybijana","powycierana","powycinana","powyciskana","powydawana","powyganiana","powyginana","powyjaśniana","powyjmowana","powyłączana","powymiatana","powymieniana","powynoszona","powypełniana","powypisywana","powyrywana","powyrzucana","powystrzelana","powysyłana","powywalana","powywieszana","powywracana","powzięta","pozabawiana","pozabijana","pozacierana","pożądana","pożądlona","pozadzierana","pozakładana","pozaklinana","pozałatwiana","pozamiatana","pozamieniana","pozamrażana","pozamykana","pozapalana","pozapinana","pozapisywana","pozapraszana","pożarta","pozasłaniana","pozastrzelana","pozatykana","pozbawiana","pozbawiona","pozbierana","pozbyta","pozbywana","pozdejmowana","pozdrawiana","pozdrowiona","pożegnana","pożerana","pozmiatana","pozmieniana","pozmywana","poznaczona","poznana","poznawana","poznęcana","pozorowana","pozostawiana","pozostawiona","pozowana","pozrywana","pozszywana","pożuta","pozwalniana","pozwana","pozwiązywana","pozwiedzana","pozwolona","pożyczana","pożyczona","pozyskana","pożyta","pozywana","pożywiana","pożywiona","praktykowana","prana","prasowana","prawiona","prażona","precyzowana","preferowana","prenumerowana","prezentowana","próbowana","procesowana","produkowana","profanowana","profilowana","prognozowana","programowana","projektowana","proklamowana","prolongowana","promieniowana","promowana","propagowana","proponowana","prosperowana","prostowana","proszkowana","proszona","protestowana","protokołowana","prowadzona","prowokowana","pruta","pryskana","pryśnięta","przeanalizowana","przearanżowana","przebaczana","przebaczona","przebadana","przebiegnięta","przebierana","przebijana","przebita","przebolona","przebrana","przebudowana","przebudowywana","przebudzana","przebudzona","przebukowana","przebyta","przebywana","przeceniana","przeceniona","przechlapana","przechodzona","przechowana","przechowywana","przechrzcona","przechwycona","przechwytywana","przechylana","przechylona","przechytrzana","przechytrzona","przeciągana","przeciągnięta","przeciążana","przeciążona","przeciekana","przecierana","przecierpiana","przecięta","przecinana","przeciskana","przeciśnięta","przeciwstawiana","przećwiczona","przeczekana","przeczesana","przeczesywana","przeczołgana","przeczuta","przeczuwana","przeczyszczona","przeczytana","przedarta","przedawkowana","przedawkowywana","przedekorowana","przedłożona","przedłużana","przedłużona","przedmuchana","przedobrzona","przedostana","przedostawana","przedsiewzięta","przedstawiana","przedstawiona","przedymana","przedyskutowana","przedzierana","przedziurawiona","przedziurkowana","przeegzaminowana","przefaksowana","przefarbowana","przefasonowana","przefasowana","przefaxowana","przefiltrowana","przeformowana","przeforsowana","przegadana","przeganana","przeganiana","przegapiana","przegapiona","przegięta","przeginana","przeglądana","przeglądnięta","przegłodzona","przegłosowana","przegoniona","przegotowana","przegotowywana","przegrabiona","przegradzana","przegrana","przegrupowana","przegrupowywana","przegrywana","przegryzana","przegryziona","przegrzana","przegrzebana","przegrzewana","przehandlowana","przeholowana","przeinstalowana","przeistoczona","przejadana","przejaskrawiana","przejaśniona","przejawiana","przejawiona","przejechana","przejęta","przejeżdżana","przejmowana","przejrzana","przekabacana","przekabacona","przekablowana","przekalibrowana","przekalkulowana","przekarmiana","przekąszona","przekazywana","przekierowana","przekierowywana","przekimana","przekładana","przeklejona","przeklęta","przeklinana","przeklnięta","przekłuta","przekonana","przekonfigurowana","przekonstruowana","przekonwertowana","przekonywana","przekopana","przekopywana","przekoziołkowana","przekraczana","przekręcana","przekręcona","przekreślana","przekreślona","przekroczona","przekrojona","przekrzyczona","przekrzywiona","przekształcana","przekształcona","przekupiona","przekupywana","przekuta","przekwalifikowana","przełączana","przełączona","przeładowana","przeładowywana","przełamana","przełamywana","przelana","przelatywana","przeleciana","przelewana","przeleżana","przelicytowana","przeliczana","przeliczona","przeliterowana","przełknięta","przełożona","przełykana","przełyknięta","przemalowana","przemalowywana","przemaszerowana","przemawiana","przemeblowana","przemęczona","przemielona","przemieniana","przemierzona","przemieszczana","przemieszczona","przemijana","przemilczana","przemilczona","przeminięta","przemknięta","przemodelowana","przemusztrowana","przemycana","przemycona","przemyślana","przemyślona","przemyta","przemywana","przenegocjowana","przeniesiona","przenikana","przeniknięta","przenoszona","przeobrażana","przeobrażona","przeoczana","przeoczona","przeorana","przeorganizowana","przeorientowana","przepadana","przepakowana","przepalona","przeparkowana","przepchana","przepchnięta","przepędzana","przepędzona","przepełniana","przepełniona","przepijana","przepiłowana","przepisana","przepisywana","przepita","przepłacana","przepłacona","przepłakana","przeplanowana","przepłoszona","przepłukana","przepłukiwana","przepłynięta","przepływana","przepompowana","przepompowywana","przepowiadana","przepowiedziana","przepracowana","przepracowywana","przeprana","przeprawiana","przeprawiona","przeprogramowana","przeprojektowana","przeprowadzana","przeprowadzona","przepuszczana","przepuszczona","przepychana","przepytana","przepytywana","przerąbana","przerabiana","przeradzana","przerastana","przerażona","przeredagowana","przerejestrowana","przerobiona","przerodzona","przerośnięta","przerwana","przerysowana","przerywana","przerzedzana","przerzucana","przerzucona","przesączona","przesadzana","przesądzana","przesadzona","przesądzona","prześcigana","prześcignięta","przesiadana","przesiadywana","przesiana","przesiedlana","przesiedlona","przesiedziana","przesiewana","przesilona","przeskakiwana","przeskalowana","przeskanowana","przeskoczona","przeskrobana","prześladowana","przesłaniana","przesłana","prześledziona","prześlizgnięta","przesłodzona","przesłonięta","przesłuchana","przesłuchiwana","przesmarowana","przesolona","przesortowana","przespana","prześpiewana","przessana","przestawiana","przestawiona","przestemplowana","przestraszona","przestrojona","przestrzegana","przestrzelona","przestudiowana","przesunięta","przesuwana","prześwietlana","prześwietlona","przesyłana","przesypana","przesypiana","przesypywana","przeszarżowana","przeszczepiana","przeszczepiona","przeszkadzana","przeszkolona","przeszmuglowana","przeszukana","przeszukiwana","przeszyta","przeszywana","przetaczana","przetańczona","przetapetowana","przetarta","przetestowana","przetkana","przetoczona","przetopiona","przetrącona","przetransformowana","przetransmitowana","przetransponowana","przetransportowana","przetrawiona","przetrwana","przetrząsana","przetrząśnięta","przetrzepana","przetrzymana","przetrzymywana","przetwarzana","przetworzona","przewalana","przewalczona","przewaletowana","przewalona","przeważana","przeważona","przewertowana","przewiązana","przewiązywana","przewidywana","przewidziana","przewiercana","przewiercona","przewieszana","przewieszona","przewietrzona","przewieziona","przewijana","przewinięta","przewitana","przewodniczona","przewodzona","przewożona","przewracana","przewrócona","przewyższana","przeymierzana","przeżarta","przeżeglowana","przeżegnana","przeziębiona","przezimowana","przeznaczana","przeznaczona","przeżuta","przezwyciężana","przezwyciężona","przeżyta","przezywana","przeżywana","przodowana","przpochlebiona","przwdziewana","przybastowana","przybierana","przybijana","przybita","przybliżana","przybliżona","przybrana","przycelowana","przycepiona","przychylona","przyciągana","przyciągnięta","przyciemniona","przycięta","przycinana","przyciskana","przyciśnięta","przyciszona","przyćmiewana","przyćmiona","przycumowana","przyczepiana","przyczesana","przyczołgana","przyczyniona","przydepnięta","przydeptana","przyduszona","przydzielana","przydzielona","przygarnięta","przygaszona","przygazowana","przygładzana","przygnębiana","przygniatana","przygnieciona","przygotowana","przygruchana","przygrywana","przygryzana","przygryziona","przygrzana","przygwożdżona","przyhamowana","przyholowana","przyjana","przyjęta","przyjmowana","przyjrzana","przykładana","przyklejona","przyklepana","przykopana","przykręcana","przykręcona","przykrócona","przykryta","przykrywana","przykurzona","przykuta","przykuwana","przyłączana","przyłączona","przylana","przyłapana","przylegana","przylepiana","przylepiona","przyłożona","przymierzona","przymilana","przymknięta","przymocowana","przymuszana","przynależona","przyniesiona","przynoszona","przynudzana","przyostrzona","przyozdabiana","przyozdobiona","przypadnięta","przypakowana","przypakowywana","przypalana","przypalona","przyparta","przypasowana","przypatrywana","przypatrzona","przypieczętowana","przypiekana","przypierana","przypięta","przypilnowana","przypiłowana","przypinana","przypisana","przypisywana","przypłacona","przyplątana","przypłynięta","przypodobana","przypominana","przypomniana","przyporządkowana","przyprawiana","przyprawiona","przyprowadzona","przypucowana","przypudrowana","przypuszczana","przypuszczona","przyrównana","przyrządzana","przyrządzona","przysiadana","przysiągnięta","przyskrzydlona","przyskrzyniana","przyskrzyniona","przysłaniana","przysłana","przysłodzona","przysłoniona","przysłuchiwana","przysługiwana","przysłużona","przysmażana","przysmażona","przyspieszana","przyspieszona","przysporzona","przysposobiona","przyśrubowywana","przyssana","przystąpiona","przystawiana","przystawiona","przystemplowana","przystopowana","przystosowana","przystrojona","przysunięta","przysuwana","przyswajana","przyświecana","przyświęcona","przyswojona","przysyłana","przysypana","przyszpilona","przyszykowana","przyszyta","przyszywana","przytaczana","przytargana","przytarta","przytaszczana","przytępiana","przytępiona","przytkana","przytłaczana","przytłoczona","przytłumiona","przytoczona","przytrafiona","przytroczona","przytruwana","przytrzasnięta","przytrzymana","przytrzymywana","przytulana","przytulona","przytwierdzana","przytwierdzona","przytykana","przyuczona","przyuważona","przywabiona","przywalana","przywalona","przywarowana","przywarta","przywdziana","przywiązana","przywiązywana","przywidziana","przywieziona","przywitana","przywłaszczana","przywłaszczona","przywołana","przywoływana","przywożona","przywracana","przywrócona","przyznaczona","przyznana","przyznawana","przyzwalana","przyzwana","przyzwyczajana","przyzwyczajona","przyzywana","psiamana","pstrykana","pstryknięta","psuta","publikowana","puchnięta","pucowana","pudłowana","pudrowana","puknięta","punktowana","pustoszona","puszczana","puszczona","puszkowana","puszona","pykana","pytana","rabowana","rachowana","racjonalizowana","racjonowana","raczona","radowana","raniona","raportowana","ratowana","ratyfikowana","reaktywowana","realizowana","reanimowana","recytowana","ręczona","redagowana","redukowana","reformowana","refowana","regenerowana","regionalizowana","regulowana","reinkarnowana","rejestrowana","reklamowana","rekomendowana","rekompensowana","rekonstruowana","rekreowana","rekrutowana","rekwirowana","relacjonowana","relaksowana","remodulowana","remontowana","renegocjowana","reorganizowana","reperowana","replikowana","represejonowana","reprezentowana","reprodukowana","resetowana","resocjalizowana","respektowana","resuscytowana","retuszowana","rewanżowana","rewidowana","rezerwowana","rezonowana","rezygnowana","reżyserowana","robiona","rodzona","rojona","rolowana","romansowana","roniona","rozbawiana","rozbawiona","rozbierana","rozbijana","rozbita","rozbłyśnięta","rozbrajana","rozbrojona","rozbudowana","rozbudowywana","rozbudzana","rozbudzona","rozbujana","rozcapierzona","rozchmurzona","rozchodzona","rozchylana","rozchylona","rozciągana","rozciągnięta","rozcieńczana","rozcieńczona","rozcierana","rozcięta","rozcinana","rozczarowana","rozczarowywana","rozczesana","rozczłonkowana","rozczulana","rozczytana","rozdana","rozdawana","rozdeptana","rozdmuchana","rozdmuchiwana","rozdrabniana","rozdrapana","rozdrapywana","rozdrażniana","rozdrażniona","rozduszona","rozdwojona","rozdysponowana","rozdzielana","rozdzielona","rozdzierana","rozdziewiczona","rozebrana","rozedrana","rozegrana","rozegrywana","rozepchana","rozerwana","rozesłana","rozgarnięta","rozgaszczana","rozgięta","rozglaszana","rozgłoszona","rozgniatana","rozgnieciona","rozgniewana","rozgoniona","rozgraniczona","rozgrana","rozgromiona","rozgrywana","rozgryzana","rozgryziona","rozgrzana","rozgrzebywana","rozgrzeszona","rozgrzewana","rozhuśtana","rozjaśniana","rozjaśniona","rozjechana","rozjedzona","rozjuszana","rozjuszona","rozkazana","rozkazywana","rozkładana","rozklejana","rozklejona","rozkołysana","rozkopana","rozkopywana","rozkoszowana","rozkręcana","rozkręcona","rozkrojona","rozkruszona","rozkuta","rozkuwana","rozkwaszona","rozkwaterowana","rozkwitana","rozkwitnięta","rozłączona","rozładowana","rozładowywana","rozłamana","rozlana","rozlewana","rozliczana","rozliczona","rozlokowana","rozłożona","rozłupana","rozluźniana","rozmanażana","rozmasowana","rozmawiana","rozmazana","rozmazywana","rozmiękczona","rozmieniana","rozmieniona","rozmieszczana","rozmieszczona","rozminięta","rozmnożona","rozmontowana","rozmówiona","rozmrażana","rozmrożona","rozmyślana","rozmyta","różnicowana","rozniecana","roznieciona","rozniesiona","różniona","roznoszona","rozochocona","rozpaczana","rozpakowana","rozpakowywana","rozpalana","rozpalona","rozpamiętywana","rozpaskudzana","rozpatrywana","rozpatrzona","rozpędzana","rozpędzona","rozpętana","rozpieszczana","rozpieszczona","rozpięta","rozpiłowana","rozpinana","rozpisana","rozpisywana","rozplanowana","rozpłaszczana","rozpłaszczona","rozplątana","rozplątywana","rozpłynięta","rozpoczęta","rozpoczynana","rozpogodzona","rozporządzana","rozporządzona","rozpościerana","rozpostrzona","rozpowiadana","rozpowiedziana","rozpowszechniana","rozpowszechniona","rozpoznana","rozpoznawana","rozpracowana","rozpraszana","rozprawiana","rozprawiczona","rozprawiona","rozprostowana","rozproszona","rozprowadzana","rozprowadzona","rozpruta","rozpruwana","rozprzestrzeniana","rozprzestrzeniona","rozpuszczana","rozpuszczona","rozpychana","rozpylana","rozpylona","rozpytana","rozpytywana","rozrastana","rozreklamowana","rozrobiona","rozrośnięta","rozróżniana","rozróżniona","rozruszana","rozrysowana","rozrywana","rozrzucana","rozsadzana","rozsadzona","rozsądzona","rozścielona","rozsiana","rozsiekana","rozsiewana","rozsiodłana","rozsławiana","rozsławiona","rozsmarowana","rozsmarowywana","rozśmieszana","rozstana","rozstąpiona","rozstawana","rozstawiana","rozstawiona","rozstrojona","rozstrząsana","rozstrzeliwana","rozstrzelona","rozstrzygana","rozstrzygnięta","rozsunięta","rozsupłana","rozświetlana","rozświetlona","rozsyłana","rozsypana","rozsypywana","rozszarpana","rozszarpywana","rozszczepiana","rozszczepiona","rozszerzana","rozszerzona","rozszyfrowana","roztaczana","roztapiana","roztarta","roztoczona","roztopiona","roztrwoniona","roztrząsana","roztrzaskana","rozumiana","rozumowana","rozwalana","rozwalona","rozwarta","rozważana","rozważona","rozweselana","rozweselona","rozwiana","rozwiązana","rozwiązywana","rozwidniana","rozwiedziona","rozwierana","rozwiercona","rozwieszana","rozwieszona","rozwiewana","rozwieziona","rozwikłana","rozwinięta","rozwlekana","rozwodzona","rozwścieczana","rozwścieczona","rozzłoszczona","rugana","ruinowana","rujnowana","runięta","ruszana","ruszona","rwana","ryczana","ryglowana","rymowana","rysowana","ryta","ryzykowana","rządzona","rzeźbiona","rżnięta","rzucana","rzucona","rzygana","sabotażowana","sączona","sadzana","sadzona","sądzona","salutowana","salwowana","sankcjonowana","satysfakcjonowana","scalona","scementowana","scentrowana","scharakteryzowana","schładzana","schlana","schlapana","schlebiona","schłodzona","schowana","schroniona","schrupana","schrzaniona","schwytana","schylana","ściągnięta","ścielona","ściemniana","ściemniona","ścierana","ścierpiona","ścięta","ścigana","ścinana","ściskana","ściśnięta","ściszana","ściszona","sędziowana","segregowana","selekcjonowana","separowana","sępiona","serwowana","sfabrykowana","sfajczona","sfałszowana","sfaulowana","sfilmowana","sfinalizowana","sfinansowana","sfingowana","sformalizowana","sformatowana","sformowana","sformułowana","sforsowana","sfotografowana","shimmerowana","siana","siekana","siorbana","skadrowana","skakana","skalana","skaleczona","skalibrowana","skalkulowana","skalpowana","skanalizowana","skandowana","skanowana","skapitulowana","skarcona","skarżona","skasowana","skatalogowana","skazana","skażona","skazywana","skierowana","składana","składowana","skłaniana","sklasyfikowana","skleciona","sklejana","sklejona","sklepana","skłócona","skłoniona","sklonowana","sknocona","skojarzona","skolonizowana","skołowana","skombinowana","skomentowana","skompensowana","skompletowana","skomplikowana","skomponowana","skompresowana","skompromitowana","skomunikowana","skonana","skoncentrowana","skończona","skondensowana","skonfigurowana","skonfiskowana","skonfrontowana","skonkretyzowana","skonsolidowana","skonstruowana","skonsultowana","skonsumowana","skontaktowana","skontrolowana","skoordynowana","skopana","skopiowana","skorektowana","skorumpowana","skorygowana","skorzystana","skoszona","skracana","skradziona","skręcana","skręcona","skremowana","skreślana","skreślona","skrobana","skrobnięta","skrócona","skrojona","skropiona","skruszona","skrystalizowana","skryta","skrytykowana","skrywana","skrzecowana","skrzepnięta","skrzyczana","skrzyta","skrzywdzona","skrzyżowana","skserowana","skubana","skubnięta","skulona","skumulowana","skupiana","skupiona","skupowana","skurczona","skuszona","skuta","skuwana","skwitowana","słana","sławiona","śledzona","śliniona","ślizgana","słodzona","słuchana","słyszana","smagana","smarowana","smażona","śmiecona","smuta","smyrana","snuta","sondowana","sortowana","spafycikowana","spakowana","spalana","spałaszowana","spalona","spałowana","spamiętana","spaprana","sparafrazowana","sparaliżowana","sparowana","spartaczona","spartolona","sparzona","spasowana","spatałaszona","spauzowana","spawana","spawiona","specjalizowana","spędzana","spędzona","spekulowana","spełniana","spełniona","spenetrowana","spętana","spierana","spięta","śpiewana","spiłowana","spinana","spisana","spiskowana","spisywana","spita","spłacana","spłacona","splądrowana","splajtowana","splamiona","spłaszczona","splatana","splątana","spłatana","spławiana","spławiona","spłodzona","spłonięta","spłoszona","spłukana","spłukiwana","spluwana","spływana","spoczęta","spoczywana","spodziewana","spojona","spolaryzowana","spoliczkowana","sponiewierana","sponsorowana","spopielana","spopielona","spopularyzowana","sportretowana","sporządzana","sporządzona","spostrzegana","spotęgowana","spotkana","spotykana","spoufalana","spowalniana","spowiadana","spowodowana","spowolniona","spoźniona","spóźniona","spożytkowana","spożyta","spożywana","sprana","sprasowana","spraszana","sprawdzona","sprawiona","sprawowana","sprecyzowana","spreparowana","sprężana","sprężona","spróbowana","sprofanowana","sprofilowana","sprostowana","sproszkowana","sproszona","sprowadzana","sprowadzona","sprowokowana","spryskana","spryskiwana","sprywatyzowana","sprzątana","sprzątnięta","sprzeczana","sprzedana","sprzedawana","sprzeniewierzona","spudłowana","spustoszona","spuszczana","spuszczona","spychana","ssana","stabilizowana","stacjonowana","staczana","staranowana","starczana","stargowana","startowana","stawiana","stawiona","stemplowana","stenografowana","stepowana","sterowana","sterroryzowana","sterylizowana","stłamszona","stłumiona","stnięta","stoczona","stołowana","stonowana","stopiona","stopniowana","storpedowana","stosowana","strącana","stracona","strącona","strajkowana","straszona","stratowana","strawiona","streamowana","stresowana","streszczana","streszczona","strofowana","strojona","stroszona","strugana","struta","strymowana","strząsana","strzaskana","strząśnięta","strzelona","strzepana","strzępiona","strzepnięta","strzepywana","studiowana","studzona","stukana","stuknięta","stulona","stwardniona","stwarzana","stwierdzana","stwierdzona","stworzona","stykana","stylizowana","stymulowana","sugerowana","sumowana","sunięta","swatana","swawolona","świadczona","świecona","święcona","świerzbiona","świętowana","świntuszona","sycona","sygnalizowana","symulowana","synchronizowana","sypana","sypnięta","szachrowana","szacowana","szafowana","szamotana","szanowana","szargana","szarpana","szarpnięta","szarżowana","szasowana","szastana","szatkowana","szczędzona","szczepiona","szczerzona","szczuta","szczycona","szczypana","szczytowana","szefowana","szemrana","szepnięta","szeptana","szerzona","szkalowana","szkicowana","szklona","szkodzona","szkolona","szlachtowana","szlifowana","szmuglowana","szokowana","szorowana","szpachlowana","szpanowana","szperana","szprycowana","sztachnięta","szturchana","szturchnięta","szturmowana","szufladkowana","szuflowana","szukana","szulerowana","szwankowana","szydełkowana","szydzona","szyfrowana","szykanowana","szykowana","szyta","taktowana","tamowana","tankowana","tapetowana","taplana","taranowana","targana","targnięta","targowana","tarmoszona","tarta","tarzana","tasowana","taszczona","tatuowana","tchnięta","telefonowana","telegrfowana","teleportowana","temperowana","teoretyzowana","tępiona","terroryzowana","testowana","tkana","tknięta","tłamszona","tłoczona","tłumaczona","tłumiona","toczona","tolerowana","tonowana","topiona","torowana","torturowana","towarzyszona","trąbiona","trącana","tracona","trącona","trafiana","trafiona","tragizowana","traktowana","transferowana","transformowana","transmitowana","transportowana","tratowana","trawiona","trenowana","tresowana","triumfowana","tropiona","troszczona","truta","trwoniona","trymowana","tryskana","tryśnięta","tryumfowana","trywializowana","trzaskana","trzasnięta","trzepana","trzepnięta","trzepotana","trzęsiona","trzymana","tuczona","tułana","tulona","turlana","tuszowana","twistowana","tworzona","tykana","tyranizowana","tyrana","tytułowana","uaktualniana","uaktualniona","uaktywniana","uaktywniona","uargumentowana","uatrakcyjniona","ubabrana","ubarwiana","ubarwiona","ubawiona","ubezpieczana","ubezpieczona","ubezwłasnowolniona","ubiczowana","ubiegana","ubierana","ubijana","ubita","ubłagana","ubliżana","ubliżona","ubolewana","ubóstwiana","ubrana","ubroczona","ubrudzona","ucałowana","ucharakteryzowana","uchowana","uchroniona","uchwalana","uchwalona","uchwycona","uchylana","uchylona","uciągnięta","ucieleśniana","ucierana","ucierpiana","ucięta","ucinana","uciskana","uciśnięta","uciszana","uciszona","uciułana","ucywilizowana","uczczona","uczepiona","uczesana","uczęszczana","uczona","ucztowana","uczuta","uczyniona","udana","udaremniona","udawana","udekorowana","udeptywana","uderzana","uderzona","udobruchana","udokumentowana","udomawiana","udomowiona","udoskonalana","udoskonalona","udostępniana","udostępniona","udowadniana","udowodniona","Udramatyzowana","udręczona","udrożniona","udupiona","uduszona","udzielana","udzielona","udźwignięta","ueiwarygodniona","ufana","ufarbowana","uformowana","ufortyfikowana","ufundowana","ugadana","uganiana","ugaszana","ugaszona","ugięta","uginana","ugłaskana","ugniatana","ugodzona","ugoszczona","ugotowana","ugrana","ugruntowana","ugryziona","ugrzęznięta","uhistoryzowana","uhonorowana","uiścita","ujadana","ujarzmiana","ujarzmiona","ujawniana","ujawniona","ujęta","ujeżdżana","ujeżdżona","ujmowana","ujrzana","ukamieniowana","ukarana","ukartowana","ukąszona","ukatrupiona","ukazana","ukazywana","ukierowana","ukierunkowana","układana","uklepana","ukłoniona","ukłuta","uknuta","ukojona","ukołysana","ukończona","ukonkretniona","ukoronowana","ukradziona","ukręcana","ukręcona","ukrojona","ukryta","ukrywana","ukrzyżowana","ukształtowana","ukuta","ułagodzona","ułaskawiana","ułaskawiona","ulatniana","ułatwiana","ułatwiona","uleczana","uleczona","ulegana","ulepiona","ulepszana","ulepszona","ulokowana","ulotniona","ułożona","umacniana","umalowana","umartwiana","umawiana","umazana","umeblowana","umiejscowiona","umieszczana","umieszczona","umilana","umilona","umknięta","umniejszana","umniejszona","umocniona","umocowana","umoczona","umodelowana","umorzona","umotywowana","umówiona","umożliwiana","umożliwiona","umroczniona","umyta","unaoczniona","unicestwiana","unicestwiona","uniemożliwaina","uniemożliwiona","unierochomiona","uniesiona","unieszczęśliwiana","unieszczęśliwiona","unieszkodliwiana","unieszkodliwiona","unieważniana","unieważniona","uniewinniona","uniezależniona","unikana","uniknięta","unormowana","unoszona","unowoczesniana","unowocześniana","uodporniona","uogólniana","upakowana","upalana","upalona","upamiętniana","upamiętniona","upaństwowiona","upaprana","uparta","upaskudzona","upchana","upchnięta","upewniana","upewniona","upgradowana","upichcona","upiększana","upiększona","upierana","upierdolona","upięta","upijana","upilnowana","upinana","upita","uplastyczniona","upłynięta","upodabniana","upodobniona","upojona","upokorzana","upokorzona","upolowana","upominana","uporządkowana","upowszechniona","upozorowana","upozowana","uprana","uprasowana","upraszczana","uprawdopodobniona","uprawiana","uproszczona","uproszona","uprowadzana","uprowadzona","uprzątana","uprzątnięta","uprzedona","uprzedzana","uprzyjemniana","uprzyjemniona","uprzykrzana","uprzytomniona","upubliczniana","upubliczniona","upudrowana","upuszczana","upuszczona","upychana","urabiana","uraczana","uradowana","Urągana","uratowana","urażana","urażona","uregulowana","urobiona","uroniona","urośnięta","urozmaicana","urozmaicona","uruchamiana","uruchomiona","urwana","urywana","urządzana","urządzona","urzeczywistniana","urzeczywistniona","urżnięta","usadowiona","usadzona","usamowolniona","usankcjonowana","usatyfakcjonowana","uschnięta","uściskana","uścislona","uściśnięta","usidlona","usiedzona","uskładana","uskoczona","uskuteczniana","uskuteczniona","usłuchana","usługiwana","usłużona","usłyszana","usmażona","uśmiana","uśmiercana","uśmiercona","uśmierzona","uspana","uśpiona","uspokajana","uspokojona","uspołeczniana","usprawiedliwiana","usprawiedliwiona","usprawniona","usprzątana","ustabilizowana","ustalana","ustalona","ustanawiana","ustanowiona","ustąpiona","ustatkowana","ustawiana","ustawiona","ustępowana","ustosunkowana","ustrojona","ustrzegana","ustrzelona","usunięta","ususzona","usuwana","uświadamiana","uświadczona","uświadomiona","uświęcona","uświniona","usychana","usypana","usypiana","usystematyzowana","usytuowana","uszanowana","uszczelniana","uszczęśliwiana","uszczęśliwiona","uszczuplona","uszczypnięta","uszkadzana","uszkodzona","uszlachetniana","uszlachetniona","usztywniona","uszykowana","uszyta","utajniona","utargowana","utarta","utemperowana","utkana","utknięta","utkwiona","utoczona","utopiona","utorowana","utożsamiana","utożsamiona","utracona","utrącona","utrudniana","utrudniona","utrwalana","utrwalona","utrzymywana","utuczona","utulona","utwierdzana","utwierdzona","utworzona","utylizowana","uwalniana","uwalona","uwarunkowana","uważana","uwiązana","uwiązywana","uwidoczniona","uwieczniana","uwieczniona","uwielbiana","uwielbiona","uwieńczona","uwierana","uwierzona","uwieszona","uwieziona","uwięziona","uwijana","uwikłana","uwinięta","uwita","uwłaczana","uwłaszczona","uwodzona","uwolniona","uwsteczniana","uwsteczniona","uwydatniana","uwypiklona","uwzględniana","uwzględniona","użądlona","uzależniana","uzależniona","uzasadniana","uzasadniona","uzbierana","uzbrajana","uzbrojona","uzdrawiana","uzdrowiona","użerana","uzewnętrzniana","uzewnętrzniona","uzgadniana","uzgodniona","uziemiona","uzmysłowiona","uznana","uznawana","uzupełniana","uzupełniona","uzurpowana","użyczana","użyczona","uzyskana","uzyskiwana","użyta","używana","wabiona","wąchana","wachlowana","wahana","walczona","wałkowana","walnięta","walona","ważona","wbijana","wbita","wcelowana","wchłonięta","wciągana","wciągnięta","wcielana","wcielona","wcierana","wcięta","wcinana","wciskana","wciśnięta","wczepiona","wczołgana","wczuta","wczytana","wczytywana","wdana","wdarta","wdawana","wdepnięta","wdeptana","wdetonowana","wdmuchiwana","wdrapana","wdrapywana","wdrażana","wdrążona","wdrożona","wduszona","wdychana","wdzierana","wędkowana","wentylowana","wepchana","wepchnięta","werbowana","weryfikowana","wessana","wetkana","wetknięta","wezwana","wgłębiana","wgniatana","wgnieciona","wgrana","wgryzana","wgryziona","wiązana","wibrowana","widywana","widziana","wiedzona","wielbiona","wiercona","wierzgana","wierzona","wieszana","wietrzona","więżona","wikłana","windowana","winszowana","wiosłowana","wirowana","witana","wita","wizualizowana","wjeżdżana","wkalkulowana","wkładana","wklejana","wklejona","wklepana","wkłuta","wkomponowana","wkopana","wkopywana","wkraczana","wkradana","wkradziona","wkręcana","wkręcona","wkupiona","wkurwiana","wkuta","wkuwana","włączana","włączona","władana","władowana","włamana","włamywana","wlana","wlepiana","wlepiona","wlewana","wliczana","wliczona","włożona","wmanewrowana","wmanipulowana","wmawiana","wmieszana","wmówiona","wmurowana","wmuszona","wnerwiana","wnerwiona","wniesiona","wnikana","wniknięta","wnioskowana","wnoszona","wodowana","wojowana","wołana","woskowana","wożona","wpajana","wpakowana","wparowana","wpasowana","wpatrywana","wpędzana","wpędzona","wperswadowana","wpieniona","wpięta","wpisana","wpisywana","wpłacana","wpłacona","wplatana","wplątana","wplątywana","wpojona","wpompowana","wpraszana","wprawiana","wproszona","wprowadzana","wprowadzona","wpuszczona","wpychana","wrabiana","wręczana","wrobiona","wróżona","wryta","wrzucana","wrzucona","wrzynana","wsadzana","wsadzona","wskazana","wskazywana","wskórana","wskrzeszana","wskrzeszona","wślizgiwana","wślizgnięta","wsłuchana","wsparta","wspierana","wspięta","współczuta","współodczuwana","współtworzona","współżyta","wspomagana","wspominana","wspomniana","wstąpiona","wstawiana","wstawiona","wstrząsana","wstrząśnięta","wstrzelona","wstrzykiwana","wstrzyknięta","wstrzymana","wstrzymywana","wstukana","wsunięta","wsuwana","wsypana","wszamana","wszczepiana","wszczepiona","wszczęta","wszczynana","wszyta","wtajemniczana","wtajemniczona","wtapiana","wtargnięta","wtarta","wtaszczona","wtłoczona","wtopiona","wtrącona","wtryniana","wtulana","wtulona","wtykana","wwalona","wwiercana","wwiercona","wwieziona","wwożona","wyartykułowana","wyautowana","wybaczana","wybaczona","wybadana","wybatożona","wybawiona","wybebeszona","wybełkotana","wybiczowana","wybielana","wybielona","wybierana","wybijana","wybita","wybłagana","wyblaknięta","wybrandzlowana","wybrana","wybroniona","wybrzydzana","wybuchana","wybuchnięta","wybudowana","wybudzana","wybudzona","wyburzana","wyburzona","wycackana","wycałowana","wyceniana","wyceniona","wychlana","wychłostana","wychodowana","wychowana","wychowywana","wychrobotana","wychwalana","wychwycona","wychylana","wychylona","wyciągana","wyciągnięta","wyciekana","wycieniowana","wycierana","wycięta","wycinana","wyciskana","wyciśnięta","wyciszana","wyciszona","wycofana","wyćwiczona","wycyckana","wycyganiona","wyczarowana","wyczarterowana","wyczekana","wyczekiwana","wyczerpana","wyczesana","wyczołgana","wyczołgiwana","wyczuta","wyczuwana","wyczyniana","wyczyszczona","wyczytana","wyczytywana","wydalana","wydalona","wydana","wydębiona","wydedukowana","wydelegowana","wydepilowana","wydeptywana","wydłubana","wydłubywana","wydłużana","wydłużona","wydmuchana","wydmuchiwana","wydobyta","wydobywana","wydojona","wydoroślana","wydostana","wydrana","wydrapana","wydrapywana","wydrążona","wydrukowana","wydukana","wyduszona","wydychana","wydziedziczona","wydzielana","wydzielona","wydzierana","wydzierżawiona","wydziobana","wydziwiana","wydzwaniana","wyedukowana","wyedytowana","wyeeliminowana","wyegzekwowana","wyeksmitowana","wyekspediowana","wyeksploatowana","wyeksponowana","wyeksportowana","wyeliminowana","wyemigrowana","wyemitowana","wyewoluowana","wyfrunięta","wygadana","wygadywana","wyganiana","wygarbowana","wygarniana","wygarnięta","wygasana","wygaśnięta","wygaszana","wygaszona","wygenerowana","wygięta","wyginana","wygładzana","wygładzona","wygłaszana","wygłodzona","wygłosowana","wygłoszona","wygłówkowana","wygnana","wygolona","wygoniona","wygooglowana","wygospodarowana","wygotowana","wygrana","wygrawerowana","wygrażana","wygrywana","wygryziona","wygrzana","wygrzebana","wygrzebywana","wygrzewana","wygubiona","wyhaczona","wyhaftowana","wyhamowana","wyhodowana","wyizolowana","wyjadana","wyjaśniana","wyjaśniona","wyjawiana","wyjawiona","wyjedzona","wyjęta","wyjmowana","wykadrowana","wykalibrowana","wykalkulowana","wykańczana","wykantowana","wykąpana","wykaraskana","wykarczowana","wykarmiana","wykasowana","wykastrowana","wykazana","wykazywana","wykierowana","wykitowana","wykiwana","wykładana","wyklarowana","wyklepana","wyklinana","wykłócana","wykluczana","wykluczona","wykluta","wykłuta","wykminiona","wykolejona","wykołowana","wykombinowana","wykonana","wykończona","wykonywana","wykopana","wykopnięta","wykopywana","wykorkowana","wykorzeniana","wykorzeniona","wykorzystana","wykorzystywana","wykoszona","wykpita","wykradana","wykradnięta","wykręcana","wykręcona","wykreowana","wykreślana","wykreślona","wykrochmalona","wykrojona","wykrwawiana","wykrwawiona","wykryta","wykrywana","wykrzesana","wykrztuszona","wykrzyczona","wykrzykiwana","wykrzyknięta","wykrzywiana","wykształcona","wyksztuszona","wykupiona","wykupywana","wykuta","wykuwana","wyłączana","wyłączona","wylądowana","wyładowana","wyładowywana","wyłajana","wyłamana","wyłamywana","wyłaniana","wylansowana","wylana","wyłapana","wyłapywana","wyławiana","wyleasingowana","wyleczona","wylęgana","wylegimytowana","wylewana","wyłgana","wylicytowana","wyliczana","wyliczona","wylizana","wylizywana","wylogowana","wyłoniona","wylosowana","wyłowiona","wyłożona","wyłudzana","wyłudzona","wyłupana","wyłuskana","wyłuskiwana","wyłuszczona","wyluzowana","wymacana","wymachiwana","wymagana","wymahiwana","wymalowana","wymamrotana","wymanewrowana","wymarzona","wymasowana","wymawiana","wymazana","wymazywana","wymeldowana","wymeldowywana","wymiatana","wymieciona","wymieniana","wymieniona","wymierzana","wymieszana","wymigana","wymigiwana","wymijana","wyminięta","wymknięta","wymoczona","wymodelowana","wymontowana","wymordowana","wymsknięta","wymuszana","wymyślana","wymyślona","wymyta","wynagradzana","wynagrodzona","wynajdowana","wynajdywana","wynajęta","wynajmowana","wynaleziona","wynarodowiona","wynegocjowana","wyniesiona","wyniknięta","wyniszczana","wyniszczona","wyniuchana","wynoszona","wynurzana","wyobrażana","wyobrażona","wyodrębniona","wyolbrzymiana","wyolbrzymiona","wyorbowana","wyosiowana","wyostrzana","wyostrzona","wypaczana","wypakowana","wypakowywana","wypalana","wypalona","wypałowana","wyparowana","wyparta","wypasana","wypastowana","wypatroszona","wypatrywana","wypatrzona","wypchana","wypchnięta","wypędzana","wypędzlowana","wypełniana","wypełniona","wypersfadowana","wyperswadowana","wypierana","wypięta","wypijana","wypinana","wypisana","wypisywana","wypita","wypłacana","wypłacona","wypłakana","wypłakiwana","wypłaszczona","wyplatana","wyplątana","wypleniona","wyplewiona","wypłoszona","wypłukana","wypłukiwana","wypluta","wypluwana","wypocona","wypoczęta","wypolerowana","wypominana","wypomniana","wypompowana","wypompowywana","wyposażona","wypowiadana","wypowiedziana","wypoziomowana","wypożyczana","wypracowana","wypracowywana","wyprana","wyprasowana","wypraszana","wyprawiana","wyprawiona","wypróbowana","wyprodukowana","wyprojektowana","wypromieniowana","wypromowana","wyprostowana","wyprostowywana","wyproszona","wyprowadzana","wyprowadzona","wypróżniana","wypróżniona","wypruta","wypruwana","wyprzedana","wyprzedawana","wyprzedzana","wyprzedzona","wyprzęgana","wypstrykana","wypucowana","wypuszczana","wypuszczona","wypychana","wypytana","wypytywana","wyrąbana","wyrabiana","wyrąbywana","wyratowana","wyrażana","wyrażona","wyrecytowana","wyręczana","wyręczona","wyregulowana","wyrejestrowana","wyremontowana","wyreżyserowana","wyrobiona","wyrolowana","wyrośnięta","wyrównana","wyrównywana","wyróżniana","wyróżniona","wyrugowana","wyruszana","wyrwana","wyrypana","wyrysowana","wyryta","wyrywana","wyrządzona","wyrzeźbiona","wyrżnięta","wyrzucana","wyrzucona","wyrzygana","wyrzynana","wyrzywana","wysączona","wysadzana","wysadzona","wyschnięta","wyściskana","wyselekcjonowana","wysępiona","wysiadywana","wysiedzona","wysilana","wysilona","wyskakiwana","wyskalowana","wyskoczona","wyskrobana","wyskubywana","wysłana","wyśledzona","wyślizgiwana","wyślizgnięta","wysłowiona","wysłuchana","wysłuchiwana","wysmagana","wysmarkana","wysmarowana","wysmażana","wysmażona","wyśmiana","wyśmiewana","wysmołowana","wysmyrana","wyśniona","wysnuta","wysnuwana","wysondowana","wyspecjalizowana","wyśpiewana","wyśpiewywana","wyspowiadana","wysprzątana","wysprzedana","wyssana","wystartowana","wystawiona","wysterelizowana","wysterylizowana","wystosowana","wystosowywana","wystraszona","wystrojona","wystrugana","wystrychnięta","wystrzegana","wystrzelana","wystrzeliwana","wystrzelona","wystudzona","wystukana","wystukiwana","wystygnięta","wysunięta","wysuszana","wysuwana","wyswatana","wyświadczana","wyświadczona","wyświetlana","wyświetlona","wyswobodzona","wysyłana","wysypana","wysypywana","wysysana","wyszabrowana","wyszalana","wyszarpana","wyszarpnięta","wyszasowana","wyszczotkowana","wyszczuplona","wyszeptana","wyszkolona","wyszlifowana","wyszorowana","wyszperana","wyszukana","wyszukiwana","wyszumiona","wyszykowana","wyszyta","wytapetowana","wytargana","wytargowana","wytarta","wytarzana","wytaszczona","wytatuowana","wytchnięta","wytępiona","wytknięta","wytłoczona","wytłumaczona","wytłumiona","wytoczona","wytrąbiona","wytrącana","wytrącona","wytransmitowana","wytransportowana","wytrenowana","wytresowana","wytriangulowana","wytropiona","wytruta","wytrząsana","wytrzasnięta","wytrząśnięta","wytrzebiona","wytrzepana","wytrzeszczana","wytrzeźwiana","wytrzymana","wytrzymywana","wytwarzana","wytworzona","wytyczona","wytykana","wytypowana","wyuczona","wywabiana","wywabiona","wywąchana","wywalana","wywalczona","wywalona","wywarta","wywarzana","wyważana","wyważona","wywęszana","wywężykowana","wywiana","wywiązana","wywiązywana","wywierana","wywiercona","wywieszana","wywieszona","wywietrzona","wywieziona","wywijana","wywindowana","wywinięta","wywłaszczona","wywlekana","wywnętrzniona","wywnioskowana","wywodzona","wywolana","wywoływana","wywoskowana","wywożona","wywracana","wywrócona","wywróżona","wywyższana","wyżalona","wyzbyta","wyzdrowiona","wyżebrana","wyżerana","wyzerowana","wyzionięta","wyznaczana","wyznaczona","wyznana","wyznawana","wyzwalana","wyzwana","wyzwolona","wyzygzakowana","wyżynana","wyzyskana","wyzyskiwana","wyżyta","wyzywana","wyżywana","wyżywiona","wzbijana","wzbita","wzbogacana","wzbogacona","wzbraniana","wzbudzana","wzbudzona","wzburzana","wzburzona","wżeniona","wzięta","wzmacniona","wzmagana","wzmocniona","wznawiana","wzniecana","wznieciona","wzniesięta","wznoszona","wznowiona","wzorowana","wzrośnięta","wzruszona","wzwyżana","wzywana","zaabordowana","zaadaptowana","zaadoptowana","zaadresowana","zaakcentowana","zaakceptowana","zaaklimatyzowana","zaalarmowana","zaanektowana","zaangażowana","zaanonsowana","zaapelowana","zaaplikowana","zaaportowana","zaaprobowana","zaaranżowana","zaaresztowana","zaatakowana","zabaczona","zabalowana","zabandażowana","zabarwiona","zabarykadowana","zabawiana","zabawiona","zabepieczana","zabetonowana","zabezpieczona","zabierana","zabita","zabłądzona","zablefowana","zabłocona","zablokowana","zabraniana","zabrana","zabrnięta","zabroniona","zabrudzona","zabudowana","zabukowana","zabulona","zaburzona","zabutelkowana","zacementowana","zacerowana","zachciana","zachęcana","zachęcona","zachlapana","zachodzona","zachomikowana","zachorowana","zachowana","zachowywana","zachwalana","zachwalona","zachwiana","zachwycona","zaciągana","zaciągnięta","zaciążona","zaciekawiona","zaciemniana","zaciemniona","zacierana","zacieśniona","zacięta","zacinana","zaciskana","zaciśnięta","zaćmiona","zacumowana","zacytowana","zaczadzona","zaczarowana","Zaczepiana","zaczepiona","zaczerpana","zaczesana","zaczęta","zaczołgana","zaczynana","zadarta","zadawalana","zadawana","zadbana","zadebiutowana","zadedykowana","zadeklamowana","zadeklarowana","zademonstrowana","zadenucjowana","zadepeszowana","zadeptana","zadeptywana","zadęta","zadławiona","żądlona","zadłużana","zadłużona","zadokowana","zadomowiona","zadowalana","zadrapana","zadraśnięta","zadręczana","zadręczona","zadrutowana","zadurzana","zadurzona","zaduszona","zadymiona","zadźgana","zadziobana","zadziwiana","zadziwiona","zafakturowana","zafałszowana","zafarbowana","zafiksowana","zafundowana","zagadana","zagadnięta","zagadywana","zagajona","zaganiana","zagapiona","zagarażowana","zagarniana","zagarnięta","zagaszona","zagazowana","zagęszczona","zagięta","zaginana","zaginięta","zagłębiana","zagłębiona","zagłodzona","zagłuszana","zagłuszona","zagmatwana","zagnana","zagnieżdżona","zagojona","zagoniona","zagospodarowana","zagotowana","zagrabiona","zagradzana","zagrażana","zagrodzona","zagrywana","zagryzana","zagryziona","zagrzana","zagrzebana","zagrzewana","zagubiona","zagwarantowana","zahaczona","zahamowana","zahandlowana","zaharowana","zahartowana","zahipnotyzowana","zaholowana","zaimitowana","zaimplantowana","zaimplementowana","zaimprowizowana","zainaugurowana","zainfekowana","zainicjowana","zainkasowana","zainscenizowana","zainspirowana","zainstalowana","zainteresowana","zaintrygowana","zaintubowana","zainwestowana","zaizolowana","zajadana","zajana","zajarana","zajechana","zajęta","zajmowana","zakablowana","zakamuflowana","zakasana","zakasowana","zakąszana","zakatalogowana","zakatowana","zakatrupiona","zakazana","zakażana","zakazywana","zakiszona","zakładana","zaklasyfikowana","zaklejana","zaklejona","zaklepana","zaklepywana","zaklinana","zaklinowana","zakłócana","zakłócona","zaklopotana","zakłuta","zakneblowana","zakodowana","zakolczykowana","zakolorowana","zakołysana","zakomunikowana","zakończona","zakonserwowana","zakopana","zakopywana","zakorzeniana","zakorzeniona","zakoszona","zakosztowana","zakotwiczana","zakotwiczona","zakpiona","zakradana","zakręcana","zakręcona","zakreślana","zakreślona","zakrwawiona","zakryta","zakrywana","zakrzyczana","zakrzyknięta","zakrzywiana","zakrzywiona","zaksięgowana","zaktualizowana","zaktywizowana","zaktywowana","zakumana","zakupiona","zakurzona","zakuta","zakuwana","zakwaterowana","zakwestionowaa","zakwitnięta","załączona","załadowana","załagodzona","zalamana","zalaminowana","załamywana","zalana","załapana","załatana","załatwiana","załatwiona","zalatywana","zalecana","zalecona","zaleczona","zalegalizowana","zalegana","zalepiana","zalepiona","zalewana","zaliczana","zaliczona","załkana","zalogowana","żałowana","założona","zaludniona","zamacana","zamachnięta","zamącona","zamalowana","zamanewrowana","zamanifestowana","zamarkowana","zamartwiana","zamarynowana","zamarzana","zamarznięta","zamaskowana","zamawiana","zamazana","zamazywana","zamęczana","zamęczona","zameldowana","zamelinowana","zamerykanizowana","zamiatana","zamieniana","zamieniona","zamieszana","zamieszczana","zamieszczona","zamieszkana","zamieszkiwana","zaminowana","zamknięta","zamocowana","zamoczona","zamontowana","zamordowana","zamortyzowana","zamotana","zamówiona","zamrażana","zamroczona","zamrożona","zamulana","zamurowana","zamydlona","zamykana","zanalizowana","zanegowana","zaniechana","zanieczyszczana","zanieczyszczona","zaniedbana","zaniedbywana","zaniepokojona","zaniesiona","zanihilowana","zanikana","zaniknięta","zaniżana","zaniżona","zanoszona","zanotowana","zanucona","zanudzana","zanudzona","zanurzana","zanurzona","zanużona","zaobaczona","zaobserwowana","zaoferowana","zaofiarowana","zaogniana","zaogniona","zaokrąglana","zaokrąglona","zaokrętowana","zaopatrywana","zaopatrzona","zaopiekowana","zaorana","zaostrzana","zaostrzona","zaoszczędzona","zapadana","zapakowana","zapalana","zapalona","zapamiętana","zapamiętywana","zapanowana","zaparkowana","zaparowywana","zaparzana","zaparzona","zapaskudzona","zapauzowana","zapchana","zapędzana","zapełniana","zapełniona","zaperfumowana","zapeszana","zapewniana","zapewniona","zapieczętowana","zapierana","zapięta","zapijana","zapinana","zapisana","zapisuwana","zapita","zapłacona","zapładniana","zaplamiona","zaplanowana","zaplątana","zapłodniona","zaplombowana","zapobiegana","zapodana","zapodawana","zapodziana","zapokojona","zapolowana","zapominana","zapomniana","zapowiadana","zapowiedziana","zapoznana","zapoznawana","zapożyczona","zapracowywana","zaprana","zaprasowywana","zapraszana","zaprawiona","zaprenumerowana","zaprezentowana","Zaprogramowana","zaprojektowana","zaproponowana","zaproszona","zaprotokołowana","zaprowadzana","zaprowadzona","zaprzątana","zaprzeczana","zaprzeczona","zaprzedana","zaprzedawana","zaprzęgana","zaprzepaszczana","zaprzestana","zaprzestawana","zaprzyjaźniona","zapudłowana","zapunktowana","zapuszczana","zapuszczona","zapuszkowana","zapychana","zapylana","zapylona","zapytana","zarabiana","zaranżowana","zarażana","zarażona","zarecytowana","zaręczana","zaręczona","zarejestrowana","zareklamowana","zarekomendowana","zarekomondowana","zarekwirowana","zarezerwowana","zarobiona","żartowana","zarwana","zaryglowana","zarymowana","zarysowana","zarywana","zaryzykowana","zarządzana","zarżnięta","zarzucana","zarzynana","zasadzona","zaścielona","zasegurowana","zaserwowana","zasiadana","zasiana","zasiedlona","zasięgana","zasięgnięta","zasiewana","zasilana","zasilona","zaskakiwana","zaskarbiona","zaskoczona","zaskrobana","zasłaniana","zaślepiana","zaślepiona","zasłodzona","zasłoniona","zasłużona","zasmakowana","zaśmiecana","zaśmiecona","zasmradzana","zasmrodzona","zasmucana","zasmucona","zasolona","zaspakajana","zaśpiewana","zaspokajana","zaspokojona","zasponsorowana","zaśrubowywana","zassana","zastana","zastąpiona","zastawiana","zastawiona","zastępowana","zastopowana","zastosowana","zastraszana","zastraszona","zastrzelona","zasugerowana","zasunięta","zasuwana","zaświadczona","zaświecona","zaświoniona","zasyfiona","zasygnalizowana","zasymilowana","zasymulowana","zasypana","zasypywana","zasysana","zaszachowana","zaszantażowana","zaszargana","zaszczepiana","zaszczepiona","zaszczuta","zaszczycana","zaszczycona","zaszeptana","zaszeregowana","zaszlachtowana","zasznurowana","zaszpachlowana","zasztyletowana","zaszufladkowana","zaszyfrowana","zaszyta","zaszywana","zataczana","zatajana","zatajona","zatamowana","zatankowana","zatapiana","zatargana","zatarta","zatelegrafowana","zatemperowana","zatęskniona","zatkana","zatknięta","zatoczona","zatonięta","zatopiona","zatracana","zatracona","zatriumfowana","zatrudniana","zatrudniona","zatruta","zatruwana","zatrzaskiwana","zatrzaśnięta","zatrząśnięta","zatrzymana","zatrzymywana","zatuszowana","zatwierdzana","zatwierdzona","zatykana","zatynkowana","zatytułowana","zauploadowana","zauroczona","zautomatyzowana","zauważana","zauważona","zawadzana","zawalana","zawalczona","zawalona","zawarta","zaważona","zawdzięczana","zawetowana","zawężona","zawiadamiana","zawiadomiona","zawiązana","zawiązywana","zawiedzona","zawierana","zawierzona","zawieszana","zawieszona","zawieziona","zawijana","zawinięta","zawiniona","zawiśnięta","zawitana","zawładnięta","zawłaszczona","zawodzona","zawojowana","zawołana","zawoskowana","zawożona","zawracana","zawrócona","zawstydzana","zażądana","zażartowana","zazdroszczona","zażegnana","zażenowana","zaznaczana","zaznajomiona","zaznana","zaznawana","zażyczona","zażyta","zażywana","zbaczana","zbadana","zbagatelizowana","zbajerowana","zbałamucona","zbalansowana","zbalsamowana","zbankrutowana","zbawiana","zbawiona","zbesztana","zbezczeszczona","zbierana","zbijana","zbita","zbliżona","zbluzgana","zbojkotowana","zbrojona","zbrukana","zbszczecona","zbudowana","zbudzona","zbuntowana","zburzona","zbyta","zbywana","zchwytana","zcięta","zciszona","zdana","zdarta","zdeaktywowana","zdecydowana","zdefiniowana","zdeflorowana","zdegradowana","zdejmowana","zdeklarowana","zdekodowana","zdekompresowana","zdekoncentrowana","zdekonstruowana","zdelegalizowana","zdemaskowana","zdementowana","zdemolowana","zdemontowana","zdemoralizowana","zdenerwowana","zdeponowana","zdeprymowana","zdeptana","zderzana","zderzona","zdestabilizowana","Zdetonowana","zdetronizowana","zdewastowana","zdewaulowana","zdezerterowana","zdezintegrowana","zdezorientowana","zdezynfektowana","zdiagnozowana","zdjęta","zdławiona","zdmuchiwana","zdmuchnięta","zdobyta","zdobywana","zdołowana","zdominowana","zdopingowana","zdrabniana","zdradzana","zdradzona","zdrapana","zdrapywana","zdrutowana","zdruzgotana","zduplikowana","zduszona","zdwojona","zdyscyplinowana","zdyskredytowana","zdyskwalifikowana","zdystansowana","zdzielona","zdzierana","zdzierżona","zdziesiątkowana","Zdzwoniona","zebrana","zechciana","zedytowana","żegnana","żeniona","zepchnięta","zepsuta","żerowana","zerwana","zerżnięta","zeskakiwana","zeskanowana","zeskrobywana","zesłana","ześlizgiwana","ześlizgnięta","zesmolona","zespawiana","zespolona","zessana","zestawiana","zestawiona","zestresowana","zestrzeliwana","zestrzelona","zeswatana","zeszklona","zeszlifowana","zetknięta","zezłoszczona","zeznana","zeznawana","zezwalana","zezwolona","zfinansowana","zgadana","zgadywana","zgajana","zganiona","zgarnięta","zgaśnięta","zgaszona","zgięta","zginana","zgładzona","zgłaszana","zgłębiana","zgłębiona","zgłośniona","zgłoszona","zgłuszona","zgniatana","zgnieciona","zgnita","zgnojona","zgodzona","zgolona","zgoniona","zgotowana","zgrabiona","zgrillowana","zgromadzana","zgromadzona","zgrupowana","zgrzeszona","zgrzytana","zgubiona","zgwałcona","zhackowana","zhakowana","zhańbiona","zhandlowana","zharmonizowana","zidentyfikowana","ziewana","zignorowana","zilustrowana","zinfiltrowana","zintegrowana","zintensyfikowana","zinterpretowana","zinwentaryzowana","zirytowana","zjadana","zjawiana","zjednana","zjednoczona","zjedzona","zjeżdżona","zkontaktowana","zkserowana","złączona","złagodzona","złajana","złamana","zlana","złapana","zlecana","zlecona","zlekceważona","zlepiana","zlepiona","zlewana","zlicytowana","zliczana","zliczona","zlikwidowana","zlinczowana","zlitowana","zlizana","zlizywana","złoita","zlokalizowana","złomowana","żłopana","złowiona","złożona","złupiona","złuszczana","zluzowana","zmacana","zmącona","zmagana","zmagazynowana","zmajstrowana","zmaksylizowana","zmanipulowana","zmarnowana","zmartwychwstana","zmarznięta","zmasakrowana","zmaterializowana","zmawiana","zmazana","zmazywana","zmbobardowana","zmiatana","zmiażdżona","zmiękczona","zmielona","zmieniana","zmieniona","zmierzana","zmierzona","zmierzwiona","zmieszana","zmieszczona","zmiksowana","zminiaturyzowana","zminimalizowana","zmniejszana","zmniejszona","zmobilizowana","zmoczona","zmodernizowana","zmodyfikowana","zmoknięta","zmonopolizowana","zmontowana","zmostkowana","zmotywowana","zmówiona","zmrożona","zmrużona","zmumifikowana","zmuszana","zmuszona","zmutowana","zmyślana","zmyta","zmywana","znacjonalizowana","znajdowana","znajdywana","znakowana","znaleziona","znana","znęcana","zneutralizowana","zniechęcona","znieczulona","zniekształcana","zniekształcona","znienawidzona","znieprawiona","zniesiona","zniesławiana","zniesławiona","zniewalana","znieważana","znieważona","zniewolona","zniszczona","zniweczona","zniwelowana","zniżana","zniżona","znokautowana","znormalniona","znoszona","znudzona","zobaczona","zobowiązana","zobrazowana","zogniskowana","żonglowana","zoomowana","zoperowana","zoptymalizowana","zorbita","zorganizowana","zorientowana","zostawiana","zostawiona","zpłacona","zprowokowana","zrabowana","zrachowana","zracjonalizowana","zraniona","zraportowana","zrażana","zrażona","zrealizowana","zrecenzowana","zredagowana","zredukowana","zreferowana","zreformowana","zrefowana","zrefundowana","zregenerowana","zrehabilitowana","zreinkarnowana","zreintegrowana","zrekonfigurowana","zrekonstruowana","zrekrutowana","zrekrystalizowana","zrelacjonowana","zrelaksowana","zremiksowana","zremisowana","zreorganizowana","zreperowana","zreplikowana","zresetowana","zresocjalizowana","zrestartowana","zrestrukturyzowana","zrewanżowana","zrewidowana","zrewolucjonizowana","zrezygnowana","zrobiona","zrolowana","zroszona","zrównana","zrównoważona","zrównywana","zróżnicowana","zrozumiana","zrugana","zruinowana","zrujnowana","zrymowana","zrywana","zrzędzona","zrzeszona","zrzucana","zrzucona","zsumowana","zsunięta","zsuwana","zsynchronizowana","zsyntetyzowana","zsypywana","zszargana","zszokowana","zszyta","zszywana","ztarta","żuta","zutylizowana","zużyta","zużywana","zwabiana","zwabiona","zwalana","zwalczona","zwalniana","zwalona","zwana","zwaporyzowana","zwątpiona","zważana","zważona","zwędzona","zwerbalizowana","zwerbowana","zweryfikowana","zwęszona","zwężona","zwiastowana","związana","związywana","zwichnięta","zwiedzana","zwiedzona","zwiększona","zwieńczona","zwierzana","zwieszana","zwieszona","zwietrzona","zwijana","zwilżona","zwinięta","zwizualizowana","zwlekana","zwodowana","zwodzona","zwołana","zwolniona","zwoływana","zwożona","zwracana","zwrócona","zwyciężana","zwymiotowana","życzona","żygana","zygzakowana","zyskana","zyskiwana","żyta","zżarta","zżerana","zżynana","zżyta","abdykowane","absorbowane","adaptowane","administrowane","adoptowane","adorowane","adresowane","afiszowane","agitowane","akcentowane","akceptowane","aklimatyzowane","akompaniowane","aktualizowane","aktywowane","akumulowane","alaromowane","alienowane","amerykanizowane","amortyzowane","amputowane","analizowane","angażowane","anihilowane","animowane","anonsowane","antropomorfizowane","antydatowane","anulowane","apelowane","aportowane","aranżowane","archiwizowane","aresztowane","argumentowane","artykułowane","ascendowane","asekurowane","asymilowane","asystowane","atakowane","autoryzowane","awanturowane","babrane","baczone","badane","bagatelizowane","bajerowane","bałamucone","balangowane","balansowane","banalizowane","bandażowane","bankrutowane","baraszkowane","barwione","bawione","bazgrane","bazowane","bębnione","bełkotane","besztane","biadolone","biczowane","bite","błagane","błaznowane","blefowane","błogosławione","blokowane","bluzgane","błyskane","błyszczące","boczone","bogacone","bojkotowane","boksowane","bombardowane","bopowane","borowane","brandzlowane","brane","brasowane","bratane","bredzone","brnięte","brodzone","bronione","brudzone","brylowane","budowane","budzone","bujane","bulone","bulwersowane","bumelowane","burzone","butelkowane","bywane","cackane","całowane","capnięte","cechowane","celebrowane","celowane","cenione","cenzurowane","chciane","chlane","chlapane","chlapnięte","chlastane","chłodzone","chlostane","chlubione","chodowane","chomikowane","chorowane","chowane","chronione","chrupane","chrzczone","chute","chwalone","chwycone","chwytane","chybotane","chylone","ciachnięte","ciągane","ciągnięte","ciemiężone","cierpiane","cieszone","cięte","ciskane","ciśnięte","ciułane","cmokane","cmoknięte","cofane","cofnięte","ćpane","cucone","cudzołożone","cumowane","ćwiartowane","ćwiczone","cykane","cytowane","czajone","czarowane","czczone","czepiane","czepione","czerpane","czesane","częstowane","czochrane","czołgane","czute","czytane","czyte","darowane","darte","darzone","datowane","dawane","dbane","deaktywowane","debatowane","dedukowane","dedykowane","defibrylowane","defilowane","definiowane","defraudowane","degradowane","degustowane","deklamowane","deklarowane","dekodowane","dekompresowane","dekorowane","dekretowane","delegowane","delektowane","deliberowane","demaskowane","dementowane","demolowane","demonizowane","demonstrowane","demoralizowane","denerwowane","denuncjowane","depeszowane","depilowane","deportowane","deprawowane","deptane","deratyzowane","destabilizowane","destylowane","desygnowane","determinowane","detonowane","dewastowane","dewaulowane","dezaktywowane","dezorientowane","dezynfekowane","diagnozowane","dilowane","dłubane","dłużone","dmuchane","dmuchnięte","dobiegane","dobierane","dobijane","dobite","dobrane","dobudzone","dobyte","doceniane","docenione","dochodzone","dochowane","dochowywane","dociągnięte","dociekane","docięte","docinane","dociskane","dociśnięte","doczekane","doczepione","doczołgane","doczyszczone","doczytane","dodane","dodawane","dodrukowane","dodrukowywane","dofinansowane","dofinansowywane","dogadane","dogadywane","dogadzane","doganiane","doglądane","doglądnięte","dognane","dogodzone","dogonione","dograne","dogryzane","dogryzione","dogrzane","dogrzebane","doinformowane","dojeżdżane","dojone","dojrzane","dojrzewane","dokańczane","dokarmiane","dokarmione","dokazane","dokazywane","dokładane","doklejone","dokonane","dokończone","dokonywane","dokopane","dokopywane","dokowane","dokręcane","dokręcone","dokształcane","dokształcone","dokuczane","dokumentowane","dokupione","dołączane","dołączone","doładowane","dolane","dolewane","doliczone","dołowane","dołożone","domagane","domalowane","domknięte","domniewywane","domówione","domyślane","domyślone","domyte","doniesione","donoszone","dopadane","dopadnięte","dopakowane","dopalone","dopasowane","dopasowywane","dopatrywane","dopatrzone","dopchane","dopchnięte","dopełniane","dopełnione","dopieszczone","dopięte","dopijane","dopilnowane","dopingowane","dopisane","dopisywane","dopite","dopłacane","dopłacone","dopłynięte","dopolerowane","dopompowane","dopowiedziane","dopracowane","dopracowywane","doprane","doprawione","doprecyzowane","doproszone","doprowadzane","doprowadzone","dopucowane","dopuszczane","dopuszczone","dopytywane","dorabiane","doradzane","doradzone","doręczane","doręczone","dorobione","dorównane","dorównywane","dorwane","dorysowane","dorzucane","dorzucone","doścignięte","dosiadane","dosięgnięte","doskoczone","doskonalone","dosładzane","dosłane","dosłyszane","dosolone","dośrodkowane","dossane","dostane","dostąpione","dostarczane","dostarczone","dostawane","dostawiane","dostawione","dostosowane","dostosowywane","dostrajane","dostrojone","dostrzegane","dosunięte","dosuwane","doświadczane","Doświetlone","dosypane","dosypywane","doszkolone","doszlifowane","doszorowane","doszukane","doszukiwane","doszyte","dotankowane","dotankowywane","dotargane","dotaszczone","dotknięte","dotlenione","dotłumaczone","dotowane","dotrwane","dotrzymane","dotrzymywane","dotykane","douczane","douczone","dowalone","dowiezione","dowodzone","dowożone","doznane","doznawane","dozorowane","dozowane","dożyte","dożywione","dramatyzowane","drapane","drapnięte","draśnięte","drażnione","drążone","dręczone","drenowane","drgane","drgnięte","drukowane","dryblowane","dryfowane","drzemane","dubbingowane","dublowane","duplikowane","duszone","dworowane","dygotane","dyktowane","dymane","dymione","dyrygowane","dyscyplinowane","dyskredytowane","dyskryminowane","dyskutowane","dyskwalifikowane","dysponowane","dystansowane","dystrybuowane","dywagowane","dźgane","dźgnięte","dziabnięte","dziedziczone","dziękowane","dzielone","dziergane","dzierżone","dziobane","dziurawione","dziurkowane","dźwigane","dźwignięte","edukowane","edytowane","egzaminowane","egzekutowane","egzekwowane","ekscytowane","ekshumowane","ekskomunikowane","eksmitowane","ekspandowane","eksperymentowane","eksploatowane","eksplorowane","eksponowane","eksportowane","eksterminowane","ekstradowane","ekstrapolowane","eliminowane","emancypowane","emanowae","emigrowane","emitowane","energetyzowane","eskortowane","etykietowane","ewakuowane","ewaluowane","fabrykowane","falowane","fałszowane","farbowane","faszerowane","faulowane","faworyzowane","fechtowane","fermentowane","ferowane","figurowane","filetowane","filmowane","filtrowane","finalizowane","finansowane","firmowane","fleszowane","folgowane","formułowane","forsowane","fotografowane","fundowane","gadane","ganiane","garbione","gardzone","garnirowane","gaszone","gawędzone","gaworzone","gazowane","gdakane","gderane","generalizowane","generowane","gięte","gilgotane","gładzone","głaskane","głodowane","głodzone","gloryfikowane","głosowane","głoszone","głowione","gmatwane","gmerane","gnane","gnębione","gniecione","gnite","gnojone","godzone","gojone","golnięte","golone","gonione","googlowane","gospodarowane","goszczone","gotowane","grabione","grane","grasowane","gratulowane","grillowane","grilowane","gromadzone","gromione","grożone","gruchane","gruchnięte","grupowane","grywane","gryzione","grzane","grzechotane","gubione","gustowane","gwałcone","gwarantowane","gwizdane","gwizdnięte","hackowane","haftowane","hajtnięte","hamowane","hańbione","handlowane","harcowane","harmonizowane","harowane","hartowane","hibernowane","hipnotyzowane","hodowane","holowane","hołubione","honorowane","hospitalizowane","huknięte","hulane","huśtane","idealizowane","identyfikowane","ignorowane","igrane","ilustrowane","imitowane","implantowane","implodowane","imponowane","importowane","improwizowane","indokrynowane","indukowane","infekowane","infiltrowane","informowane","ingerowane","inhalowane","inscenizowane","inspirowane","instalowane","instruowane","insynuowane","integrowane","interpretowane","interweniowane","intonowane","intubowane","inwestowane","inwigilowane","irytowane","iskrzone","izolowane","jadane","jawione","jazgotane","jednoczone","jedzone","kablowane","kadzone","kalane","kaleczone","kalkulowane","kamerowane","kamienowane","kamuflowane","kanalizowane","kantowante","kąpane","kapitulowane","kapowane","karane","karbonizowane","karcone","karczowane","karmione","kartkowane","kąsane","kasowane","kastrowane","katalogowane","katapultowane","katowane","katrupione","kierowane","kimane","kiszone","kiwane","kiwnięte","kłaniane","klapane","klapnięte","klarowane","klasyfikowane","klębione","klejone","klepane","klepnięte","klikane","kliknięte","klonowane","kłopotane","kłute","knocone","knute","kochane","koczowane","kodowane","kojarzone","kojfnięte","kojone","kolekcjonowane","kolektywizowane","kolidowane","kolonizowane","kolorowane","koloryzowane","kołowane","kołysane","kombinowane","komenderowane","komentowane","komercjalizowane","kompensowane","komplementowane","komplikowane","komponowane","kompromitowane","komunikowane","konane","koncentrowane","kończone","konfabulowane","konfiskowane","konfrontowane","konserwowane","konspirowane","konstruowane","konsultowane","konsumowane","kontaktowane","kontestowane","kontrastowane","kontrolowane","kontrowane","kontynuowane","kontynuuowane","konwertowane","konwojowane","koordynowane","kopane","kopcone","kopiowane","kopnięte","kopulowane","korelowane","korkowane","koronowane","korygowane","korzone","korzystane","koszone","kotwiczone","kozaczone","kozłowane","kpite","kradzione","krajane","krążone","kręcone","kremowane","kreowane","krochmalone","krojone","kropione","kruszone","krystalizowane","kryte","krytykowane","krzepnięte","krzyczane","krzyknięte","krzywdzone","krzywione","krzyżowane","kserowane","księgowane","kształcone","kształtowane","kulone","kultywowane","kumulowane","kupczone","kupione","kupowane","kupywane","kurczone","kurowane","kursowane","kurzone","kuszone","kute","kwalifikowane","kwestionowane","łączone","ładowane","łagodzone","łajdaczone","lakierowane","łamane","lamentowane","lansowane","lane","łapane","łaskotane","łaszone","latane","łatane","lawirowane","leczone","legalizowane","legitymowane","lekceważone","lepione","lewitowane","liberowane","licencjonowane","licytowane","liczone","likwidowane","linczowane","liniowane","literowane","litowane","lizane","liznięte","lobbowane","lokalizowane","losowane","łowione","łożone","lubiane","łudzone","lunatykowane","łupane","łupione","łuskane","lustrowane","łuszczone","luzowane","łykane","łyknięte","łyżeczkowane","macane","machane","machnięte","mącone","maczane","maganyzowane","maglowane","majaczone","majsterkowane","majtane","maksymalizowane","malowane","maltretowane","mamione","mamrotane","manewrowane","manifestowane","manipulowane","markowane","marnotrawione","marnowane","marszczone","marynowane","marznięte","masakrowane","maskowane","masowane","masturbowane","mataczone","materializowane","mawiane","mazane","maznięte","męczone","meldowane","merdane","metabolizowane","miażdżone","mielone","mierzone","mierzwione","mieszane","miętolone","migane","migdalone","migotane","mijane","miksowane","milowane","minięte","minimalizowane","miotane","mistyfikowane","mitygowane","mizdrzone","mlane","mniemane","mnożone","mobilizowane","mocowane","moczone","modelowane","modernizowane","modlone","modulowane","modyfikowane","molestowane","monitorowane","monopolizowane","montowane","mordowane","motywowane","mówione","mrożone","mrugane","mrużone","muskane","mutowane","mydlone","mylone","myszkowane","myte","nabazgrane","nabiegane","nabierane","nabite","nabrane","nabrojone","nabrudzone","nabyte","nabywane","nacelowane","nachapane","nachodzone","nachwalone","nachylone","naciągane","naciągnięte","nacierane","nacięte","nacinane","naciskane","naciśnięte","nacjonalizowane","naczepione","nadane","nadawane","nadchodzone","nadciągane","nadciągnięte","nadcięte","nadesłane","nadgonione","nadgryzane","nadgryzione","nadinterpretowane","nadłożone","nadmieniane","nadmienione","nadmuchane","nadrabiane","nadrobione","nadskakiwane","nadsłuchiwane","nadstawiane","nadstawione","nadszarpnięte","naduszone","nadużyte","nadużywane","nadwerężane","nadwyrężane","nadwyrężone","nadziane","nadzorowane","naelektryzowane","nafaszerowane","nagabywane","nagadane","nagięte","naginane","nagłaszane","nagłośnione","nagonione","nagradzane","nagrane","nagrodzone","nagromadzone","nagrywane","nagryzmolone","nagrzane","nagrzebane","nagrzewane","nagwizdane","naigrywane","najechane","najęte","najmowane","nakarmiane","nakarmione","nakazane","nakazywane","nakierowane","nakierowywane","nakładane","nakłamane","nakłaniane","naklejane","naklejone","naklepane","nakłonione","nakłute","nakłuwane","nakopane","nakręcane","nakręcone","nakreślane","nakreślone","nakruszone","nakryte","nakrywane","nakrzyczane","nakupione","naładowane","nalane","nałapane","nalepione","nalewane","naliczone","nałowione","nałożone","namaczane","namagnetyzowane","namalowane","namaszczane","namaszczone","namawiane","namęczone","namierzane","namieszane","namoczone","namówione","namydlane","namyślone","naniesione","naoliwiane","naoliwione","naopowiadane","naostrzone","napadane","napadnięte","napakowane","napalone","naparzane","napastowane","napawane","napchane","napędzane","napełniane","napełnione","napierane","napiętnowane","napięte","napinane","napisane","naplute","napływane","napoczęte","napojone","napompowane","napotkane","napotykane","napraszane","naprawiane","naprawione","naprężane","naprężone","napromieniowane","naprostowane","naprowadzane","naprowadzone","napsute","napuszczane","napuszczone","napychane","napytane","narąbane","naradzane","naradzone","narastane","narażane","narażone","nareperowane","narkotyzowane","narodzone","naruszane","naruszone","narwane","narysowane","narzucane","narzucone","nasączane","nasączone","nasadzone","nasiąkane","nasilane","nasilone","naskakiwane","naskoczone","naskrobane","naśladowane","nasłane","nasłuchane","nasłuchiwane","nasmarowane","nastąpione","nastawiane","nastawione","nastraszane","nastrojone","nastukane","nasunięte","nasuwane","naświetlane","nasycone","nasyłane","nasypane","naszczane","naszkicowane","naszpikowane","naszprycowane","naszykowane","naszyte","naszywane","natarte","natchnięte","natknięte","natlenione","natłuszczone","natrafione","natrząsane","natrząsnięte","nauczane","nauczone","nawadniane","nawalone","nawiązane","nawiązywane","nawiedzane","nawiedzone","nawiercone","nawiewane","nawiezione","nawigowane","nawijane","nawilżane","nawilżone","nawinięte","nawlekane","nawodnione","nawoływane","nawoskowane","nawożone","nawpychane","nawracane","nawrócone","nawrzucane","nawtykane","nawymyślane","nazbierane","nazmyślane","naznaczane","naznaczone","nazrywane","nazwane","nazywane","nęcone","negocjowane","negowane","nękane","neutralizowane","niańczone","niecierpliwione","niedoceniane","niedowidziane","nienawidzone","niesione","nikolone","niszczone","nitkowane","niuchane","niweczone","niwelowane","nokautowane","nominowane","notowane","nucone","numerowane","nurtowane","obaczone","obadane","obalane","obalone","obandażowane","obarczane","obarczone","obawiane","obchodzone","obciągnięte","obciążone","obcięte","obcinane","obcyndalane","obczajane","obczajone","obdarowane","obdarte","obdarzane","obdarzone","obdzielone","obdzierane","obdzwaniane","obdzwonione","obejmowane","oberwane","obessane","obezwładniane","obezwładnione","obfotografowane","obfotografowywane","obgadane","obgadywane","obgryzane","obgryzione","obiecane","obiecywane","obierane","obijane","obite","objadane","objaśniane","objawiane","objawione","objechane","objęte","objeżdżane","obkręcane","oblane","obłapiane","obłapywane","obłaskawiane","obłaskawione","obleciane","oblegane","oblewane","obliczane","obliczone","oblizane","obłowione","obłożone","obluzowane","obluzowywane","obmacane","obmacywane","obmawiane","obmyślane","obmyślone","obmyte","obmywane","obnażane","obniżane","obniżone","obnoszone","obowiązywane","obozowane","obrabiane","obrabowane","obracane","obradowane","obramowane","obraniane","obrane","obrastane","obrażane","obrażone","obrobione","obrócone","obrodzone","obronione","obrysowane","obrywane","obryzgane","obrzezane","obrzucane","obrzucone","obrzygane","obsadzane","obsadzone","obściskiwane","obserwowane","obsiane","obsikane","obsikiwane","obskakiwane","obskoczone","obskubane","obskubywane","obśliniane","obślinione","obsługiwane","obsłużone","obsmarowane","obstawiane","obstawione","obstrzeliwane","obsunięte","obsuwane","obsypane","obsypywane","obszukane","obszukiwane","obtaczane","obtarte","obtoczone","obudzone","obwąchane","obwąchiwane","obwiązane","obwiązywane","obwieszane","obwieszczane","obwieszczone","obwieszone","obwijane","obwiniane","obwinięte","obwołane","obyte","obżerane","ocalane","ocalone","ocechowane","oceniane","ocenione","ocenzurowane","ochładzane","ochlapane","ochlapywane","ochłodzone","ochłonięte","ochraniane","ochronione","ochrzaniane","ochrzczone","ociągane","ocielone","ocieplane","ocieplone","ocierane","ocknięte","ocucone","ocute","oczarowywane","oczekiwane","oczerniane","oczernione","oczyszczane","oczyszczone","odarte","odbębnione","odbetonowane","odbezpieczane","odbezpieczone","odbijane","odbite","odblokowane","odbudowane","odbudowywane","odbutowane","odbyte","odcedzane","odchorowane","odchowane","odchudzane","odchudzone","odchylane","odchylone","odciągane","odciągnięte","odciążone","odcierpione","odcięte","odcinane","odcisnięte","odcumowane","odcyfrowane","odcyfrowywane","odczarowane","odczekane","odczepiane","odczepione","odczute","odczuwane","odczynione","odczytane","odczytywane","oddalane","oddane","oddawane","oddelegowane","oddychane","oddzielane","oddzielone","odebrane","odegnane","odegrane","odejmowane","odepchnięte","oderwane","odeskortowane","odesłane","odespane","odessane","odetkane","odetnięte","odezwane","odfiltrowane","odgadnięte","odgadywane","odganiane","odgarniane","odgarnięte","odgięte","odgniatane","odgonione","odgradzane","odgrażane","odgrodzone","odgruzowane","odgrywane","odgryzane","odgryzione","odgrzane","odgrzebane","odgrzebywane","odgrzewane","odgwizdane","odhaczone","odholowane","odinstalowane","odizolowane","odjedzone","odjęte","odjonizowane","odkażane","odkażone","odkładane","odklejone","odkochane","odkodowane","odkodowywane","odkopane","odkopywane","odkorkowane","odkręcane","odkręcone","odkrojone","odkryte","odkrywane","odkupione","odkupywane","odkurzane","odkurzone","odkute","odłączane","odłączone","odłamywane","odlane","odlatywane","odlepiane","odlewane","odliczane","odliczone","odłożone","odłupane","odmachane","odmachiwane","odmalowane","odmarszczone","odmawiane","odmeldowane","odmieniane","odmienione","odmierzane","odmierzone","odmieszane","odmontowane","odmówione","odmrażane","odmrożone","odnajdowane","odnalezione","odnawiane","odniesione","odnoszone","odnotowane","odnotowywane","odnowione","odpakowane","odpakowywane","odpalane","odpalone","odpałzowane","odparowane","odparte","odpędzane","odpicowane","odpieczętowane","odpierane","odpięte","odpiłowane","odpiłowywane","odpinane","odpisane","odpisywane","odpłacane","odplamione","odplątane","odpłynięte","odpowietrzone","odpracowane","odpracowywane","odprasowane","odprawiane","odprawione","odprężane","odprostowane","odprowadzane","odprowadzone","odprute","odpryskane","odpukane","odpukiwane","odpuszczane","odpuszczone","odpychane","odrąbane","odrabiane","odrąbywane","odradzane","odradzone","odrapane","odrastane","odratowane","odreagowane","odremontowane","odrestaurowane","odrestaurowywane","odrobaczane","odrobione","odroczone","odrodzone","odrośnięte","odróżniane","odróżnione","odrysowane","odrywane","odrzucane","odrzucone","odsączane","odsączone","odsadzone","odseparowane","odsiadywane","odsiane","odsiewane","odsłaniane","odsłonięte","odsłuchane","odsłuchiwane","odsłużone","odśnieżane","odśnieżone","odsolone","odśpiewane","odsprzedane","odsprzedawane","odstąpione","odstawiane","odstawione","odstępowane","odstraszane","odstręczone","odstresowane","odstrzeliwane","odstrzelone","odsunięte","odsuwane","odświeżane","odświeżone","odsyłane","odsypywane","odsysane","odszczekane","odszczekiwane","odsztafirowane","odszukane","odszyfrowane","odszyfrowywane","odszykowane","odtrąbione","odtrącone","odtrute","odtwarzane","odtworzone","oduczone","odurzone","odwalane","odwalone","odwiązane","odwiązywane","odwiedzane","odwiedzone","odwieszone","odwiezione","odwijane","odwinięte","odwlekane","odwodnione","odwodzone","odwołane","odwoływane","odwożone","odwracane","odwrócone","odwzajemnione","odwzorowane","odżegnane","odziane","odziedziczone","odznaczane","odznaczone","odzwieciedlone","odzwierciedlane","odzwonione","odzwyczajone","odzyskane","odzyskiwane","odżyte","odzywiane","odżywione","oferowane","ofiarowane","ofiarowywane","ogarniane","ogarnięte","oglądane","ogłaszane","ogłoszone","ogłupiane","ogłupione","ogłuszone","ogołocone","ogolone","ograbiane","ograbione","ograniczane","ograniczone","ograne","ogrodzone","ogryzione","ogrzane","ogrzewane","okablowane","okaleczone","okantowane","okąpane","okazane","okazywane","okiełznane","okładane","okłamane","okłamywane","oklaskiwane","oklejone","oklepane","okopane","okopywane","okpione","okradane","okradzione","okraszone","okrążane","okrążone","okręcane","okręcone","określane","określone","okrojone","okryte","okrywane","okrzyknięte","okulawione","okupione","okupowane","olane","olewane","olśnięte","omamione","omawiane","omdlewane","omijane","ominięte","omotane","omówione","onanizowane","onieśmielane","onieśmielone","opadnięte","opakowane","opalane","opalone","opancerzone","opanowane","opanowywane","oparte","oparzone","opasane","opatentowane","opatrywane","opatrzone","opatulone","opchnięte","opędzane","opędzone","operowane","opętane","opętywane","opieczętowane","opiekowane","opierane","opijane","opisane","opisywane","opite","opłacane","opłacone","opłakane","opłakiwane","opłukane","oplute","opluwane","opływane","opodatkowane","opodatkowywane","oponowane","oporządzane","oporządzone","opowiadane","opowiedziane","opóźniane","opóźnione","opracowane","opracowywane","oprawiane","oprawione","oprowadzane","oprowadzone","opróżniane","opróżnione","opryskane","opryskiwane","opublikowane","opukane","opuszczane","opuszczone","opychane","opylone","orane","orbowane","organizowane","orientowane","oroszone","orzekane","orżnięte","osaczane","osaczone","osadzane","osądzane","osadzone","osądzone","oscylowane","osiadane","osiągane","osiągnięte","osiedlane","osiedlone","osiedzone","osierocone","osiodłane","oskalpowane","oskarżone","oskrobane","oskrzydlane","oskrzydlone","oskubane","oskubywane","osłabiane","osłabione","oślepiane","oślepione","oślepnięte","ośliniane","osłodzone","osłonione","osłuchane","osmalone","ośmielone","ośmieszane","ośmieszone","ostrzegane","ostrzelane","ostrzelite","ostrzone","ostudzone","osunięte","osuszane","osuszone","osuwane","oswajane","oświadczane","oświadczone","oświecane","oświecione","oświetlane","oświetlone","oswobadzane","oswobodzone","oswojone","oszacowane","oszałamiane","oszczane","oszczędzane","oszczędzone","oszklone","oszlifowane","oszołomione","oszpecone","oszukane","oszukiwane","oszwabione","otaczane","otarte","otoczone","otrute","otruwane","otrząsane","otrząśnięte","otrzepane","otrzeźwione","otrzymane","otrzymywane","otulone","otumanione","otwierane","otworzone","otwarte","owane","owdowione","owiane","owijane","owinięte","ozdabiane","ozdobione","ozdrowione","ożenione","oznaczane","oznaczone","oznajmiane","oznajmione","oznakowane","ożyte","ożywane","ożywiane","ożywione","pachnące","pacnąte","pakowane","paktowane","pałane","pałaszowane","palnięte","palone","pamiętane","panoszone","paprane","parafrazowane","paraliżowane","parkowane","parowane","partaczone","parte","parzone","pastowane","paszone","patrolowane","patroszone","patrzone","pauzowane","pchane","pchnięte","pdholowane","pedałowane","pękane","pęknięte","pełnione","penetrowane","perforowane","perfumowane","perswadowane","piastowane","pichcone","pielęgnowane","pielone","pienione","pieszczone","piętnowane","pięte","pijane","pikietowane","piknikowane","pikowane","pilnowane","pilotowane","piłowane","pisane","pisywane","pite","płacone","plądrowane","plamione","planowane","płaszczone","plątane","płatane","pławione","plewione","płonące","płoszone","plotkowane","plugawione","płukane","pluskane","plute","pobaraszkowane","pobierane","pobite","pobłażane","pobłogosławione","pobrane","pobrudzone","pobudzane","pobudzone","pobujane","pocałowane","pocerowane","pochłaniane","pochlapane","pochlebiane","pochłonięte","pochowane","pochwalane","pochwalone","pochwycone","pochylane","pochylone","pociachane","pociągane","pociągnięte","pocierane","pocieszane","pocieszone","pocięte","pocone","pocukrowane","poćwiartowane","poczesane","poczęstowane","poczęte","poczochrane","poczute","poczytane","poczytywane","podane","podarowane","podarte","podawane","podążone","podbierane","podbijane","podbite","podbudowane","podbudowywane","podburzane","podburzone","podchwycone","podciągane","podciągnięte","podcierane","podcięte","podcinane","podczepione","poddane","poddawane","podebrane","podejmowane","podejrzane","podejrzewane","podelektowane","podeptane","poderwane","podesłane","podglądane","podgolone","podgonione","podgryzane","podgrzane","podgrzewane","podjadane","podjedzone","podjęte","podkablowane","podkarmione","podkładane","podklejone","podkolorowane","podkołowane","podkopane","podkopywane","podkradane","podkradnięte","podkręcane","podkręcone","podkreślane","podkreślone","podkształcone","podkulone","podkupione","podkurzone","podkute","podłączane","podłączone","podładowane","podłamane","podlane","podłapane","podleczone","podlegane","podlewane","podliczane","podliczone","podlizane","podlizywane","podłożone","podmalowane","podmieniane","podmienione","podmuchane","podmyte","podnajęte","podniecane","podniecone","podniesione","podnoszone","podołane","podopingowane","podostrzone","podotykane","podpadnięte","podpalane","podpalone","podparte","podpatrywane","podpatrzone","podpieczętowane","podpiekane","podpierane","podpięte","podpiłowane","podpinane","podpisane","podpisywane","podpłacone","podpłynięte","podpompowane","podporządkowane","podporządkowywane","podpowiadane","podpowiedziane","podprowadzane","podpuszczane","podpuszczone","podpychane","podpytane","podrabiane","podrapane","podrasowane","podratowane","podrażnione","podręczone","podregulowane","podreperowane","podretuszowane","podrobione","podroczone","podróżowane","podrygiwane","podrywane","podrzucane","podrzucone","podrzynane","podsadzone","podskubywane","podsłuchane","podsłuchiwane","podsmażane","podsmażone","podśpiewywane","podstawiane","podstawione","podstemplowane","podstrojone","podsumowane","podsumowywane","podsunięte","podsuwane","podświetlane","podsycane","podsycone","podsyłane","podsypane","podszczypywane","podszkolone","podszlifowane","podszykowane","podszyte","podszywane","podtapiane","podtarte","podtopione","podtrzymane","podtrzymywane","podtuczone","poduczane","podupadane","poduszone","podwajane","podwalane","podważane","podwędzone","podwiązane","podwieszane","podwiezione","podwijane","podwinięte","podwojone","podwożone","podwyżane","podwyższane","podwyższone","podyktowane","podyskutowane","podziabane","podziałane","podziałkowane","podziękowane","podzielone","podziurawione","podziwiane","podźwignięte","poeksperymentowane","pofarbowane","pofatygowane","pofilmowane","poganiane","pogardzane","pogardzone","pogarszane","pogaszone","pogładzone","pogłaskane","pogłębiane","pogłębione","pogłośnione","pogmatwane","pognębione","pogniecione","pogodzone","pogonione","pogorszone","pogotowane","pograbione","pogrążane","pogrążone","pogrożone","pogrubiane","pogrubione","pogruchane","pogruchotane","pogrupowane","pogrywane","pogryzane","pogryzione","pogrzane","pogrzebane","pogubione","pogwałcane","pohamowane","pohandlowane","poharatowane","pohuśtane","poinformowane","poinstruowane","pojednane","pojęte","pojmięte","pojmowane","pojone","pokajane","pokaleczone","pokarane","pokarmione","pokąsane","pokatalogowane","pokazane","pokazywane","pokiereszowane","pokierowane","pokiwane","pokładane","poklepane","poklepywane","pokłonione","pokłute","pokochane","pokolorowane","pokoloryzowane","pokołysane","pokombinowane","pokomplikowane","pokonane","pokończone","pokonywane","pokopane","pokrajane","pokrążone","pokręcone","pokrojone","pokruszone","pokryte","pokrywane","pokrzepiane","pokrzepione","pokrzyżowane","pokuszone","pokutowane","połączone","polakierowane","połamane","polane","połapane","połaskotane","połatane","polecane","połechtane","polecone","poleczone","polegane","polemizowane","polepszane","polepszone","polerowane","polewane","policzkowane","policzone","polimeryzowane","polizane","połknięte","polowane","połowione","położone","polubione","poluźnione","poluzowane","połykane","pomacane","pomachane","pomagane","pomalowane","pomarynowane","pomasowane","pomazane","pomęczone","pomiatane","pomieszane","pomieszczone","pomijane","pominięte","pomiziane","pomknięte","pomnażane","pomniejszane","pomniejszone","pomnożone","pomoczone","pompowane","pomydlone","pomylone","pomyszkowane","pomywane","ponabijane","ponaciskane","ponadziewane","ponaglane","ponaglone","ponagrywane","ponaklejane","ponakłuwane","ponakrywane","ponaprawiane","ponawiane","poniańczone","poniechane","ponieiwerane","poniesione","poniszczone","poniżane","poniżone","ponoszone","ponowione","ponudzone","poobcinane","poobcowane","poobczajane","poobijane","poobmacywane","poobracane","poobserwowane","poodbijane","poodcinane","poodgryzane","poodkurzane","poodprawiane","poodsuwane","poodwalane","pooglądane","poograniczane","poopalane","poopiekane","poopwiadane","pootwierane","popadane","popakowane","popalone","poparte","poparzone","popchane","popchnięte","popędzane","popędzone","popękane","popełniane","popełnione","poperfumowane","popierane","popieszczone","popijane","popilnowane","popisane","popite","popłacone","popłakiwane","poplamione","poplątane","popluskane","popodcinane","popodziwiane","popoprawiane","poprane","poprasowane","poprawiane","poprawione","poproszone","poprowadzone","popryskane","poprzebierane","poprzeciągane","poprzecinane","poprzedzane","poprzeglądane","poprzeklinane","poprzekopywane","poprzemieszczane","poprzenoszone","poprzesadzane","poprześladowane","poprzestawiane","poprzesuwane","poprzewieszane","poprzewracane","poprzycinane","poprzymierzane","poprzytulane","poprzywiązywane","popsute","popudrowane","popukane","popularyzowane","popuszczane","popuszczone","popychane","popykane","popytane","porabiane","porachowane","poranione","poratowane","porażone","poręczone","porównane","porozbierane","porozbijane","porozciągane","porozcinane","porozdawane","porozdzielane","porozmieszczane","poróżnione","porozpędzane","porozpieszczane","porozprowadzane","porozpruwane","porozrzucane","porozstawiane","porozsyłane","porozumiewane","porozwalane","porozwiązywane","porozwieszane","porozwożone","portretowane","poruszane","poruszone","porwane","porysowane","porywane","porządkowane","porządzone","porzucane","porzucone","posądzane","posadzone","posądzone","pościągane","pościelone","pościerane","pościgane","pościnane","pościskane","posegregowane","posiadane","posiane","posiekane","posilane","posiłkowane","posilone","posiłowane","posiniaczone","posiorbane","poskąpione","poskładane","posklejane","poskramiane","poskręcane","poskrobane","poskromione","poskubane","posłane","posłodzone","poślubiane","poślubione","posługiwane","posmakowane","posmarowane","posolone","posortowane","pospekulowane","pospieszane","pośpieszane","pośpiewane","pospinane","pospłacane","posprawdzane","posprzątane","posprzedawane","pośredniczone","possane","postanowione","postane","postarane","postawione","postemplowane","posterowane","postradane","postraszone","postrugane","postrzegane","postrzelane","postrzelone","postukane","postymulowane","posunięte","posuwane","poświącane","poświadczone","poświecone","poświęcone","poświętowane","poświntuszone","posyłane","posypane","posypywane","poszarpane","poszastane","poszatkowane","poszczute","poszczycone","poszczypane","poszerzane","poszerzone","poszorowane","poszpiegowane","poszturchane","poszukane","poszukiwane","poszwędane","poszybowane","potakiwane","potarmoszone","potarte","potasowane","potęgowane","potępiane","potępione","potknięte","potoczone","potopione","potorturowane","potrącane","potrącone","potraktowane","potrojone","potrute","potrząsane","potrzaskane","potrząsnięte","potrząśnięte","potrzymane","Poturbowane","poturlane","potwierdzone","potykane","poucinane","pouczane","pouczone","poudawane","poukładane","pouprawiane","poupychane","pourywane","poustawiane","poużywane","powąchane","powachlowane","powalane","powalone","poważane","powbijane","powciągane","powciskane","powdychane","powęszone","powetowane","powiadamiane","powiadomione","powiązane","powiedziane","powiedzone","powiększane","powielane","powielone","powierzane","powierzone","powieszone","powiewane","powinszowane","powitane","powite","powkładane","powlekane","powłóczone","powodowane","powołane","powoływane","powożone","powpychane","powrócone","powrzucane","powsadzane","powściągnięte","powspominane","powstrzymane","powtarzane","powtórzone","powybierane","powybijane","powycierane","powycinane","powyciskane","powydawane","powyganiane","powyginane","powyjaśniane","powyjmowane","powyłączane","powymiatane","powymieniane","powynoszone","powypełniane","powypisywane","powyrywane","powyrzucane","powystrzelane","powysyłane","powywalane","powywieszane","powywracane","powzięte","pozabawiane","pozabijane","pozacierane","pożądane","pożądlone","pozadzierane","pozakładane","pozaklinane","pozałatwiane","pozamiatane","pozamieniane","pozamrażane","pozamykane","pozapalane","pozapinane","pozapisywane","pozapraszane","pożarte","pozasłaniane","pozastrzelane","pozatykane","pozbawiane","pozbawione","pozbierane","pozbyte","pozbywane","pozdejmowane","pozdrawiane","pozdrowione","pożegnane","pożerane","pozmiatane","pozmieniane","pozmywane","poznaczone","poznane","poznawane","poznęcane","pozorowane","pozostawiane","pozostawione","pozowane","pozrywane","pozszywane","pożute","pozwalniane","pozwane","pozwiązywane","pozwiedzane","pozwolone","pożyczane","pożyczone","pozyskane","pożyte","pozywane","pożywiane","pożywione","praktykowane","prane","prasowane","prawione","prażone","precyzowane","preferowane","prenumerowane","prezentowane","próbowane","procesowane","produkowane","profanowane","profilowane","prognozowane","programowane","projektowane","proklamowane","prolongowane","promieniowane","promowane","propagowane","proponowane","prosperowane","prostowane","proszkowane","proszone","protestowane","protokołowane","prowadzone","prowokowane","prute","pryskane","pryśnięte","przeanalizowane","przearanżowane","przebaczane","przebaczone","przebadane","przebiegnięte","przebierane","przebijane","przebite","przebolone","przebrane","przebudowane","przebudowywane","przebudzane","przebudzone","przebukowane","przebyte","przebywane","przeceniane","przecenione","przechlapane","przechodzone","przechowane","przechowywane","przechrzcone","przechwycone","przechwytywane","przechylane","przechylone","przechytrzane","przechytrzone","przeciągane","przeciągnięte","przeciążane","przeciążone","przeciekane","przecierane","przecierpiane","przecięte","przecinane","przeciskane","przeciśnięte","przeciwstawiane","przećwiczone","przeczekane","przeczesane","przeczesywane","przeczołgane","przeczute","przeczuwane","przeczyszczone","przeczytane","przedarte","przedawkowane","przedawkowywane","przedekorowane","przedłożone","przedłużane","przedłużone","przedmuchane","przedobrzone","przedostane","przedostawane","przedsiewzięte","przedstawiane","przedstawione","przedymane","przedyskutowane","przedzierane","przedziurawione","przedziurkowane","przeegzaminowane","przefaksowane","przefarbowane","przefasonowane","przefasowane","przefaxowane","przefiltrowane","przeformowane","przeforsowane","przegadane","przeganane","przeganiane","przegapiane","przegapione","przegięte","przeginane","przeglądane","przeglądnięte","przegłodzone","przegłosowane","przegonione","przegotowane","przegotowywane","przegrabione","przegradzane","przegrane","przegrupowane","przegrupowywane","przegrywane","przegryzane","przegryzione","przegrzane","przegrzebane","przegrzewane","przehandlowane","przeholowane","przeinstalowane","przeistoczone","przejadane","przejaskrawiane","przejaśnione","przejawiane","przejawione","przejechane","przejęte","przejeżdżane","przejmowane","przejrzane","przekabacane","przekabacone","przekablowane","przekalibrowane","przekalkulowane","przekarmiane","przekąszone","przekazywane","przekierowane","przekierowywane","przekimane","przekładane","przeklejone","przeklęte","przeklinane","przeklnięte","przekłute","przekonane","przekonfigurowane","przekonstruowane","przekonwertowane","przekonywane","przekopane","przekopywane","przekoziołkowane","przekraczane","przekręcane","przekręcone","przekreślane","przekreślone","przekroczone","przekrojone","przekrzyczone","przekrzywione","przekształcane","przekształcone","przekupione","przekupywane","przekute","przekwalifikowane","przełączane","przełączone","przeładowane","przeładowywane","przełamane","przełamywane","przelane","przelatywane","przeleciane","przelewane","przeleżane","przelicytowane","przeliczane","przeliczone","przeliterowane","przełknięte","przełożone","przełykane","przełyknięte","przemalowane","przemalowywane","przemaszerowane","przemawiane","przemeblowane","przemęczone","przemielone","przemieniane","przemierzone","przemieszczane","przemieszczone","przemijane","przemilczane","przemilczone","przeminięte","przemknięte","przemodelowane","przemusztrowane","przemycane","przemycone","przemyślane","przemyślone","przemyte","przemywane","przenegocjowane","przeniesione","przenikane","przeniknięte","przenoszone","przeobrażane","przeobrażone","przeoczane","przeoczone","przeorane","przeorganizowane","przeorientowane","przepadane","przepakowane","przepalone","przeparkowane","przepchane","przepchnięte","przepędzane","przepędzone","przepełniane","przepełnione","przepijane","przepiłowane","przepisane","przepisywane","przepite","przepłacane","przepłacone","przepłakane","przeplanowane","przepłoszone","przepłukane","przepłukiwane","przepłynięte","przepływane","przepompowane","przepompowywane","przepowiadane","przepowiedziane","przepracowane","przepracowywane","przeprane","przeprawiane","przeprawione","przeprogramowane","przeprojektowane","przeprowadzane","przeprowadzone","przepuszczane","przepuszczone","przepychane","przepytane","przepytywane","przerąbane","przerabiane","przeradzane","przerastane","przerażone","przeredagowane","przerejestrowane","przerobione","przerodzone","przerośnięte","przerwane","przerysowane","przerywane","przerzedzane","przerzucane","przerzucone","przesączone","przesadzane","przesądzane","przesadzone","przesądzone","prześcigane","prześcignięte","przesiadane","przesiadywane","przesiane","przesiedlane","przesiedlone","przesiedziane","przesiewane","przesilone","przeskakiwane","przeskalowane","przeskanowane","przeskoczone","przeskrobane","prześladowane","przesłaniane","przesłane","prześledzone","prześlizgnięte","przesłodzone","przesłonięte","przesłuchane","przesłuchiwane","przesmarowane","przesolone","przesortowane","przespane","prześpiewane","przessane","przestawiane","przestawione","przestemplowane","przestraszone","przestrojone","przestrzegane","przestrzelone","przestudiowane","przesunięte","przesuwane","prześwietlane","prześwietlone","przesyłane","przesypane","przesypiane","przesypywane","przeszarżowane","przeszczepiane","przeszczepione","przeszkadzane","przeszkolone","przeszmuglowane","przeszukane","przeszukiwane","przeszyte","przeszywane","przetaczane","przetańczone","przetapetowane","przetarte","przetestowane","przetkane","przetoczone","przetopione","przetrącone","przetransformowane","przetransmitowane","przetransponowane","przetransportowane","przetrawione","przetrwane","przetrząsane","przetrząśnięte","przetrzepane","przetrzymane","przetrzymywane","przetwarzane","przetworzone","przewalane","przewalczone","przewaletowane","przewalone","przeważane","przeważone","przewertowane","przewiązane","przewiązywane","przewidywane","przewidziane","przewiercane","przewiercone","przewieszane","przewieszone","przewietrzone","przewiezione","przewijane","przewinięte","przewitane","przewodniczone","przewodzone","przewożone","przewracane","przewrócone","przewyższane","przeymierzane","przeżarte","przeżeglowane","przeżegnane","przeziębione","przezimowane","przeznaczane","przeznaczone","przeżute","przezwyciężane","przezwyciężone","przeżyte","przezywane","przeżywane","przodowane","przpochlebione","przwdziewane","przybastowane","przybierane","przybijane","przybite","przybliżane","przybliżone","przybrane","przycelowane","przycepione","przychylone","przyciągane","przyciągnięte","przyciemnione","przycięte","przycinane","przyciskane","przyciśnięte","przyciszone","przyćmiewane","przyćmione","przycumowane","przyczepiane","przyczesane","przyczołgane","przyczynione","przydepnięte","przydeptane","przyduszone","przydzielane","przydzielone","przygarnięte","przygaszone","przygazowane","przygładzane","przygnębiane","przygniatane","przygniecione","przygotowane","przygruchane","przygrywane","przygryzane","przygryzione","przygrzane","przygwożdżone","przyhamowane","przyholowane","przyjane","przyjęte","przyjmowane","przyjrzane","przykładane","przyklejone","przyklepane","przykopane","przykręcane","przykręcone","przykrócone","przykryte","przykrywane","przykurzone","przykute","przykuwane","przyłączane","przyłączone","przylane","przyłapane","przylegane","przylepiane","przylepione","przyłożone","przymierzone","przymilane","przymknięte","przymocowane","przymuszane","przynależone","przyniesione","przynoszone","przynudzane","przyostrzone","przyozdabiane","przyozdobione","przypadnięte","przypakowane","przypakowywane","przypalane","przypalone","przyparte","przypasowane","przypatrywane","przypatrzone","przypieczętowane","przypiekane","przypierane","przypięte","przypilnowane","przypiłowane","przypinane","przypisane","przypisywane","przypłacone","przyplątane","przypłynięte","przypodobane","przypominane","przypomniane","przyporządkowane","przyprawiane","przyprawione","przyprowadzone","przypucowane","przypudrowane","przypuszczane","przypuszczone","przyrównane","przyrządzane","przyrządzone","przysiadane","przysiągnięte","przyskrzydlone","przyskrzyniane","przyskrzynione","przysłaniane","przysłane","przysłodzone","przysłonione","przysłuchiwane","przysługiwane","przysłużone","przysmażane","przysmażone","przyspieszane","przyspieszone","przysporzone","przysposobione","przyśrubowywane","przyssane","przystąpione","przystawiane","przystawione","przystemplowane","przystopowane","przystosowane","przystrojone","przysunięte","przysuwane","przyswajane","przyświecane","przyświęcone","przyswojone","przysyłane","przysypane","przyszpilone","przyszykowane","przyszyte","przyszywane","przytaczane","przytargane","przytarte","przytaszczane","przytępiane","przytępione","przytkane","przytłaczane","przytłoczone","przytłumione","przytoczone","przytrafione","przytroczone","przytruwane","przytrzasnięte","przytrzymane","przytrzymywane","przytulane","przytulone","przytwierdzane","przytwierdzone","przytykane","przyuczone","przyuważone","przywabione","przywalane","przywalone","przywarowane","przywarte","przywdziane","przywiązane","przywiązywane","przywidziane","przywiezione","przywitane","przywłaszczane","przywłaszczone","przywołane","przywoływane","przywożone","przywracane","przywrócone","przyznaczone","przyznane","przyznawane","przyzwalane","przyzwane","przyzwyczajane","przyzwyczajone","przyzywane","psiamane","pstrykane","pstryknięte","psute","publikowane","puchnięte","pucowane","pudłowane","pudrowane","puknięte","punktowane","pustoszone","puszczane","puszczone","puszkowane","puszone","pykane","pytane","rabowane","rachowane","racjonalizowane","racjonowane","raczone","radowane","ranione","raportowane","ratowane","ratyfikowane","reaktywowane","realizowane","reanimowane","recytowane","ręczone","redagowane","redukowane","reformowane","refowane","regenerowane","regionalizowane","regulowane","reinkarnowane","rejestrowane","reklamowane","rekomendowane","rekompensowane","rekonstruowane","rekreowane","rekrutowane","rekwirowane","relacjonowane","relaksowane","remodulowane","remontowane","renegocjowane","reorganizowane","reperowane","replikowane","represejonowane","reprezentowane","reprodukowane","resetowane","resocjalizowane","respektowane","resuscytowane","retuszowane","rewanżowane","rewidowane","rezerwowane","rezonowane","rezygnowane","reżyserowane","robione","rodzone","rojone","rolowane","romansowane","ronione","rozbawiane","rozbawione","rozbierane","rozbijane","rozbite","rozbłyśnięte","rozbrajane","rozbrojone","rozbudowane","rozbudowywane","rozbudzane","rozbudzone","rozbujane","rozcapierzone","rozchmurzone","rozchodzone","rozchylane","rozchylone","rozciągane","rozciągnięte","rozcieńczane","rozcieńczone","rozcierane","rozcięte","rozcinane","rozczarowane","rozczarowywane","rozczesane","rozczłonkowane","rozczulane","rozczytane","rozdane","rozdawane","rozdeptane","rozdmuchane","rozdmuchiwane","rozdrabniane","rozdrapane","rozdrapywane","rozdrażniane","rozdrażnione","rozduszone","rozdwojone","rozdysponowane","rozdzielane","rozdzielone","rozdzierane","rozdziewiczone","rozebrane","rozedrane","rozegrane","rozegrywane","rozepchane","rozerwane","rozesłane","rozgarnięte","rozgaszczane","rozgięte","rozglaszane","rozgłoszone","rozgniatane","rozgniecione","rozgniewane","rozgonione","rozgraniczone","rozgrane","rozgromione","rozgrywane","rozgryzane","rozgryzione","rozgrzane","rozgrzebywane","rozgrzeszone","rozgrzewane","rozhuśtane","rozjaśniane","rozjaśnione","rozjechane","rozjedzone","rozjuszane","rozjuszone","rozkazane","rozkazywane","rozkładane","rozklejane","rozklejone","rozkołysane","rozkopane","rozkopywane","rozkoszowane","rozkręcane","rozkręcone","rozkrojone","rozkruszone","rozkute","rozkuwane","rozkwaszone","rozkwaterowane","rozkwitane","rozkwitnięte","rozłączone","rozładowane","rozładowywane","rozłamane","rozlane","rozlewane","rozliczane","rozliczone","rozlokowane","rozłożone","rozłupane","rozluźniane","rozmanażane","rozmasowane","rozmawiane","rozmazane","rozmazywane","rozmiękczone","rozmieniane","rozmienione","rozmieszczane","rozmieszczone","rozminięte","rozmnożone","rozmontowane","rozmówione","rozmrażane","rozmrożone","rozmyślane","rozmyte","różnicowane","rozniecane","rozniecione","rozniesione","różnione","roznoszone","rozochocone","rozpaczane","rozpakowane","rozpakowywane","rozpalane","rozpalone","rozpamiętywane","rozpaskudzane","rozpatrywane","rozpatrzone","rozpędzane","rozpędzone","rozpętane","rozpieszczane","rozpieszczone","rozpięte","rozpiłowane","rozpinane","rozpisane","rozpisywane","rozplanowane","rozpłaszczane","rozpłaszczone","rozplątane","rozplątywane","rozpłynięte","rozpoczęte","rozpoczynane","rozpogodzone","rozporządzane","rozporządzone","rozpościerane","rozpostrzone","rozpowiadane","rozpowiedziane","rozpowszechniane","rozpowszechnione","rozpoznane","rozpoznawane","rozpracowane","rozpraszane","rozprawiane","rozprawiczone","rozprawione","rozprostowane","rozproszone","rozprowadzane","rozprowadzone","rozprute","rozpruwane","rozprzestrzeniane","rozprzestrzenione","rozpuszczane","rozpuszczone","rozpychane","rozpylane","rozpylone","rozpytane","rozpytywane","rozrastane","rozreklamowane","rozrobione","rozrośnięte","rozróżniane","rozróżnione","rozruszane","rozrysowane","rozrywane","rozrzucane","rozsadzane","rozsadzone","rozsądzone","rozścielone","rozsiane","rozsiekane","rozsiewane","rozsiodłane","rozsławiane","rozsławione","rozsmarowane","rozsmarowywane","rozśmieszane","rozstane","rozstąpione","rozstawane","rozstawiane","rozstawione","rozstrojone","rozstrząsane","rozstrzeliwane","rozstrzelone","rozstrzygane","rozstrzygnięte","rozsunięte","rozsupłane","rozświetlane","rozświetlone","rozsyłane","rozsypane","rozsypywane","rozszarpane","rozszarpywane","rozszczepiane","rozszczepione","rozszerzane","rozszerzone","rozszyfrowane","roztaczane","roztapiane","roztarte","roztoczone","roztopione","roztrwonione","roztrząsane","roztrzaskane","rozumiane","rozumowane","rozwalane","rozwalone","rozwarte","rozważane","rozważone","rozweselane","rozweselone","rozwiane","rozwiązane","rozwiązywane","rozwidniane","rozwiedzione","rozwierane","rozwiercone","rozwieszane","rozwieszone","rozwiewane","rozwiezione","rozwikłane","rozwinięte","rozwlekane","rozwodzone","rozwścieczane","rozwścieczone","rozzłoszczone","rugane","ruinowane","rujnowane","runięte","ruszane","ruszone","rwane","ryczane","ryglowane","rymowane","rysowane","ryte","ryzykowane","rządzone","rzeźbione","rżnięte","rzucane","rzucone","rzygane","sabotażowane","sączone","sadzane","sadzone","sądzone","salutowane","salwowane","sankcjonowane","satysfakcjonowane","scalone","scementowane","scentrowane","scharakteryzowane","schładzane","schlane","schlapane","schlebione","schłodzone","schowane","schronione","schrupane","schrzanione","schwytane","schylane","ściągnięte","ścielone","ściemniane","ściemnione","ścierane","ścierpione","ścięte","ścigane","ścinane","ściskane","ściśnięte","ściszane","ściszone","sędziowane","segregowane","selekcjonowane","separowane","sępione","serwowane","sfabrykowane","sfajczone","sfałszowane","sfaulowane","sfilmowane","sfinalizowane","sfinansowane","sfingowane","sformalizowane","sformatowane","sformowane","sformułowane","sforsowane","sfotografowane","shimmerowane","siane","siekane","siorbane","skadrowane","skakane","skalane","skaleczone","skalibrowane","skalkulowane","skalpowane","skanalizowane","skandowane","skanowane","skapitulowane","skarcone","skarżone","skasowane","skatalogowane","skazane","skażone","skazywane","skierowane","składane","składowane","skłaniane","sklasyfikowane","sklecione","sklejane","sklejone","sklepane","skłócone","skłonione","sklonowane","sknocone","skojarzone","skolonizowane","skołowane","skombinowane","skomentowane","skompensowane","skompletowane","skomplikowane","skomponowane","skompresowane","skompromitowane","skomunikowane","skonane","skoncentrowane","skończone","skondensowane","skonfigurowane","skonfiskowane","skonfrontowane","skonkretyzowane","skonsolidowane","skonstruowane","skonsultowane","skonsumowane","skontaktowane","skontrolowane","skoordynowane","skopane","skopiowane","skorektowane","skorumpowane","skorygowane","skorzystane","skoszone","skracane","skradzione","skręcane","skręcone","skremowane","skreślane","skreślone","skrobane","skrobnięte","skrócone","skrojone","skropione","skruszone","skrystalizowane","skryte","skrytykowane","skrywane","skrzecowane","skrzepnięte","skrzyczane","skrzyte","skrzywdzone","skrzyżowane","skserowane","skubane","skubnięte","skulone","skumulowane","skupiane","skupione","skupowane","skurczone","skuszone","skute","skuwane","skwitowane","słane","sławione","śledzone","ślinione","ślizgane","słodzone","słuchane","słyszane","smagane","smarowane","smażone","śmiecone","smute","smyrane","snute","sondowane","sortowane","spafycikowane","spakowane","spalane","spałaszowane","spalone","spałowane","spamiętane","spaprane","sparafrazowane","sparaliżowane","sparowane","spartaczone","spartolone","sparzone","spasowane","spatałaszone","spauzowane","spawane","spawione","specjalizowane","spędzane","spędzone","spekulowane","spełniane","spełnione","spenetrowane","spętane","spierane","spięte","śpiewane","spiłowane","spinane","spisane","spiskowane","spisywane","spite","spłacane","spłacone","splądrowane","splajtowane","splamione","spłaszczone","splatane","splątane","spłatane","spławiane","spławione","spłodzone","spłonięte","spłoszone","spłukane","spłukiwane","spluwane","spływane","spoczęte","spoczywane","spodziewane","spojone","spolaryzowane","spoliczkowane","sponiewierane","sponsorowane","spopielane","spopielone","spopularyzowane","sportretowane","sporządzane","sporządzone","spostrzegane","spotęgowane","spotkane","spotykane","spoufalane","spowalniane","spowiadane","spowodowane","spowolnione","spoźnione","spóźnione","spożytkowane","spożyte","spożywane","sprane","sprasowane","spraszane","sprawdzone","sprawione","sprawowane","sprecyzowane","spreparowane","sprężane","sprężone","spróbowane","sprofanowane","sprofilowane","sprostowane","sproszkowane","sproszone","sprowadzane","sprowadzone","sprowokowane","spryskane","spryskiwane","sprywatyzowane","sprzątane","sprzątnięte","sprzeczane","sprzedane","sprzedawane","sprzeniewierzone","spudłowane","spustoszone","spuszczane","spuszczone","spychane","ssane","stabilizowane","stacjonowane","staczane","staranowane","starczane","stargowane","startowane","stawiane","stawione","stemplowane","stenografowane","stepowane","sterowane","sterroryzowane","sterylizowane","stłamszone","stłumione","stnięte","stoczone","stołowane","stonowane","stopione","stopniowane","storpedowane","stosowane","strącane","stracone","strącone","strajkowane","straszone","stratowane","strawione","streamowane","stresowane","streszczane","streszczone","strofowane","strojone","stroszone","strugane","strute","strymowane","strząsane","strzaskane","strząśnięte","strzelone","strzepane","strzępione","strzepnięte","strzepywane","studiowane","studzone","stukane","stuknięte","stulone","stwardnione","stwarzane","stwierdzane","stwierdzone","stworzone","stykane","stylizowane","stymulowane","sugerowane","sumowane","sunięte","swatane","swawolone","świadczone","świecone","święcone","świerzbione","świętowane","świntuszone","sycone","sygnalizowane","symulowane","synchronizowane","sypane","sypnięte","szachrowane","szacowane","szafowane","szamotane","szanowane","szargane","szarpane","szarpnięte","szarżowane","szasowane","szastane","szatkowane","szczędzone","szczepione","szczerzone","szczute","szczycone","szczypane","szczytowane","szefowane","szemrane","szepnięte","szeptane","szerzone","szkalowane","szkicowane","szklone","szkodzone","szkolone","szlachtowane","szlifowane","szmuglowane","szokowane","szorowane","szpachlowane","szpanowane","szperane","szprycowane","sztachnięte","szturchane","szturchnięte","szturmowane","szufladkowane","szuflowane","szukane","szulerowane","szwankowane","szydełkowane","szydzone","szyfrowane","szykanowane","szykowane","szyte","taktowane","tamowane","tankowane","tapetowane","taplane","taranowane","targane","targnięte","targowane","tarmoszone","tarte","tarzane","tasowane","taszczone","tatuowane","tchnięte","telefonowane","telegrfowane","teleportowane","temperowane","teoretyzowane","tępione","terroryzowane","testowane","tkane","tknięte","tłamszone","tłoczone","tłumaczone","tłumione","toczone","tolerowane","tonowane","topione","torowane","torturowane","towarzyszone","trąbione","trącane","tracone","trącone","trafiane","trafione","tragizowane","traktowane","transferowane","transformowane","transmitowane","transportowane","tratowane","trawione","trenowane","tresowane","triumfowane","tropione","troszczone","trute","trwonione","trymowane","tryskane","tryśnięte","tryumfowane","trywializowane","trzaskane","trzasnięte","trzepane","trzepnięte","trzepotane","trzęsione","trzymane","tuczone","tułane","tulone","turlane","tuszowane","twistowane","tworzone","tykane","tyranizowane","tyrane","tytułowane","uaktualniane","uaktualnione","uaktywniane","uaktywnione","uargumentowane","uatrakcyjnione","ubabrane","ubarwiane","ubarwione","ubawione","ubezpieczane","ubezpieczone","ubezwłasnowolnione","ubiczowane","ubiegane","ubierane","ubijane","ubite","ubłagane","ubliżane","ubliżone","ubolewane","ubóstwiane","ubrane","ubroczone","ubrudzone","ucałowane","ucharakteryzowane","uchowane","uchronione","uchwalane","uchwalone","uchwycone","uchylane","uchylone","uciągnięte","ucieleśniane","ucierane","ucierpiane","ucięte","ucinane","uciskane","uciśnięte","uciszane","uciszone","uciułane","ucywilizowane","uczczone","uczepione","uczesane","uczęszczane","uczone","ucztowane","uczute","uczynione","udane","udaremnione","udawane","udekorowane","udeptywane","uderzane","uderzone","udobruchane","udokumentowane","udomawiane","udomowione","udoskonalane","udoskonalone","udostępniane","udostępnione","udowadniane","udowodnione","Udramatyzowane","udręczone","udrożnione","udupione","uduszone","udzielane","udzielone","udźwignięte","ueiwarygodnione","ufane","ufarbowane","uformowane","ufortyfikowane","ufundowane","ugadane","uganiane","ugaszane","ugaszone","ugięte","uginane","ugłaskane","ugniatane","ugodzone","ugoszczone","ugotowane","ugrane","ugruntowane","ugryzione","ugrzęznięte","uhistoryzowane","uhonorowane","uiścite","ujadane","ujarzmiane","ujarzmione","ujawniane","ujawnione","ujęte","ujeżdżane","ujeżdżone","ujmowane","ujrzane","ukamieniowane","ukarane","ukartowane","ukąszone","ukatrupione","ukazane","ukazywane","ukierowane","ukierunkowane","układane","uklepane","ukłonione","ukłute","uknute","ukojone","ukołysane","ukończone","ukonkretnione","ukoronowane","ukradzione","ukręcane","ukręcone","ukrojone","ukryte","ukrywane","ukrzyżowane","ukształtowane","ukute","ułagodzone","ułaskawiane","ułaskawione","ulatniane","ułatwiane","ułatwione","uleczane","uleczone","ulegane","ulepione","ulepszane","ulepszone","ulokowane","ulotnione","ułożone","umacniane","umalowane","umartwiane","umawiane","umazane","umeblowane","umiejscowione","umieszczane","umieszczone","umilane","umilone","umknięte","umniejszane","umniejszone","umocnione","umocowane","umoczone","umodelowane","umorzone","umotywowane","umówione","umożliwiane","umożliwione","umrocznione","umyte","unaocznione","unicestwiane","unicestwione","uniemożliwaine","uniemożliwione","unierochomione","uniesione","unieszczęśliwiane","unieszczęśliwione","unieszkodliwiane","unieszkodliwione","unieważniane","unieważnione","uniewinnione","uniezależnione","unikane","uniknięte","unormowane","unoszone","unowoczesniane","unowocześniane","uodpornione","uogólniane","upakowane","upalane","upalone","upamiętniane","upamiętnione","upaństwowione","upaprane","uparte","upaskudzone","upchane","upchnięte","upewniane","upewnione","upgradowane","upichcone","upiększane","upiększone","upierane","upierdolone","upięte","upijane","upilnowane","upinane","upite","uplastycznione","upłynięte","upodabniane","upodobnione","upojone","upokorzane","upokorzone","upolowane","upominane","uporządkowane","upowszechnione","upozorowane","upozowane","uprane","uprasowane","upraszczane","uprawdopodobnione","uprawiane","uproszczone","uproszone","uprowadzane","uprowadzone","uprzątane","uprzątnięte","uprzedone","uprzedzane","uprzyjemniane","uprzyjemnione","uprzykrzane","uprzytomnione","upubliczniane","upublicznione","upudrowane","upuszczane","upuszczone","upychane","urabiane","uraczane","uradowane","Urągane","uratowane","urażane","urażone","uregulowane","urobione","uronione","urośnięte","urozmaicane","urozmaicone","uruchamiane","uruchomione","urwane","urywane","urządzane","urządzone","urzeczywistniane","urzeczywistnione","urżnięte","usadowione","usadzone","usamowolnione","usankcjonowane","usatyfakcjonowane","uschnięte","uściskane","uścislone","uściśnięte","usidlone","usiedzone","uskładane","uskoczone","uskuteczniane","uskutecznione","usłuchane","usługiwane","usłużone","usłyszane","usmażone","uśmiane","uśmiercane","uśmiercone","uśmierzone","uspane","uśpione","uspokajane","uspokojone","uspołeczniane","usprawiedliwiane","usprawiedliwione","usprawnione","usprzątane","ustabilizowane","ustalane","ustalone","ustanawiane","ustanowione","ustąpione","ustatkowane","ustawiane","ustawione","ustępowane","ustosunkowane","ustrojone","ustrzegane","ustrzelone","usunięte","ususzone","usuwane","uświadamiane","uświadczone","uświadomione","uświęcone","uświnione","usychane","usypane","usypiane","usystematyzowane","usytuowane","uszanowane","uszczelniane","uszczęśliwiane","uszczęśliwione","uszczuplone","uszczypnięte","uszkadzane","uszkodzone","uszlachetniane","uszlachetnione","usztywnione","uszykowane","uszyte","utajnione","utargowane","utarte","utemperowane","utkane","utknięte","utkwione","utoczone","utopione","utorowane","utożsamiane","utożsamione","utracone","utrącone","utrudniane","utrudnione","utrwalane","utrwalone","utrzymywane","utuczone","utulone","utwierdzane","utwierdzone","utworzone","utylizowane","uwalniane","uwalone","uwarunkowane","uważane","uwiązane","uwiązywane","uwidocznione","uwieczniane","uwiecznione","uwielbiane","uwielbione","uwieńczone","uwierane","uwierzone","uwieszone","uwiezione","uwięzione","uwijane","uwikłane","uwinięte","uwite","uwłaczane","uwłaszczone","uwodzone","uwolnione","uwsteczniane","uwstecznione","uwydatniane","uwypiklone","uwzględniane","uwzględnione","użądlone","uzależniane","uzależnione","uzasadniane","uzasadnione","uzbierane","uzbrajane","uzbrojone","uzdrawiane","uzdrowione","użerane","uzewnętrzniane","uzewnętrznione","uzgadniane","uzgodnione","uziemione","uzmysłowione","uznane","uznawane","uzupełniane","uzupełnione","uzurpowane","użyczane","użyczone","uzyskane","uzyskiwane","użyte","używane","wabione","wąchane","wachlowane","wahane","walczone","wałkowane","walnięte","walone","ważone","wbijane","wbite","wcelowane","wchłonięte","wciągane","wciągnięte","wcielane","wcielone","wcierane","wcięte","wcinane","wciskane","wciśnięte","wczepione","wczołgane","wczute","wczytane","wczytywane","wdane","wdarte","wdawane","wdepnięte","wdeptane","wdetonowane","wdmuchiwane","wdrapane","wdrapywane","wdrażane","wdrążone","wdrożone","wduszone","wdychane","wdzierane","wędkowane","wentylowane","wepchane","wepchnięte","werbowane","weryfikowane","wessane","wetkane","wetknięte","wezwane","wgłębiane","wgniatane","wgniecione","wgrane","wgryzane","wgryzione","wiązane","wibrowane","widywane","widziane","wiedzone","wielbione","wiercone","wierzgane","wierzone","wieszane","wietrzone","więżone","wikłane","windowane","winszowane","wiosłowane","wirowane","witane","wite","wizualizowane","wjeżdżane","wkalkulowane","wkładane","wklejane","wklejone","wklepane","wkłute","wkomponowane","wkopane","wkopywane","wkraczane","wkradane","wkradzione","wkręcane","wkręcone","wkupione","wkurwiane","wkute","wkuwane","włączane","włączone","władane","władowane","włamane","włamywane","wlane","wlepiane","wlepione","wlewane","wliczane","wliczone","włożone","wmanewrowane","wmanipulowane","wmawiane","wmieszane","wmówione","wmurowane","wmuszone","wnerwiane","wnerwione","wniesione","wnikane","wniknięte","wnioskowane","wnoszone","wodowane","wojowane","wołane","woskowane","wożone","wpajane","wpakowane","wparowane","wpasowane","wpatrywane","wpędzane","wpędzone","wperswadowane","wpienione","wpięte","wpisane","wpisywane","wpłacane","wpłacone","wplatane","wplątane","wplątywane","wpojone","wpompowane","wpraszane","wprawiane","wproszone","wprowadzane","wprowadzone","wpuszczone","wpychane","wrabiane","wręczane","wrobione","wróżone","wryte","wrzucane","wrzucone","wrzynane","wsadzane","wsadzone","wskazane","wskazywane","wskórane","wskrzeszane","wskrzeszone","wślizgiwane","wślizgnięte","wsłuchane","wsparte","wspierane","wspięte","współczute","współodczuwane","współtworzone","współżyte","wspomagane","wspominane","wspomniane","wstąpione","wstawiane","wstawione","wstrząsane","wstrząśnięte","wstrzelone","wstrzykiwane","wstrzyknięte","wstrzymane","wstrzymywane","wstukane","wsunięte","wsuwane","wsypane","wszamane","wszczepiane","wszczepione","wszczęte","wszczynane","wszyte","wtajemniczane","wtajemniczone","wtapiane","wtargnięte","wtarte","wtaszczone","wtłoczone","wtopione","wtrącone","wtryniane","wtulane","wtulone","wtykane","wwalone","wwiercane","wwiercone","wwiezione","wwożone","wyartykułowane","wyautowane","wybaczane","wybaczone","wybadane","wybatożone","wybawione","wybebeszone","wybełkotane","wybiczowane","wybielane","wybielone","wybierane","wybijane","wybite","wybłagane","wyblaknięte","wybrandzlowane","wybrane","wybronione","wybrzydzane","wybuchane","wybuchnięte","wybudowane","wybudzane","wybudzone","wyburzane","wyburzone","wycackane","wycałowane","wyceniane","wycenione","wychlane","wychłostane","wychodowane","wychowane","wychowywane","wychrobotane","wychwalane","wychwycone","wychylane","wychylone","wyciągane","wyciągnięte","wyciekane","wycieniowane","wycierane","wycięte","wycinane","wyciskane","wyciśnięte","wyciszane","wyciszone","wycofane","wyćwiczone","wycyckane","wycyganione","wyczarowane","wyczarterowane","wyczekane","wyczekiwane","wyczerpane","wyczesane","wyczołgane","wyczołgiwane","wyczute","wyczuwane","wyczyniane","wyczyszczone","wyczytane","wyczytywane","wydalane","wydalone","wydane","wydębione","wydedukowane","wydelegowane","wydepilowane","wydeptywane","wydłubane","wydłubywane","wydłużane","wydłużone","wydmuchane","wydmuchiwane","wydobyte","wydobywane","wydojone","wydoroślane","wydostane","wydrane","wydrapane","wydrapywane","wydrążone","wydrukowane","wydukane","wyduszone","wydychane","wydziedziczone","wydzielane","wydzielone","wydzierane","wydzierżawione","wydziobane","wydziwiane","wydzwaniane","wyedukowane","wyedytowane","wyeeliminowane","wyegzekwowane","wyeksmitowane","wyekspediowane","wyeksploatowane","wyeksponowane","wyeksportowane","wyeliminowane","wyemigrowane","wyemitowane","wyewoluowane","wyfrunięte","wygadane","wygadywane","wyganiane","wygarbowane","wygarniane","wygarnięte","wygasane","wygaśnięte","wygaszane","wygaszone","wygenerowane","wygięte","wyginane","wygładzane","wygładzone","wygłaszane","wygłodzone","wygłosowane","wygłoszone","wygłówkowane","wygnane","wygolone","wygonione","wygooglowane","wygospodarowane","wygotowane","wygrane","wygrawerowane","wygrażane","wygrywane","wygryzione","wygrzane","wygrzebane","wygrzebywane","wygrzewane","wygubione","wyhaczone","wyhaftowane","wyhamowane","wyhodowane","wyizolowane","wyjadane","wyjaśniane","wyjaśnione","wyjawiane","wyjawione","wyjedzone","wyjęte","wyjmowane","wykadrowane","wykalibrowane","wykalkulowane","wykańczane","wykantowane","wykąpane","wykaraskane","wykarczowane","wykarmiane","wykasowane","wykastrowane","wykazane","wykazywane","wykierowane","wykitowane","wykiwane","wykładane","wyklarowane","wyklepane","wyklinane","wykłócane","wykluczane","wykluczone","wyklute","wykłute","wykminione","wykolejone","wykołowane","wykombinowane","wykonane","wykończone","wykonywane","wykopane","wykopnięte","wykopywane","wykorkowane","wykorzeniane","wykorzenione","wykorzystane","wykorzystywane","wykoszone","wykpite","wykradane","wykradnięte","wykręcane","wykręcone","wykreowane","wykreślane","wykreślone","wykrochmalone","wykrojone","wykrwawiane","wykrwawione","wykryte","wykrywane","wykrzesane","wykrztuszone","wykrzyczone","wykrzykiwane","wykrzyknięte","wykrzywiane","wykształcone","wyksztuszone","wykupione","wykupywane","wykute","wykuwane","wyłączane","wyłączone","wylądowane","wyładowane","wyładowywane","wyłajane","wyłamane","wyłamywane","wyłaniane","wylansowane","wylane","wyłapane","wyłapywane","wyławiane","wyleasingowane","wyleczone","wylęgane","wylegimytowane","wylewane","wyłgane","wylicytowane","wyliczane","wyliczone","wylizane","wylizywane","wylogowane","wyłonione","wylosowane","wyłowione","wyłożone","wyłudzane","wyłudzone","wyłupane","wyłuskane","wyłuskiwane","wyłuszczone","wyluzowane","wymacane","wymachiwane","wymagane","wymahiwane","wymalowane","wymamrotane","wymanewrowane","wymarzone","wymasowane","wymawiane","wymazane","wymazywane","wymeldowane","wymeldowywane","wymiatane","wymiecione","wymieniane","wymienione","wymierzane","wymieszane","wymigane","wymigiwane","wymijane","wyminięte","wymknięte","wymoczone","wymodelowane","wymontowane","wymordowane","wymsknięte","wymuszane","wymyślane","wymyślone","wymyte","wynagradzane","wynagrodzone","wynajdowane","wynajdywane","wynajęte","wynajmowane","wynalezione","wynarodowione","wynegocjowane","wyniesione","wyniknięte","wyniszczane","wyniszczone","wyniuchane","wynoszone","wynurzane","wyobrażane","wyobrażone","wyodrębnione","wyolbrzymiane","wyolbrzymione","wyorbowane","wyosiowane","wyostrzane","wyostrzone","wypaczane","wypakowane","wypakowywane","wypalane","wypalone","wypałowane","wyparowane","wyparte","wypasane","wypastowane","wypatroszone","wypatrywane","wypatrzone","wypchane","wypchnięte","wypędzane","wypędzlowane","wypełniane","wypełnione","wypersfadowane","wyperswadowane","wypierane","wypięte","wypijane","wypinane","wypisane","wypisywane","wypite","wypłacane","wypłacone","wypłakane","wypłakiwane","wypłaszczone","wyplatane","wyplątane","wyplenione","wyplewione","wypłoszone","wypłukane","wypłukiwane","wyplute","wypluwane","wypocone","wypoczęte","wypolerowane","wypominane","wypomniane","wypompowane","wypompowywane","wyposażone","wypowiadane","wypowiedziane","wypoziomowane","wypożyczane","wypracowane","wypracowywane","wyprane","wyprasowane","wypraszane","wyprawiane","wyprawione","wypróbowane","wyprodukowane","wyprojektowane","wypromieniowane","wypromowane","wyprostowane","wyprostowywane","wyproszone","wyprowadzane","wyprowadzone","wypróżniane","wypróżnione","wyprute","wypruwane","wyprzedane","wyprzedawane","wyprzedzane","wyprzedzone","wyprzęgane","wypstrykane","wypucowane","wypuszczane","wypuszczone","wypychane","wypytane","wypytywane","wyrąbane","wyrabiane","wyrąbywane","wyratowane","wyrażane","wyrażone","wyrecytowane","wyręczane","wyręczone","wyregulowane","wyrejestrowane","wyremontowane","wyreżyserowane","wyrobione","wyrolowane","wyrośnięte","wyrównane","wyrównywane","wyróżniane","wyróżnione","wyrugowane","wyruszane","wyrwane","wyrypane","wyrysowane","wyryte","wyrywane","wyrządzone","wyrzeźbione","wyrżnięte","wyrzucane","wyrzucone","wyrzygane","wyrzynane","wyrzywane","wysączone","wysadzane","wysadzone","wyschnięte","wyściskane","wyselekcjonowane","wysępione","wysiadywane","wysiedzone","wysilane","wysilone","wyskakiwane","wyskalowane","wyskoczone","wyskrobane","wyskubywane","wysłane","wyśledzone","wyślizgiwane","wyślizgnięte","wysłowione","wysłuchane","wysłuchiwane","wysmagane","wysmarkane","wysmarowane","wysmażane","wysmażone","wyśmiane","wyśmiewane","wysmołowane","wysmyrane","wyśnione","wysnute","wysnuwane","wysondowane","wyspecjalizowane","wyśpiewane","wyśpiewywane","wyspowiadane","wysprzątane","wysprzedane","wyssane","wystartowane","wystawione","wysterelizowane","wysterylizowane","wystosowane","wystosowywane","wystraszone","wystrojone","wystrugane","wystrychnięte","wystrzegane","wystrzelane","wystrzeliwane","wystrzelone","wystudzone","wystukane","wystukiwane","wystygnięte","wysunięte","wysuszane","wysuwane","wyswatane","wyświadczane","wyświadczone","wyświetlane","wyświetlone","wyswobodzone","wysyłane","wysypane","wysypywane","wysysane","wyszabrowane","wyszalane","wyszarpane","wyszarpnięte","wyszasowane","wyszczotkowane","wyszczuplone","wyszeptane","wyszkolone","wyszlifowane","wyszorowane","wyszperane","wyszukane","wyszukiwane","wyszumione","wyszykowane","wyszyte","wytapetowane","wytargane","wytargowane","wytarte","wytarzane","wytaszczone","wytatuowane","wytchnięte","wytępione","wytknięte","wytłoczone","wytłumaczone","wytłumione","wytoczone","wytrąbione","wytrącane","wytrącone","wytransmitowane","wytransportowane","wytrenowane","wytresowane","wytriangulowane","wytropione","wytrute","wytrząsane","wytrzasnięte","wytrząśnięte","wytrzebione","wytrzepane","wytrzeszczane","wytrzeźwiane","wytrzymane","wytrzymywane","wytwarzane","wytworzone","wytyczone","wytykane","wytypowane","wyuczone","wywabiane","wywabione","wywąchane","wywalane","wywalczone","wywalone","wywarte","wywarzane","wyważane","wyważone","wywęszane","wywężykowane","wywiane","wywiązane","wywiązywane","wywierane","wywiercone","wywieszane","wywieszone","wywietrzone","wywiezione","wywijane","wywindowane","wywinięte","wywłaszczone","wywlekane","wywnętrznione","wywnioskowane","wywodzone","wywolane","wywoływane","wywoskowane","wywożone","wywracane","wywrócone","wywróżone","wywyższane","wyżalone","wyzbyte","wyzdrowione","wyżebrane","wyżerane","wyzerowane","wyzionięte","wyznaczane","wyznaczone","wyznane","wyznawane","wyzwalane","wyzwane","wyzwolone","wyzygzakowane","wyżynane","wyzyskane","wyzyskiwane","wyżyte","wyzywane","wyżywane","wyżywione","wzbijane","wzbite","wzbogacane","wzbogacone","wzbraniane","wzbudzane","wzbudzone","wzburzane","wzburzone","wżenione","wzięte","wzmacnione","wzmagane","wzmocnione","wznawiane","wzniecane","wzniecione","wzniesięte","wznoszone","wznowione","wzorowane","wzrośnięte","wzruszone","wzwyżane","wzywane","zaabordowane","zaadaptowane","zaadoptowane","zaadresowane","zaakcentowane","zaakceptowane","zaaklimatyzowane","zaalarmowane","zaanektowane","zaangażowane","zaanonsowane","zaapelowane","zaaplikowane","zaaportowane","zaaprobowane","zaaranżowane","zaaresztowane","zaatakowane","zabaczone","zabalowane","zabandażowane","zabarwione","zabarykadowane","zabawiane","zabawione","zabepieczane","zabetonowane","zabezpieczone","zabierane","zabite","zabłądzone","zablefowane","zabłocone","zablokowane","zabraniane","zabrane","zabrnięte","zabronione","zabrudzone","zabudowane","zabukowane","zabulone","zaburzone","zabutelkowane","zacementowane","zacerowane","zachciane","zachęcane","zachęcone","zachlapane","zachodzone","zachomikowane","zachorowane","zachowane","zachowywane","zachwalane","zachwalone","zachwiane","zachwycone","zaciągane","zaciągnięte","zaciążone","zaciekawione","zaciemniane","zaciemnione","zacierane","zacieśnione","zacięte","zacinane","zaciskane","zaciśnięte","zaćmione","zacumowane","zacytowane","zaczadzone","zaczarowane","Zaczepiane","zaczepione","zaczerpane","zaczesane","zaczęte","zaczołgane","zaczynane","zadarte","zadawalane","zadawane","zadbane","zadebiutowane","zadedykowane","zadeklamowane","zadeklarowane","zademonstrowane","zadenucjowane","zadepeszowane","zadeptane","zadeptywane","zadęte","zadławione","żądlone","zadłużane","zadłużone","zadokowane","zadomowione","zadowalane","zadrapane","zadraśnięte","zadręczane","zadręczone","zadrutowane","zadurzane","zadurzone","zaduszone","zadymione","zadźgane","zadziobane","zadziwiane","zadziwione","zafakturowane","zafałszowane","zafarbowane","zafiksowane","zafundowane","zagadane","zagadnięte","zagadywane","zagajone","zaganiane","zagapione","zagarażowane","zagarniane","zagarnięte","zagaszone","zagazowane","zagęszczone","zagięte","zaginane","zaginięte","zagłębiane","zagłębione","zagłodzone","zagłuszane","zagłuszone","zagmatwane","zagnane","zagnieżdżone","zagojone","zagonione","zagospodarowane","zagotowane","zagrabione","zagradzane","zagrażane","zagrodzone","zagrywane","zagryzane","zagryzione","zagrzane","zagrzebane","zagrzewane","zagubione","zagwarantowane","zahaczone","zahamowane","zahandlowane","zaharowane","zahartowane","zahipnotyzowane","zaholowane","zaimitowane","zaimplantowane","zaimplementowane","zaimprowizowane","zainaugurowane","zainfekowane","zainicjowane","zainkasowane","zainscenizowane","zainspirowane","zainstalowane","zainteresowane","zaintrygowane","zaintubowane","zainwestowane","zaizolowane","zajadane","zajane","zajarane","zajechane","zajęte","zajmowane","zakablowane","zakamuflowane","zakasane","zakasowane","zakąszane","zakatalogowane","zakatowane","zakatrupione","zakazane","zakażane","zakazywane","zakiszone","zakładane","zaklasyfikowane","zaklejane","zaklejone","zaklepane","zaklepywane","zaklinane","zaklinowane","zakłócane","zakłócone","zaklopotane","zakłute","zakneblowane","zakodowane","zakolczykowane","zakolorowane","zakołysane","zakomunikowane","zakończone","zakonserwowane","zakopane","zakopywane","zakorzeniane","zakorzenione","zakoszone","zakosztowane","zakotwiczane","zakotwiczone","zakpione","zakradane","zakręcane","zakręcone","zakreślane","zakreślone","zakrwawione","zakryte","zakrywane","zakrzyczane","zakrzyknięte","zakrzywiane","zakrzywione","zaksięgowane","zaktualizowane","zaktywizowane","zaktywowane","zakumane","zakupione","zakurzone","zakute","zakuwane","zakwaterowane","zakwestionowae","zakwitnięte","załączone","załadowane","załagodzone","zalamane","zalaminowane","załamywane","zalane","załapane","załatane","załatwiane","załatwione","zalatywane","zalecane","zalecone","zaleczone","zalegalizowane","zalegane","zalepiane","zalepione","zalewane","zaliczane","zaliczone","załkane","zalogowane","żałowane","założone","zaludnione","zamacane","zamachnięte","zamącone","zamalowane","zamanewrowane","zamanifestowane","zamarkowane","zamartwiane","zamarynowane","zamarzane","zamarznięte","zamaskowane","zamawiane","zamazane","zamazywane","zamęczane","zamęczone","zameldowane","zamelinowane","zamerykanizowane","zamiatane","zamieniane","zamienione","zamieszane","zamieszczane","zamieszczone","zamieszkane","zamieszkiwane","zaminowane","zamknięte","zamocowane","zamoczone","zamontowane","zamordowane","zamortyzowane","zamotane","zamówione","zamrażane","zamroczone","zamrożone","zamulane","zamurowane","zamydlone","zamykane","zanalizowane","zanegowane","zaniechane","zanieczyszczane","zanieczyszczone","zaniedbane","zaniedbywane","zaniepokojone","zaniesione","zanihilowane","zanikane","zaniknięte","zaniżane","zaniżone","zanoszone","zanotowane","zanucone","zanudzane","zanudzone","zanurzane","zanurzone","zanużone","zaobaczone","zaobserwowane","zaoferowane","zaofiarowane","zaogniane","zaognione","zaokrąglane","zaokrąglone","zaokrętowane","zaopatrywane","zaopatrzone","zaopiekowane","zaorane","zaostrzane","zaostrzone","zaoszczędzone","zapadane","zapakowane","zapalane","zapalone","zapamiętane","zapamiętywane","zapanowane","zaparkowane","zaparowywane","zaparzane","zaparzone","zapaskudzone","zapauzowane","zapchane","zapędzane","zapełniane","zapełnione","zaperfumowane","zapeszane","zapewniane","zapewnione","zapieczętowane","zapierane","zapięte","zapijane","zapinane","zapisane","zapisuwane","zapite","zapłacone","zapładniane","zaplamione","zaplanowane","zaplątane","zapłodnione","zaplombowane","zapobiegane","zapodane","zapodawane","zapodziane","zapokojone","zapolowane","zapominane","zapomniane","zapowiadane","zapowiedziane","zapoznane","zapoznawane","zapożyczone","zapracowywane","zaprane","zaprasowywane","zapraszane","zaprawione","zaprenumerowane","zaprezentowane","Zaprogramowane","zaprojektowane","zaproponowane","zaproszone","zaprotokołowane","zaprowadzane","zaprowadzone","zaprzątane","zaprzeczane","zaprzeczone","zaprzedane","zaprzedawane","zaprzęgane","zaprzepaszczane","zaprzestane","zaprzestawane","zaprzyjaźnione","zapudłowane","zapunktowane","zapuszczane","zapuszczone","zapuszkowane","zapychane","zapylane","zapylone","zapytane","zarabiane","zaranżowane","zarażane","zarażone","zarecytowane","zaręczane","zaręczone","zarejestrowane","zareklamowane","zarekomendowane","zarekomondowane","zarekwirowane","zarezerwowane","zarobione","żartowane","zarwane","zaryglowane","zarymowane","zarysowane","zarywane","zaryzykowane","zarządzane","zarżnięte","zarzucane","zarzynane","zasadzone","zaścielone","zasegurowane","zaserwowane","zasiadane","zasiane","zasiedlone","zasięgane","zasięgnięte","zasiewane","zasilane","zasilone","zaskakiwane","zaskarbione","zaskoczone","zaskrobane","zasłaniane","zaślepiane","zaślepione","zasłodzone","zasłonione","zasłużone","zasmakowane","zaśmiecane","zaśmiecone","zasmradzane","zasmrodzone","zasmucane","zasmucone","zasolone","zaspakajane","zaśpiewane","zaspokajane","zaspokojone","zasponsorowane","zaśrubowywane","zassane","zastane","zastąpione","zastawiane","zastawione","zastępowane","zastopowane","zastosowane","zastraszane","zastraszone","zastrzelone","zasugerowane","zasunięte","zasuwane","zaświadczone","zaświecone","zaświonione","zasyfione","zasygnalizowane","zasymilowane","zasymulowane","zasypane","zasypywane","zasysane","zaszachowane","zaszantażowane","zaszargane","zaszczepiane","zaszczepione","zaszczute","zaszczycane","zaszczycone","zaszeptane","zaszeregowane","zaszlachtowane","zasznurowane","zaszpachlowane","zasztyletowane","zaszufladkowane","zaszyfrowane","zaszyte","zaszywane","zataczane","zatajane","zatajone","zatamowane","zatankowane","zatapiane","zatargane","zatarte","zatelegrafowane","zatemperowane","zatęsknione","zatkane","zatknięte","zatoczone","zatonięte","zatopione","zatracane","zatracone","zatriumfowane","zatrudniane","zatrudnione","zatrute","zatruwane","zatrzaskiwane","zatrzaśnięte","zatrząśnięte","zatrzymane","zatrzymywane","zatuszowane","zatwierdzane","zatwierdzone","zatykane","zatynkowane","zatytułowane","zauploadowane","zauroczone","zautomatyzowane","zauważane","zauważone","zawadzane","zawalane","zawalczone","zawalone","zawarte","zaważone","zawdzięczane","zawetowane","zawężone","zawiadamiane","zawiadomione","zawiązane","zawiązywane","zawiedzone","zawierane","zawierzone","zawieszane","zawieszone","zawiezione","zawijane","zawinięte","zawinione","zawiśnięte","zawitane","zawładnięte","zawłaszczone","zawodzone","zawojowane","zawołane","zawoskowane","zawożone","zawracane","zawrócone","zawstydzane","zażądane","zażartowane","zazdroszczone","zażegnane","zażenowane","zaznaczane","zaznajomione","zaznane","zaznawane","zażyczone","zażyte","zażywane","zbaczane","zbadane","zbagatelizowane","zbajerowane","zbałamucone","zbalansowane","zbalsamowane","zbankrutowane","zbawiane","zbawione","zbesztane","zbezczeszczone","zbierane","zbijane","zbite","zbliżone","zbluzgane","zbojkotowane","zbrojone","zbrukane","zbszczecone","zbudowane","zbudzone","zbuntowane","zburzone","zbyte","zbywane","zchwytane","zcięte","zciszone","zdane","zdarte","zdeaktywowane","zdecydowane","zdefiniowane","zdeflorowane","zdegradowane","zdejmowane","zdeklarowane","zdekodowane","zdekompresowane","zdekoncentrowane","zdekonstruowane","zdelegalizowane","zdemaskowane","zdementowane","zdemolowane","zdemontowane","zdemoralizowane","zdenerwowane","zdeponowane","zdeprymowane","zdeptane","zderzane","zderzone","zdestabilizowane","Zdetonowane","zdetronizowane","zdewastowane","zdewaulowane","zdezerterowane","zdezintegrowane","zdezorientowane","zdezynfektowane","zdiagnozowane","zdjęte","zdławione","zdmuchiwane","zdmuchnięte","zdobyte","zdobywane","zdołowane","zdominowane","zdopingowane","zdrabniane","zdradzane","zdradzone","zdrapane","zdrapywane","zdrutowane","zdruzgotane","zduplikowane","zduszone","zdwojone","zdyscyplinowane","zdyskredytowane","zdyskwalifikowane","zdystansowane","zdzielone","zdzierane","zdzierżone","zdziesiątkowane","Zdzwonione","zebrane","zechciane","zedytowane","żegnane","żenione","zepchnięte","zepsute","żerowane","zerwane","zerżnięte","zeskakiwane","zeskanowane","zeskrobywane","zesłane","ześlizgiwane","ześlizgnięte","zesmolone","zespawiane","zespolone","zessane","zestawiane","zestawione","zestresowane","zestrzeliwane","zestrzelone","zeswatane","zeszklone","zeszlifowane","zetknięte","zezłoszczone","zeznane","zeznawane","zezwalane","zezwolone","zfinansowane","zgadane","zgadywane","zgajane","zganione","zgarnięte","zgaśnięte","zgaszone","zgięte","zginane","zgładzone","zgłaszane","zgłębiane","zgłębione","zgłośnione","zgłoszone","zgłuszone","zgniatane","zgniecione","zgnite","zgnojone","zgodzone","zgolone","zgonione","zgotowane","zgrabione","zgrillowane","zgromadzane","zgromadzone","zgrupowane","zgrzeszone","zgrzytane","zgubione","zgwałcone","zhackowane","zhakowane","zhańbione","zhandlowane","zharmonizowane","zidentyfikowane","ziewane","zignorowane","zilustrowane","zinfiltrowane","zintegrowane","zintensyfikowane","zinterpretowane","zinwentaryzowane","zirytowane","zjadane","zjawiane","zjednane","zjednoczone","zjedzone","zjeżdżone","zkontaktowane","zkserowane","złączone","złagodzone","złajane","złamane","zlane","złapane","zlecane","zlecone","zlekceważone","zlepiane","zlepione","zlewane","zlicytowane","zliczane","zliczone","zlikwidowane","zlinczowane","zlitowane","zlizane","zlizywane","złoite","zlokalizowane","złomowane","żłopane","złowione","złożone","złupione","złuszczane","zluzowane","zmacane","zmącone","zmagane","zmagazynowane","zmajstrowane","zmaksylizowane","zmanipulowane","zmarnowane","zmartwychwstane","zmarznięte","zmasakrowane","zmaterializowane","zmawiane","zmazane","zmazywane","zmbobardowane","zmiatane","zmiażdżone","zmiękczone","zmielone","zmieniane","zmienione","zmierzane","zmierzone","zmierzwione","zmieszane","zmieszczone","zmiksowane","zminiaturyzowane","zminimalizowane","zmniejszane","zmniejszone","zmobilizowane","zmoczone","zmodernizowane","zmodyfikowane","zmoknięte","zmonopolizowane","zmontowane","zmostkowane","zmotywowane","zmówione","zmrożone","zmrużone","zmumifikowane","zmuszane","zmuszone","zmutowane","zmyślane","zmyte","zmywane","znacjonalizowane","znajdowane","znajdywane","znakowane","znalezione","znane","znęcane","zneutralizowane","zniechęcone","znieczulone","zniekształcane","zniekształcone","znienawidzone","znieprawione","zniesione","zniesławiane","zniesławione","zniewalane","znieważane","znieważone","zniewolone","zniszczone","zniweczone","zniwelowane","zniżane","zniżone","znokautowane","znormalnione","znoszone","znudzone","zobaczone","zobowiązane","zobrazowane","zogniskowane","żonglowane","zoomowane","zoperowane","zoptymalizowane","zorbite","zorganizowane","zorientowane","zostawiane","zostawione","zpłacone","zprowokowane","zrabowane","zrachowane","zracjonalizowane","zranione","zraportowane","zrażane","zrażone","zrealizowane","zrecenzowane","zredagowane","zredukowane","zreferowane","zreformowane","zrefowane","zrefundowane","zregenerowane","zrehabilitowane","zreinkarnowane","zreintegrowane","zrekonfigurowane","zrekonstruowane","zrekrutowane","zrekrystalizowane","zrelacjonowane","zrelaksowane","zremiksowane","zremisowane","zreorganizowane","zreperowane","zreplikowane","zresetowane","zresocjalizowane","zrestartowane","zrestrukturyzowane","zrewanżowane","zrewidowane","zrewolucjonizowane","zrezygnowane","zrobione","zrolowane","zroszone","zrównane","zrównoważone","zrównywane","zróżnicowane","zrozumiane","zrugane","zruinowane","zrujnowane","zrymowane","zrywane","zrzędzone","zrzeszone","zrzucane","zrzucone","zsumowane","zsunięte","zsuwane","zsynchronizowane","zsyntetyzowane","zsypywane","zszargane","zszokowane","zszyte","zszywane","ztarte","żute","zutylizowane","zużyte","zużywane","zwabiane","zwabione","zwalane","zwalczone","zwalniane","zwalone","zwane","zwaporyzowane","zwątpione","zważane","zważone","zwędzone","zwerbalizowane","zwerbowane","zweryfikowane","zwęszone","zwężone","zwiastowane","związane","związywane","zwichnięte","zwiedzane","zwiedzone","zwiększone","zwieńczone","zwierzane","zwieszane","zwieszone","zwietrzone","zwijane","zwilżone","zwinięte","zwizualizowane","zwlekane","zwodowane","zwodzone","zwołane","zwolnione","zwoływane","zwożone","zwracane","zwrócone","zwyciężane","zwymiotowane","życzone","żygane","zygzakowane","zyskane","zyskiwane","żyte","zżarte","zżerane","zżynane","zżyte","bici","brnięci","capnięci","chlapnięci","chuci","ciachnięci","ciągnięci","cięci","ciśnięci","cmoknięci","cofnięci","czuci","czyci","darci","dmuchnięci","dobici","dobyci","dociągnięci","docięci","dociśnięci","doglądnięci","domknięci","domyci","dopadnięci","dopchnięci","dopięci","dopici","dopłynięci","doścignięci","dosięgnięci","dosunięci","doszyci","dotknięci","dożyci","drapnięci","draśnięci","drgnięci","dźgnięci","dziabnięci","dźwignięci","gięci","gnici","golnięci","gruchnięci","gwizdnięci","hajtnięci","huknięci","kantowanci","kiwnięci","klapnięci","klepnięci","kliknięci","kłuci","knuci","kojfnięci","kopnięci","kpici","kryci","krzepnięci","krzyknięci","kuci","liznięci","łyknięci","machnięci","marznięci","maznięci","minięci","myci","nabici","nabyci","naciągnięci","nacięci","naciśnięci","nadciągnięci","nadcięci","nadszarpnięci","nadużyci","nagięci","najęci","nakłuci","nakryci","napadnięci","napięci","napluci","napoczęci","napsuci","nasunięci","naszyci","natarci","natchnięci","natknięci","natrząsnięci","nawinięci","obciągnięci","obcięci","obdarci","obici","objęci","obmyci","obsunięci","obtarci","obwinięci","obyci","ochłonięci","ocknięci","ocuci","odarci","odbici","odbyci","odciągnięci","odcięci","odcisnięci","odczuci","odepchnięci","odetnięci","odgadnięci","odgarnięci","odgięci","odjęci","odkryci","odkuci","odparci","odpięci","odpłynięci","odpruci","odrośnięci","odsłonięci","odsunięci","odtruci","odwinięci","odżyci","ogarnięci","okryci","okrzyknięci","olśnięci","ominięci","opadnięci","oparci","opchnięci","opici","opluci","orżnięci","osiągnięci","oślepnięci","ostrzelici","osunięci","otarci","otruci","otrząśnięci","owinięci","ożyci","pacnąci","palnięci","parci","pchnięci","pęknięci","pięci","pici","pluci","pobici","pochłonięci","pociągnięci","pocięci","poczęci","poczuci","podarci","podbici","podciągnięci","podcięci","podjęci","podkradnięci","podkuci","podmyci","podnajęci","podpadnięci","podparci","podpięci","podpłynięci","podsunięci","podszyci","podtarci","podwinięci","podźwignięci","pojęci","pojmięci","pokłuci","pokryci","połknięci","pominięci","pomknięci","poparci","popchnięci","popici","popsuci","posunięci","poszczuci","potarci","potknięci","potruci","potrząsnięci","potrząśnięci","powici","powściągnięci","powzięci","pożarci","pozbyci","pożuci","pożyci","pruci","pryśnięci","przebiegnięci","przebici","przebyci","przeciągnięci","przecięci","przeciśnięci","przeczuci","przedarci","przedsiewzięci","przegięci","przeglądnięci","przejęci","przeklęci","przeklnięci","przekłuci","przekuci","przełknięci","przełyknięci","przeminięci","przemknięci","przemyci","przeniknięci","przepchnięci","przepici","przepłynięci","przerośnięci","prześcignięci","prześlizgnięci","przesłonięci","przesunięci","przeszyci","przetarci","przetrząśnięci","przewinięci","przeżarci","przeżuci","przeżyci","przybici","przyciągnięci","przycięci","przyciśnięci","przydepnięci","przygarnięci","przyjęci","przykryci","przykuci","przymknięci","przypadnięci","przyparci","przypięci","przypłynięci","przysiągnięci","przysunięci","przyszyci","przytarci","przytrzasnięci","przywarci","pstryknięci","psuci","puchnięci","puknięci","rozbici","rozbłyśnięci","rozciągnięci","rozcięci","rozgarnięci","rozgięci","rozkuci","rozkwitnięci","rozminięci","rozmyci","rozpięci","rozpłynięci","rozpoczęci","rozpruci","rozrośnięci","rozstrzygnięci","rozsunięci","roztarci","rozwarci","rozwinięci","runięci","ryci","rżnięci","ściągnięci","ścięci","ściśnięci","skrobnięci","skryci","skrzepnięci","skrzyci","skubnięci","skuci","smuci","snuci","spięci","spici","spłonięci","spoczęci","spożyci","sprzątnięci","stnięci","struci","strząśnięci","strzepnięci","stuknięci","sunięci","sypnięci","szarpnięci","szczuci","szepnięci","sztachnięci","szturchnięci","szyci","targnięci","tarci","tchnięci","tknięci","truci","tryśnięci","trzasnięci","trzepnięci","ubici","uciągnięci","ucięci","uciśnięci","uczuci","udźwignięci","ugięci","ugrzęznięci","uiścici","ujęci","ukłuci","uknuci","ukryci","ukuci","umknięci","umyci","uniknięci","uparci","upchnięci","upięci","upici","upłynięci","uprzątnięci","urośnięci","urżnięci","uschnięci","uściśnięci","usunięci","uszczypnięci","uszyci","utarci","utknięci","uwinięci","uwici","użyci","walnięci","wbici","wchłonięci","wciągnięci","wcięci","wciśnięci","wczuci","wdarci","wdepnięci","wepchnięci","wetknięci","wici","wkłuci","wkuci","wniknięci","wpięci","wryci","wślizgnięci","wsparci","wspięci","współczuci","współżyci","wstrząśnięci","wstrzyknięci","wsunięci","wszczęci","wszyci","wtargnięci","wtarci","wybici","wyblaknięci","wybuchnięci","wyciągnięci","wycięci","wyciśnięci","wyczuci","wydobyci","wyfrunięci","wygarnięci","wygaśnięci","wygięci","wyjęci","wykluci","wykłuci","wykopnięci","wykpici","wykradnięci","wykryci","wykrzyknięci","wykuci","wyminięci","wymknięci","wymsknięci","wymyci","wynajęci","wyniknięci","wyparci","wypchnięci","wypięci","wypici","wypluci","wypoczęci","wypruci","wyrośnięci","wyryci","wyrżnięci","wyschnięci","wyślizgnięci","wysnuci","wystrychnięci","wystygnięci","wysunięci","wyszarpnięci","wyszyci","wytarci","wytchnięci","wytknięci","wytruci","wytrzasnięci","wytrząśnięci","wywarci","wywinięci","wyzbyci","wyzionięci","wyżyci","wzbici","wzięci","wzniesięci","wzrośnięci","zabici","zabrnięci","zaciągnięci","zacięci","zaciśnięci","zaczęci","zadarci","zadęci","zadraśnięci","zagadnięci","zagarnięci","zagięci","zaginięci","zajęci","zakłuci","zakryci","zakrzyknięci","zakuci","zakwitnięci","zamachnięci","zamarznięci","zamknięci","zaniknięci","zapięci","zapici","zarżnięci","zasięgnięci","zasunięci","zaszczuci","zaszyci","zatarci","zatknięci","zatonięci","zatruci","zatrzaśnięci","zatrząśnięci","zawarci","zawinięci","zawiśnięci","zawładnięci","zażyci","zbici","zbyci","zcięci","zdarci","zdjęci","zdmuchnięci","zdobyci","zepchnięci","zepsuci","zerżnięci","ześlizgnięci","zetknięci","zgarnięci","zgaśnięci","zgięci","zgnici","złoici","zmarznięci","zmoknięci","zmyci","zorbici","zsunięci","zszyci","ztarci","żuci","zużyci","zwichnięci","zwinięci","życi","zżarci","zżyci","abdykowani","absorbowani","adaptowani","administrowani","adoptowani","adorowani","adresowani","afiszowani","agitowani","akcentowani","akceptowani","aklimatyzowani","akompaniowani","aktualizowani","aktywowani","akumulowani","alaromowani","alienowani","amerykanizowani","amortyzowani","amputowani","analizowani","angażowani","anihilowani","animowani","anonsowani","antropomorfizowani","antydatowani","anulowani","apelowani","aportowani","aranżowani","archiwizowani","aresztowani","argumentowani","artykułowani","ascendowani","asekurowani","asymilowani","asystowani","atakowani","autoryzowani","awanturowani","babrani","baczeni","badani","bagatelizowani","bajerowani","bałamuceni","balangowani","balansowani","banalizowani","bandażowani","bankrutowani","baraszkowani","barwieni","bawieni","bazgrani","bazowani","bębnieni","bełkotani","besztani","biczowani","błagani","błaznowani","blefowani","błogosławieni","blokowani","bluzgani","błyskani","boczeni","bogaceni","bojkotowani","boksowani","bombardowani","bopowani","borowani","brandzlowani","brani","brasowani","bratani","brodzeni","bronieni","brudzeni","brylowani","budowani","budzeni","bujani","buleni","bulwersowani","bumelowani","burzeni","butelkowani","bywani","cackani","całowani","cechowani","celebrowani","celowani","cenieni","cenzurowani","chciani","chlani","chlapani","chlastani","chłodzeni","chlostani","chlubieni","chodowani","chomikowani","chorowani","chowani","chronieni","chrupani","chrzczeni","chwaleni","chwyceni","chwytani","chybotani","chyleni","ciągani","ciemiężeni","cierpiani","cieszeni","ciskani","ciułani","cmokani","cofani","ćpani","cuceni","cudzołożeni","cumowani","ćwiartowani","ćwiczeni","cykani","cytowani","czajeni","czarowani","czczeni","czepiani","czepieni","czerpani","czesani","częstowani","czochrani","czołgani","czytani","darowani","darzeni","datowani","dawani","dbani","deaktywowani","debatowani","dedukowani","dedykowani","defibrylowani","defilowani","definiowani","defraudowani","degradowani","degustowani","deklamowani","deklarowani","dekodowani","dekompresowani","dekorowani","dekretowani","delegowani","delektowani","deliberowani","demaskowani","dementowani","demolowani","demonizowani","demonstrowani","demoralizowani","denerwowani","denuncjowani","depeszowani","depilowani","deportowani","deprawowani","deptani","deratyzowani","destabilizowani","destylowani","desygnowani","determinowani","detonowani","dewastowani","dewaulowani","dezaktywowani","dezorientowani","dezynfekowani","diagnozowani","dilowani","dłubani","dłużeni","dmuchani","dobiegani","dobierani","dobijani","dobrani","dobudzeni","doceniani","docenieni","dochodzeni","dochowani","dochowywani","dociekani","docinani","dociskani","doczekani","doczepieni","doczołgani","doczyszczeni","doczytani","dodani","dodawani","dodrukowani","dodrukowywani","dofinansowani","dofinansowywani","dogadani","dogadywani","dogadzani","doganiani","doglądani","dognani","dogodzeni","dogonieni","dograni","dogryzani","dogryzioni","dogrzani","dogrzebani","doinformowani","dojeżdżani","dojeni","dojrzani","dojrzewani","dokańczani","dokarmiani","dokarmieni","dokazani","dokazywani","dokładani","doklejeni","dokonani","dokończeni","dokonywani","dokopani","dokopywani","dokowani","dokręcani","dokręceni","dokształcani","dokształceni","dokuczani","dokumentowani","dokupieni","dołączani","dołączeni","doładowani","dolani","dolewani","doliczeni","dołowani","dołożeni","domagani","domalowani","domniewywani","domówieni","domyślani","domyśleni","doniesieni","donoszeni","dopadani","dopakowani","dopaleni","dopasowani","dopasowywani","dopatrywani","dopatrzeni","dopchani","dopełniani","dopełnieni","dopieszczeni","dopijani","dopilnowani","dopingowani","dopisani","dopisywani","dopłacani","dopłaceni","dopolerowani","dopompowani","dopowiedziani","dopracowani","dopracowywani","doprani","doprawieni","doprecyzowani","doproszeni","doprowadzani","doprowadzeni","dopucowani","dopuszczani","dopuszczeni","dopytywani","dorabiani","doradzani","doradzeni","doręczani","doręczeni","dorobieni","dorównani","dorównywani","dorwani","dorysowani","dorzucani","dorzuceni","dosiadani","doskoczeni","doskonaleni","dosładzani","dosłani","dosłyszani","dosoleni","dośrodkowani","dossani","dostani","dostąpieni","dostarczani","dostarczeni","dostawani","dostawiani","dostawieni","dostosowani","dostosowywani","dostrajani","dostrojeni","dostrzegani","dosuwani","doświadczani","doświetleni","dosypani","dosypywani","doszkoleni","doszlifowani","doszorowani","doszukani","doszukiwani","dotankowani","dotankowywani","dotargani","dotaszczeni","dotlenieni","dotłumaczeni","dotowani","dotrwani","dotrzymani","dotrzymywani","dotykani","douczani","douczeni","dowaleni","dowiezieni","dowodzeni","dowożeni","doznani","doznawani","dozorowani","dozowani","dożywieni","dramatyzowani","drapani","drażnieni","drążeni","dręczeni","drenowani","drgani","drukowani","dryblowani","dryfowani","drzemani","dubbingowani","dublowani","duplikowani","duszeni","dworowani","dygotani","dyktowani","dymani","dymieni","dyrygowani","dyscyplinowani","dyskredytowani","dyskryminowani","dyskutowani","dyskwalifikowani","dysponowani","dystansowani","dystrybuowani","dywagowani","dźgani","dziedziczeni","dziękowani","dzieleni","dziergani","dzierżeni","dziobani","dziurawieni","dziurkowani","dźwigani","edukowani","edytowani","egzaminowani","egzekutowani","egzekwowani","ekscytowani","ekshumowani","ekskomunikowani","eksmitowani","ekspandowani","eksperymentowani","eksploatowani","eksplorowani","eksponowani","eksportowani","eksterminowani","ekstradowani","ekstrapolowani","eliminowani","emancypowani","emigrowani","emitowani","energetyzowani","eskortowani","etykietowani","ewakuowani","ewaluowani","fabrykowani","falowani","fałszowani","farbowani","faszerowani","faulowani","faworyzowani","fechtowani","fermentowani","ferowani","figurowani","filetowani","filmowani","filtrowani","finalizowani","finansowani","firmowani","fleszowani","folgowani","formułowani","forsowani","fotografowani","fundowani","gadani","ganiani","garbieni","gardzeni","garnirowani","gaszeni","gawędzeni","gaworzeni","gazowani","gdakani","gderani","generalizowani","generowani","gilgotani","gładzeni","głaskani","głodowani","głodzeni","gloryfikowani","głosowani","głoszeni","głowieni","gmatwani","gmerani","gnani","gnębieni","gnieceni","gnojeni","godzeni","goleni","gonieni","googlowani","gospodarowani","goszczeni","gotowani","grabieni","grani","grasowani","gratulowani","grillowani","grilowani","gromadzeni","gromieni","grożeni","gruchani","grupowani","grywani","gryzieni","grzani","grzechotani","gubieni","gustowani","gwałceni","gwarantowani","gwizdani","hackowani","haftowani","hamowani","hańbieni","handlowani","harcowani","harmonizowani","harowani","hartowani","hibernowani","hipnotyzowani","hodowani","holowani","hołubieni","honorowani","hospitalizowani","hulani","huśtani","idealizowani","identyfikowani","ignorowani","igrani","ilustrowani","imitowani","implantowani","implodowani","imponowani","importowani","improwizowani","indokrynowani","indukowani","infekowani","infiltrowani","informowani","ingerowani","inhalowani","inscenizowani","inspirowani","instalowani","instruowani","insynuowani","integrowani","interpretowani","interweniowani","intonowani","intubowani","inwestowani","inwigilowani","irytowani","iskrzeni","izolowani","jadani","jawieni","jazgotani","jednoczeni","jedzeni","kablowani","kadzeni","kalani","kaleczeni","kalkulowani","kamerowani","kamienowani","kamuflowani","kanalizowani","kąpani","kapitulowani","kapowani","karani","karbonizowani","karceni","karczowani","karmieni","kartkowani","kąsani","kasowani","kastrowani","katalogowani","katapultowani","katowani","katrupieni","kierowani","kimani","kiszeni","kiwani","kłaniani","klapani","klarowani","klasyfikowani","klębieni","klejeni","klepani","klikani","klonowani","kłopotani","knoceni","kochani","koczowani","kodowani","kojarzeni","kojeni","kolekcjonowani","kolektywizowani","kolidowani","kolonizowani","kolorowani","koloryzowani","kołowani","kołysani","kombinowani","komenderowani","komentowani","komercjalizowani","kompensowani","komplementowani","komplikowani","komponowani","kompromitowani","komunikowani","konani","koncentrowani","kończeni","konfabulowani","konfiskowani","konfrontowani","konserwowani","konspirowani","konstruowani","konsultowani","konsumowani","kontaktowani","kontestowani","kontrastowani","kontrolowani","kontrowani","kontynuowani","kontynuuowani","konwertowani","konwojowani","koordynowani","kopani","kopceni","kopiowani","kopulowani","korelowani","korkowani","koronowani","korygowani","korzystani","koszeni","kotwiczeni","kozaczeni","kozłowani","kradzieni","krajani","krążeni","kręceni","kremowani","kreowani","krochmaleni","krojeni","kropieni","kruszeni","krystalizowani","krytykowani","krzyczani","krzywdzeni","krzywieni","krzyżowani","kserowani","księgowani","kształceni","kształtowani","kuleni","kultywowani","kumulowani","kupczeni","kupieni","kupowani","kupywani","kurczeni","kurowani","kursowani","kurzeni","kuszeni","kwalifikowani","kwestionowani","łączeni","ładowani","łagodzeni","łajdaczeni","lakierowani","łamani","lamentowani","lansowani","lani","łapani","łaskotani","łaszeni","latani","łatani","lawirowani","leczeni","legalizowani","legitymowani","lekceważeni","lepieni","lewitowani","liberowani","licencjonowani","licytowani","liczeni","likwidowani","linczowani","liniowani","literowani","litowani","lizani","lobbowani","lokalizowani","losowani","łowieni","łożeni","lubiani","łudzeni","lunatykowani","łupani","łupieni","łuskani","lustrowani","łuszczeni","luzowani","łykani","łyżeczkowani","macani","machani","mąceni","maczani","maganyzowani","maglowani","majaczeni","majsterkowani","majtani","maksymalizowani","malowani","maltretowani","mamieni","mamrotani","manewrowani","manifestowani","manipulowani","markowani","marnotrawieni","marnowani","marszczeni","marynowani","masakrowani","maskowani","masowani","masturbowani","mataczeni","materializowani","mawiani","mazani","męczeni","meldowani","merdani","metabolizowani","miażdżeni","mieleni","mierzeni","mierzwieni","mieszani","miętoleni","migani","migdaleni","migotani","mijani","miksowani","milowani","minimalizowani","miotani","mistyfikowani","mitygowani","mizdrzeni","mlani","mniemani","mnożeni","mobilizowani","mocowani","moczeni","modelowani","modernizowani","modleni","modulowani","modyfikowani","molestowani","monitorowani","monopolizowani","montowani","mordowani","motywowani","mrożeni","mrugani","mrużeni","muskani","mutowani","mydleni","myleni","myszkowani","nabazgrani","nabiegani","nabierani","nabrani","nabrojeni","nabrudzeni","nabywani","nacelowani","nachapani","nachodzeni","nachwaleni","nachyleni","naciągani","nacierani","nacinani","naciskani","nacjonalizowani","naczepieni","nadani","nadawani","nadchodzeni","nadciągani","nadesłani","nadgonieni","nadgryzani","nadgryzieni","nadinterpretowani","nadłożeni","nadmieniani","nadmienieni","nadmuchani","nadrabiani","nadrobieni","nadskakiwani","nadsłuchiwani","nadstawiani","nadstawieni","naduszeni","nadużywani","nadwerężani","nadwyrężani","nadwyrężeni","nadziani","nadzorowani","naelektryzowani","nafaszerowani","nagabywani","nagadani","naginani","nagłaszani","nagłośnieni","nagonieni","nagradzani","nagrani","nagrodzeni","nagromadzeni","nagrywani","nagryzmoleni","nagrzani","nagrzebani","nagrzewani","nagwizdani","naigrywani","najechani","najmowani","nakarmiani","nakarmieni","nakazani","nakazywani","nakierowani","nakierowywani","nakładani","nakłamani","nakłaniani","naklejani","naklejeni","naklepani","nakłonieni","nakłuwani","nakopani","nakręcani","nakręceni","nakreślani","nakreśleni","nakruszeni","nakrywani","nakrzyczani","nakupieni","naładowani","nalani","nałapani","nalepieni","nalewani","naliczeni","nałowieni","nałożeni","namaczani","namagnetyzowani","namalowani","namaszczani","namaszczeni","namawiani","namęczeni","namierzani","namieszani","namoczeni","namówieni","namydlani","namyśleni","naniesieni","naoliwiani","naoliwieni","naopowiadani","naostrzeni","napadani","napakowani","napaleni","naparzani","napastowani","napawani","napchani","napędzani","napełniani","napełnieni","napierani","napiętnowani","napinani","napisani","napływani","napojeni","napompowani","napotkani","napotykani","napraszani","naprawiani","naprawieni","naprężani","naprężeni","napromieniowani","naprostowani","naprowadzani","naprowadzeni","napuszczani","napuszczeni","napychani","napytani","narąbani","naradzani","naradzeni","narastani","narażani","narażeni","nareperowani","narkotyzowani","narodzeni","naruszani","naruszeni","narwani","narysowani","narzucani","narzuceni","nasączani","nasączeni","nasadzeni","nasiąkani","nasilani","nasileni","naskakiwani","naskoczeni","naskrobani","naśladowani","nasłani","nasłuchani","nasłuchiwani","nasmarowani","nastąpieni","nastawiani","nastawieni","nastraszani","nastrojeni","nastukani","nasuwani","naświetlani","nasyceni","nasyłani","nasypani","naszczani","naszkicowani","naszpikowani","naszprycowani","naszykowani","naszywani","natlenieni","natłuszczeni","natrafieni","natrząsani","nauczani","nauczeni","nawadniani","nawaleni","nawiązani","nawiązywani","nawiedzani","nawiedzeni","nawierceni","nawiewani","nawiezieni","nawigowani","nawijani","nawilżani","nawilżeni","nawlekani","nawodnieni","nawoływani","nawoskowani","nawożeni","nawpychani","nawracani","nawróceni","nawrzucani","nawtykani","nawymyślani","nazbierani","nazmyślani","naznaczani","naznaczeni","nazrywani","nazwani","nazywani","nęceni","negocjowani","negowani","nękani","neutralizowani","niańczeni","niecierpliwieni","niedoceniani","niedowidziani","nienawidzeni","niesieni","nikoleni","niszczeni","nitkowani","niuchani","niweczeni","niwelowani","nokautowani","nominowani","notowani","nuceni","numerowani","nurtowani","obaczeni","obadani","obalani","obaleni","obandażowani","obarczani","obarczeni","obawiani","obchodzeni","obciążeni","obcinani","obcyndalani","obczajani","obczajeni","obdarowani","obdarzani","obdarzeni","obdzieleni","obdzierani","obdzwaniani","obdzwonieni","obejmowani","oberwani","obessani","obezwładniani","obezwładnieni","obfotografowani","obfotografowywani","obgadani","obgadywani","obgryzani","obgryzieni","obiecani","obiecywani","obierani","obijani","objadani","objaśniani","objawiani","objawieni","objechani","objeżdżani","obkręcani","oblani","obłapiani","obłapywani","obłaskawiani","obłaskawieni","obleciani","oblewani","obliczani","obliczeni","oblizani","obłowieni","obłożeni","obluzowani","obluzowywani","obmacani","obmacywani","obmawiani","obmyślani","obmyśleni","obmywani","obnażani","obniżani","obniżeni","obnoszeni","obowiązywani","obozowani","obrabiani","obrabowani","obracani","obradowani","obramowani","obraniani","obrani","obrastani","obrażani","obrażeni","obrobieni","obróceni","obrodzeni","obronieni","obrysowani","obrywani","obryzgani","obrzezani","obrzucani","obrzuceni","obrzygani","obsadzani","obsadzeni","obściskiwani","obserwowani","obsiani","obsikani","obsikiwani","obskakiwani","obskoczeni","obskubani","obskubywani","obśliniani","obślinieni","obsługiwani","obsłużeni","obsmarowani","obstawiani","obstawieni","obstrzeliwani","obsuwani","obsypani","obsypywani","obszukani","obszukiwani","obtaczani","obtoczeni","obudzeni","obwąchani","obwąchiwani","obwiązani","obwiązywani","obwieszani","obwieszczani","obwieszczeni","obwieszeni","obwijani","obwiniani","obwołani","obżerani","ocalani","ocaleni","ocechowani","oceniani","ocenieni","ocenzurowani","ochładzani","ochlapani","ochlapywani","ochłodzeni","ochraniani","ochronieni","ochrzaniani","ochrzczeni","ociągani","ocieleni","ocieplani","ociepleni","ocierani","ocuceni","oczarowywani","oczekiwani","oczerniani","oczernieni","oczyszczani","oczyszczeni","odbębnieni","odbetonowani","odbezpieczani","odbezpieczeni","odbijani","odblokowani","odbudowani","odbudowywani","odbutowani","odcedzani","odchorowani","odchowani","odchudzani","odchudzeni","odchylani","odchyleni","odciągani","odciążeni","odcierpieni","odcinani","odcumowani","odcyfrowani","odcyfrowywani","odczarowani","odczekani","odczepiani","odczepieni","odczuwani","odczynieni","odczytani","odczytywani","oddalani","oddani","oddawani","oddelegowani","oddychani","oddzielani","oddzieleni","odebrani","odegnani","odegrani","odejmowani","oderwani","odeskortowani","odesłani","odespani","odessani","odetkani","odezwani","odfiltrowani","odgadywani","odganiani","odgarniani","odgniatani","odgonieni","odgradzani","odgrażani","odgrodzeni","odgruzowani","odgrywani","odgryzani","odgryzieni","odgrzani","odgrzebani","odgrzebywani","odgrzewani","odgwizdani","odhaczeni","odholowani","odinstalowani","odizolowani","odjedzeni","odjonizowani","odkażani","odkażeni","odkładani","odklejeni","odkochani","odkodowani","odkodowywani","odkopani","odkopywani","odkorkowani","odkręcani","odkręceni","odkrojeni","odkrywani","odkupieni","odkupywani","odkurzani","odkurzeni","odłączani","odłączeni","odłamywani","odlani","odlatywani","odlepiani","odlewani","odliczani","odliczeni","odłożeni","odłupani","odmachani","odmachiwani","odmalowani","odmarszczeni","odmawiani","odmeldowani","odmieniani","odmienieni","odmierzani","odmierzeni","odmieszani","odmontowani","odmówieni","odmrażani","odmrożeni","odnajdowani","odnalezieni","odnawiani","odniesieni","odnoszeni","odnotowani","odnotowywani","odnowieni","odpakowani","odpakowywani","odpalani","odpaleni","odpałzowani","odparowani","odpędzani","odpicowani","odpieczętowani","odpierani","odpiłowani","odpiłowywani","odpinani","odpisani","odpisywani","odpłacani","odplamieni","odplątani","odpowietrzeni","odpracowani","odpracowywani","odprasowani","odprawiani","odprawieni","odprężani","odprostowani","odprowadzani","odprowadzeni","odpryskani","odpukani","odpukiwani","odpuszczani","odpuszczeni","odpychani","odrąbani","odrabiani","odrąbywani","odradzani","odradzeni","odrapani","odrastani","odratowani","odreagowani","odremontowani","odrestaurowani","odrestaurowywani","odrobaczani","odrobieni","odroczeni","odrodzeni","odróżniani","odróżnieni","odrysowani","odrywani","odrzucani","odrzuceni","odsączani","odsączeni","odsadzeni","odseparowani","odsiadywani","odsiani","odsiewani","odsłaniani","odsłuchani","odsłuchiwani","odsłużeni","odśnieżani","odśnieżeni","odsoleni","odśpiewani","odsprzedani","odsprzedawani","odstąpieni","odstawiani","odstawieni","odstępowani","odstraszani","odstręczeni","odstresowani","odstrzeliwani","odstrzeleni","odsuwani","odświeżani","odświeżeni","odsyłani","odsypywani","odsysani","odszczekani","odszczekiwani","odsztafirowani","odszukani","odszyfrowani","odszyfrowywani","odszykowani","odtrąbieni","odtrąceni","odtwarzani","odtworzeni","oduczeni","odurzeni","odwalani","odwaleni","odwiązani","odwiązywani","odwiedzani","odwiedzeni","odwieszeni","odwiezieni","odwijani","odwlekani","odwodnieni","odwodzeni","odwołani","odwoływani","odwożeni","odwracani","odwróceni","odwzajemnieni","odwzorowani","odżegnani","odziani","odziedziczeni","odznaczani","odznaczeni","odzwieciedleni","odzwierciedlani","odzwonieni","odzwyczajeni","odzyskani","odzyskiwani","odzywiani","odżywieni","oferowani","ofiarowani","ofiarowywani","ogarniani","oglądani","ogłaszani","ogłoszeni","ogłupiani","ogłupieni","ogłuszeni","ogołoceni","ogoleni","ograbiani","ograbieni","ograniczani","ograniczni","ograni","ogrodzeni","ogryzieni","ogrzani","ogrzewani","okablowani","okaleczeni","okantowani","okąpani","okazani","okazywani","okiełznani","okładani","okłamani","okłamywani","oklaskiwani","oklejeni","oklepani","okopani","okopywani","okpieni","okradani","okradzieni","okraszeni","okrążani","okrążeni","okręcani","okręceni","określani","określeni","okrojeni","okrywani","okulawieni","okupieni","okupowani","olani","olewani","omamieni","omawiani","omdlewani","omijani","omotani","omówieni","onanizowani","onieśmielani","onieśmieleni","opakowani","opalani","opaleni","opancerzeni","opanowani","opanowywani","oparzeni","opasani","opatentowani","opatrywani","opatrzeni","opatuleni","opędzani","opędzeni","operowani","opętani","opętywani","opieczętowani","opiekowani","opierani","opijani","opisani","opisywani","opłacani","opłaceni","opłakani","opłakiwani","opłukani","opluwani","opływani","opodatkowani","opodatkowywani","oponowani","oporządzani","oporządzeni","opowiadani","opowiedziani","opóźniani","opóźnieni","opracowani","opracowywani","oprawiani","oprawieni","oprowadzani","oprowadzeni","opróżniani","opróżnieni","opryskani","opryskiwani","opublikowani","opukani","opuszczani","opuszczeni","opychani","opyleni","orani","orbowani","organizowani","orientowani","oroszeni","orzekani","osaczani","osaczeni","osadzani","osądzani","osadzeni","osądzeni","oscylowani","osiadani","osiągani","osiedlani","osiedleni","osiedzeni","osieroceni","osiodłani","oskalpowani","oskarżeni","oskrobani","oskrzydlani","oskrzydleni","oskubani","oskubywani","osłabiani","osłabieni","oślepiani","oślepieni","ośliniani","osłodzeni","osłonieni","osłuchani","osmaleni","ośmieleni","ośmieszani","ośmieszeni","ostrzegani","ostrzelani","ostrzeni","ostudzeni","osuszani","osuszeni","osuwani","oswajani","oświadczani","oświadczeni","oświecani","oświecieni","oświetlani","oświetleni","oswobadzani","oswobodzeni","oswojeni","oszacowani","oszałamiani","oszczani","oszczędzani","oszczędzeni","oszkleni","oszlifowani","oszołomieni","oszpeceni","oszukani","oszukiwani","oszwabieni","otaczani","otoczeni","otruwani","otrząsani","otrzepani","otrzeźwieni","otrzymani","otrzymywani","otuleni","otumanieni","otwierani","otwarci","owani","owdowieni","owiani","owijani","ozdabiani","ozdobieni","ozdrowieni","ożenieni","oznaczani","oznaczeni","oznajmiani","oznajmieni","oznakowani","ożywani","ożywiani","ożywieni","pakowani","paktowani","pałani","pałaszowani","paleni","pamiętani","panoszeni","paprani","parafrazowani","paraliżowani","parkowani","parowani","partaczeni","parzeni","pastowani","paszeni","patrolowani","patroszeni","pauzowani","pchani","pdholowani","pedałowani","pękani","pełnieni","penetrowani","perforowani","perfumowani","perswadowani","piastowani","pichceni","pielęgnowani","pieleni","pienieni","pieszczeni","piętnowani","pijani","pikietowani","piknikowani","pikowani","pilnowani","pilotowani","piłowani","pisani","pisywani","płaceni","plądrowani","planowani","płaszczeni","plątani","płatani","pławieni","plewieni","płoszeni","plotkowani","plugawieni","płukani","pluskani","pobaraszkowani","pobierani","pobłażani","pobłogosławieni","pobrani","pobrudzeni","pobudzani","pobudzeni","pobujani","pocałowani","pocerowani","pochłaniani","pochlapani","pochlebiani","pochowani","pochwalani","pochwaleni","pochwyceni","pochylani","pochyleni","pociachani","pociągani","pocierani","pocieszani","pocieszeni","poceni","pocukrowani","poćwiartowani","poczesani","poczęstowani","poczochrani","poczytani","poczytywani","podani","podarowani","podawani","podążeni","podbierani","podbijani","podbudowani","podbudowywani","podburzani","podburzeni","podchwyceni","podciągani","podcierani","podcinani","podczepieni","poddani","poddawani","podebrani","podejmowani","podejrzani","podejrzewani","podelektowani","podeptani","poderwani","podesłani","podglądani","podgoleni","podgonieni","podgryzani","podgrzani","podgrzewani","podjadani","podjedzeni","podkablowani","podkarmieni","podkładani","podklejeni","podkolorowani","podkołowani","podkopani","podkopywani","podkradani","podkręcani","podkręceni","podkreślani","podkreśleni","podkształceni","podkuleni","podkupieni","podkurzeni","podłączani","podłączeni","podładowani","podłamani","podlani","podłapani","podleczeni","podlegani","podlewani","podliczani","podliczeni","podlizani","podlizywani","podłożeni","podmalowani","podmieniani","podmienieni","podmuchani","podniecani","podnieceni","podniesieni","podnoszeni","podołani","podopingowani","podostrzeni","podotykani","podpalani","podpaleni","podpatrywani","podpatrzeni","podpieczętowani","podpiekani","podpierani","podpiłowani","podpinani","podpisani","podpisywani","podpłaceni","podpompowani","podporządkowani","podporządkowywani","podpowiadani","podpowiedziani","podprowadzani","podpuszczani","podpuszczeni","podpychani","podpytani","podrabiani","podrapani","podrasowani","podratowani","podrażnieni","podręczeni","podregulowani","podreperowani","podretuszowani","podrobieni","podroczeni","podróżowani","podrygiwani","podrywani","podrzucani","podrzuceni","podrzynani","podsadzeni","podskubywani","podsłuchani","podsłuchiwani","podsmażani","podsmażeni","podśpiewywani","podstawiani","podstawieni","podstemplowani","podstrojeni","podsumowani","podsumowywani","podsuwani","podświetlani","podsycani","podsyceni","podsyłani","podsypani","podszczypywani","podszkoleni","podszlifowani","podszykowani","podszywani","podtapiani","podtopieni","podtrzymani","podtrzymywani","podtuczeni","poduczani","podupadani","poduszeni","podwajani","podwalani","podważani","podwędzeni","podwiązani","podwieszani","podwiezieni","podwijani","podwojeni","podwożeni","podwyżani","podwyższani","podwyższeni","podyktowani","podyskutowani","podziabani","podziałani","podziałkowani","podziękowani","podzieleni","podziurawieni","podziwiani","poeksperymentowani","pofarbowani","pofatygowani","pofilmowani","poganiani","pogardzani","pogardzeni","pogarszani","pogaszeni","pogładzeni","pogłaskani","pogłębiani","pogłębieni","pogłośnieni","pogmatwani","pognębieni","pogniecieni","pogodzeni","pogonieni","pogorszeni","pogotowani","pograbieni","pogrążani","pogrążeni","pogrożeni","pogrubiani","pogrubieni","pogruchani","pogruchotani","pogrupowani","pogrywani","pogryzani","pogryzieni","pogrzani","pogrzebani","pogubieni","pogwałcani","pohamowani","pohandlowani","poharatowani","pohuśtani","poinformowani","poinstruowani","pojednani","pojmowani","pojeni","pokajani","pokaleczeni","pokarani","pokarmieni","pokąsani","pokatalogowani","pokazani","pokazywani","pokiereszowani","pokierowani","pokiwani","pokładani","poklepani","poklepywani","pokłonieni","pokochani","pokolorowani","pokoloryzowani","pokołysani","pokombinowani","pokomplikowani","pokonani","pokończeni","pokonywani","pokopani","pokrajani","pokrążeni","pokręceni","pokrojeni","pokruszeni","pokrywani","pokrzepiani","pokrzepieni","pokrzyżowani","pokuszeni","pokutowani","połączeni","polakierowani","połamani","polani","połapani","połaskotani","połatani","polecani","połechtani","poleceni","poleczeni","polegani","polemizowani","polepszani","polepszeni","polerowani","polewani","policzkowani","policzeni","polimeryzowani","polizani","polowani","połowieni","położeni","polubieni","poluźnieni","poluzowani","połykani","pomacani","pomachani","pomagani","pomalowani","pomarynowani","pomasowani","pomazani","pomęczeni","pomiatani","pomieszani","pomieszczeni","pomijani","pomiziani","pomnażani","pomniejszani","pomniejszeni","pomnożeni","pomoczeni","pompowani","pomydleni","pomyleni","pomyszkowani","pomywani","ponabijani","ponaciskani","ponadziewani","ponaglani","ponagleni","ponagrywani","ponaklejani","ponakłuwani","ponakrywani","ponaprawiani","ponawiani","poniańczeni","poniechani","ponieiwerani","poniesieni","poniszczeni","poniżani","poniżeni","ponoszeni","ponowieni","ponudzeni","poobcinani","poobcowani","poobczajani","poobijani","poobmacywani","poobracani","poobserwowani","poodbijani","poodcinani","poodgryzani","poodkurzani","poodprawiani","poodsuwani","poodwalani","pooglądani","poograniczani","poopalani","poopiekani","poopwiadani","pootwierani","popadani","popakowani","popaleni","poparzeni","popchani","popędzani","popędzeni","popękani","popełniani","popełnieni","poperfumowani","popierani","popieszczeni","popijani","popilnowani","popisani","popłaceni","popłakiwani","poplamieni","poplątani","popluskani","popodcinani","popodziwiani","popoprawiani","poprani","poprasowani","poprawiani","poprawieni","poproszeni","poprowadzeni","popryskani","poprzebierani","poprzeciągani","poprzecinani","poprzedzani","poprzeglądani","poprzeklinani","poprzekopywani","poprzemieszczani","poprzenoszeni","poprzesadzani","poprześladowani","poprzestawiani","poprzesuwani","poprzewieszani","poprzewracani","poprzycinani","poprzymierzani","poprzytulani","poprzywiązywani","popudrowani","popukani","popularyzowani","popuszczani","popuszczeni","popychani","popykani","popytani","porabiani","porachowani","poranieni","poratowani","porażeni","poręczeni","porównani","porozbierani","porozbijani","porozciągani","porozcinani","porozdawani","porozdzielani","porozmieszczani","poróżnieni","porozpędzani","porozpieszczani","porozprowadzani","porozpruwani","porozrzucani","porozstawiani","porozsyłani","porozumiewani","porozwalani","porozwiązywani","porozwieszani","porozwożeni","portretowani","poruszani","poruszeni","porwani","porysowani","porywani","porządkowani","porządzeni","porzucani","porzuceni","posądzani","posadzeni","posądzeni","pościągani","pościeleni","pościerani","pościgani","pościnani","pościskani","posegregowani","posiadani","posiani","posiekani","posilani","posiłkowani","posileni","posiłowani","posiniaczeni","posiorbani","poskąpieni","poskładani","posklejani","poskramiani","poskręcani","poskrobani","poskromieni","poskubani","posłani","posłodzeni","poślubiani","poślubieni","posługiwani","posmakowani","posmarowani","posoleni","posortowani","pospekulowani","pospieszani","pośpieszani","pośpiewani","pospinani","pospłacani","posprawdzani","posprzątani","posprzedawani","pośredniczeni","possani","postanowieni","postani","postarani","postawieni","postemplowani","posterowani","postradani","postraszeni","postrugani","postrzegani","postrzelani","postrzeleni","postukani","postymulowani","posuwani","poświącani","poświadczeni","poświeceni","poświęceni","poświętowani","poświntuszeni","posyłani","posypani","posypywani","poszarpani","poszastani","poszatkowani","poszczyceni","poszczypani","poszerzani","poszerzeni","poszorowani","poszpiegowani","poszturchani","poszukani","poszukiwani","poszwędani","poszybowani","potakiwani","potarmoszeni","potasowani","potęgowani","potępiani","potępieni","potoczeni","potopieni","potorturowani","potrącani","potrąceni","potraktowani","potrojeni","potrząsani","potrzaskani","potrzymani","Poturbowani","poturlani","potwierdzeni","potykani","poucinani","pouczani","pouczeni","poudawani","poukładani","pouprawiani","poupychani","pourywani","poustawiani","poużywani","powąchani","powachlowani","powalani","powaleni","poważani","powbijani","powciągani","powciskani","powdychani","powęszeni","powetowani","powiadamiani","powiadomieni","powiązani","powiedziani","powiedzeni","powiększani","powielani","powieleni","powierzani","powierzeni","powieszeni","powiewani","powinszowani","powitani","powkładani","powlekani","powłóczeni","powodowani","powołani","powoływani","powożeni","powpychani","powróceni","powrzucani","powsadzani","powspominani","powstrzymani","powtarzani","powtórzeni","powybierani","powybijani","powycierani","powycinani","powyciskani","powydawani","powyganiani","powyginani","powyjaśniani","powyjmowani","powyłączani","powymiatani","powymieniani","powynoszeni","powypełniani","powypisywani","powyrywani","powyrzucani","powystrzelani","powysyłani","powywalani","powywieszani","powywracani","pozabawiani","pozabijani","pozacierani","pożądani","pożądleni","pozadzierani","pozakładani","pozaklinani","pozałatwiani","pozamiatani","pozamieniani","pozamrażani","pozamykani","pozapalani","pozapinani","pozapisywani","pozapraszani","pozasłaniani","pozastrzelani","pozatykani","pozbawiani","pozbawieni","pozbierani","pozbywani","pozdejmowani","pozdrawiani","pozdrowieni","pożegnani","pożerani","pozmiatani","pozmieniani","pozmywani","poznaczeni","poznani","poznawani","poznęcani","pozorowani","pozostawiani","pozostawieni","pozowani","pozrywani","pozszywani","pozwalniani","pozwani","pozwiązywani","pozwiedzani","pozwoleni","pożyczani","pożyczeni","pozyskani","pozywani","pożywiani","pożywieni","praktykowani","prani","prasowani","prawieni","prażeni","precyzowani","preferowani","prenumerowani","prezentowani","próbowani","procesowani","produkowani","profanowani","profilowani","prognozowani","programowani","projektowani","proklamowani","prolongowani","promieniowani","promowani","propagowani","proponowani","prosperowani","prostowani","proszkowani","proszeni","protestowani","protokołowani","prowadzeni","prowokowani","pryskani","przeanalizowani","przearanżowani","przebaczani","przebaczeni","przebadani","przebierani","przebijani","przeboleni","przebrani","przebudowani","przebudowywani","przebudzani","przebudzeni","przebukowani","przebywani","przeceniani","przecenieni","przechlapani","przechodzeni","przechowani","przechowywani","przechrzceni","przechwyceni","przechwytywani","przechylani","przechyleni","przechytrzani","przechytrzeni","przeciągani","przeciążani","przeciążeni","przeciekani","przecierani","przecierpiani","przecinani","przeciskani","przeciwstawiani","przećwiczeni","przeczekani","przeczesani","przeczesywani","przeczołgani","przeczuwani","przeczyszczeni","przeczytani","przedawkowani","przedawkowywani","przedekorowani","przedłożeni","przedłużani","przedłużeni","przedmuchani","przedobrzeni","przedostani","przedostawani","przedstawiani","przedstawieni","przedymani","przedyskutowani","przedzierani","przedziurawieni","przedziurkowani","przeegzaminowani","przefaksowani","przefarbowani","przefasonowani","przefasowani","przefaxowani","przefiltrowani","przeformowani","przeforsowani","przegadani","przeganani","przeganiani","przegapiani","przegapieni","przeginani","przeglądani","przegłodzeni","przegłosowani","przegonieni","przegotowani","przegotowywani","przegrabieni","przegradzani","przegrani","przegrupowani","przegrupowywani","przegrywani","przegryzani","przegryzieni","przegrzani","przegrzebani","przegrzewani","przehandlowani","przeholowani","przeinstalowani","przeistoczeni","przejadani","przejaskrawiani","przejaśnieni","przejawiani","przejawieni","przejechani","przejeżdżani","przejmowani","przejrzani","przekabacani","przekabaceni","przekablowani","przekalibrowani","przekalkulowani","przekarmiani","przekąszeni","przekazywani","przekierowani","przekierowywani","przekimani","przekładani","przeklejeni","przeklinani","przekonani","przekonfigurowani","przekonstruowani","przekonwertowani","przekonywani","przekopani","przekopywani","przekoziołkowani","przekraczani","przekręcani","przekręceni","przekreślani","przekreśleni","przekroczeni","przekrojeni","przekrzyczeni","przekrzywieni","przekształcani","przekształceni","przekupieni","przekupywani","przekwalifikowani","przełączani","przełączeni","przeładowani","przeładowywani","przełamani","przełamywani","przelani","przelatywani","przeleciani","przelewani","przeleżani","przelicytowani","przeliczani","przeliczeni","przeliterowani","przełożeni","przełykani","przemalowani","przemalowywani","przemaszerowani","przemawiani","przemeblowani","przemęczeni","przemieleni","przemieniani","przemierzeni","przemieszczani","przemieszczeni","przemijani","przemilczani","przemilczeni","przemodelowani","przemusztrowani","przemycani","przemyceni","przemyślani","przemyśleni","przemywani","przenegocjowani","przeniesieni","przenikani","przenoszeni","przeobrażani","przeobrażeni","przeoczani","przeoczeni","przeorani","przeorganizowani","przeorientowani","przepadani","przepakowani","przepaleni","przeparkowani","przepchani","przepędzani","przepędzeni","przepełniani","przepełnieni","przepijani","przepiłowani","przepisani","przepisywani","przepłacani","przepłaceni","przepłakani","przeplanowani","przepłoszeni","przepłukani","przepłukiwani","przepływani","przepompowani","przepompowywani","przepowiadani","przepowiedziani","przepracowani","przepracowywani","przeprani","przeprawiani","przeprawieni","przeprogramowani","przeprojektowani","przeprowadzani","przeprowadzeni","przepuszczani","przepuszczeni","przepychani","przepytani","przepytywani","przerąbani","przerabiani","przeradzani","przerastani","przerażeni","przeredagowani","przerejestrowani","przerobieni","przerodzeni","przerwani","przerysowani","przerywani","przerzedzani","przerzucani","przerzuceni","przesączeni","przesadzani","przesądzani","przesadzeni","przesądzeni","prześcigani","przesiadani","przesiadywani","przesiani","przesiedlani","przesiedleni","przesiedziani","przesiewani","przesileni","przeskakiwani","przeskalowani","przeskanowani","przeskoczeni","przeskrobani","prześladowani","przesłaniani","przesłani","prześledzeni","przesłodzeni","przesłuchani","przesłuchiwani","przesmarowani","przesoleni","przesortowani","przespani","prześpiewani","przessani","przestawiani","przestawieni","przestemplowani","przestraszeni","przestrojeni","przestrzegani","przestrzeleni","przestudiowani","przesuwani","prześwietlani","prześwietleni","przesyłani","przesypani","przesypiani","przesypywani","przeszarżowani","przeszczepiani","przeszczepieni","przeszkadzani","przeszkoleni","przeszmuglowani","przeszukani","przeszukiwani","przeszywani","przetaczani","przetapetowani","przetestowani","przetkani","przetoczeni","przetopieni","przetrąceni","przetransformowani","przetransmitowani","przetransponowani","przetransportowani","przetrawieni","przetrwani","przetrząsani","przetrzepani","przetrzymani","przetrzymywani","przetwarzani","przetworzeni","przewalani","przewalczeni","przewaletowani","przewaleni","przeważani","przeważeni","przewertowani","przewiązani","przewiązywani","przewidywani","przewidziani","przewiercani","przewierceni","przewieszani","przewieszeni","przewietrzeni","przewiezieni","przewijani","przewitani","przewodniczeni","przewodzeni","przewożeni","przewracani","przewróceni","przewyższani","przeymierzani","przeżeglowani","przeżegnani","przeziębieni","przezimowani","przeznaczani","przeznaczeni","przezwyciężani","przezwyciężeni","przezywani","przeżywani","przodowani","przpochlebieni","przwdziewani","przybastowani","przybierani","przybijani","przybliżani","przybliżeni","przybrani","przycelowani","przycepieni","przychyleni","przyciągani","przyciemnieni","przycinani","przyciskani","przyciszeni","przyćmiewani","przyćmieni","przycumowani","przyczepiani","przyczesani","przyczołgani","przyczynieni","przydeptani","przyduszeni","przydzielani","przydzieleni","przygaszeni","przygazowani","przygładzani","przygnębiani","przygniatani","przygniecieni","przygotowani","przygruchani","przygrywani","przygryzani","przygryzieni","przygrzani","przygwożdżeni","przyhamowani","przyholowani","przyjani","przyjmowani","przyjrzani","przykładani","przyklejeni","przyklepani","przykopani","przykręcani","przykręceni","przykróceni","przykrywani","przykurzeni","przykuwani","przyłączani","przyłączeni","przylani","przyłapani","przylegani","przylepiani","przylepieni","przyłożeni","przymierzeni","przymilani","przymocowani","przymuszani","przynależeni","przyniesieni","przynoszeni","przynudzani","przyostrzeni","przyozdabiani","przyozdobieni","przypakowani","przypakowywani","przypalani","przypaleni","przypasowani","przypatrywani","przypatrzeni","przypieczętowani","przypiekani","przypierani","przypilnowani","przypiłowani","przypinani","przypisani","przypisywani","przypłaceni","przyplątani","przypodobani","przypominani","przypomniani","przyporządkowani","przyprawiani","przyprawieni","przyprowadzeni","przypucowani","przypudrowani","przypuszczani","przypuszczeni","przyrównani","przyrządzani","przyrządzeni","przysiadani","przyskrzydleni","przyskrzyniani","przyskrzynieni","przysłaniani","przysłani","przysłodzeni","przysłonieni","przysłuchiwani","przysługiwani","przysłużeni","przysmażani","przysmażeni","przyspieszani","przyspieszeni","przysporzeni","przysposobieni","przyśrubowywani","przyssani","przystąpieni","przystawiani","przystawieni","przystemplowani","przystopowani","przystosowani","przystrojeni","przysuwani","przyswajani","przyświecani","przyświęceni","przyswojeni","przysyłani","przysypani","przyszpileni","przyszykowani","przyszywani","przytaczani","przytargani","przytaszczani","przytępiani","przytępieni","przytkani","przytłaczani","przytłoczeni","przytłumieni","przytoczeni","przytrafieni","przytroczeni","przytruwani","przytrzymani","przytrzymywani","przytulani","przytuleni","przytwierdzani","przytwierdzeni","przytykani","przyuczeni","przyuważeni","przywabieni","przywalani","przywaleni","przywarowani","przywdziani","przywiązani","przywiązywani","przywidziani","przywiezieni","przywitani","przywłaszczani","przywłaszczeni","przywołani","przywoływani","przywożeni","przywracani","przywróceni","przyznaczeni","przyznani","przyznawani","przyzwalani","przyzwani","przyzwyczajani","przyzwyczajeni","przyzywani","psiamani","pstrykani","publikowani","pucowani","pudłowani","pudrowani","punktowani","pustoszeni","puszczani","puszczeni","puszkowani","puszeni","pykani","pytani","rabowani","rachowani","racjonalizowani","racjonowani","raczeni","radowani","ranieni","raportowani","ratowani","ratyfikowani","reaktywowani","realizowani","reanimowani","recytowani","ręczeni","redagowani","redukowani","reformowani","refowani","regenerowani","regionalizowani","regulowani","reinkarnowani","rejestrowani","reklamowani","rekomendowani","rekompensowani","rekonstruowani","rekreowani","rekrutowani","rekwirowani","relacjonowani","relaksowani","remodulowani","remontowani","renegocjowani","reorganizowani","reperowani","replikowani","represejonowani","reprezentowani","reprodukowani","resetowani","resocjalizowani","respektowani","resuscytowani","retuszowani","rewanżowani","rewidowani","rezerwowani","rezonowani","rezygnowani","reżyserowani","robieni","rodzeni","rojeni","rolowani","romansowani","ronieni","rozbawiani","rozbawieni","rozbierani","rozbijani","rozbrajani","rozbrojeni","rozbudowani","rozbudowywani","rozbudzani","rozbudzeni","rozbujani","rozcapierzeni","rozchmurzeni","rozchodzeni","rozchylani","rozchyleni","rozciągani","rozcieńczani","rozcieńczeni","rozcierani","rozcinani","rozczarowani","rozczarowywani","rozczesani","rozczłonkowani","rozczulani","rozczytani","rozdani","rozdawani","rozdeptani","rozdmuchani","rozdmuchiwani","rozdrabniani","rozdrapani","rozdrapywani","rozdrażniani","rozdrażnieni","rozduszeni","rozdwojeni","rozdysponowani","rozdzielani","rozdzieleni","rozdzierani","rozdziewiczeni","rozebrani","rozedrani","rozegrani","rozegrywani","rozepchani","rozerwani","rozesłani","rozgaszczani","rozglaszani","rozgłoszeni","rozgniatani","rozgniecieni","rozgniewani","rozgonieni","rozgraniczeni","rozgrani","rozgromieni","rozgrywani","rozgryzani","rozgryzieni","rozgrzani","rozgrzebywani","rozgrzeszeni","rozgrzewani","rozhuśtani","rozjaśniani","rozjaśnieni","rozjechani","rozjedzeni","rozjuszani","rozjuszeni","rozkazani","rozkazywani","rozkładani","rozklejani","rozklejeni","rozkołysani","rozkopani","rozkopywani","rozkoszowani","rozkręcani","rozkręceni","rozkrojeni","rozkruszeni","rozkuwani","rozkwaszeni","rozkwaterowani","rozkwitani","rozłączeni","rozładowani","rozładowywani","rozłamani","rozlani","rozlewani","rozliczani","rozliczeni","rozlokowani","rozłożeni","rozłupani","rozluźniani","rozmanażani","rozmasowani","rozmawiani","rozmazani","rozmazywani","rozmiękczeni","rozmieniani","rozmienieni","rozmieszczani","rozmieszczeni","rozmnożeni","rozmontowani","rozmówieni","rozmrażani","rozmrożeni","rozmyślani","różnicowani","rozniecani","rozniecieni","rozniesieni","różnieni","roznoszeni","rozochoceni","rozpaczani","rozpakowani","rozpakowywani","rozpalani","rozpaleni","rozpamiętywani","rozpaskudzani","rozpatrywani","rozpatrzeni","rozpędzani","rozpędzeni","rozpętani","rozpieszczani","rozpieszczeni","rozpiłowani","rozpinani","rozpisani","rozpisywani","rozplanowani","rozpłaszczani","rozpłaszczeni","rozplątani","rozplątywani","rozpoczynani","rozpogodzeni","rozporządzani","rozporządzeni","rozpościerani","rozpostrzeni","rozpowiadani","rozpowiedziani","rozpowszechniani","rozpowszechnieni","rozpoznani","rozpoznawani","rozpracowani","rozpraszani","rozprawiani","rozprawiczeni","rozprawieni","rozprostowani","rozproszeni","rozprowadzani","rozprowadzeni","rozpruwani","rozprzestrzeniani","rozprzestrzenieni","rozpuszczani","rozpuszczeni","rozpychani","rozpylani","rozpyleni","rozpytani","rozpytywani","rozrastani","rozreklamowani","rozrobieni","rozróżniani","rozróżnieni","rozruszani","rozrysowani","rozrywani","rozrzucani","rozsadzani","rozsadzeni","rozsądzeni","rozścieleni","rozsiani","rozsiekani","rozsiewani","rozsiodłani","rozsławiani","rozsławieni","rozsmarowani","rozsmarowywani","rozśmieszani","rozstani","rozstąpieni","rozstawani","rozstawiani","rozstawieni","rozstrojeni","rozstrząsani","rozstrzeliwani","rozstrzeleni","rozstrzygani","rozsupłani","rozświetlani","rozświetleni","rozsyłani","rozsypani","rozsypywani","rozszarpani","rozszarpywani","rozszczepiani","rozszczepieni","rozszerzani","rozszerzeni","rozszyfrowani","roztaczani","roztapiani","roztoczeni","roztopieni","roztrwonieni","roztrząsani","roztrzaskani","rozumiani","rozumowani","rozwalani","rozwaleni","rozważani","rozważeni","rozweselani","rozweseleni","rozwiani","rozwiązani","rozwiązywani","rozwidniani","rozwiedzieni","rozwierani","rozwierceni","rozwieszani","rozwieszeni","rozwiewani","rozwiezieni","rozwikłani","rozwlekani","rozwodzeni","rozwścieczani","rozwścieczeni","rozzłoszczeni","rugani","ruinowani","rujnowani","ruszani","ruszeni","rwani","ryczani","ryglowani","rymowani","rysowani","ryzykowani","rządzeni","rzeźbieni","rzucani","rzuceni","rzygani","sabotażowani","sączeni","sadzani","sadzeni","sądzeni","salutowani","salwowani","sankcjonowani","satysfakcjonowani","scaleni","scementowani","scentrowani","scharakteryzowani","schładzani","schlani","schlapani","schlebieni","schłodzeni","schowani","schronieni","schrupani","schrzanieni","schwytani","schylani","ścieleni","ściemniani","ściemnieni","ścierani","ścierpieni","ścigani","ścinani","ściskani","ściszani","ściszeni","sędziowani","segregowani","selekcjonowani","separowani","sępieni","serwowani","sfabrykowani","sfajczeni","sfałszowani","sfaulowani","sfilmowani","sfinalizowani","sfinansowani","sfingowani","sformalizowani","sformatowani","sformowani","sformułowani","sforsowani","sfotografowani","shimmerowani","siani","siekani","siorbani","skadrowani","skakani","skalani","skaleczeni","skalibrowani","skalkulowani","skalpowani","skanalizowani","skandowani","skanowani","skapitulowani","skarceni","skarżeni","skasowani","skatalogowani","skazani","skażeni","skazywani","skierowani","składani","składowani","skłaniani","sklasyfikowani","sklecieni","sklejani","sklejeni","sklepani","skłóceni","skłonieni","sklonowani","sknoceni","skojarzeni","skolonizowani","skołowani","skombinowani","skomentowani","skompensowani","skompletowani","skomplikowani","skomponowani","skompresowani","skompromitowani","skomunikowani","skonani","skoncentrowani","skończeni","skondensowani","skonfigurowani","skonfiskowani","skonfrontowani","skonkretyzowani","skonsolidowani","skonstruowani","skonsultowani","skonsumowani","skontaktowani","skontrolowani","skoordynowani","skopani","skopiowani","skorektowani","skorumpowani","skorygowani","skorzystani","skoszeni","skracani","skradzieni","skręcani","skręceni","skremowani","skreślani","skreśleni","skrobani","skróceni","skrojeni","skropieni","skruszeni","skrystalizowani","skrytykowani","skrywani","skrzecowani","skrzyczani","skrzywdzeni","skrzyżowani","skserowani","skubani","skuleni","skumulowani","skupiani","skupieni","skupowani","skurczeni","skuszeni","skuwani","skwitowani","słani","sławieni","śledzeni","ślinieni","ślizgani","słodzeni","słuchani","słyszani","smagani","smarowani","smażeni","śmieceni","smyrani","sondowani","sortowani","spafycikowani","spakowani","spalani","spałaszowani","spaleni","spałowani","spamiętani","spaprani","sparafrazowani","sparaliżowani","sparowani","spartaczeni","spartoleni","sparzeni","spasowani","spatałaszeni","spauzowani","spawani","spawieni","specjalizowani","spędzani","spędzeni","spekulowani","spełniani","spełnieni","spenetrowani","spętani","spierani","śpiewani","spiłowani","spinani","spisani","spiskowani","spisywani","spłacani","spłaceni","splądrowani","splajtowani","splamieni","spłaszczeni","splatani","splątani","spłatani","spławiani","spławieni","spłodzeni","spłoszeni","spłukani","spłukiwani","spluwani","spływani","spoczywani","spodziewani","spojeni","spolaryzowani","spoliczkowani","sponiewierani","sponsorowani","spopielani","spopieleni","spopularyzowani","sportretowani","sporządzani","sporządzeni","spostrzegani","spotęgowani","spotkani","spotykani","spoufalani","spowalniani","spowiadani","spowodowani","spowolnieni","spoźnieni","spóźnieni","spożytkowani","spożywani","sprani","sprasowani","spraszani","sprawdzeni","sprawieni","sprawowani","sprecyzowani","spreparowani","sprężani","sprężeni","spróbowani","sprofanowani","sprofilowani","sprostowani","sproszkowani","sproszeni","sprowadzani","sprowadzeni","sprowokowani","spryskani","spryskiwani","sprywatyzowani","sprzątani","sprzeczani","sprzedani","sprzedawani","sprzeniewierzeni","spudłowani","spustoszeni","spuszczani","spuszczeni","spychani","ssani","stabilizowani","stacjonowani","staczani","staranowani","starczani","stargowani","startowani","stawiani","stawieni","stemplowani","stenografowani","stepowani","sterowani","sterroryzowani","sterylizowani","stłamszeni","stłumieni","stoczeni","stołowani","stonowani","stopieni","stopniowani","storpedowani","stosowani","strącani","straceni","strąceni","strajkowani","straszeni","stratowani","strawieni","streamowani","stresowani","streszczani","streszczeni","strofowani","strojeni","stroszeni","strugani","strymowani","strząsani","strzaskani","strzeleni","strzepani","strzępieni","strzepywani","studiowani","studzeni","stukani","stuleni","stwardnieni","stwarzani","stwierdzani","stwierdzeni","stworzeni","stykani","stylizowani","stymulowani","sugerowani","sumowani","swatani","swawoleni","świadczeni","świeceni","święceni","świerzbieni","świętowani","świntuszeni","syceni","sygnalizowani","symulowani","synchronizowani","sypani","szachrowani","szacowani","szafowani","szamotani","szanowani","szargani","szarpani","szarżowani","szasowani","szastani","szatkowani","szczędzeni","szczepieni","szczerzeni","szczyceni","szczypani","szczytowani","szefowani","szemrani","szeptani","szerzeni","szkalowani","szkicowani","szkleni","szkodzeni","szkoleni","szlachtowani","szlifowani","szmuglowani","szokowani","szorowani","szpachlowani","szpanowani","szperani","szprycowani","szturchani","szturmowani","szufladkowani","szuflowani","szukani","szulerowani","szwankowani","szydełkowani","szydzeni","szyfrowani","szykanowani","szykowani","taktowani","tamowani","tankowani","tapetowani","taplani","taranowani","targani","targowani","tarmoszeni","tarzani","tasowani","taszczeni","tatuowani","telefonowani","telegrfowani","teleportowani","temperowani","teoretyzowani","tępieni","terroryzowani","testowani","tkani","tłamszeni","tłoczeni","tłumaczeni","tłumieni","toczeni","tolerowani","tonowani","topieni","torowani","torturowani","towarzyszeni","trąbieni","trącani","traceni","trąceni","trafiani","trafieni","tragizowani","traktowani","transferowani","transformowani","transmitowani","transportowani","tratowani","trawieni","trenowani","tresowani","triumfowani","tropieni","troszczeni","trwonieni","trymowani","tryskani","tryumfowani","trywializowani","trzaskani","trzepani","trzepotani","trzęsieni","trzymani","tuczeni","tułani","tuleni","turlani","tuszowani","twistowani","tworzeni","tykani","tyranizowani","tyrani","tytułowani","uaktualniani","uaktualnieni","uaktywniani","uaktywnieni","uargumentowani","uatrakcyjnieni","ubabrani","ubarwiani","ubarwieni","ubawieni","ubezpieczani","ubezpieczeni","ubezwłasnowolnieni","ubiczowani","ubiegani","ubierani","ubijani","ubłagani","ubliżani","ubliżeni","ubolewani","ubóstwiani","ubrani","ubroczeni","ubrudzeni","ucałowani","ucharakteryzowani","uchowani","uchronieni","uchwalani","uchwaleni","uchwyceni","uchylani","uchyleni","ucieleśniani","ucierani","ucierpiani","ucinani","uciskani","uciszani","uciszeni","uciułani","ucywilizowani","uczczeni","uczepieni","uczesani","uczęszczani","uczeni","ucztowani","uczynieni","udani","udaremnieni","udawani","udekorowani","udeptywani","uderzani","uderzeni","udobruchani","udokumentowani","udomawiani","udomowieni","udoskonalani","udoskonaleni","udostępniani","udostępnieni","udowadniani","udowodnieni","Udramatyzowani","udręczeni","udrożnieni","udupieni","uduszeni","udzielani","udzieleni","ueiwarygodnieni","ufani","ufarbowani","uformowani","ufortyfikowani","ufundowani","ugadani","uganiani","ugaszani","ugaszeni","uginani","ugłaskani","ugniatani","ugodzeni","ugoszczeni","ugotowani","ugrani","ugruntowani","ugryzieni","uhistoryzowani","uhonorowani","ujadani","ujarzmiani","ujarzmieni","ujawniani","ujawnieni","ujeżdżani","ujeżdżeni","ujmowani","ujrzani","ukamieniowani","ukarani","ukartowani","ukąszeni","ukatrupieni","ukazani","ukazywani","ukierowani","ukierunkowani","układani","uklepani","ukłonieni","ukojeni","ukołysani","ukończeni","ukonkretnieni","ukoronowani","ukradzieni","ukręcani","ukręceni","ukrojeni","ukrywani","ukrzyżowani","ukształtowani","ułagodzeni","ułaskawiani","ułaskawieni","ulatniani","ułatwiani","ułatwieni","uleczani","uleczeni","ulegani","ulepieni","ulepszani","ulepszeni","ulokowani","ulotnieni","ułożeni","umacniani","umalowani","umartwiani","umawiani","umazani","umeblowani","umiejscowieni","umieszczani","umieszczeni","umilani","umileni","umniejszani","umniejszeni","umocnieni","umocowani","umoczeni","umodelowani","umorzeni","umotywowani","umówieni","umożliwiani","umożliwieni","umrocznieni","unaocznieni","unicestwiani","unicestwieni","uniemożliwaini","uniemożliwieni","unierochomieni","uniesieni","unieszczęśliwiani","unieszczęśliwieni","unieszkodliwiani","unieszkodliwieni","unieważniani","unieważnieni","uniewinnieni","uniezależnieni","unikani","unormowani","unoszeni","unowoczesniani","unowocześniani","uodpornieni","uogólniani","upakowani","upalani","upaleni","upamiętniani","upamiętnieni","upaństwowieni","upaprani","upaskudzeni","upchani","upewniani","upewnieni","upgradowani","upiększani","upiększeni","upierani","upierdoleni","upijani","upilnowani","upinani","uplastycznieni","upodabniani","upodobnieni","upojeni","upokorzani","upokorzeni","upolowani","upominani","uporządkowani","upowszechnieni","upozorowani","upozowani","uprani","uprasowani","upraszczani","uprawdopodobnieni","uprawiani","uproszczeni","uproszeni","uprowadzani","uprowadzeni","uprzątani","uprzedeni","uprzedzani","uprzyjemniani","uprzyjemnieni","uprzykrzani","uprzytomnieni","upubliczniani","upublicznieni","upudrowani","upuszczani","upuszczeni","upychani","urabiani","uraczani","uradowani","Urągani","uratowani","urażani","urażeni","uregulowani","urobieni","uronieni","urozmaicani","urozmaiceni","uruchamiani","uruchomieni","urwani","urywani","urządzani","urządzeni","urzeczywistniani","urzeczywistnieni","usadowieni","usadzeni","usamowolnieni","usankcjonowani","usatyfakcjonowani","uściskani","uścisleni","usidleni","usiedzeni","uskładani","uskoczeni","uskuteczniani","uskutecznieni","usłuchani","usługiwani","usłużeni","usłyszani","usmażeni","uśmiani","uśmiercani","uśmierceni","uśmierzeni","uspani","uśpieni","uspokajani","uspokojeni","uspołeczniani","usprawiedliwiani","usprawiedliwieni","usprawnieni","usprzątani","ustabilizowani","ustalani","ustaleni","ustanawiani","ustanowieni","ustąpieni","ustatkowani","ustawiani","ustawieni","ustępowani","ustosunkowani","ustrojeni","ustrzegani","ustrzeleni","ususzeni","usuwani","uświadamiani","uświadczeni","uświadomieni","uświęceni","uświnieni","usychani","usypani","usypiani","usystematyzowani","usytuowani","uszanowani","uszczelniani","uszczęśliwiani","uszczęśliwieni","uszczupleni","uszkadzani","uszkodzeni","uszlachetniani","uszlachetnieni","usztywnieni","uszykowani","utajnieni","utargowani","utemperowani","utkani","utkwieni","utoczeni","utopieni","utorowani","utożsamiani","utożsamieni","utraceni","utrąceni","utrudniani","utrudnieni","utrwalani","utrwaleni","utrzymywani","utuczeni","utuleni","utwierdzani","utwierdzeni","utworzeni","utylizowani","uwalniani","uwaleni","uwarunkowani","uważani","uwiązani","uwiązywani","uwidocznieni","uwieczniani","uwiecznieni","uwielbiani","uwielbieni","uwieńczeni","uwierani","uwierzeni","uwieszeni","uwiezieni","uwięzieni","uwijani","uwikłani","uwłaczani","uwłaszczeni","uwodzeni","uwolnieni","uwsteczniani","uwstecznieni","uwydatniani","uwypikleni","uwzględniani","uwzględnieni","użądleni","uzależniani","uzależnieni","uzasadniani","uzasadnieni","uzbierani","uzbrajani","uzbrojeni","uzdrawiani","uzdrowieni","użerani","uzewnętrzniani","uzewnętrznieni","uzgadniani","uzgodnieni","uziemieni","uzmysłowieni","uznani","uznawani","uzupełniani","uzupełnieni","uzurpowani","użyczani","użyczeni","uzyskani","uzyskiwani","używani","wabieni","wąchani","wachlowani","wahani","walczeni","wałkowani","waleni","ważeni","wbijani","wcelowani","wciągani","wcielani","wcieleni","wcierani","wcinani","wciskani","wczepieni","wczołgani","wczytani","wczytywani","wdani","wdawani","wdeptani","wdetonowani","wdmuchiwani","wdrapani","wdrapywani","wdrażani","wdrążeni","wdrożeni","wduszeni","wdychani","wdzierani","wędkowani","wentylowani","wepchani","werbowani","weryfikowani","wessani","wetkani","wezwani","wgłębiani","wgniatani","wgniecieni","wgrani","wgryzani","wgryzieni","wiązani","wibrowani","widywani","widziani","wiedzeni","wielbieni","wierceni","wierzgani","wierzeni","wieszani","wietrzeni","więżeni","wikłani","windowani","winszowani","wiosłowani","wirowani","witani","wizualizowani","wjeżdżani","wkalkulowani","wkładani","wklejani","wklejeni","wklepani","wkomponowani","wkopani","wkopywani","wkraczani","wkradani","wkradzieni","wkręcani","wkręceni","wkupieni","wkurwiani","wkuwani","włączani","włączeni","władani","władowani","włamani","włamywani","wlani","wlepiani","wlepieni","wlewani","wliczani","wliczeni","włożeni","wmanewrowani","wmanipulowani","wmawiani","wmieszani","wmówieni","wmurowani","wmuszeni","wnerwiani","wnerwieni","wniesieni","wnikani","wnioskowani","wnoszeni","wodowani","wojowani","wołani","woskowani","wożeni","wpajani","wpakowani","wparowani","wpasowani","wpatrywani","wpędzani","wpędzeni","wperswadowani","wpienieni","wpisani","wpisywani","wpłacani","wpłaceni","wplatani","wplątani","wplątywani","wpojeni","wpompowani","wpraszani","wprawiani","wproszeni","wprowadzani","wprowadzeni","wpuszczeni","wpychani","wrabiani","wręczani","wrobieni","wróżeni","wrzucani","wrzuceni","wrzynani","wsadzani","wsadzeni","wskazani","wskazywani","wskórani","wskrzeszani","wskrzeszeni","wślizgiwani","wsłuchani","wspierani","współodczuwani","współtworzeni","wspomagani","wspominani","wspomniani","wstąpieni","wstawiani","wstawieni","wstrząsani","wstrzeleni","wstrzykiwani","wstrzymani","wstrzymywani","wstukani","wsuwani","wsypani","wszamani","wszczepiani","wszczepieni","wszczynani","wtajemniczani","wtajemniczeni","wtapiani","wtaszczeni","wtłoczeni","wtopieni","wtrąceni","wtryniani","wtulani","wtuleni","wtykani","wwaleni","wwiercani","wwierceni","wwiezieni","wwożeni","wyartykułowani","wyautowani","wybaczani","wybaczeni","wybadani","wybatożeni","wybawieni","wybebeszeni","wybełkotani","wybiczowani","wybielani","wybieleni","wybierani","wybijani","wybłagani","wybrandzlowani","wybrani","wybronieni","wybrzydzani","wybuchani","wybudowani","wybudzani","wybudzeni","wyburzani","wyburzeni","wycackani","wycałowani","wyceniani","wycenieni","wychlani","wychłostani","wychodowani","wychowani","wychowywani","wychrobotani","wychwalani","wychwyceni","wychylani","wychyleni","wyciągani","wyciekani","wycieniowani","wycierani","wycinani","wyciskani","wyciszani","wyciszeni","wycofani","wyćwiczeni","wycyckani","wycyganieni","wyczarowani","wyczarterowani","wyczekani","wyczekiwani","wyczerpani","wyczesani","wyczołgani","wyczołgiwani","wyczuwani","wyczyniani","wyczyszczeni","wyczytani","wyczytywani","wydalani","wydaleni","wydani","wydębieni","wydedukowani","wydelegowani","wydepilowani","wydeptywani","wydłubani","wydłubywani","wydłużani","wydłużeni","wydmuchani","wydmuchiwani","wydobywani","wydojeni","wydoroślani","wydostani","wydrani","wydrapani","wydrapywani","wydrążeni","wydrukowani","wydukani","wyduszeni","wydychani","wydziedziczeni","wydzielani","wydzieleni","wydzierani","wydzierżawieni","wydziobani","wydziwiani","wydzwaniani","wyedukowani","wyedytowani","wyeeliminowani","wyegzekwowani","wyeksmitowani","wyekspediowani","wyeksploatowani","wyeksponowani","wyeksportowani","wyeliminowani","wyemigrowani","wyemitowani","wyewoluowani","wygadani","wygadywani","wyganiani","wygarbowani","wygarniani","wygasani","wygaszani","wygaszeni","wygenerowani","wyginani","wygładzani","wygładzeni","wygłaszani","wygłodzeni","wygłosowani","wygłoszeni","wygłówkowani","wygnani","wygoleni","wygonieni","wygooglowani","wygospodarowani","wygotowani","wygrani","wygrawerowani","wygrażani","wygrywani","wygryzieni","wygrzani","wygrzebani","wygrzebywani","wygrzewani","wygubieni","wyhaczeni","wyhaftowani","wyhamowani","wyhodowani","wyizolowani","wyjadani","wyjaśniani","wyjaśnieni","wyjawiani","wyjawieni","wyjedzeni","wyjmowani","wykadrowani","wykalibrowani","wykalkulowani","wykańczani","wykantowani","wykąpani","wykaraskani","wykarczowani","wykarmiani","wykasowani","wykastrowani","wykazani","wykazywani","wykierowani","wykitowani","wykiwani","wykładani","wyklarowani","wyklepani","wyklinani","wykłócani","wykluczani","wykluczeni","wykminieni","wykolejeni","wykołowani","wykombinowani","wykonani","wykończeni","wykonywani","wykopani","wykopywani","wykorkowani","wykorzeniani","wykorzenieni","wykorzystani","wykorzystywani","wykoszeni","wykradani","wykręcani","wykręceni","wykreowani","wykreślani","wykreśleni","wykrochmaleni","wykrojeni","wykrwawiani","wykrwawieni","wykrywani","wykrzesani","wykrztuszeni","wykrzyczeni","wykrzykiwani","wykrzywiani","wykształceni","wyksztuszeni","wykupieni","wykupywani","wykuwani","wyłączani","wyłączeni","wylądowani","wyładowani","wyładowywani","wyłajani","wyłamani","wyłamywani","wyłaniani","wylansowani","wylani","wyłapani","wyłapywani","wyławiani","wyleasingowani","wyleczeni","wylęgani","wylegimytowani","wylewani","wyłgani","wylicytowani","wyliczani","wyliczeni","wylizani","wylizywani","wylogowani","wyłonieni","wylosowani","wyłowieni","wyłożeni","wyłudzani","wyłudzeni","wyłupani","wyłuskani","wyłuskiwani","wyłuszczeni","wyluzowani","wymacani","wymachiwani","wymagani","wymahiwani","wymalowani","wymamrotani","wymanewrowani","wymarzeni","wymasowani","wymawiani","wymazani","wymazywani","wymeldowani","wymeldowywani","wymiatani","wymiecieni","wymieniani","wymienieni","wymierzani","wymieszani","wymigani","wymigiwani","wymijani","wymoczeni","wymodelowani","wymontowani","wymordowani","wymuszani","wymyślani","wymyśleni","wynagradzani","wynagrodzeni","wynajdowani","wynajdywani","wynajmowani","wynalezieni","wynarodowieni","wynegocjowani","wyniesieni","wyniszczani","wyniszczeni","wyniuchani","wynoszeni","wynurzani","wyobrażani","wyobrażeni","wyodrębnieni","wyolbrzymiani","wyolbrzymieni","wyorbowani","wyosiowani","wyostrzani","wyostrzeni","wypaczani","wypakowani","wypakowywani","wypalani","wypaleni","wypałowani","wyparowani","wypasani","wypastowani","wypatroszeni","wypatrywani","wypatrzeni","wypchani","wypędzani","wypędzlowani","wypełniani","wypełnieni","wypersfadowani","wyperswadowani","wypierani","wypijani","wypinani","wypisani","wypisywani","wypłacani","wypłaceni","wypłakani","wypłakiwani","wypłaszczeni","wyplatani","wyplątani","wyplenieni","wyplewieni","wypłoszeni","wypłukani","wypłukiwani","wypluwani","wypoceni","wypolerowani","wypominani","wypomniani","wypompowani","wypompowywani","wyposażeni","wypowiadani","wypowiedziani","wypoziomowani","wypożyczani","wypracowani","wypracowywani","wyprani","wyprasowani","wypraszani","wyprawiani","wyprawieni","wypróbowani","wyprodukowani","wyprojektowani","wypromieniowani","wypromowani","wyprostowani","wyprostowywani","wyproszeni","wyprowadzani","wyprowadzeni","wypróżniani","wypróżnieni","wypruwani","wyprzedani","wyprzedawani","wyprzedzani","wyprzedzeni","wyprzęgani","wypstrykani","wypucowani","wypuszczani","wypuszczeni","wypychani","wypytani","wypytywani","wyrąbani","wyrabiani","wyrąbywani","wyratowani","wyrażani","wyrażeni","wyrecytowani","wyręczani","wyręczeni","wyregulowani","wyrejestrowani","wyremontowani","wyreżyserowani","wyrobieni","wyrolowani","wyrównani","wyrównywani","wyróżniani","wyróżnieni","wyrugowani","wyruszani","wyrwani","wyrypani","wyrysowani","wyrywani","wyrządzeni","wyrzeźbieni","wyrzucani","wyrzuceni","wyrzygani","wyrzynani","wyrzywani","wysączeni","wysadzani","wysadzeni","wyściskani","wyselekcjonowani","wysępieni","wysiadywani","wysiedzeni","wysilani","wysileni","wyskakiwani","wyskalowani","wyskoczeni","wyskrobani","wyskubywani","wysłani","wyśledzeni","wyślizgiwani","wysłowieni","wysłuchani","wysłuchiwani","wysmagani","wysmarkani","wysmarowani","wysmażani","wysmażeni","wyśmiani","wyśmiewani","wysmołowani","wysmyrani","wyśnieni","wysnuwani","wysondowani","wyspecjalizowani","wyśpiewani","wyśpiewywani","wyspowiadani","wysprzątani","wysprzedani","wyssani","wystartowani","wystawieni","wysterelizowani","wysterylizowani","wystosowani","wystosowywani","wystraszeni","wystrojeni","wystrugani","wystrzegani","wystrzelani","wystrzeliwani","wystrzeleni","wystudzeni","wystukani","wystukiwani","wysuszani","wysuwani","wyswatani","wyświadczani","wyświadczeni","wyświetlani","wyświetleni","wyswobodzeni","wysyłani","wysypani","wysypywani","wysysani","wyszabrowani","wyszalani","wyszarpani","wyszasowani","wyszczotkowani","wyszczupleni","wyszeptani","wyszkoleni","wyszlifowani","wyszorowani","wyszperani","wyszukani","wyszukiwani","wyszumieni","wyszykowani","wytapetowani","wytargani","wytargowani","wytarzani","wytaszczeni","wytatuowani","wytępieni","wytłoczeni","wytłumaczeni","wytłumieni","wytoczeni","wytrąbieni","wytrącani","wytrąceni","wytransmitowani","wytransportowani","wytrenowani","wytresowani","wytriangulowani","wytropieni","wytrząsani","wytrzebieni","wytrzepani","wytrzeszczani","wytrzeźwiani","wytrzymani","wytrzymywani","wytwarzani","wytworzeni","wytyczeni","wytykani","wytypowani","wyuczeni","wywabiani","wywabieni","wywąchani","wywalani","wywalczeni","wywaleni","wywarzani","wyważani","wyważeni","wywęszani","wywężykowani","wywiani","wywiązani","wywiązywani","wywierani","wywierceni","wywieszani","wywieszeni","wywietrzeni","wywiezieni","wywijani","wywindowani","wywłaszczeni","wywlekani","wywnętrznieni","wywnioskowani","wywodzeni","wywolani","wywoływani","wywoskowani","wywożeni","wywracani","wywróceni","wywróżeni","wywyższani","wyżaleni","wyzdrowieni","wyżebrani","wyżerani","wyzerowani","wyznaczani","wyznaczeni","wyznani","wyznawani","wyzwalani","wyzwani","wyzwoleni","wyzygzakowani","wyżynani","wyzyskani","wyzyskiwani","wyzywani","wyżywani","wyżywieni","wzbijani","wzbogacani","wzbogaceni","wzbraniani","wzbudzani","wzbudzeni","wzburzani","wzburzeni","wżenieni","wzmacnieni","wzmagani","wzmocnieni","wznawiani","wzniecani","wzniecieni","wznoszeni","wznowieni","wzorowani","wzruszeni","wzwyżani","wzywani","zaabordowani","zaadaptowani","zaadoptowani","zaadresowani","zaakcentowani","zaakceptowani","zaaklimatyzowani","zaalarmowani","zaanektowani","zaangażowani","zaanonsowani","zaapelowani","zaaplikowani","zaaportowani","zaaprobowani","zaaranżowani","zaaresztowani","zaatakowani","zabaczeni","zabalowani","zabandażowani","zabarwieni","zabarykadowani","zabawiani","zabawieni","zabepieczani","zabetonowani","zabezpieczeni","zabierani","zabłądzeni","zablefowani","zabłoceni","zablokowani","zabraniani","zabrani","zabronieni","zabrudzeni","zabudowani","zabukowani","zabuleni","zaburzeni","zabutelkowani","zacementowani","zacerowani","zachciani","zachęcani","zachęceni","zachlapani","zachodzeni","zachomikowani","zachorowani","zachowani","zachowywani","zachwalani","zachwaleni","zachwiani","zachwyceni","zaciągani","zaciążeni","zaciekawieni","zaciemniani","zaciemnieni","zacierani","zacieśnieni","zacinani","zaciskani","zaćmieni","zacumowani","zacytowani","zaczadzeni","zaczarowani","zaczepiani","zaczepieni","zaczerpani","zaczesani","zaczołgani","zaczynani","zadawalani","zadawani","zadbani","zadebiutowani","zadedykowani","zadeklamowani","zadeklarowani","zademonstrowani","zadenucjowani","zadepeszowani","zadeptani","zadeptywani","zadławieni","żądleni","zadłużani","zadłużeni","zadokowani","zadomowieni","zadowalani","zadrapani","zadręczani","zadręczeni","zadrutowani","zadurzani","zadurzeni","zaduszeni","zadymieni","zadźgani","zadziobani","zadziwiani","zadziwieni","zafakturowani","zafałszowani","zafarbowani","zafiksowani","zafundowani","zagadani","zagadywani","zagajeni","zaganiani","zagapieni","zagarażowani","zagarniani","zagaszeni","zagazowani","zagęszczeni","zaginani","zagłębiani","zagłębieni","zagłodzeni","zagłuszani","zagłuszeni","zagmatwani","zagnani","zagnieżdżeni","zagojeni","zagonieni","zagospodarowani","zagotowani","zagrabieni","zagradzani","zagrażani","zagrodzeni","zagrywani","zagryzani","zagryzieni","zagrzani","zagrzebani","zagrzewani","zagubieni","zagwarantowani","zahaczeni","zahamowani","zahandlowani","zaharowani","zahartowani","zahipnotyzowani","zaholowani","zaimitowani","zaimplantowani","zaimplementowani","zaimprowizowani","zainaugurowani","zainfekowani","zainicjowani","zainkasowani","zainscenizowani","zainspirowani","zainstalowani","zainteresowani","zaintrygowani","zaintubowani","zainwestowani","zaizolowani","zajadani","zajani","zajarani","zajechani","zajmowani","zakablowani","zakamuflowani","zakasani","zakasowani","zakąszani","zakatalogowani","zakatowani","zakatrupieni","zakazani","zakażani","zakazywani","zakiszeni","zakładani","zaklasyfikowani","zaklejani","zaklejeni","zaklepani","zaklepywani","zaklinani","zaklinowani","zakłócani","zakłóceni","zaklopotani","zakneblowani","zakodowani","zakolczykowani","zakolorowani","zakołysani","zakomunikowani","zakończeni","zakonserwowani","zakopani","zakopywani","zakorzeniani","zakorzenieni","zakoszeni","zakosztowani","zakotwiczani","zakotwiczeni","zakpieni","zakradani","zakręcani","zakręceni","zakreślani","zakreśleni","zakrwawieni","zakrywani","zakrzyczani","zakrzywiani","zakrzywieni","zaksięgowani","zaktualizowani","zaktywizowani","zaktywowani","zakumani","zakupieni","zakurzeni","zakuwani","zakwaterowani","załączeni","załadowani","załagodzeni","zalamani","zalaminowani","załamywani","zalani","załapani","załatani","załatwiani","załatwieni","zalatywani","zalecani","zaleceni","zaleczeni","zalegalizowani","zalegani","zalepiani","zalepieni","zalewani","zaliczani","zaliczeni","załkani","zalogowani","żałowani","założeni","zaludnieni","zamacani","zamąceni","zamalowani","zamanewrowani","zamanifestowani","zamarkowani","zamartwiani","zamarynowani","zamarzani","zamaskowani","zamawiani","zamazani","zamazywani","zamęczani","zamęczeni","zameldowani","zamelinowani","zamerykanizowani","zamiatani","zamieniani","zamienieni","zamieszani","zamieszczani","zamieszczeni","zamieszkani","zamieszkiwani","zaminowani","zamocowani","zamoczeni","zamontowani","zamordowani","zamortyzowani","zamotani","zamówieni","zamrażani","zamroczeni","zamrożeni","zamulani","zamurowani","zamydleni","zamykani","zanalizowani","zanegowani","zaniechani","zanieczyszczani","zanieczyszczeni","zaniedbani","zaniedbywani","zaniepokojeni","zaniesieni","zanihilowani","zanikani","zaniżani","zaniżeni","zanoszeni","zanotowani","zanuceni","zanudzani","zanudzeni","zanurzani","zanurzeni","zanużeni","zaobaczeni","zaobserwowani","zaoferowani","zaofiarowani","zaogniani","zaognieni","zaokrąglani","zaokrągleni","zaokrętowani","zaopatrywani","zaopatrzeni","zaopiekowani","zaorani","zaostrzani","zaostrzeni","zaoszczędzeni","zapadani","zapakowani","zapalani","zapaleni","zapamiętani","zapamiętywani","zapanowani","zaparkowani","zaparowywani","zaparzani","zaparzeni","zapaskudzeni","zapauzowani","zapchani","zapędzani","zapełniani","zapełnieni","zaperfumowani","zapeszani","zapewniani","zapewnieni","zapieczętowani","zapierani","zapijani","zapinani","zapisani","zapisuwani","zapłaceni","zapładniani","zaplamieni","zaplanowani","zaplątani","zapłodnieni","zaplombowani","zapobiegani","zapodani","zapodawani","zapodziani","zapokojeni","zapolowani","zapominani","zapomniani","zapowiadani","zapowiedziani","zapoznani","zapoznawani","zapożyczeni","zapracowywani","zaprani","zaprasowywani","zapraszani","zaprawieni","zaprenumerowani","zaprezentowani","Zaprogramowani","zaprojektowani","zaproponowani","zaproszeni","zaprotokołowani","zaprowadzani","zaprowadzeni","zaprzątani","zaprzeczani","zaprzeczeni","zaprzedani","zaprzedawani","zaprzęgani","zaprzepaszczani","zaprzestani","zaprzestawani","zaprzyjaźnieni","zapudłowani","zapunktowani","zapuszczani","zapuszczeni","zapuszkowani","zapychani","zapylani","zapyleni","zapytani","zarabiani","zaranżowani","zarażani","zarażeni","zarecytowani","zaręczani","zaręczeni","zarejestrowani","zareklamowani","zarekomendowani","zarekomondowani","zarekwirowani","zarezerwowani","zarobieni","żartowani","zarwani","zaryglowani","zarymowani","zarysowani","zarywani","zaryzykowani","zarządzani","zarzucani","zarzynani","zasadzeni","zaścieleni","zasegurowani","zaserwowani","zasiadani","zasiani","zasiedleni","zasięgani","zasiewani","zasilani","zasileni","zaskakiwani","zaskarbieni","zaskoczeni","zaskrobani","zasłaniani","zaślepiani","zaślepieni","zasłodzeni","zasłonieni","zasłużeni","zasmakowani","zaśmiecani","zaśmieceni","zasmradzani","zasmrodzeni","zasmucani","zasmuceni","zasoleni","zaspakajani","zaśpiewani","zaspokajani","zaspokojeni","zasponsorowani","zaśrubowywani","zassani","zastani","zastąpieni","zastawiani","zastawieni","zastępowani","zastopowani","zastosowani","zastraszani","zastraszeni","zastrzeleni","zasugerowani","zasuwani","zaświadczeni","zaświeceni","zaświonieni","zasyfieni","zasygnalizowani","zasymilowani","zasymulowani","zasypani","zasypywani","zasysani","zaszachowani","zaszantażowani","zaszargani","zaszczepiani","zaszczepieni","zaszczycani","zaszczyceni","zaszeptani","zaszeregowani","zaszlachtowani","zasznurowani","zaszpachlowani","zasztyletowani","zaszufladkowani","zaszyfrowani","zaszywani","zataczani","zatajani","zatajeni","zatamowani","zatankowani","zatapiani","zatargani","zatelegrafowani","zatemperowani","zatęsknieni","zatkani","zatoczeni","zatopieni","zatracani","zatraceni","zatriumfowani","zatrudniani","zatrudnieni","zatruwani","zatrzaskiwani","zatrzymani","zatrzymywani","zatuszowani","zatwierdzani","zatwierdzeni","zatykani","zatynkowani","zatytułowani","zauploadowani","zauroczeni","zautomatyzowani","zauważani","zauważeni","zawadzani","zawalani","zawalczeni","zawaleni","zaważeni","zawdzięczani","zawetowani","zawężeni","zawiadamiani","zawiadomieni","zawiązani","zawiązywani","zawiedzeni","zawierani","zawierzeni","zawieszani","zawieszeni","zawiezieni","zawijani","zawinieni","zawitani","zawłaszczeni","zawodzeni","zawojowani","zawołani","zawoskowani","zawożeni","zawracani","zawróceni","zawstydzani","zażądani","zażartowani","zazdroszczeni","zażegnani","zażenowani","zaznaczani","zaznajomieni","zaznani","zaznawani","zażyczeni","zażywani","zbaczani","zbadani","zbagatelizowani","zbajerowani","zbałamuceni","zbalansowani","zbalsamowani","zbankrutowani","zbawiani","zbawieni","zbesztani","zbezczeszczeni","zbierani","zbijani","zbliżeni","zbluzgani","zbojkotowani","zbrojeni","zbrukani","zbszczeceni","zbudowani","zbudzeni","zbuntowani","zburzeni","zbywani","zchwytani","zciszeni","zdani","zdeaktywowani","zdecydowani","zdefiniowani","zdeflorowani","zdegradowani","zdejmowani","zdeklarowani","zdekodowani","zdekompresowani","zdekoncentrowani","zdekonstruowani","zdelegalizowani","zdemaskowani","zdementowani","zdemolowani","zdemontowani","zdemoralizowani","zdenerwowani","zdeponowani","zdeprymowani","zdeptani","zderzani","zderzeni","zdestabilizowani","Zdetonowani","zdetronizowani","zdewastowani","zdewaulowani","zdezerterowani","zdezintegrowani","zdezorientowani","zdezynfektowani","zdiagnozowani","zdławieni","zdmuchiwani","zdobywani","zdołowani","zdominowani","zdopingowani","zdrabniani","zdradzani","zdradzeni","zdrapani","zdrapywani","zdrutowani","zdruzgotani","zduplikowani","zduszeni","zdwojeni","zdyscyplinowani","zdyskredytowani","zdyskwalifikowani","zdystansowani","zdzieleni","zdzierani","zdzierżeni","zdziesiątkowani","zdzwonieni","zebrani","zechciani","zedytowani","żegnani","żenieni","żerowani","zerwani","zeskakiwani","zeskanowani","zeskrobywani","zesłani","ześlizgiwani","zesmoleni","zespawiani","zespoleni","zessani","zestawiani","zestawieni","zestresowani","zestrzeliwani","zestrzeleni","zeswatani","zeszkleni","zeszlifowani","zezłoszczeni","zeznani","zeznawani","zezwalani","zezwoleni","zfinansowani","zgadani","zgadywani","zgajani","zganieni","zgaszeni","zginani","zgładzeni","zgłaszani","zgłębiani","zgłębieni","zgłośnieni","zgłoszeni","zgłuszeni","zgniatani","zgniecieni","zgnojeni","zgodzeni","zgoleni","zgonieni","zgotowani","zgrabieni","zgrillowani","zgromadzani","zgromadzeni","zgrupowani","zgrzeszeni","zgrzytani","zgubieni","zgwałceni","zhackowani","zhakowani","zhańbieni","zhandlowani","zharmonizowani","zidentyfikowani","ziewani","zignorowani","zilustrowani","zinfiltrowani","zintegrowani","zintensyfikowani","zinterpretowani","zinwentaryzowani","zirytowani","zjadani","zjawiani","zjednani","zjednoczeni","zjedzeni","zjeżdżeni","zkontaktowani","zkserowani","złączeni","złagodzeni","złajani","złamani","zlani","złapani","zlecani","zleceni","zlekceważeni","zlepiani","zlepieni","zlewani","zlicytowani","zliczani","zliczeni","zlikwidowani","zlinczowani","zlitowani","zlizani","zlizywani","zlokalizowani","złomowani","żłopani","złowieni","złożeni","złupieni","złuszczani","zluzowani","zmacani","zmąceni","zmagani","zmagazynowani","zmajstrowani","zmaksylizowani","zmanipulowani","zmarnowani","zmartwychwstani","zmasakrowani","zmaterializowani","zmawiani","zmazani","zmazywani","zmbobardowani","zmiatani","zmiażdżeni","zmiękczeni","zmieleni","zmieniani","zmienieni","zmierzani","zmierzeni","zmierzwieni","zmieszani","zmieszczeni","zmiksowani","zminiaturyzowani","zminimalizowani","zmniejszani","zmniejszeni","zmobilizowani","zmoczeni","zmodernizowani","zmodyfikowani","zmonopolizowani","zmontowani","zmostkowani","zmotywowani","zmówieni","zmrożeni","zmrużeni","zmumifikowani","zmuszani","zmuszeni","zmutowani","zmyślani","zmywani","znacjonalizowani","znajdowani","znajdywani","znakowani","znalezieni","znani","znęcani","zneutralizowani","zniechęceni","znieczuleni","zniekształcani","zniekształceni","znienawidzeni","znieprawieni","zniesieni","zniesławiani","zniesławieni","zniewalani","znieważani","znieważeni","zniewoleni","zniszczeni","zniweczeni","zniwelowani","zniżani","zniżeni","znokautowani","znormalnieni","znoszeni","znudzeni","zobaczeni","zobowiązani","zobrazowani","zogniskowani","żonglowani","zoomowani","zoperowani","zoptymalizowani","zorganizowani","zorientowani","zostawiani","zostawieni","zpłaceni","zprowokowani","zrabowani","zrachowani","zracjonalizowani","zranieni","zraportowani","zrażani","zrażeni","zrealizowani","zrecenzowani","zredagowani","zredukowani","zreferowani","zreformowani","zrefowani","zrefundowani","zregenerowani","zrehabilitowani","zreinkarnowani","zreintegrowani","zrekonfigurowani","zrekonstruowani","zrekrutowani","zrekrystalizowani","zrelacjonowani","zrelaksowani","zremiksowani","zremisowani","zreorganizowani","zreperowani","zreplikowani","zresetowani","zresocjalizowani","zrestartowani","zrestrukturyzowani","zrewanżowani","zrewidowani","zrewolucjenizowani","zrezygnowani","zrobieni","zrolowani","zroszeni","zrównani","zrównoważeni","zrównywani","zróżnicowani","zrozumiani","zrugani","zruinowani","zrujnowani","zrymowani","zrywani","zrzędzeni","zrzeszeni","zrzucani","zrzuceni","zsumowani","zsuwani","zsynchronizowani","zsyntetyzowani","zsypywani","zszargani","zszokowani","zszywani","zutylizowani","zużywani","zwabiani","zwabieni","zwalani","zwalczeni","zwalniani","zwaleni","zwani","zwaporyzowani","zwątpieni","zważani","zważeni","zwędzeni","zwerbalizowani","zwerbowani","zweryfikowani","zwęszeni","zwężeni","zwiastowani","związani","związywani","zwiedzani","zwiedzeni","zwiększeni","zwieńczeni","zwierzani","zwieszani","zwieszeni","zwietrzeni","zwijani","zwilżeni","zwizualizowani","zwlekani","zwodowani","zwodzeni","zwołani","zwolnieni","zwoływani","zwożeni","zwracani","zwróceni","zwyciężani","zwymiotowani","życzeni","żygani","zygzakowani","zyskani","zyskiwani","zżerani","zżynani","konsakrowany","konsakrowana","konsakrowane","konsakrowani"],{getWords:aa}=o.languageProcessing,{nonDirectPrecedenceException:na,directPrecedenceException:oa,values:ia}=o.languageProcessing,{Clause:za}=ia,{getClausesSplitOnStopWords:ea,createRegexFromArray:wa}=o.languageProcessing,ya={Clause:class extends za{constructor(a,n){super(a,n),this._participles=function(a){return aa(a).filter((a=>(0,Y.includes)($,a)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const a=this.getClauseText(),n=this.getAuxiliaries(),o=this.getParticiples().filter((o=>!oa(a,o,J)&&!na(a,o,n,K)));this.setPassive(o.length>0)}},regexes:{auxiliaryRegex:wa(["być","jestem","jesteś","jest","jesteśmy","jesteście","są","byłam","byłem","byłeś","byłaś","był","była","było","byłoby","byliśmy","byłyśmy","byliście","byłyście","byli","były","będę","będziesz","będzie","będziemy","będziecie","będą","byłabym","byłbym","byłbyś","byłabyś","byłaby","byłby","bylibyśmy","byłybyśmy","bylibyście","byłybyście","byłby","byłaby","byliby","byłyby","zostać","zostaje","zostajesz","zostaję","zostajecie","zostajemy","zostają","zostanę","zostaniesz","zostanie","zostaniemy","zostaniecie","zostaną","zostałem","zostałam","zostałaś","zostałeś","został","została","zostało","zostaliśmy","zostałyśmy","zostaliście","zostałyście","zostali","zostały","zostałbym","zostałabym","zostałbyś","zostałabyś","zostałby","zostałaby","zostałybyśmy","zostalibyśmy","zostalibyście","zostałybyście","zostaliby","zostałyby"]),stopwordRegex:wa(Q)}};function ra(a){return ea(a,ya)}const pa=function(a,n,o,i){if(a.length>n){const n=function(a,n){return n.find((n=>a.endsWith(n)))||""}(a,o);if(""!==n)return a.slice(0,-i)}},sa=function(a,n){const o=Object.entries(n);for(const n of o){const o=n[1].wordShouldBeLongerThan,i=n[1].wordEndings,z=n[1].suffixLength,e=pa(a,o,i,z);if(e)return e}},{baseStemmer:ta}=o.languageProcessing;function da(a){const n=(0,Y.get)(a.getData("morphology"),"pl",!1);return n?a=>function(a,n){const o=n.externalStemmer;let i=n.dictionary.stems[a];return i&&(a=i),a.toLowerCase(),a.length<4?a:(i=sa(a,o.diminutiveSuffixes),i||(i=sa(a,o.nounSuffixes)),i||(i=sa(a,o.verbSuffixes)),i||(i=function(a,n){const o=sa(a,n.adjectiveAndAdverbSuffixes);if(o)return a.startsWith(n.superlativePrefix)?o.slice(3):o}(a,o)),i&&(a=i),i=sa(a,o.generalSuffixes),i||a)}(a,n):ta}const{AbstractResearcher:ca}=o.languageProcessing;class ka extends ca{constructor(a){super(a),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"pl",passiveConstructionType:"periphrastic",firstWordExceptions:i,functionWords:N,stopWords:Q,transitionWords:e,twoPartTransitionWords:V,sentenceLength:X}),Object.assign(this.helpers,{getClauses:ra,getStemmer:da})}}(window.yoast=window.yoast||{}).Researcher=n})();js/dist/languages/sk.js000064400000067430147206602470011066 0ustar00(()=>{"use strict";var n={d:(e,o)=>{for(var a in o)n.o(o,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:o[a]})},o:(n,e)=>Object.prototype.hasOwnProperty.call(n,e),r:n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}},e={};n.r(e),n.d(e,{default:()=>S});const o=window.yoast.analysis,a=["ktorí","ktorých","ktorými","ktorá","ktorého","ktorému","ktorom","ktorým","ktorý","ktoré","ktorej","ktorou","ktorú","lebo","keby","že","aby","alebo","keďže","kedže","lenže","ale","nakoľko","pretože","či","ak","kedy"],t=["kvôli","miesto","pre","oproti","aj","i","ani","ale","avšak","však","preto","tak","teda","hoci","aby","ako","keď","keďže","kým","pokiaľ","ohľadne","takto","tiež ","potom","takže","odtiaľ","odteraz","lebo","akonáhle","lenže","okrem","nakoľko","pokým","pretože","čiže","jednako","doteraz","dosiaľ","najmä","napríklad","napr.","napokon","predsa","určite","dodatočne","ďalej","následne","napriek","hlavne","nakoniec","medzitým","inak ","ináč","obdobne","podobne","predovšetkým","naozaj","spočiatku ","najprv","najskôr","stručne","všeobecne","samozrejme","pravdaže","doposiaľ","nielen","než","síce","pričom","až","jednak","zato","nielenže","ibaže","skôr","prv","hoc","namiesto","buďto","inakšie","hneď","kedykoľvek"],i=t.concat(["ako aj","ako i","a tak ďalej","a tak","aj tak","a jednako","a naopak","a predsa","ale jednako","ale predsa","a tým","a to","i to","jednako však","predsa však","to jest","a preto","i keby","i keď","čo aj","keby aj","pretor, aby","odvtedy čo","zatiar čo","vzhľadom na to, že","berúc do úvahy, že","napriek tomu, že","preto, aby","za účelom","za týmto účelom","skôr či neskôr ","hneď ako","len čo","pokiaľ ide o","pokiaľ nie","pokiaľ viem","po prvé","čo sa týka","až do","až na","až po","z tohto dôvodu","z toho dôvodu","no predsa","iba ak","ak nie","keď nie","tobôž nie","pravdu povediac","ako napríklad","okrem toho ","v podstate","ako je uvedené ","v každom prípade","na rozdiel od","v porovnaní s","v oboch prípadoch","stručne povedané","inými slovami","na jednej strane","na druhej strane","s týmto cieľom"]),r=function(n){let e=n;return n.forEach((o=>{(o=o.split("-")).length>0&&o.filter((e=>!n.includes(e))).length>0&&(e=e.concat(o))})),e}(["to","sa","je","si","som","a","na","že","čo","nie","v","ako","tak","ale","by","s","mi","o","tu","do","ja","sme","ste","áno","z","len","ma","už","aby","dobre","ho","keď","ak","ty","ti","za","ťa","bol","pre","sú","tam","prečo","niečo","toto","no","teraz","aj","hej","mám","byť","ich","bude","ju","takže","ten","všetko","tom","nič","vás","kde","kto","k","po","bolo","bola","ešte","vám","toho","alebo","jej","má","môj","jeho","máš","viem","vieš","mňa","tým","veľmi","mal","prosím","potom","nikdy","možno","od","nás","ani","so","povedal","chcem","neviem","mu","ďakujem","ísť","vy","naozaj","stále","teba","pretože","viac","chceš","oh","nám","ahoj","on","pred","máme","moja","musím","tie","vo","sem","môžem","dnes","budem","ktorý","niekto","práve","pane","mali","pán","poďme","všetci","pozri","myslíš","či","mať","nemôžem","asi","ktoré","keby","veľa","vždy","tiež","moje","poď","mala","stalo","trochu","my","ľudia","tomu","pri","deň","máte","tú","musíme","iba","tvoj","tento","tá","jeden","bez","chcel","mohol","veci","zo","robiť","ide","dobrý","budeš","ok","mnou","môže","viete","kým","mne","až","presne","môžeš","dosť","vážne","preto","dobré","späť","všetky","tebou","urobiť","deje","robíš","vedieť","prepáč","vďaka","však","musíš","povedala","ona","budeme","nikto","kvôli","lebo","teda","vec","nech","hneď","im","každý","svoje","než","kedy","tvoja","prepáčte","nechcem","rokov","choď","povedz","potrebujem","daj","nemám","svoju","samozrejme","raz","chce","takto","také","mohli","preč","ním","nejaké","idem","spolu","vlastne","problém","musí","žiadne","chcete","vôbec","lepšie","vidieť","môžeme","urobil","tvoje","tebe","dostať","prišiel","hovoriť","vyzerá","ktorá","dlho","kam","niekedy","von","príliš","nich","sám","celý","úplne","tej","určite","nuž","môžete","pod","fajn","váš","seba","aký","nebude","cez","niekoho","u","všetkých","aké","majú","mojej","tých","rýchlo","taký","istý","znamená","môjho","tieto","koľko","predtým","medzi","dať","tejto","čom","chcela","neho","ideme","budú","dva","tri","nebol","nejaký","svoj","podľa","mohla","nájsť","pani","vaše","budete","ľúto","pozrite","zajtra","moju","hovorí","ktorú","túto","hore","dostal","super","ďalej","naše","vedel","tomto","náš","chvíľu","dal","proste","vie","okej","jedno","pohode","dole","aspoň","vaša","nej","táto","jedna","i","oni","robí","poviem","nemôžeš","dve","ku","skôr","ktorí","radšej","zlé","páči","nami","dúfam","skoro","čože","ňou","nemá","proti","nemal","neskôr","jednu","iné","odtiaľto","nad","hovoril","prvý","vami","svojho","musíte","zdá","skvelé","dobrá","znova","koho","och","minút","sebe","nebolo","musieť","nebudem","okolo","dvaja","príde","nemôže","veľký","vidíš","prišli","tohto","ideš","tvoju","uvidíme","celé","sama","haló","čokoľvek","nemáš","musel","jedného","vrátiť","buď","potrebujeme","taká","nebola","vonku","spraviť","prišla","moc","pokiaľ","skutočne","žiadny","svojej","dám","malý","pekne","co","ňu","odísť","nechať","inak","prísť","zatiaľ","vtedy","najlepšie","sebou","celú","možné","povedali","iste","znovu","dajte","páni","predsa","dobrú","čím","istá","ach","dokonca","videli","žiť","poďte","niekde","ďalší","iný","spôsob","nemáme","toľko","ňom","nemôžeme","nový","spravil","robíte","zle","tvojej","naša","akoby","robím","pekné","pôjdem","cestu","zase","hodín","nimi","oci","oči","dá","okrem","chápem","pripravený","chceli","konečne","aká","ano","mojom","mojich","veľké","priamo","počas","nechceš","jediný","týchto","rozumiem","zdravím","môžu","urobila","mohlo","nové","robil","chcú","jednoducho","choďte","prípad","mimo","nepovedal","isté","neskoro","povedzte","tvojho","dostali","pravdepodobne","vašu","vecí","svojich","nechcel","ďalšie","ze","nejakú","týmto","vziať","dni","jo","päť","nevieš","odkiaľ","malé","mrzí","našej","ďaleko","úžasné","nemohol","nevidel","okay","obaja","všetkým","dvoch","nemali","žiadna","dní","dr.","nemala","potrebovať","zostať","ktorého","sam","rovnako","rokmi","malo","vyzeráš","potrebuješ","strane","dňa","jediná","oveľa","urobím","ó","zastaviť","vašej","nikoho","najprv","nevedel","najlepší","našich","takmer","čau","dostala","ktorých","začal","nemusíš","opäť","urobili","ktorej","aha","stačí","išiel","zlý","čase","chceme","začať","moji","niekoľko","nevie","povieš","našu","nemôžete","naspäť","pôjdeme","štyri","poznáš","sveta","robia","chlape","rozprávať","spať","pekný","veľká","nemáte","nechce","nakoniec","ono","mysli","všade","vzal","blízko","chcieť","nášho","akú","vášho","naposledy","vidíte","šiel","odkedy","neboli","vedeli","možnosť","ah","stať","každého","vnútri","hodinu","prvé","vrátim","menej","nehovor","nebudeš","čakať","urob","žiaden","um","odtiaľ","malá","musela","nejako","okamžite","mojou","poslal","prvá","záleží","iného","ne","ha","skvelý","čoho","š","new","šťastie","jedlo","zmysel","čoskoro","snažím","nechajte","you","treba","hodiny","ocko","dala","yeah","nechal","zomrel","pracovať","madam","priatelia","časť","ruku","počuť","telefón","krv","zem","chyba","mesta","správy","práci","charlie","láska","mesto","jack","strach","volám","školy","kamoš","našla","neboj","tvár","počula","syna","zavolať","zemi","rodinu","pamätáš","polícia","roku","odišiel","párty","verím","nerob","skutočnosti","meste","zbrane","dali","auta","cesty","uveriť","zistiť","chlapče","dcéra","pána","tou","zavolám","dievčatá","volal","vypadni","myslieť","šťastný","radi","chlapík","hovorila","tím","hlavy","nejde","cesta","jasne","peňazí","muži","vrátil","škole","pol","hovoríte","večeru","sex","miesta","druhý","odo","snažil","michael","sľubujem","hovoria","šéf","žije","zachrániť","šesť","nikomu","rovno","dostane","dolu","musia","výborne","posledný","vezmi","posledné","jediné","náhodou","každú","dávno","začína","jednej","nevadí","napríklad","svojom","mesiac","dostanem","zobrať","tvojom","zabudol","môcť","často","existuje","dostaneme","povie","celá","druhej","mimochodom","žiadnu","pôjde","nejaká","snáď","nechcela","mesiacov","ostatní","navždy","desať","museli","urobíme","horšie","keďže","sami","najskôr","robíme","všetkom","pozrime","hovorili","tvojich","vezmem","zober","nedá","trošku","chvíľku","ktorým","nemu","mojím","lepší","dáš","sto","dvadsať","devätnásť","osemnásť","sedemnásť","šestnásť","dvakrát","pätnásť","štrnásť","trinásty","trinásť","dvanásty","dvanásť","jedenásty","jedenásť","desiaty","deviaty","deväť","ôsmy","osem","siedmy","sedem","šiesty","piaty","štvrtý","tretí","tí","tými","mojim","môjmu","mojimi","nim","ony","akonáhle","kedže","hoci","lenže","nakoľko","pokým","tobôž","čiže","vedľa","napriek","nadol","oproti","plus","nahor","dvojslovné","namiesto","trojslovné","navyše","tamto","včera","nedávno","ihneď","kdekoľvek","nikde","celkom","tvrdo","pomaly","opatrne","ťažko","sotva","väčšinou","absolútne","spoločne","osamote","zvyčajne","príležitostne","zriedka","tisíc","milión"].concat(t)),s=[["buď, buď"],["buď, alebo"],["ani, ani"],["aj, aj"],["tak, ako"],["nielenže, lež aj"],["nielen, lež aj"],["nielen, lež i"],["nielenže, lež ai"],["či, alebo"],["i, i"],["nielen, ale i"],["síce, ale"]],d=["nejaký","nejaká","nejaké","jeden","jedna","jediný","dva","dvaja","dve","tri","trojka","traja","štyri ","štvoro","štyria","päť","pät","šesť","sedem","osem","deväť","desať","sto","tisíc","ten","tá","to","tento","táto","toto","tamten","tamtá","tamto","tí","tie","tieto","toho","tej","tomu","tú","tom","tým","tou","tých","tými","títo","tamtí","tamtie","tamtoho","tomuto","tohto"],{getWords:v}=o.languageProcessing,l=["letá","skriptá","dvojitá","autá","kráľovná","princezná","príbuzná","premenná","trstená","zelená","ošípaná","lesná","vyvolená","dobšiná","hádzaná","gazdiná","šrotovná","švagriná","výborná","záverečná","recepčná","konečná","dotyčná","černá","jediný","posledný","ostatný","neposledný","predposledný","štvrtý","dvojitý","postihnutý","svätý","zlotý","dôležitý","istý","určitý","svätý","bohatý","čistý","zlatý","častý","postihnutý","zložitý","okolitý","žltý","dohodnutý","skrytý","hustý","okamžitý","zvyknutý","krutý","zahrnutý","vzniknutý","vyvinutý","dotknutý","rozhodnutý","rozmanitý","rozvinutý","pokrytý","krytý","opitý","tekutý","spätý","neistý","prostý","nepretržitý","osobitý","prevzatý","jedovatý","zapnutý","ukradnutý","mletý","ženatý","sprostý","trávnatý","uhličitý","maloletý","nevyužitý","prežitý","skalnatý","ponúknutý","rozbehnutý","vydatý","náležitý","napätý","pustý","prenajatý","zvládnutý","vypnutý","pracovitý","zasiahnutý","neurčitý","piesočnatý","šitý","šťavnatý","zamrznutý","posadnutý","posunutý","urcitý","listnatý","guľatý","nečistý","dutý","ihličnatý","chlpatý","nápaditý","zaujatý","nedotknutý","členitý","presunutý","menovitý","hranatý","odobratý","zamknutý","zdvihnutý","natiahnutý","rovinatý","zabehnutý","novovzniknutý","potiahnutý","odtrhnutý","hornatý","zamietnutý","vyzretý","opretý","kamenistý","kľukatý","svalnatý","zarytý","prehratý","zajatý","rozpačitý","pohnutý","rozkvitnutý","stojatý","húževnatý","zlatistý","opuchnutý","hmlistý","prekrytý","vychudnutý","napnutý","plnoletý","odumretý","očitý","dojatý","strapatý","korenistý","stuhnutý","ostnatý","neplnoletý","odetý","zákonitý","vyňatý","vyschnutý","obutý","ohnutý","vlnitý","nafúknutý","zapadnutý","vystretý","mäsitý","svedomitý","spadnutý","vytiahnutý","špicatý","znamenitý","nepoužitý","ostražitý","tretý","nekrytý","uzamknutý","tienistý","zovretý","nultý","tlstý","rázovitý","ľudnatý","pospolitý","hlasitý","vychladnutý","rozpadnutý","odňatý","pritiahnutý","nedožitý","klenutý","pretiahnutý","podlhovastý","dvojitý","zaťatý","podnapitý","prasknutý","prikrytý","padnutý","vypätý","podčiarknutý","roztiahnutý","svatý","mrzutý","kopcovitý","svahovitý","guľovitý","zásaditý","bradatý","zmrznutý","zubatý","pomletý","zaniknutý","zažitý","piesčitý","zahnutý","nasiaknutý","zhnitý","iný","posledný","jediný","vlastný","hlavný","pekný","povinný","určený","vhodný","schopný","plný","samotný","silný","pripravený","voľný","podobný","spokojný","pracovný","súčasný","presvedčený","uvedený","medzinárodný","osobný","spoločný","daný","národný","základný","úspešný","potrebný","neregistrovaný","rodinný","kvalitný","finančný","zodpovedný","šťastný","skutočný","pôvodný","dnešný","otvorený","zameraný","príjemný","ročný","bežný","životný","výborný","možný","stavebný","ochotný","významný","zdravotný","vnútorný","obyčajný","hudobný","duchovný","presný","jasný","verejný","vybavený","príslušný","priemerný","červený","výrazný","samostatný","spojený","odborný","výkonný","trestný","umiestnený","moderný","schválený","obchodný","cestovný","informačný","spomínaný","vytvorený","nádherný","dostatočný","oprávnený","mobilný","zelený","náročný","úžasný","obľúbený","jedinečný","prirodzený","prítomný","obecný","slušný","kompletný","prekvapený","dostupný","operačný","pevný","večný","dolný","zvýšený","výnimočný","krvný","stanovený","súkromný","konečný","vianočný","vážený","ústavný","úplný","obmedzený","považovaný","skúsený","platný","slobodný","vyrobený","tradičný","nebezpečný","verný","vodný","všeobecný","smutný","dopravný","letný","mesačný","prírodný","drevený","osobitný","komplexný","nočný","vzdialený","denný","farebný","okresný","študijný","účinný","volebný","policajný","používaný","jemný","záverečný","sklamaný","unavený","menovaný","pokojný","zaradený","rozšírený","poškodený","odlišný","pravidelný","poverený","rozdelený","bezpečný","územný","zahraničný","slnečný","nepríjemný","horný","jednotný","zásadný","inteligentný","opačný","zimný","dotyčný","vďačný","víťazný","stručný","každodenný","slávnostný","podrobný","imunitný","stredný","značný","akčný","šikovný","prístupný","výsledný","funkčný","tohtoročný","nevyhnutný","orientovaný","ostatný","nadšený","bezpečnostný","studený","štandardný","zverejnený","situovaný","plánovaný","ochranný","podstatný","dlhoročný","perfektný","cirkevný","takzvaný","zložený","nevhodný","úprimný","stolný","stabilný","požadovaný","čestný","anonymný","lacný","reklamný","úvodný","kontrolný","nasledovný","výrobný","zábavný","viditeľný","divadelný","písomný","predpokladaný","medziročný","lesný","odolný","registrovaný","prípadný","nešťastný","jednoznačný","spôsobený","chudobný","udržateľný","luxusný","zadný","rozumný","tanečný","organizačný","drobný","zranený","zasvätený","rovný","užitočný","investičný","milovaný","hodný","hladný","bezplatný","pripojený","nekonečný","zemný","elegantný","pomocný","zbytočný","priemyselný","pohodlný","obvodný","mocný","pitný","oblečený","neobmedzený","strávený","plnohodnotný","rodný","vzájomný","prípravný","zaznamenaný","kamenný","kompaktný","vstupný","zabudovaný","peňažný","skromný","mohutný","externý","výskumný","ohrozený","predný","reprezentačný","primeraný","herný","výhodný","strašný","ný","polovičný","nezabudnuteľný","invalidný","narodený","cenný","následný","opatrný","ocenený","ústredný","sprievodný","svadobný","prepracovaný","neuveriteľný","zákonný","variabilný","využívaný","zariadený","napojený","strieborný","nazvaný","tajný","komunikačný","novotný","západný","zachovaný","nenávratný","vzdelaný","kladný","poistený","dobrovoľný","ucelený","označovaný","komerčný","vydarený","dočasný","prihlásený","hrozný","vtipný","chladný","kontaktný","komplikovaný","znížený","záväzný","jarný","večerný","odvodený","pohlavný","obklopený","zamestnaný","dôstojný","odkázaný","liečebný","netradičný","celodenný","naivný","riadený","severný","falošný","náhodný","južný","prechodný","talentovaný","závažný","dvojnásobný","jubilejný","nominovaný","nedostatočný","telekomunikačný","nainštalovaný","použiteľný","dodávaný","súťažný","prispôsobený","pripravovaný","nespokojný","získaný","tajomný","financovaný","ponúkaný","výtvarný","svetelný","zmenený","položený","vykonaný","zmluvný","vyvážený","vysvätený","potvrdený","sprevádzaný","limitovaný","služobný","postupný","podporený","registračný","vrchný","nezamestnaný","obytný","zostavený","vyplnený","príbuzný","prezentovaný","duševný","podaný","nevinný","tepelný","priestranný","ľahostajný","pridelený","náučný","zaručený","pozoruhodný","rekordný","zaslaný","nahnevaný","platený","ľubovoľný","platobný","navrhovaný","volený","ozajstný","podporovaný","úradný","pozorný","záručný","predčasný","týždenný","prepojený","nutný","popredný","vymenovaný","pilotný","požehnaný","kombinovaný","redakčný","zubný","telesný","minuloročný","ranný","temný","realitný","vyriešený","neschopný","zázračný","revolučný","interný","parný","bočný","zbavený","cestný","čudný","urobený","šialený","animovaný","veľkonočný","nudný","predbežný","oslobodený","divný","hraničný","prenosný","kvalifikovaný","prvotný","motivačný","obžalovaný","záhradný","odovzdaný","podmienený","východný","dominantný","spätný","nákladný","nenápadný","jesenný","výchovný","predmetný","detailný","drsný","špecializovaný","obranný","prehľadný","vyhradený","pyšný","spustený","podpivničený","osadený","nečakaný","porovnateľný","prepustený","nadriadený","povolaný","ovocný","výmenný","vyčerpaný","obnovený","písaný","overený","konkurenčný","kompatibilný","neúspešný","starobný","konverzný","záchranný","totožný","zastúpený","kompetentný","spodný","obohatený","chutný","firemný","relevantný","navigačný","uvoľnený","nasadený","vyjadrený","čiastočný","pamätný","posvätný","uznaný","pomenovaný","očný","kontroverzný","flexibilný","všestranný","neskutočný","zapojený","kladený","spotrebný","oddelený","nákupný","prijateľný","vyvolený","vinný","vyrábaný","nájdený","rekreačný","chybný","nemenovaný","tučný","neviditeľný","poradný","skalný","celovečerný","naladený","zateplený","hmotný","colný","zamilovaný","polyfunkčný","knižný","podriadený","hraný","vymedzený","nastaviteľný","nedeľný","priložený","odstránený","uzatvorený","renesančný","pružný","regulačný","poháňaný","vstavaný","hodnotný","splnený","vzdušný","putovný","zatvorený","porazený","vytúžený","skrátený","stíhaný","knižničný","realizačný","zmiešaný","pokrstený","aplikovaný","motivovaný","testovaný","vnímaný","milosrdný","úsporný","vítaný","čarovný","zaslúžený","nezvyčajný","pokorný","neopakovateľný","protimonopolný","učebný","odhodlaný","nádejný","povestný","železničný","podporný","obsadený","zmätený","výstižný","oboznámený","skúšobný","nadmerný","ozbrojený","rodený","čitateľný","opozičný","železný","orientačný","zavraždený","zhodný","kvalifikačný","ukrižovaný","autorizovaný","ladený","odporúčaný","oddaný","ohromný","znechutený","šokovaný","predajný","nenáročný","smrteľný","činný","uväznený","objavený","sledovaný","nosný","vecný","arogantný","hradný","zdatný","vymyslený","ohraničený","počiatočný","zanedbateľný","radostný","zrozumiteľný","hybridný","usporiadaný","multifunkčný","univerzitný","palubný","naklonený","zadaný","predposledný","narušený","naozajstný","spasený","udržiavaný","zabalený","komorný","spáchaný","stabilizačný","záhadný","osamotený","stavaný","dobrodružný","nakrútený","izolovaný","zaťažený","žiadaný","reklamačný","sviatočný","premyslený","vyhotovený","bezprostredný","údajný","korektný","dvojročný","krstný","obdobný","vyvolaný","nezmenený","koncipovaný","dodatočný","opísaný","žitný","odoslaný","zachytený","všedný","evidovaný","jazdný","černý","vylepšený","zaplatený","porušený","nevšedný","odporný","prospešný","opakovaný","trojročný","prenesený","slovný","prerobený","charakterizovaný","začarovaný","sobotný","oplotený","transparentný","uskutočnený","certifikovaný","nekompromisný","hromadný","murovaný","toaletný","varovný","diaľničný","zavesený","neplatný","hnusný","zlomený","pokazený","opravný","kúpeľný","nejasný","zaľúbený","akceptovaný","servisný","sústredený","kožený","výstavný","nápomocný","bezmocný","mravný","zaskočený","kľudný","enormný","predaný","rastlinný","nepatrný","odhalený","spisovný","preplnený","oslabený","žalovaný","útočný","nadaný","smädný","voliteľný","satelitný","účtovný","záložný","brušný","predvolebný","pravdepodobný","benefičný","relaxačný","nižný","diskusný","vyslaný","komfortný","povýšený","zaužívaný","renomovaný","zaistený","vzkriesený","výstupný","poslušný","nežný","osobnostný","hľadaný","predurčený","nezmyselný","predvedený","poistný","upozornený","poľný","úložný","referenčný","robustný","nenahraditeľný","zhubný","bezchybný","dvojpodlažný","vyšný","nájomný","predkladaný","neškodný","celoročný","stabilizovaný","nefunkčný","záporný","súhrnný","opätovný","vznešený","zasadený","celoživotný","tolerantný","statočný","zmysluplný","sprístupnený","odmenený","textilný","zhotovený","strešný","konštantný","priznaný","vyradený","bojovný","vyvíjaný","zakopaný","permanentný","nevídaný","koaličný","odložený","teplotný","priebežný","rovnocenný","pripútaný","uvádzaný","obrátený","zreteľný","adresovaný","vymastený","kultivovaný","dlžný","vytlačený","blahoslavený","zverený","umožnený","percentný","prenasledovaný","zjavný","pozáručný","zaneprázdnený","chápaný","ubytovaný","nerozhodný","neautorizovaný","prerokovaný","vypredaný","vyzvaný","približný","nemožný","operný","zjednodušený","prezývaný","vyznačený","zvyšný","recyklačný","komunitný","trojnásobný","excelentný","zablokovaný","koncentrovaný","stlačený","jednosmerný","posilnený","jednostranný","neobyčajný","vymenený","totalitný","kúpený","garantovaný","zadržaný","neprijateľný","zrealizovaný","želaný","dôsledný","rýchlostný","robený","ručný","využiteľný","zachránený","nerušený","parlamentný","dedičný","predávaný","vysnívaný","vysielaný","rekonštruovaný","útulný","doživotný","ropný","propagačný","poučený","mastný","koncertný","aktivovaný","zberný","prerušený","otočený","civilný","šetrný"],{values:p}=o.languageProcessing,{Clause:u}=p,{getClausesSplitOnStopWords:m,createRegexFromArray:k}=o.languageProcessing,c={Clause:class extends u{constructor(n,e){super(n,e),this._participles=function(n){const e=v(n),o=new RegExp("(ný|ní|tý|ná|tá|né|té)$");return e.filter((n=>o.test(n)))}(this.getClauseText()),this.checkParticiples()}checkParticiples(){const n=this.getParticiples().filter((n=>!l.includes(n)));this.setPassive(n.length>0)}},regexes:{auxiliaryRegex:k(["byť","som","si","je","sme","ste","sú","bol","bola","boli","bolo","budem","budeš","bude","budeme","budete","budú"]),stopCharacterRegex:/([:,])(?=[ \n\r\t'"+\-»«‹›<>])/gi,stopwordRegex:k(a)}};function h(n){return m(n,c)}const z=window.lodash;function b(n,e){const o=e.externalStemmer.palatalEndingsRegexes.find((e=>new RegExp(e[0]).test(n)));return o?n.replace(new RegExp(o[0]),o[1]):n.slice(0,-1)}const j=function(n,e){for(const o of e)if(o[1].includes(n))return o[0];return null},f=function(n,e){for(const o of e)if(o.includes(n))return o[0];return null};const{baseStemmer:y}=o.languageProcessing;function g(n){const e=(0,z.get)(n.getData("morphology"),"sk",!1);return e?n=>function(n,e){const o=j(n,e.exceptionLists.exceptionStemsWithFullForms);return o||(n=function(n,e){const o=e.externalStemmer.caseSuffixes,a=e.externalStemmer.caseRegexes;if(n.length>7&&n.endsWith(o.caseSuffix1))return n.slice(0,-5);if(n.length>6&&n.endsWith(o.caseSuffix2))return b(n.slice(0,-3),e);if(n.length>5){if(o.caseSuffixes3.includes(n.slice(-3)))return b(n.slice(0,-2),e);if(o.caseSuffixes4.includes(n.slice(-3)))return n.slice(0,-3)}if(n.length>4){if(n.endsWith(o.caseSuffix5))return b(n.slice(0,-1),e);if(o.caseSuffixes6.includes(n.slice(-2)))return b(n.slice(0,-2),e);if(o.caseSuffixes7.includes(n.slice(-2)))return n.slice(0,-2)}if(n.length>3){if(new RegExp(a.caseRegex1).test(n))return b(n,e);if(new RegExp(a.caseRegex2).test(n))return n.slice(0,-1)}return n}(n,e),n=function(n,e){const o=e.externalStemmer.possessiveSuffixes;if(n.length>5){if(n.endsWith(o.posSuffixOv))return n.slice(0,-2);if(n.endsWith(o.posSuffixIn))return b(n.slice(0,-1),e)}return n}(n,e),n=function(n,e){const o=e.externalStemmer.superlativePrefix;return n.length>6&&n.startsWith(o)&&(n=n.slice(3,n.length)),n.length>5&&e.externalStemmer.comparativeSuffixes.includes(n.slice(-3))&&(n=b(n.slice(0,-2),e)),n}(n,e),n=function(n,e){const o=e.externalStemmer.diminutiveSuffixes;if(n.length>7&&n.endsWith(o.diminutiveSuffix1))return n.slice(0,-5);if(n.length>6){if(o.diminutiveSuffixes2.includes(n.slice(-4)))return b(n.slice(0,-3),e);if(o.diminutiveSuffixes3.includes(n.slice(-4)))return b(n.slice(0,-4),e)}if(n.length>5){if(o.diminutiveSuffixes4.includes(n.slice(-3)))return b(n.slice(0,-3),e);if(o.diminutiveSuffixes5.includes(n.slice(-3)))return n.slice(0,-3)}if(n.length>4){if(o.diminutiveSuffixes6.includes(n.slice(-2)))return b(n.slice(0,-1),e);if(o.diminutiveSuffixes7.includes(n.slice(-2)))return n.slice(0,-1)}return n.length>3&&n.endsWith("k")&&!n.endsWith("isk")?n.slice(0,-1):n}(n,e),n=function(n,e){const o=e.externalStemmer.augmentativeSuffixes;return n.length>6&&n.endsWith(o.augmentativeSuffix1)?n.slice(0,-4):n.length>5&&o.augmentativeSuffixes2.includes(n.slice(-3))?b(n.slice(0,-2),e):n}(n,e),n=function(n,e){const o=e.externalStemmer.derivationalSuffixes;if(n.length>8&&n.endsWith(o.derivationalSuffix1))return n.slice(0,-6);if(n.length>7){if(n.endsWith(o.derivationalSuffix2))return b(n.slice(0,-4),e);if(o.derivationalSuffixes3.includes(n.slice(-5)))return n.slice(0,-5)}if(n.length>6){if(o.derivationalSuffixes4.includes(n.slice(-4)))return n.slice(0,-4);if(o.derivationalSuffixes5.includes(n.slice(-4)))return b(n.slice(0,-3),e)}if(n.length>5){if(n.endsWith(o.derivationalSuffix6))return n.slice(0,-3);if(o.derivationalSuffixes7.includes(n.slice(-3)))return b(n.slice(0,-2),e);if(o.derivationalSuffixes8.includes(n.slice(-3)))return n.slice(0,-3)}if(n.length>4){if(o.derivationalSuffixes9.includes(n.slice(-2)))return n.slice(0,-2);if(o.derivationalSuffixes10.includes(n.slice(-2)))return b(n.slice(0,-1),e)}const a=new RegExp(e.externalStemmer.derivationalRegex);return n.length>3&&a.test(n)?n.slice(0,-1):n}(n,e),f(n,e.exceptionLists.stemsThatBelongToOneWord)||n)}(n,e):y}const{AbstractResearcher:x}=o.languageProcessing;class S extends x{constructor(n){super(n),delete this.defaultResearches.getFleschReadingScore,Object.assign(this.config,{language:"sk",passiveConstructionType:"periphrastic",stopWords:a,functionWords:r,transitionWords:i,twoPartTransitionWords:s,firstWordExceptions:d}),Object.assign(this.helpers,{getClauses:h,getStemmer:g})}}(window.yoast=window.yoast||{}).Researcher=e})();js/dist/quick-edit-handler.js000064400000001675147206602470012154 0ustar00jQuery(function(t){const n=t(location).attr("pathname").split("/").pop(),i="edit-tags.php"===n?"slug":"post_name",e=t(".wrap").children().eq(0);let o=0;const a=[];function r(n){a.includes(n)||(a.push(n),t(n).insertAfter(e))}function c(){t.post(ajaxurl,{action:"yoast_get_notifications",version:2},(function(t){""!==t&&(o=0,JSON.parse(t).map(r)),o<20&&""===t&&(o++,setTimeout(c,500))}))}function u(){const n=t("tr.inline-editor"),e=function(t){return 0===t.length||""===t?"":t.attr("id").replace("edit-","")}(n),o=function(n){return t("#inline_"+n).find("."+i).html()}(e);return o!==n.find("input[name="+i+"]").val()}["edit.php","edit-tags.php"].includes(n)&&(t("#inline-edit input").on("keydown",(function(t){13===t.which&&u()&&c()})),t(".button-primary").on("click",(function(n){"save-order"!==t(n.target).attr("id")&&u()&&c()}))),"edit-tags.php"===n&&t(document).on("ajaxComplete",(function(t,n,i){i.data.indexOf("action=delete-tag")>-1&&c()}))}(jQuery));js/dist/integrations-page.js000064400000351337147206602470012125 0ustar00(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var a in s)e.o(s,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:s[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,s=window.lodash,a=window.wp.domReady;var n=e.n(a);const r=window.yoast.uiLibrary,o=window.wp.i18n,l=window.yoast.propTypes;var c=e.n(l);const i=window.wp.element,m=window.wp.apiFetch;var p=e.n(m);const h=Boolean(window.wpseoScriptData.isPremium),y=e=>{const t=`${e.slug}_integration_active`;return Boolean(window.wpseoIntegrationsData[t])},g=e=>{if(!window.wpseoIntegrationsData.is_multisite)return!0;const t=`allow_${e.slug}_integration`;return Boolean(window.wpseoIntegrationsData[t])},d=e=>!window.wpseoIntegrationsData.is_multisite||e.isMultisiteAvailable,v=e=>e.isPremium&&h||!e.isPremium,u=(e,t)=>{const s=t,a=g(e),n=d(e);return v(e)?s&&a&&n:a&&n},w=async(e,t)=>{const s=await p()({path:"yoast/v1/integrations/set_active",method:"POST",data:{active:t,integration:e.slug}});return await s.json};var f,E;function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,t.createElement)("header",{className:"yst-relative yst-flex yst-items-center yst-justify-center yst-h-24 yst-bg-slate-100 yst--mx-6 yst--mt-6 yst-py-6"},e);_.propTypes={children:l.PropTypes.node};const P=({children:e})=>(0,t.createElement)("div",{className:"yst-flex-grow"},e);P.propTypes={children:l.PropTypes.node};const M=({children:e})=>(0,t.createElement)("footer",{className:"yst-border-t yst-border-slate-200 yst-pt-6"},e);function k({children:e}){return(0,t.createElement)("div",{className:"yst-relative yst-flex yst-flex-col yst-bg-white yst-rounded-lg yst-border yst-p-6 yst-space-y-6 yst-overflow-hidden yst-transition-transform yst-ease-in-out yst-duration-200 yst-shadow-sm"},e)}M.propTypes={children:l.PropTypes.node},k.propTypes={children:l.PropTypes.node},k.Header=_,k.Content=P,k.Footer=M;const Z=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M10.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L12.586 11H5a1 1 0 110-2h7.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),T=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"}))})),x=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),N=window.wp.components,L=({integration:e,initialActivationState:s,isNetworkControlEnabled:a,isMultisiteAvailable:n,toggleLabel:l,beforeToggle:c})=>{const[m,p]=(0,i.useState)(s),h=(0,i.useCallback)((async()=>{let t=!0;const s=!m;p(s),c&&(t=!1,t=await c(e,s)),t||p(!s)}),[m,c,p]),y=e.logo;return(0,t.createElement)(k,null,(0,t.createElement)(k.Header,null,(0,t.createElement)(r.Link,{href:e.logoLink,target:"_blank"},e.logo&&(0,t.createElement)(y,{alt:(0,o.sprintf)(/* translators: 1: Yoast SEO, 2: integration name */ (0,o.__)("%1$s integrates with %2$s","wordpress-seo"),"Yoast SEO",e.name),className:u(e,m)?"":"yst-opacity-50 yst-filter yst-grayscale"}),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),!a&&n&&(0,t.createElement)(r.Badge,{className:"yst-absolute yst-top-2 yst-right-2"},(0,o.__)("Network Disabled","wordpress-seo")),a&&e.isNew&&(0,t.createElement)(r.Badge,{className:"yst-absolute yst-top-2 yst-right-2"},(0,o.__)("New","wordpress-seo"))),(0,t.createElement)(k.Content,null,(0,t.createElement)("div",null,e.claim&&(0,t.createElement)("h4",{className:"yst-text-base yst-mb-3 yst-font-medium yst-text-[#111827] yst-leading-tight"},e.claim),(0,t.createElement)("p",null," ",e.description,e.learnMoreLink&&(0,t.createElement)(r.Link,{href:e.learnMoreLink,className:"yst-flex yst-items-center yst-mt-3 yst-no-underline yst-font-medium",target:"_blank"},"Learn more",(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo")),(0,t.createElement)(Z,{className:"yst-h-4 yst-w-4 yst-ml-1 yst-icon-rtl"})))),m&&(0,t.createElement)(N.Slot,{name:`${e.name}Slot`})),(0,t.createElement)(k.Footer,null,!v(e)&&(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",href:e.upsellLink,variant:"upsell","data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2",className:"yst-w-full yst-text-slate-800",target:"_blank"},(0,t.createElement)(x,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5 yst-text-yellow-900"}),(0,o.__)("Unlock with Premium","wordpress-seo"),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),v(e)&&!d(e)&&(0,t.createElement)("p",{className:"yst-flex yst-items-start yst-justify-between"},(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Integration unavailable for multisites","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})),v(e)&&d(e)&&(0,t.createElement)(r.ToggleField,{id:`${e.name}-toggle`,checked:m,label:l,onChange:h,disabled:!a||!n})))};L.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,learnMoreLink:l.PropTypes.string,logoLink:l.PropTypes.string,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isPremium:l.PropTypes.bool,isNew:l.PropTypes.bool,isMultisiteAvailable:l.PropTypes.bool,upsellLink:l.PropTypes.string}),initialActivationState:l.PropTypes.bool,isNetworkControlEnabled:l.PropTypes.bool,isMultisiteAvailable:l.PropTypes.bool,toggleLabel:l.PropTypes.string,beforeToggle:l.PropTypes.func};const A=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"}))})),O=({integration:e,isActive:s,children:a})=>{const n=e.logo;return(0,t.createElement)(k,null,(0,t.createElement)(k.Header,null,(0,t.createElement)(r.Link,{href:e.logoLink,target:"_blank"},e.logo&&(0,t.createElement)(n,{alt:`${e.name} logo`,className:s?"":"yst-opacity-50 yst-filter yst-grayscale"}),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),e.isNew&&(0,t.createElement)(r.Badge,{className:"yst-absolute yst-top-2 yst-right-2"},(0,o.__)("New","wordpress-seo"))),(0,t.createElement)(k.Content,null,(0,t.createElement)("div",null,e.claim&&(0,t.createElement)("h4",{className:"yst-text-base yst-mb-3 yst-font-medium yst-text-[#111827] yst-leading-tight"},e.claim),e.description&&(0,t.createElement)("p",null," ",e.description," "),e.usps&&(0,t.createElement)("ul",{className:"yst-space-y-3"},e.usps.map(((e,s)=>(0,t.createElement)("li",{key:s,className:"yst-flex yst-items-start"},(0,t.createElement)(A,{className:"yst-h-5 yst-w-5 yst-mr-2 yst-text-green-400 yst-flex-shrink-0"}),(0,t.createElement)("span",null," ",e," "))))),e.learnMoreLink&&(0,t.createElement)(r.Link,{href:e.learnMoreLink,className:"yst-flex yst-items-center yst-mt-3 yst-no-underline yst-font-medium",target:"_blank"},"Learn more",(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo")),(0,t.createElement)(Z,{className:"yst-h-4 yst-w-4 yst-ml-1 yst-icon-rtl"})))),(0,t.createElement)(k.Footer,null,!v(e)&&(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",href:e.upsellLink,variant:"upsell","data-action":"load-nfd-ctb","data-ctb-id":"f6a84663-465f-4cb5-8ba5-f7a6d72224b2",className:"yst-w-full yst-text-slate-800",target:"_blank"},(0,t.createElement)(x,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5 yst-text-yellow-900"}),(0,o.__)("Unlock with Premium","wordpress-seo"),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),v(e)&&(0,t.createElement)("p",{className:"yst-flex yst-items-start yst-justify-between"},a)))};O.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,learnMoreLink:l.PropTypes.string,logoLink:l.PropTypes.string,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func.isRequired,isNew:l.PropTypes.bool,upsellLink:l.PropTypes.string}).isRequired,isActive:l.PropTypes.bool,children:l.PropTypes.oneOfType([l.PropTypes.node,l.PropTypes.arrayOf(l.PropTypes.node)])},O.defaultProps={isActive:!0,children:[]};const $=({integration:e,isActive:s})=>(0,t.createElement)(O,{integration:e,isActive:s},s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Mastodon profile added","wordpress-seo")),(0,t.createElement)(A,{className:"yst-h-5 yst-w-5 yst-text-green-400 yst-flex-shrink-0"})),!s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Mastodon profile not yet added","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})));$.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isNew:l.PropTypes.bool}).isRequired,isActive:l.PropTypes.bool},$.defaultProps={isActive:!0};const V={name:"Mastodon",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: Mastodon; 3: bold close tag. */ (0,o.__)("Verify your site on %1$s%2$s%3$s","wordpress-seo"),"","Mastodon",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-mastodon",logoLink:"https://yoa.st/integrations-logo-mastodon",slug:"mastodon",description:(0,o.sprintf)(/* translators: 1: Mastodon, 2: Yoast SEO Premium */ (0,o.__)("Add trustworthiness to your %1$s profile by verifying your site with %2$s.","wordpress-seo"),"Mastodon","Yoast SEO Premium"),isPremium:!0,isNew:!0,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",b({xmlns:"http://www.w3.org/2000/svg",width:140,viewBox:"0 0 713.359 175.868"},e),f||(f=t.createElement("path",{fill:"#2b90d9",d:"M160.555 105.431c-2.413 12.407-21.598 25.983-43.634 28.614-11.491 1.373-22.804 2.631-34.867 2.079-19.73-.904-35.298-4.71-35.298-4.71 0 1.921.119 3.75.355 5.46 2.565 19.47 19.308 20.637 35.166 21.181 16.007.548 30.258-3.947 30.258-3.947l.659 14.472s-11.197 6.011-31.14 7.116c-11 .605-24.654-.276-40.56-4.485C6.999 162.08 1.066 125.31.159 88-.12 76.923.052 66.476.052 57.741.052 19.59 25.05 8.406 25.05 8.406 37.652 2.617 59.279.184 81.764 0h.552c22.484.184 44.125 2.618 56.729 8.406 0 0 24.996 11.183 24.996 49.335 0 0 .313 28.148-3.486 47.69"})),E||(E=t.createElement("path",{fill:"#282c37",d:"M34.658 48.494c0-5.554 4.502-10.055 10.055-10.055s10.055 4.501 10.055 10.055c0 5.553-4.502 10.055-10.055 10.055s-10.055-4.502-10.055-10.055M178.865 60.7v46.195h-18.301V62.057c0-9.452-3.978-14.248-11.933-14.248-8.794 0-13.202 5.69-13.202 16.943v24.542h-18.194V64.751c0-11.252-4.409-16.943-13.203-16.943-7.955 0-11.932 4.796-11.932 14.248v44.838H73.799V60.7c0-9.442 2.403-16.944 7.232-22.495 4.98-5.55 11.501-8.395 19.595-8.395 9.366 0 16.459 3.599 21.146 10.799l4.56 7.642 4.559-7.642c4.689-7.2 11.78-10.8 21.148-10.8 8.093 0 14.613 2.846 19.593 8.396 4.829 5.551 7.233 13.054 7.233 22.495m63.048 22.964c3.776-3.99 5.595-9.015 5.595-15.075 0-6.06-1.819-11.085-5.595-14.928-3.636-3.991-8.254-5.911-13.849-5.911-5.596 0-10.212 1.92-13.849 5.911-3.637 3.843-5.456 8.868-5.456 14.928 0 6.06 1.819 11.085 5.456 15.075 3.637 3.842 8.253 5.763 13.849 5.763 5.595 0 10.213-1.92 13.849-5.763m5.595-52.025h18.046v73.9h-18.046v-8.722c-5.455 7.243-13.01 10.79-22.801 10.79-9.373 0-17.347-3.695-24.062-11.233-6.573-7.538-9.931-16.85-9.931-27.785 0-10.79 3.358-20.102 9.931-27.64 6.715-7.537 14.689-11.38 24.062-11.38 9.79 0 17.346 3.548 22.8 10.79v-8.72zm78.762 35.62c5.315 3.99 7.973 9.606 7.833 16.7 0 7.538-2.658 13.45-8.113 17.588-5.457 3.992-12.03 6.06-20.004 6.06-14.409 0-24.201-5.912-29.378-17.588l15.669-9.31c2.098 6.353 6.714 9.606 13.709 9.606 6.434 0 9.652-2.07 9.652-6.356 0-3.104-4.197-5.912-12.73-8.128a117.46 117.46 0 0 1-7.973-2.514c-2.938-1.18-5.455-2.512-7.554-4.137-5.176-3.99-7.834-9.313-7.834-16.11 0-7.243 2.518-13.006 7.554-17.145 5.176-4.286 11.47-6.355 19.025-6.355 12.03 0 20.844 5.172 26.577 15.666l-15.386 8.868c-2.239-5.024-6.015-7.537-11.191-7.537-5.456 0-8.114 2.07-8.114 6.06 0 3.103 4.196 5.91 12.73 8.128 6.575 1.477 11.75 3.695 15.528 6.504m57.357-17.293h-15.808V80.71c0 3.695 1.4 5.91 4.058 6.945 1.958.74 5.875.887 11.75.59v17.295c-12.17 1.477-20.983.295-26.16-3.697-5.174-3.842-7.693-10.936-7.693-21.133V49.966h-12.17V31.64h12.17V16.71l18.045-5.764V31.64h15.808v18.327zm57.498 33.255c3.637-3.844 5.455-8.722 5.455-14.633s-1.818-10.789-5.455-14.631c-3.638-3.844-8.114-5.764-13.57-5.764-5.455 0-9.931 1.92-13.569 5.764-3.497 3.99-5.316 8.867-5.316 14.631 0 5.765 1.819 10.643 5.316 14.633 3.638 3.842 8.114 5.763 13.569 5.763 5.456 0 9.932-1.921 13.57-5.763m-39.869 13.153c-7.134-7.537-10.631-16.701-10.631-27.786 0-10.937 3.497-20.1 10.631-27.637 7.134-7.538 15.948-11.38 26.299-11.38 10.352 0 19.165 3.842 26.3 11.38 7.135 7.537 10.771 16.848 10.771 27.637 0 10.938-3.636 20.249-10.771 27.786-7.135 7.539-15.808 11.233-26.3 11.233-10.491 0-19.165-3.694-26.299-11.233m123.665-12.71c3.638-3.99 5.455-9.015 5.455-15.075 0-6.06-1.817-11.085-5.455-14.928-3.636-3.991-8.253-5.911-13.848-5.911-5.597 0-10.213 1.92-13.99 5.911-3.635 3.843-5.455 8.868-5.455 14.928 0 6.06 1.82 11.085 5.456 15.075 3.776 3.842 8.532 5.763 13.989 5.763 5.595 0 10.212-1.92 13.848-5.763m5.455-81.585h18.047v103.46h-18.047v-8.722c-5.315 7.243-12.87 10.79-22.661 10.79-9.372 0-17.485-3.695-24.2-11.233-6.575-7.538-9.932-16.85-9.932-27.785 0-10.79 3.357-20.102 9.932-27.64 6.715-7.537 14.828-11.38 24.2-11.38 9.791 0 17.346 3.548 22.661 10.79V2.079zm81.42 81.142c3.637-3.844 5.455-8.722 5.455-14.633s-1.818-10.789-5.455-14.631c-3.637-3.844-8.113-5.764-13.57-5.764-5.455 0-9.932 1.92-13.568 5.764-3.5 3.99-5.317 8.867-5.317 14.631 0 5.765 1.818 10.643 5.317 14.633 3.636 3.842 8.113 5.763 13.568 5.763 5.457 0 9.933-1.921 13.57-5.764m-39.868 13.154c-7.135-7.537-10.632-16.701-10.632-27.786 0-10.937 3.497-20.1 10.632-27.637 7.135-7.538 15.947-11.38 26.298-11.38 10.353 0 19.165 3.842 26.3 11.38 7.135 7.537 10.772 16.848 10.772 27.637 0 10.938-3.637 20.249-10.772 27.786-7.135 7.539-15.807 11.233-26.3 11.233-10.491 0-19.163-3.694-26.298-11.233m141.43-36.21v45.374h-18.045v-43.01c0-4.877-1.26-8.572-3.777-11.38-2.378-2.512-5.736-3.843-10.072-3.843-10.213 0-15.388 6.06-15.388 18.328v39.905H648.03v-73.9h18.046v8.277c4.337-6.946 11.19-10.345 20.844-10.345 7.694 0 13.989 2.66 18.885 8.129 5.035 5.469 7.554 12.859 7.554 22.465"}))),upsellLink:"https://yoa.st/get-mastodon-integration"},I=[[].map(((e,s)=>(0,t.createElement)(L,{key:s,integration:e,toggleLabel:(0,o.__)("Enable integration","wordpress-seo"),initialActivationState:y(e),isNetworkControlEnabled:g(e),isMultisiteAvailable:d(e),beforeToggle:w}))),(0,t.createElement)($,{key:3,integration:V,isActive:Boolean(window.wpseoIntegrationsData.mastodon_active)})];var S,z,C,j,R,F,B,H;function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",G({xmlns:"http://www.w3.org/2000/svg",width:153,height:58,"aria-hidden":"true",viewBox:"0 0 107.51 40.69"},e),j||(j=t.createElement("path",{fill:"#7c579f",fillRule:"evenodd",d:"M16.75 23.78h23.13c1.46 0 2.65 1.19 2.65 2.65v8.82c0 1.46-1.18 2.65-2.65 2.65h-8.3l1.14 2.79-5.01-2.79H16.75c-1.46 0-2.65-1.18-2.65-2.65v-8.82c0-1.46 1.19-2.65 2.65-2.65Z"})),R||(R=t.createElement("path",{fill:"#fff",d:"M15.53 26.18c.17-.22.41-.34.73-.36.59-.04.93.24 1.02.83.36 2.42.75 4.48 1.17 6.17L21 27.98c.23-.44.52-.67.87-.69.51-.04.83.29.96.97.29 1.54.66 2.86 1.1 3.97.3-2.95.82-5.08 1.53-6.4a.92.92 0 0 1 .77-.52c.27-.02.52.06.73.23.22.17.34.39.35.67.01.2-.02.39-.11.55-.45.84-.83 2.24-1.12 4.2-.29 1.89-.4 3.37-.32 4.43.02.29-.02.55-.13.76-.14.26-.35.4-.62.42-.31.02-.61-.12-.92-.43-1.08-1.11-1.94-2.76-2.57-4.94-.75 1.49-1.31 2.6-1.68 3.35-.68 1.31-1.27 1.99-1.75 2.02-.32.02-.59-.24-.81-.8-.6-1.52-1.24-4.46-1.92-8.82-.04-.3.02-.57.18-.78ZM40.51 28c-.42-.73-1.04-1.18-1.86-1.35-.22-.05-.43-.07-.63-.07-1.11 0-2.02.58-2.73 1.74-.6.99-.9 2.08-.9 3.27 0 .9.19 1.66.56 2.3.42.73 1.04 1.18 1.86 1.35.22.05.43.07.63.07 1.13 0 2.03-.58 2.73-1.74.6-1 .9-2.1.9-3.29 0-.9-.19-1.66-.56-2.28Zm-1.47 3.22c-.16.76-.45 1.34-.89 1.72-.34.31-.65.43-.94.37-.28-.06-.51-.31-.68-.75-.14-.36-.2-.72-.2-1.06a3.847 3.847 0 0 1 .7-2.23c.39-.57.79-.81 1.21-.72.28.06.51.31.68.75.14.36.2.72.2 1.06 0 .3-.03.58-.09.85ZM33.22 28c-.42-.73-1.04-1.18-1.86-1.35-.22-.05-.43-.07-.63-.07-1.11 0-2.02.58-2.73 1.74-.6.99-.9 2.08-.9 3.27 0 .9.19 1.66.56 2.3.42.73 1.04 1.18 1.86 1.35.22.05.43.07.63.07 1.12 0 2.03-.58 2.73-1.74.6-1 .9-2.1.9-3.29 0-.9-.19-1.66-.56-2.28Zm-1.47 3.22c-.16.76-.45 1.34-.89 1.72-.34.31-.65.43-.94.37-.28-.06-.51-.31-.68-.75-.14-.36-.2-.72-.2-1.06a3.847 3.847 0 0 1 .7-2.23c.39-.57.79-.81 1.21-.72.28.06.51.31.68.75.14.36.2.72.2 1.06 0 .3-.03.58-.09.85Z"})),F||(F=t.createElement("path",{d:"M45.47 27.9c-.78.77-1.16 1.74-1.16 2.92 0 1.27.38 2.3 1.15 3.08.77.78 1.77 1.17 3.01 1.17.36 0 .76-.06 1.21-.18v-1.88c-.4.12-.76.18-1.06.18-.62 0-1.11-.21-1.48-.62-.37-.41-.55-.97-.55-1.69 0-.66.18-1.2.55-1.63.37-.43.83-.64 1.38-.64.36 0 .75.06 1.16.17V26.9c-.39-.1-.81-.15-1.27-.15-1.19 0-2.17.38-2.94 1.15Zm8.06-1.15c-1.07 0-1.91.36-2.51 1.07-.6.71-.9 1.71-.9 2.98 0 1.38.3 2.44.9 3.17.6.73 1.46 1.1 2.6 1.1s1.95-.37 2.54-1.1c.59-.73.89-1.76.89-3.09s-.3-2.35-.91-3.06c-.6-.71-1.48-1.07-2.62-1.07Zm.92 6.04c-.21.33-.52.49-.92.49-.37 0-.65-.16-.85-.49-.2-.33-.29-.98-.29-1.96 0-1.52.39-2.28 1.16-2.28.82 0 1.23.77 1.23 2.32 0 .96-.11 1.6-.32 1.93Zm8.36-5.82-.42 1.78c-.11.45-.21.92-.3 1.4l-.23 1.23c-.22-1.23-.52-2.7-.91-4.4h-2.7l-1.02 7.91h2.02l.55-5.45 1.38 5.45h1.45l1.32-5.44.57 5.44h2.12l-1.07-7.91h-2.76Zm9.68 0-.42 1.78c-.11.45-.21.92-.3 1.4l-.23 1.23c-.22-1.23-.52-2.7-.91-4.4h-2.7l-1.02 7.91h2.02l.55-5.45 1.38 5.45h1.45l1.32-5.44.57 5.44h2.12l-1.07-7.91h-2.76Zm6.57 4.78h1.9v-1.64h-1.9v-1.46h2.19v-1.68h-4.32v7.91h4.34v-1.69h-2.2v-1.44Zm8.22-1.25c.22-.36.33-.73.33-1.11 0-.75-.29-1.34-.87-1.77-.58-.43-1.38-.65-2.38-.65h-2.49v7.91h2.14v-3.6h.04l1.73 3.6h2.26l-1.71-3.57c.42-.18.75-.45.97-.81ZM84 30.37v-1.88c.51.01.87.1 1.09.25.22.16.33.42.33.79 0 .54-.47.82-1.42.84Zm4.88-2.47c-.78.77-1.16 1.74-1.16 2.92 0 1.27.38 2.3 1.15 3.08.77.78 1.77 1.17 3.01 1.17.36 0 .76-.06 1.21-.18v-1.88c-.4.12-.76.18-1.06.18-.62 0-1.11-.21-1.48-.62-.37-.41-.55-.97-.55-1.69 0-.66.18-1.2.55-1.63.37-.43.83-.64 1.38-.64.36 0 .75.06 1.16.17V26.9c-.39-.1-.81-.15-1.27-.15-1.18 0-2.17.38-2.94 1.15Zm6.94 5.29v-1.44h1.9v-1.64h-1.9v-1.46h2.19v-1.68h-4.32v7.91h4.34v-1.69h-2.2Z"})),B||(B=t.createElement("path",{fill:"#a71d69",d:"M21.21 6.8c-4.96 0-6.94 3.33-6.94 7.03s1.95 7.18 6.94 7.18 6.93-3.48 6.92-6.95c-.01-4.22-2.15-7.26-6.92-7.26Zm-3 7.24c.12-4.96 3.93-4.95 5.2-3.18 1.16 1.62 1.4 7.15-2.2 7.11-1.66-.02-2.96-1.14-3-3.94Zm43.22 3.54V10.4H64V7.28h-2.57V3.51h-3.97v3.77h-2.01v3.12h2.01v6.77c0 3.85 2.68 6.14 5.52 6.61l1.18-3.19c-1.65-.21-2.72-1.44-2.74-3.02Zm-20.01-1.14v-5.4c0-.2-.01-.38-.03-.56-.34-4.36-6.54-4.35-11.34-2.68l1.39 2.79c3.12-1.48 4.99-1.1 5.65-.37.02.02.03.04.05.06.33.45.25 1.16.25 1.72-4.08 0-8.43.54-8.43 5.02 0 3.4 4.27 5.59 8.72 2.35l.66 1.6h3.82c-.34-1.87-.75-3.48-.75-4.53Zm-3.99-.03c-3.14 3.51-6.02.21-3.07-1.24.87-.3 2.04-.31 3.07-.31v1.55Zm10.08-5.66c0-1.33 2.13-1.95 5.49-.42l1.16-2.82c-4.52-1.37-10.69-1.49-10.73 3.24-.02 2.27 1.43 3.48 3.53 4.26 1.45.54 3.54.82 3.54 1.97 0 1.51-3.25 1.74-6.2-.29l-1.19 3.06c4.03 2 11.52 2.06 11.48-2.96-.04-4.97-7.06-4.12-7.06-6.04ZM12.6 0 6.85 15.97 4.1 7.35H0l4.58 11.78c.39 1 .39 2.12 0 3.12-.51 1.31-1.37 2.44-3.44 2.72v3.49c4.05 0 6.23-2.49 8.19-7.94L16.98 0H12.6ZM76.58 17.69c0 1.05-.38 1.87-1.14 2.46s-1.8.89-3.14.89-2.42-.21-3.27-.62V18.6c.54.25 1.11.45 1.71.6s1.17.22 1.69.22c.76 0 1.33-.14 1.69-.43s.54-.68.54-1.17c0-.44-.17-.81-.5-1.12-.33-.31-1.02-.67-2.06-1.09-1.07-.43-1.83-.93-2.27-1.49-.44-.56-.66-1.23-.66-2.01 0-.98.35-1.76 1.05-2.32.7-.56 1.64-.85 2.81-.85s2.25.25 3.37.74l-.61 1.57c-1.05-.44-1.98-.66-2.81-.66-.62 0-1.1.14-1.42.41-.32.27-.48.63-.48 1.08 0 .31.06.57.19.79s.34.42.64.62c.3.19.83.45 1.6.77.86.36 1.5.7 1.9 1.01.4.31.7.66.89 1.06.19.39.28.85.28 1.39Zm8.78 3.2h-6.67V9.12h6.67v1.63h-4.74v3.21h4.44v1.61h-4.44v3.7h4.74v1.63Zm12.85-5.91c0 1.92-.48 3.41-1.44 4.47-.96 1.06-2.32 1.59-4.07 1.59s-3.14-.53-4.1-1.58c-.95-1.06-1.43-2.55-1.43-4.5s.48-3.44 1.44-4.48c.96-1.04 2.33-1.56 4.11-1.56s3.11.53 4.06 1.59c.96 1.06 1.43 2.55 1.43 4.47Zm-9 0c0 1.45.29 2.55.88 3.3.59.75 1.45 1.12 2.6 1.12s2.01-.37 2.59-1.11c.58-.74.87-1.84.87-3.31s-.29-2.54-.87-3.29c-.58-.75-1.44-1.12-2.58-1.12s-2.03.37-2.62 1.12c-.59.75-.88 1.84-.88 3.29Z"})),H||(H=t.createElement("path",{fill:"#77b22b",d:"m101.16 21.06 4.62-12.17h1.73l-4.61 12.17h-1.74z"}))),U=({integration:e,isActive:s,isInstalled:a,isPrerequisiteActive:n,activationLink:l})=>(0,t.createElement)(O,{integration:e,isActive:s},!n&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Plugin not detected","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})),n&&s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Integration active","wordpress-seo")),(0,t.createElement)(A,{className:"yst-h-5 yst-w-5 yst-text-green-400 yst-flex-shrink-0"})),n&&!s&&a&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",variant:"secondary",href:l,className:"yst-w-full yst-text-slate-800 yst-text-center"},(0,o.sprintf)(/* translators: 1: Yoast WooCommerce SEO */ (0,o.__)("Activate %s","wordpress-seo"),"Yoast WooCommerce SEO"))),n&&!s&&!a&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",href:e.upsellLink,variant:"upsell",className:"yst-w-full yst-text-slate-800",target:"_blank"},(0,t.createElement)(x,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5 yst-text-yellow-900"}),(0,o.sprintf)(/* translators: 1: Yoast WooCommerce SEO */ (0,o.__)("Buy %s","wordpress-seo"),"Yoast WooCommerce SEO"),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo")))));U.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isNew:l.PropTypes.bool,upsellLink:l.PropTypes.string}).isRequired,isActive:l.PropTypes.bool,isInstalled:l.PropTypes.bool,isPrerequisiteActive:l.PropTypes.bool,activationLink:l.PropTypes.string.isRequired},U.defaultProps={isActive:!0,isInstalled:!0,isPrerequisiteActive:!0};const J=e=>(0,t.createElement)("img",{src:window.wpseoIntegrationsData.plugin_url+"/images/acf-logo.png",height:"50",width:"50",alt:(0,o.sprintf)(/* translators: 1: Yoast SEO, 2: ACF */ (0,o.__)("%1$s integrates with %2$s","wordpress-seo"),"Yoast SEO","ACF"),...e}),K=({integration:e,isActive:s,isInstalled:a,isPrerequisiteActive:n,installationLink:l,activationLink:c})=>(e.logo=J,(0,t.createElement)(O,{integration:e,isActive:s},!n&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Plugin not detected","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})),n&&s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Integration active","wordpress-seo")),(0,t.createElement)(A,{className:"yst-h-5 yst-w-5 yst-text-green-400 yst-flex-shrink-0"})),n&&!s&&a&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",variant:"secondary",href:c,className:"yst-w-full yst-text-slate-800 yst-text-center"},(0,o.sprintf)(/* translators: 1: ACF, 2: Yoast SEO */ (0,o.__)("Activate %1$s Content Analysis for %2$s","wordpress-seo"),"ACF","Yoast SEO"))),n&&!s&&!a&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",href:l,variant:"secondary",className:"yst-w-full yst-text-slate-800 yst-text-center"},(0,o.sprintf)(/* translators: 1: ACF, 2: Yoast SEO */ (0,o.__)("Install %1$s Content Analysis for %2$s","wordpress-seo"),"ACF","Yoast SEO")))));K.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isNew:l.PropTypes.bool}).isRequired,isActive:l.PropTypes.bool,isInstalled:l.PropTypes.bool,isPrerequisiteActive:l.PropTypes.bool,installationLink:l.PropTypes.string,activationLink:l.PropTypes.string},K.defaultProps={isActive:!0,isInstalled:!0};const Q=({integration:e,isActive:s})=>(0,t.createElement)(O,{integration:e,isActive:s},s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Integration active","wordpress-seo")),(0,t.createElement)(A,{className:"yst-h-5 yst-w-5 yst-text-green-400 yst-flex-shrink-0"})),!s&&(0,t.createElement)(i.Fragment,null,(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Plugin not detected","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})));Q.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isNew:l.PropTypes.bool}).isRequired,isActive:l.PropTypes.bool},Q.defaultProps={isActive:!0};const X=({integration:e,initialActivationState:s,isNetworkControlEnabled:a,isMultisiteAvailable:n,toggleLabel:l,beforeToggle:c,isPrerequisiteActive:m})=>{const[p,h]=(0,i.useState)(s),y=(0,i.useCallback)((async()=>{let t=!0;const s=!p;h(s),c&&(t=!1,t=await c(e,s)),t||h(!s)}),[p,c,h]),g=e.logo;return(0,t.createElement)(k,null,(0,t.createElement)(k.Header,null,(0,t.createElement)(r.Link,{href:e.logoLink,target:"_blank"},e.logo&&(0,t.createElement)(g,{alt:(0,o.sprintf)(/* translators: 1: Yoast SEO, 2: integration name */ (0,o.__)("%1$s integrates with %2$s","wordpress-seo"),"Yoast SEO",e.name),className:m&&u(e,p)?"":"yst-opacity-50 yst-filter yst-grayscale"}),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),!a&&n&&(0,t.createElement)(r.Badge,{className:"yst-absolute yst-top-2 yst-right-2"},(0,o.__)("Network Disabled","wordpress-seo")),a&&e.isNew&&(0,t.createElement)(r.Badge,{className:"yst-absolute yst-top-2 yst-right-2"},(0,o.__)("New","wordpress-seo"))),(0,t.createElement)(k.Content,null,(0,t.createElement)("div",null,e.claim&&(0,t.createElement)("h4",{className:"yst-text-base yst-mb-3 yst-font-medium yst-text-[#111827] yst-leading-tight"},e.claim),(0,t.createElement)("p",null," ",e.description,e.learnMoreLink&&(0,t.createElement)(r.Link,{href:e.learnMoreLink,className:"yst-flex yst-items-center yst-mt-3 yst-no-underline yst-font-medium",target:"_blank"},"Learn more",(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo")),(0,t.createElement)(Z,{className:"yst-h-4 yst-w-4 yst-ml-1 yst-icon-rtl"})))),p&&(0,t.createElement)(N.Slot,{name:`${e.name}Slot`})),(0,t.createElement)(k.Footer,null,!m&&(0,t.createElement)("p",{className:"yst-flex yst-items-start yst-justify-between"},(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Plugin not detected","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})),m&&!v(e)&&(0,t.createElement)(r.Button,{id:`${e.name}-upsell-button`,type:"button",as:"a",href:e.upsellLink,variant:"upsell",className:"yst-w-full yst-text-slate-800",target:"_blank"},(0,t.createElement)(x,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5 yst-text-yellow-900"}),(0,o.__)("Unlock with Premium","wordpress-seo"),(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,o.__)("(Opens in a new browser tab)","wordpress-seo"))),m&&v(e)&&!d(e)&&(0,t.createElement)("p",{className:"yst-flex yst-items-start yst-justify-between"},(0,t.createElement)("span",{className:"yst-text-slate-700 yst-font-medium"},(0,o.__)("Integration unavailable for multisites","wordpress-seo")),(0,t.createElement)(T,{className:"yst-h-5 yst-w-5 yst-text-red-500 yst-flex-shrink-0"})),m&&v(e)&&d(e)&&(0,t.createElement)(r.ToggleField,{checked:p,label:l,onChange:y,disabled:!a||!n})))};X.propTypes={integration:l.PropTypes.shape({name:l.PropTypes.string,claim:l.PropTypes.node,learnMoreLink:l.PropTypes.string,logoLink:l.PropTypes.string,slug:l.PropTypes.string,description:l.PropTypes.string,usps:l.PropTypes.array,logo:l.PropTypes.func,isPremium:l.PropTypes.bool,isNew:l.PropTypes.bool,isMultisiteAvailable:l.PropTypes.bool,upsellLink:l.PropTypes.string}),initialActivationState:l.PropTypes.bool,isNetworkControlEnabled:l.PropTypes.bool,isMultisiteAvailable:l.PropTypes.bool,toggleLabel:l.PropTypes.string,beforeToggle:l.PropTypes.func,isPrerequisiteActive:l.PropTypes.bool};const ee={elementor:{name:"Elementor",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: Yoast SEO; 2: bold open tag; 3: Elementor; 4: bold close tag. */ (0,o.__)("Get %1$s tools and functionality in %2$s%3$s%4$s","wordpress-seo"),"Yoast SEO","","Elementor",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-elementor",logoLink:"https://yoa.st/integrations-logo-elementor",slug:"elementor",description:(0,o.__)("Take advantage of your favorite SEO & content analysis tools with your favorite page builder.","wordpress-seo"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",Y({xmlns:"http://www.w3.org/2000/svg",width:170,height:70,fill:"none",viewBox:"0 0 810 160"},e),z||(z=t.createElement("g",{fill:"#92003B",clipPath:"url(#elementor-logo_svg__a)"},t.createElement("path",{d:"M505.95 73.98s-6.873 1.642-12.688 3.029l-8.839 2.015h-.081c0-2.388.174-4.905.744-7.224.733-2.97 2.338-6.443 5.129-7.969 3.035-1.654 6.734-1.853 9.944-.57 3.326 1.316 4.849 4.532 5.501 7.864.186.932.302 1.864.395 2.808l-.105.046Zm23.051 5.044c0-23.104-14.526-33.03-33.087-33.03-20.981 0-34.123 14.551-34.123 33.147 0 20.215 11.188 33.38 35.274 33.38 13.026 0 20.399-2.307 29.168-6.699l-3.338-15.135c-6.687 3.006-12.909 4.847-21.213 4.847-9.106 0-14.293-3.46-16.259-9.927h42.997c.348-1.736.581-3.705.581-6.583ZM312.998 73.98s-6.874 1.642-12.689 3.029l-8.838 2.015h-.082c0-2.388.175-4.905.744-7.224.733-2.97 2.338-6.443 5.129-7.969 3.036-1.654 6.734-1.853 9.944-.57 3.326 1.316 4.85 4.532 5.501 7.864.186.932.302 1.864.395 2.808l-.104.046Zm23.05 5.044c0-23.104-14.526-33.03-33.087-33.03-20.98 0-34.122 14.551-34.122 33.147 0 20.215 11.188 33.38 35.273 33.38 13.026 0 20.399-2.307 29.168-6.699l-3.337-15.135c-6.688 3.006-12.91 4.847-21.214 4.847-9.106 0-14.293-3.46-16.258-9.927h42.996c.349-1.736.581-3.705.581-6.583ZM259.814 29.017h-21.295v81.186h21.295V29.017ZM533.49 48.067h22.364l4.71 14.354c2.943-7.084 9.572-16.195 21.33-16.195 16.142 0 24.899 8.203 24.899 29.338v34.65h-22.364c0-7.223.012-14.435.023-21.66 0-3.308-.058-6.617-.011-9.926.034-3.052.255-6.21-1.373-8.948-1.105-1.853-2.907-3.216-4.849-4.148-3.943-1.887-8.223-1.84-12.096.187-.953.5-5.559 2.994-5.559 4.147v40.348H538.2v-45.38l-4.71-16.767ZM623.704 64.355h-10.258V48.067h10.258V37.884l22.364-5.278v15.461h22.481v16.288h-22.481v18.246c0 7.166 3.455 10.51 8.642 10.51 5.303 0 8.303-.7 12.792-2.19l2.652 16.858c-6.106 2.657-13.712 3.927-21.446 3.927-16.258 0-25.016-7.737-25.016-22.755V64.355h.012ZM710.394 94.031c8.187 0 13.025-5.896 13.025-15.356 0-9.461-4.605-14.902-12.676-14.902-8.188 0-12.909 5.43-12.909 15.24 0 9.25 4.605 15.018 12.56 15.018Zm.233-48.387c20.98 0 36.308 13.166 36.308 33.602 0 20.552-15.328 32.914-36.541 32.914-21.097 0-36.088-12.7-36.088-32.914 0-20.436 14.875-33.602 36.321-33.602ZM441.754 47.88c-3.954-1.63-8.432-2.236-12.712-1.619-2.175.315-4.303.944-6.28 1.923-5.42 2.68-9.641 8.796-11.909 14.25-1.489-6.28-5.827-11.92-12.165-14.542-3.954-1.63-8.432-2.237-12.712-1.62-2.174.316-4.303.945-6.28 1.923-5.408 2.668-9.618 8.762-11.897 14.203v-.396L363.24 48.09h-22.365l4.711 16.766v45.37h22.213V69.668c.081-.303 1.07-.862 1.244-.99 2.605-1.852 5.664-3.763 8.92-3.996 3.327-.245 6.606 1.444 8.583 4.09.21.29.407.582.593.885 1.629 2.738 1.408 5.895 1.373 8.948-.035 3.309.011 6.618.011 9.927-.011 7.224-.023 14.436-.023 21.659h22.365V69.692c.046-.291 1.07-.874 1.256-1.002 2.605-1.853 5.663-3.764 8.92-3.997 3.326-.244 6.606 1.445 8.583 4.09.209.291.407.582.593.885 1.628 2.738 1.407 5.896 1.372 8.949-.035 3.308.012 6.617.012 9.926-.012 7.224-.023 14.436-.023 21.66h22.364v-34.65c0-10.16-1.454-23.245-12.188-27.672ZM799.827 46.226c-11.758 0-18.375 9.123-21.329 16.195l-4.711-14.354h-22.364l4.71 16.766v45.37h22.365V68.282c3.186-.56 20.48 2.633 23.76 3.833V46.308a40.988 40.988 0 0 0-2.431-.082ZM206.444 73.98s-6.873 1.642-12.688 3.029l-8.839 2.015h-.081c0-2.388.174-4.905.744-7.224.733-2.97 2.338-6.443 5.129-7.969 3.035-1.654 6.734-1.853 9.944-.57 3.326 1.316 4.849 4.532 5.501 7.864.186.932.302 1.864.395 2.808l-.105.046Zm23.051 5.044c0-23.104-14.526-33.03-33.087-33.03-20.981 0-34.123 14.551-34.123 33.147 0 20.215 11.188 33.38 35.274 33.38 13.026 0 20.399-2.307 29.168-6.699l-3.338-15.135c-6.687 3.006-12.909 4.847-21.213 4.847-9.106 0-14.293-3.46-16.259-9.927h42.996c.349-1.736.582-3.705.582-6.583ZM66.141 16.05c-35.285 0-63.883 28.65-63.883 64 0 35.338 28.598 64 63.883 64 35.285 0 63.883-28.651 63.883-64-.011-35.35-28.609-64-63.883-64Zm-15.968 90.657H39.532V53.38h10.641v53.327Zm42.577 0H60.815v-10.66H92.75v10.66Zm0-21.333H60.815v-10.66H92.75v10.66Zm0-21.333H60.815V53.38H92.75v10.66Z"}))),C||(C=t.createElement("defs",null,t.createElement("clipPath",{id:"elementor-logo_svg__a"},t.createElement("path",{fill:"#fff",d:"M2.258 16.05h795.828v127.9H2.258z"})))))},jetpack:{name:"Jetpack",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: Jetpack; 3: bold close tag; 4: Yoast. */ (0,o.__)("Get the most out of %1$s%2$s%3$s and %4$s, together","wordpress-seo"),"","Jetpack","","Yoast"),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-jetpack",logoLink:"https://yoa.st/integrations-logo-jetpack",slug:"jetpack",description:(0,o.__)("Upgrade your meta tags and social previews and manage your SEO settings in one place.","wordpress-seo"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",q({xmlns:"http://www.w3.org/2000/svg",width:153,height:108,viewBox:"0 0 595.276 841.89"},e),t.createElement("path",{d:"M-81.143 289.235c26.67-1.36 53.71 5.84 76.08 20.45 27.82 17.89 48.24 46.9 55.47 79.2 8.2 35.481.51 74.32-21.03 103.74-19.52 27.24-50.08 46.29-83.19 51.61-26.43 4.39-54.23.4-78.22-11.59-25.21-12.43-46.11-33.38-58.42-58.65-13.52-27.32-16.65-59.52-8.909-88.98 7.17-27.76 24.06-52.86 47-70.06 20.419-15.49 45.599-24.609 71.22-25.72zm-.42 25.35c-21.33 41.53-42.75 83.02-64.13 124.52 21.39-.02 42.79.01 64.18-.01-.02-41.51.09-83.01-.05-124.51zm13.05 81.5c-.01 41.51.02 83.03-.01 124.54 21.55-41.44 42.76-83.05 64.25-124.52-21.41-.07-42.82-.03-64.24-.02z",style:{fill:"#00be28",fillRule:"evenodd"}}),t.createElement("path",{d:"M-81.563 314.586c.14 41.5.03 83 .05 124.51-21.39.02-42.79-.01-64.18.01 21.38-41.5 42.8-82.99 64.13-124.52zm13.05 81.5c21.42-.01 42.83-.05 64.24.019-21.49 41.47-42.7 83.08-64.25 124.52.03-41.51 0-83.03.01-124.54z",style:{fill:"#fff",fillRule:"evenodd"}}),t.createElement("path",{d:"M120.697 334.555c15.17-.07 30.34-.01 45.51-.03-.02 37.16.01 74.32-.02 111.48-.09 10.56-1.43 21.5-6.7 30.851-6.76 12.1-19.02 19.62-31.07 25.68-3.69-5.51-7.02-11.241-10.68-16.76 7.79-4.801 15.83-10.2 20.31-18.44 2.9-5.291 3.87-11.39 3.92-17.361-.02-32.3 0-64.61-.01-96.92-7.06-.01-14.12 0-21.18 0-.08-6.17.03-12.34-.08-18.5zm535.206.05c7.607-.16 15.224-.06 22.83-.06-.09 25.501.172 51.01-.13 76.51 10.734-12.889 21.105-26.08 31.839-38.97 9.816.08 19.622-.03 29.439.06-12.339 14.3-24.506 28.74-36.844 43.03 13.428 15.98 26.916 31.91 40.375 47.88-9.898-.01-19.784 0-29.681-.01a28313.007 28313.007 0 0 0-35.008-42.99c.02 14.29-.01 28.57.02 42.86-7.576.29-15.173.07-22.76.12-.08-42.81.081-85.62-.08-128.43zm-359.887 11.81c7.611.05 15.231-.18 22.841.11-.16 8.53-.05 17.06-.06 25.58 9.48.02 18.97-.009 28.46.02-.03 5.87-.03 11.74-.01 17.61-9.49.04-18.98 0-28.47.02.05 16.09-.07 32.19.06 48.28-.08 4.02 2.87 7.8 6.86 8.52 6.67 1.39 13.36-.93 19.81-2.41-.07 5.77-.05 11.53-.011 17.3a72.497 72.497 0 0 1-26.859 3.76c-6.021-.39-12.33-2.21-16.58-6.7-4.47-4.61-6.01-11.27-6.02-17.51-.01-17.079.01-34.16-.01-51.24-4.18-.009-8.36.011-12.53-.02 0-5.81-.03-11.62.02-17.44 4.17 0 8.349 0 12.53-.01-.03-8.63.02-17.249-.03-25.87zm-93.4 32.47c10.68-8.83 25.611-10.97 38.91-8.21 9.32 1.82 17.92 7.52 22.64 15.84 6.37 10.76 6.201 23.79 4.82 35.82-19.459.02-38.92-.03-58.369.03.29 6.44 1.56 13.46 6.45 18.1 5.71 5.41 14.04 6.27 21.55 6.32 9.65.23 19.09-2.33 28.11-5.54-.01 6.28 0 12.56 0 18.84-14.54 4.51-30.08 6.5-45.21 4.34-9.97-1.5-19.89-6.06-26.05-14.26-7.42-9.68-9.37-22.32-9.25-34.21.14-13.85 5.47-28.16 16.4-37.07zm14.811 12.87c-4.2 4.08-5.83 9.94-6.68 15.55 11.8.08 23.6.01 35.4.04-.18-6.47-1.2-14.04-6.86-18.12-6.65-4.32-16.3-3.05-21.86 2.53zm170.06-11.52c8.569-6.66 19.19-10.9 30.15-10.67 10.46-.16 21.1 4.42 27.369 12.96 8.3 11.19 9.76 25.93 8.561 39.41-1.261 14.51-8.321 29.24-21.24 36.74-13.13 7.94-29.32 7.37-43.84 4.35-.01 16.03-.01 32.07 0 48.1-7.56.01-15.12 0-22.68.01.03-46.43-.04-92.85.04-139.27 7.2.11 14.41.08 21.61.01.03 2.78.049 5.57.03 8.36zm.99 17.91c-.05 15.72.12 31.45-.09 47.17 5.95 1.46 12.119 1.98 18.23 1.87 7-.13 14.28-3.06 18.28-9.01 5.06-7.329 5.8-16.63 5.49-25.27-.32-6.6-1.25-13.68-5.52-18.98-3.36-4.25-8.99-5.94-14.23-5.67-8.35.28-15.9 4.66-22.16 9.89zm83.38-22.6c11.48-3.94 23.63-6 35.769-5.97 9.17.13 19.08 1.86 26.01 8.35 6.78 6.37 8.91 16.07 9.11 25.04.04 20.02.01 40.05.01 60.07-7.02.04-14.04 0-21.05.03-.24-3.43-.16-6.87-.16-10.3-8.31 6.47-18.11 11.83-28.9 11.91-8.77.58-17.77-3.76-22.33-11.35-4.68-7.84-4.92-17.92-1.64-26.32 3.2-7.92 10.961-12.87 18.89-15.17 10.58-3.04 21.67-3.53 32.49-5.34-.04-4.82.14-10.2-2.98-14.21-2.9-3.78-8.03-4.52-12.47-4.64-10.59.06-20.96 2.7-30.95 5.99-.38-6.05-1.16-12.07-1.8-18.09zm28.88 48.07c-4.591.65-9.041 3.73-10.22 8.37-1.84 5.98.65 14.26 7.55 15.4 8.13.99 15.56-3.67 21.989-8.07-.09-6.25-.03-12.49-.04-18.73-6.42 1.08-12.87 1.94-19.28 3.03zm75.628-43.94c9.856-7.9 22.91-10.53 35.29-10.08 7.879.12 15.617 1.9 23.082 4.35.02 6.43-.01 12.86.02 19.28-10.754-3.83-22.558-6.81-33.908-4.12-8.08 1.91-14.174 8.91-15.859 16.9-1.907 8.81-1.715 18.34 1.513 26.83 2.442 6.53 8.313 11.52 15.123 12.99 11.552 2.62 23.477-.42 34.281-4.6-.02 6.29-.01 12.59 0 18.891-14.76 5.21-31.062 7.08-46.306 2.93-8.99-2.39-17.312-7.87-22.236-15.87-6.529-10.401-7.808-23.18-6.999-35.19.92-12.26 6.152-24.62 15.999-32.31z",style:{fill:"#000",fillRule:"evenodd"}}))},algolia:{name:"Algolia",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: Algolia; 3: bold close tag. */ (0,o.__)("Improve your internal search results with %1$s%2$s%3$s","wordpress-seo"),"","Algolia",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-algolia",logoLink:"https://yoa.st/integrations-logo-algolia",slug:"algolia",description:(0,o.sprintf)(/* translators: 1: Algolia, 2: Yoast SEO */ (0,o.__)("Connect your %1$s account to improve your site’s search results using %2$s data.","wordpress-seo"),"Algolia","Yoast SEO"),isPremium:!0,isNew:!1,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",D({xmlns:"http://www.w3.org/2000/svg",width:150,height:40,viewBox:"100 100 525 160"},e),S||(S=t.createElement("g",{fill:"none",fillRule:"evenodd"},t.createElement("path",{fill:"#5468FF",d:"M135.8 120.999h88.4c8.7 0 15.8 7.065 15.8 15.8v88.405c0 8.7-7.065 15.795-15.8 15.795h-88.4c-8.7 0-15.8-7.06-15.8-15.795v-88.445c0-8.695 7.06-15.76 15.8-15.76"}),t.createElement("path",{fill:"#FFF",d:"M192.505 147.788v-4.115a5.209 5.209 0 0 0-5.21-5.205H175.15a5.209 5.209 0 0 0-5.21 5.205v4.225c0 .47.435.8.91.69a37.966 37.966 0 0 1 10.57-1.49c3.465 0 6.895.47 10.21 1.38.44.11.875-.215.875-.69m-33.285 5.385-2.075-2.075a5.206 5.206 0 0 0-7.365 0l-2.48 2.475a5.185 5.185 0 0 0 0 7.355l2.04 2.04c.33.325.805.25 1.095-.075a39.876 39.876 0 0 1 3.975-4.66 37.68 37.68 0 0 1 4.7-4c.364-.22.4-.73.11-1.06m22.164 13.065v17.8c0 .51.55.875 1.02.62l15.825-8.19c.36-.18.47-.62.29-.98-3.28-5.755-9.37-9.685-16.405-9.94-.365 0-.73.29-.73.69m0 42.88c-13.195 0-23.915-10.705-23.915-23.88 0-13.175 10.72-23.875 23.915-23.875 13.2 0 23.916 10.7 23.916 23.875s-10.68 23.88-23.916 23.88m0-57.8c-18.74 0-33.94 15.18-33.94 33.92 0 18.745 15.2 33.89 33.94 33.89s33.94-15.18 33.94-33.925c0-18.745-15.165-33.885-33.94-33.885"}),t.createElement("path",{fill:"#5468FF",d:"M359.214 216.177c-23.365.11-23.365-18.855-23.365-21.875l-.04-71.045 14.254-2.26v70.61c0 1.715 0 12.56 9.15 12.595v11.975zm-57.78-11.61c4.374 0 7.62-.255 9.88-.69v-14.485a29.196 29.196 0 0 0-3.43-.695 33.742 33.742 0 0 0-4.956-.365c-1.57 0-3.175.11-4.775.365-1.605.22-3.065.655-4.34 1.275-1.275.62-2.335 1.495-3.1 2.62-.8 1.13-1.165 1.785-1.165 3.495 0 3.345 1.165 5.28 3.28 6.55 2.115 1.275 4.995 1.93 8.606 1.93zm-1.24-51.685c4.7 0 8.674.585 11.884 1.75 3.206 1.165 5.796 2.8 7.69 4.875 1.935 2.11 3.245 4.915 4.046 7.9.84 2.985 1.24 6.26 1.24 9.86v36.62c-2.185.47-5.506 1.015-9.95 1.67-4.446.655-9.44.985-14.986.985-3.68 0-7.07-.365-10.095-1.055-3.065-.69-5.65-1.82-7.84-3.385-2.15-1.565-3.825-3.57-5.065-6.04-1.205-2.48-1.825-5.97-1.825-9.61 0-3.495.69-5.715 2.045-8.12 1.38-2.4 3.24-4.365 5.575-5.895 2.37-1.53 5.065-2.62 8.165-3.275 3.1-.655 6.345-.985 9.695-.985 1.57 0 3.21.11 4.96.29 1.715.185 3.575.515 5.545.985v-2.33c0-1.635-.185-3.2-.585-4.655a10.012 10.012 0 0 0-2.045-3.895c-.985-1.13-2.255-2.005-3.86-2.62-1.605-.62-3.65-1.095-6.09-1.095-3.28 0-6.27.4-9.005.875-2.735.47-4.995 1.02-6.71 1.635l-1.71-11.68c1.785-.62 4.445-1.24 7.875-1.855 3.425-.66 7.11-.95 11.045-.95zm281.51 51.285c4.375 0 7.615-.255 9.875-.695v-14.48c-.8-.22-1.93-.475-3.425-.695a33.813 33.813 0 0 0-4.96-.365c-1.565 0-3.17.11-4.775.365-1.6.22-3.06.655-4.335 1.275-1.28.62-2.335 1.495-3.1 2.62-.805 1.13-1.165 1.785-1.165 3.495 0 3.345 1.165 5.28 3.28 6.55 2.15 1.31 4.995 1.93 8.605 1.93zm-1.205-51.645c4.7 0 8.674.58 11.884 1.745 3.205 1.165 5.795 2.8 7.69 4.875 1.895 2.075 3.245 4.915 4.045 7.9.84 2.985 1.24 6.26 1.24 9.865v36.615c-2.185.47-5.505 1.015-9.95 1.675-4.445.655-9.44.98-14.985.98-3.68 0-7.07-.365-10.094-1.055-3.065-.69-5.65-1.82-7.84-3.385-2.15-1.565-3.825-3.57-5.065-6.04-1.205-2.475-1.825-5.97-1.825-9.61 0-3.495.695-5.715 2.045-8.12 1.38-2.4 3.24-4.365 5.575-5.895 2.37-1.525 5.065-2.62 8.165-3.275 3.1-.655 6.345-.98 9.7-.98 1.565 0 3.205.11 4.955.29s3.575.51 5.54.985v-2.33c0-1.64-.18-3.205-.58-4.66a9.977 9.977 0 0 0-2.045-3.895c-.985-1.13-2.255-2.005-3.86-2.62-1.606-.62-3.65-1.09-6.09-1.09-3.28 0-6.27.4-9.005.87-2.735.475-4.995 1.02-6.71 1.64l-1.71-11.685c1.785-.62 4.445-1.235 7.875-1.855 3.425-.62 7.105-.945 11.045-.945zm-42.8-6.77c4.774 0 8.68-3.86 8.68-8.63 0-4.765-3.866-8.625-8.68-8.625-4.81 0-8.675 3.86-8.675 8.625 0 4.77 3.9 8.63 8.675 8.63zm7.18 70.425h-14.326v-61.44l14.325-2.255v63.695zm-25.116 0c-23.365.11-23.365-18.855-23.365-21.875l-.04-71.045 14.255-2.26v70.61c0 1.715 0 12.56 9.15 12.595v11.975zm-46.335-31.445c0-6.155-1.35-11.285-3.974-14.85-2.625-3.605-6.305-5.385-11.01-5.385-4.7 0-8.386 1.78-11.006 5.385-2.625 3.6-3.904 8.695-3.904 14.85 0 6.225 1.315 10.405 3.94 14.01 2.625 3.64 6.305 5.425 11.01 5.425 4.7 0 8.385-1.82 11.01-5.425 2.624-3.64 3.934-7.785 3.934-14.01zm14.58-.035c0 4.805-.69 8.44-2.114 12.41-1.42 3.965-3.425 7.35-6.01 10.155-2.59 2.8-5.69 4.985-9.336 6.515-3.644 1.525-9.26 2.4-12.065 2.4-2.81-.035-8.385-.835-11.995-2.4-3.61-1.565-6.71-3.715-9.295-6.515-2.59-2.805-4.594-6.19-6.054-10.155-1.456-3.97-2.185-7.605-2.185-12.41s.654-9.43 2.114-13.36c1.46-3.93 3.5-7.28 6.125-10.08 2.625-2.805 5.76-4.955 9.33-6.48 3.61-1.53 7.585-2.255 11.885-2.255 4.305 0 8.275.76 11.92 2.255 3.65 1.525 6.786 3.675 9.336 6.48 2.584 2.8 4.59 6.15 6.05 10.08 1.53 3.93 2.295 8.555 2.295 13.36zm-107.284 0c0 5.965 1.31 12.59 3.935 15.355 2.625 2.77 6.014 4.15 10.175 4.15 2.26 0 4.41-.325 6.414-.945 2.005-.62 3.606-1.35 4.886-2.22v-35.34c-1.02-.22-5.286-1.095-9.41-1.2-5.175-.15-9.11 1.965-11.88 5.345-2.736 3.39-4.12 9.32-4.12 14.855zm39.625 28.095c0 9.72-2.48 16.815-7.476 21.33-4.99 4.51-12.61 6.77-22.89 6.77-3.755 0-11.555-.73-17.79-2.11l2.295-11.285c5.215 1.09 12.105 1.385 15.715 1.385 5.72 0 9.805-1.165 12.245-3.495 2.445-2.33 3.645-5.785 3.645-10.375v-2.33c-1.42.69-3.28 1.385-5.575 2.115-2.295.69-4.955 1.055-7.95 1.055-3.935 0-7.51-.62-10.75-1.86-3.245-1.235-6.055-3.055-8.35-5.46-2.295-2.4-4.12-5.42-5.395-9.025-1.275-3.605-1.935-10.045-1.935-14.775 0-4.44.695-10.01 2.046-13.725 1.384-3.71 3.35-6.915 6.014-9.57 2.626-2.655 5.835-4.695 9.59-6.19 3.755-1.49 8.16-2.435 12.935-2.435 4.635 0 8.9.58 13.055 1.275 4.155.69 7.69 1.415 10.57 2.215v56.49z"})))),upsellLink:"https://yoa.st/get-algolia-integration"},woocommerce:{name:"WooCommerce",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: WooCommerce; 3: bold close tag. */ (0,o.__)("Upgrade your %1$s%2$s%3$s SEO","wordpress-seo"),"","WooCommerce",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-woocommerce",logoLink:"https://yoa.st/integrations-logo-woocommerce",slug:"woocommerce",description:(0,o.__)("Improve your technical SEO, meta tags and unlock more SEO ecommerce tools.","wordpress-seo"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:W,upsellLink:"https://yoa.st/integrations-get-woocommerce"},acf:{name:"ACF",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: ACF; 3: bold close tag. */ (0,o.__)("Integrate your custom fields and SEO data from %1$s%2$s%3$s","wordpress-seo"),"","ACF",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-acf",logoLink:"https://yoa.st/integrations-logo-acf",slug:"acf",description:(0,o.sprintf)(/* translators: 1: ACF */ (0,o.__)("Use %s fields to power your meta tags and templates, and analyze all of your content.","wordpress-seo"),"ACF"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0}},te=[(0,t.createElement)(Q,{key:0,integration:ee.elementor,isActive:y(ee.elementor)}),(0,t.createElement)(Q,{key:1,integration:ee.jetpack,isActive:y(ee.jetpack)}),(0,t.createElement)(X,{key:2,integration:ee.algolia,toggleLabel:(0,o.__)("Enable integration","wordpress-seo"),initialActivationState:y(ee.algolia),isNetworkControlEnabled:g(ee.algolia),isMultisiteAvailable:d(ee.algolia),beforeToggle:w,isPrerequisiteActive:Boolean(window.wpseoIntegrationsData.algolia_active)}),(0,t.createElement)(U,{key:3,integration:ee.woocommerce,isActive:Boolean(window.wpseoIntegrationsData.woocommerce_seo_active),isInstalled:Boolean(window.wpseoIntegrationsData.woocommerce_seo_installed),isPrerequisiteActive:Boolean(window.wpseoIntegrationsData.woocommerce_active),upsellLink:window.wpseoIntegrationsData.woocommerce_seo_upsell_url,activationLink:window.wpseoIntegrationsData.woocommerce_seo_activate_url}),(0,t.createElement)(K,{key:4,integration:ee.acf,isActive:Boolean(window.wpseoIntegrationsData.acf_seo_active),isInstalled:Boolean(window.wpseoIntegrationsData.acf_seo_installed),isPrerequisiteActive:Boolean(window.wpseoIntegrationsData.acf_active),installationLink:window.wpseoIntegrationsData.acf_seo_install_url,activationLink:window.wpseoIntegrationsData.acf_seo_activate_url})];var se,ae,ne,re,oe,le,ce,ie,me,pe,he,ye,ge,de,ve,ue,we,fe,Ee;function be(){return be=Object.assign?Object.assign.bind():function(e){for(var t=1;t","
    "),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-tec",logoLink:"https://yoa.st/integrations-logo-tec",slug:"tec",description:(0,o.sprintf)(/* translators: 1: The Events Calendar, 2: Yoast SEO */ (0,o.__)("%1$s integrates with %2$s's Schema API to get rich snippets for your events!","wordpress-seo"),"The Events Calendar","Yoast SEO"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",_e({xmlns:"http://www.w3.org/2000/svg",width:280,height:50,fill:"none",viewBox:"0 0 280 119"},e),ie||(ie=t.createElement("path",{fill:"#0F1031",fillRule:"evenodd",d:"M143.062 49.198c-2.457.997-4.731 1.535-6.384 1.446-2.141-.12-3.055-1.064-3.058-1.42-.002-.252.796-1.044 3.261-1.224.386-.027.794-.045 1.214-.045 1.684 0 3.558.277 4.967 1.243m4.595 21.714c-9.008 2.484-18.527.192-24.255-5.844-4.053-4.271-5.412-9.617-3.729-14.665 3.385-10.158 19.608-16.255 29.976-16.255.112 0 .223 0 .333.002 3.863.05 6.539.984 6.983 2.439.248.814-.34 2.24-1.573 3.812-2.175 2.774-5.481 5.288-8.844 7.133-2.132-2.34-5.552-3.404-9.925-3.089-4.869.354-6.585 2.717-6.568 4.81.02 2.282 2.233 4.715 6.425 4.948 2.538.138 5.571-.643 8.616-1.976.447 1.754.309 4.054-.423 6.798a1.783 1.783 0 0 0 3.444.918c.994-3.728 1.068-6.854.225-9.337 3.976-2.232 7.651-5.196 9.855-8.006 2.068-2.636 2.8-5.009 2.177-7.052-.452-1.483-1.517-2.66-3.122-3.494.122-13.393 2.496-22.644 4.634-22.657h.013c.314 0 .739.07 1.259.588 1.737 1.726 3.806 7.392 3.806 24.587 0 16.966-1.452 31.41-19.307 36.34M130.651 31.34c-.002-.045.004-.089-.002-.134l-.024-.198c-.256-3.658.183-6.54 1.298-8.086.554-.767 1.249-1.178 2.188-1.294 1.308-.157 2.372.18 3.266 1.039 1.731 1.664 2.741 5.262 2.645 9.198a49.245 49.245 0 0 0-8.894 3.117 38.759 38.759 0 0 1-.477-3.642m15.354-6.21c.657-.715 1.494-1.062 2.562-1.062 1.698 0 2.435.555 2.843.973.975.999 1.501 2.936 1.573 5.757a23.71 23.71 0 0 0-3.317-.215c-1.609 0-3.363.14-5.193.405-.079-2.585.461-4.692 1.532-5.858m19.667-17.675c-1.07-1.063-2.375-1.624-3.776-1.624h-.032c-4.696.028-6.316 7.035-7.127 12.303a80.347 80.347 0 0 0-.564 4.65c-.07-.078-.138-.159-.212-.233-1.325-1.359-3.141-2.047-5.394-2.047-2.063 0-3.857.765-5.187 2.214a7.868 7.868 0 0 0-1 1.406c-.588-1.547-1.409-2.947-2.533-4.027-1.668-1.604-3.801-2.298-6.171-2.007-1.91.235-3.516 1.184-4.644 2.746-.004.007-.008.015-.013.021-1.953-9.74-5.666-21.503-12.145-20.83-1.595.167-3.003 1.025-4.074 2.48-4.998 6.794-2.653 26.999-.48 37.866a1.784 1.784 0 0 0 2.098 1.398 1.782 1.782 0 0 0 1.398-2.097c-3.639-18.196-2.827-31.408-.144-35.054.63-.858 1.201-1.01 1.575-1.048 3.576-.372 7.982 12.124 9.842 27.896.149 1.953.445 3.782.73 5.203.001.007.004.013.006.02-5.356 3.087-9.776 7.308-11.534 12.584-2.113 6.337-.463 12.988 4.525 18.246 4.871 5.132 12.057 7.938 19.6 7.938 2.714 0 5.475-.363 8.19-1.113 20.246-5.588 21.923-22.003 21.923-39.775 0-15.205-1.544-23.821-4.857-27.116M16.222 96.908H.344A.344.344 0 0 0 0 97.25v2.724c0 .19.154.343.344.343h6.063v17.578c0 .189.154.344.344.344h3.094c.19 0 .344-.155.344-.344v-17.578h6.033c.19 0 .343-.153.343-.343V97.25a.344.344 0 0 0-.343-.344M27.218 102.231c-1.757 0-3.596.733-4.95 1.966v-6.946a.344.344 0 0 0-.343-.344H19.14a.344.344 0 0 0-.344.344v20.645c0 .19.154.344.344.344h2.785c.19 0 .343-.154.343-.344v-10.564c.74-.967 2.188-1.937 3.774-1.937 1.994 0 2.844.86 2.844 2.875v9.626c0 .19.154.344.344.344h2.786c.189 0 .343-.154.343-.344v-10.555c0-3.342-1.778-5.11-5.14-5.11M42.795 105.209c2.618 0 3.98 1.881 4.182 3.769H38.6c.288-1.888 1.686-3.769 4.196-3.769m0-2.978c-4.466 0-7.834 3.515-7.834 8.175 0 4.831 3.324 8.205 8.082 8.205 2.53 0 4.69-.805 6.245-2.326a.342.342 0 0 0 .04-.445l-1.3-1.826a.342.342 0 0 0-.527-.041c-.997 1.024-2.598 1.66-4.18 1.66-3 0-4.395-2.112-4.687-3.955h11.435c.19 0 .343-.154.343-.343v-.682c0-4.959-3.132-8.422-7.617-8.422M72.55 96.908H58.682a.344.344 0 0 0-.344.343v20.645c0 .189.155.344.344.344h13.866c.19 0 .344-.155.344-.344v-2.724a.344.344 0 0 0-.344-.343H62.122v-5.751h10.211c.19 0 .344-.154.344-.343v-2.724a.344.344 0 0 0-.344-.344h-10.21v-5.349h10.427c.19 0 .344-.153.344-.343V97.25a.344.344 0 0 0-.344-.344M89.791 102.603h-3.003a.342.342 0 0 0-.319.216l-4.354 10.93-4.355-10.93a.341.341 0 0 0-.319-.216H74.47a.344.344 0 0 0-.317.474l6.159 14.95a.342.342 0 0 0 .317.212h3.002c.14 0 .264-.083.318-.212l6.16-14.95a.343.343 0 0 0-.318-.474M98.372 105.209c2.618 0 3.979 1.881 4.182 3.769h-8.378c.287-1.888 1.686-3.769 4.196-3.769m0-2.978c-4.466 0-7.834 3.515-7.834 8.175 0 4.831 3.323 8.205 8.082 8.205 2.531 0 4.689-.805 6.245-2.326a.343.343 0 0 0 .039-.445l-1.3-1.826a.342.342 0 0 0-.526-.041c-.997 1.024-2.598 1.66-4.18 1.66-3.002 0-4.395-2.112-4.688-3.955h11.436a.344.344 0 0 0 .343-.343v-.682c0-4.959-3.132-8.422-7.617-8.422M116.983 102.231c-2.476 0-4.218 1.296-4.95 1.964v-1.249a.344.344 0 0 0-.344-.343h-2.785a.344.344 0 0 0-.344.343v14.95c0 .19.154.344.344.344h2.785c.19 0 .344-.154.344-.344v-10.564c.74-.967 2.188-1.937 3.773-1.937 1.967 0 2.845.905 2.845 2.937v9.564c0 .19.153.344.343.344h2.786a.345.345 0 0 0 .344-.344v-10.492c0-3.384-1.778-5.173-5.141-5.173M133.156 115.093a.344.344 0 0 0-.254-.226.358.358 0 0 0-.327.106c-.206.229-.688.475-1.261.475-1.031 0-1.111-1.135-1.111-1.483v-8.23h2.69a.344.344 0 0 0 .343-.343v-2.446a.344.344 0 0 0-.343-.343h-2.69v-3.742a.344.344 0 0 0-.344-.344h-2.785a.344.344 0 0 0-.344.344v3.742h-2.132a.344.344 0 0 0-.344.343v2.446c0 .189.154.343.344.343h2.132v8.849c0 2.597 1.386 4.027 3.903 4.027 1.369 0 2.397-.345 3.146-1.053a.345.345 0 0 0 .089-.36l-.712-2.105ZM142.473 108.616c-1.874-.437-3.201-.825-3.201-1.832 0-.991 1.043-1.606 2.721-1.606 1.677 0 3.31.668 4.161 1.701a.341.341 0 0 0 .265.125l.021-.001a.34.34 0 0 0 .269-.158l1.238-1.951a.345.345 0 0 0-.054-.433c-1.534-1.458-3.584-2.23-5.931-2.23-4.149 0-6.039 2.473-6.039 4.77 0 3.485 3.204 4.227 5.778 4.823 1.834.414 3.353.857 3.353 2.079 0 1.123-1.075 1.793-2.875 1.793-1.996 0-3.867-1.05-4.761-2.025a.344.344 0 0 0-.253-.112l-.028.002a.346.346 0 0 0-.26.155l-1.331 2.043a.343.343 0 0 0 .043.428c1.554 1.585 3.79 2.424 6.466 2.424 3.875 0 6.379-1.933 6.379-4.924 0-3.721-3.304-4.469-5.961-5.071M167.004 100.009c2.162 0 4.185 1.088 5.279 2.84a.351.351 0 0 0 .453.123l2.631-1.393a.344.344 0 0 0 .125-.494c-1.999-2.998-4.854-4.518-8.488-4.518-6.231 0-10.93 4.738-10.93 11.022s4.699 11.022 10.93 11.022c3.596 0 6.45-1.519 8.487-4.515a.346.346 0 0 0-.124-.497l-2.631-1.393a.352.352 0 0 0-.453.123c-1.095 1.752-3.117 2.84-5.279 2.84-3.89 0-6.504-3.046-6.504-7.58 0-4.605 2.553-7.58 6.504-7.58M187.429 112.195v2.302c-.746.925-2.05 1.477-3.494 1.477-1.821 0-3.092-1.081-3.092-2.627 0-1.548 1.271-2.629 3.092-2.629 1.444 0 2.748.552 3.494 1.477m-2.875-9.964c-2.507 0-4.65.856-6.369 2.544a.345.345 0 0 0-.05.428l1.207 1.92a.345.345 0 0 0 .534.059c1.264-1.265 2.653-1.88 4.244-1.88 2.01 0 3.309 1.031 3.309 2.628v1.649c-1.149-.98-2.717-1.498-4.546-1.498-2.67 0-5.544 1.638-5.544 5.234 0 3.44 2.856 5.296 5.544 5.296 1.781 0 3.349-.534 4.546-1.546v.831c0 .19.154.344.344.344h2.785c.19 0 .344-.154.344-.344v-10.09c0-3.543-2.314-5.575-6.348-5.575M198.111 96.908h-2.785a.344.344 0 0 0-.344.343v20.645c0 .189.154.344.344.344h2.785c.19 0 .344-.155.344-.344V97.251a.344.344 0 0 0-.344-.344M209.409 105.209c2.618 0 3.979 1.881 4.182 3.769h-8.378c.288-1.888 1.686-3.769 4.196-3.769m0-2.978c-4.466 0-7.833 3.515-7.833 8.175 0 4.831 3.323 8.205 8.081 8.205 2.531 0 4.69-.805 6.245-2.326a.343.343 0 0 0 .039-.445l-1.3-1.826a.342.342 0 0 0-.253-.144.369.369 0 0 0-.273.103c-.997 1.024-2.598 1.66-4.179 1.66-3.002 0-4.395-2.112-4.688-3.955h11.435c.19 0 .343-.154.343-.343v-.682c0-4.959-3.132-8.422-7.617-8.422M228.019 102.231c-2.476 0-4.217 1.296-4.949 1.964v-1.249a.344.344 0 0 0-.344-.343h-2.785a.344.344 0 0 0-.344.343v14.95c0 .19.154.344.344.344h2.785c.19 0 .344-.154.344-.344v-10.564c.74-.967 2.188-1.937 3.773-1.937 1.967 0 2.844.905 2.844 2.937v9.564c0 .19.154.344.344.344h2.786a.344.344 0 0 0 .343-.344v-10.492c0-3.384-1.777-5.173-5.141-5.173M247.307 107.352v6.17c-.775 1.134-2.335 1.926-3.804 1.926-2.497 0-4.175-2.014-4.175-5.011 0-3.016 1.678-5.042 4.175-5.042 1.432 0 3.028.822 3.804 1.957m3.129-10.445h-2.785a.344.344 0 0 0-.344.344v6.935c-1.238-1.262-2.846-1.955-4.546-1.955-4.205 0-7.03 3.298-7.03 8.206 0 4.889 2.825 8.174 7.03 8.174 1.674 0 3.321-.702 4.546-1.93v1.215c0 .189.154.344.344.344h2.785c.19 0 .344-.155.344-.344V97.251a.344.344 0 0 0-.344-.344M264.084 112.195v2.302c-.746.925-2.05 1.477-3.495 1.477-1.82 0-3.091-1.081-3.091-2.627 0-1.548 1.271-2.629 3.091-2.629 1.445 0 2.749.552 3.495 1.477m-2.875-9.964c-2.507 0-4.65.856-6.37 2.544a.345.345 0 0 0-.049.428l1.207 1.92a.343.343 0 0 0 .533.059c1.265-1.265 2.653-1.88 4.245-1.88 2.01 0 3.309 1.031 3.309 2.628v1.649c-1.149-.98-2.718-1.498-4.547-1.498-2.67 0-5.543 1.638-5.543 5.234 0 3.44 2.856 5.296 5.543 5.296 1.781 0 3.35-.534 4.547-1.546v.831c0 .19.154.344.344.344h2.785c.19 0 .344-.154.344-.344v-10.09c0-3.543-2.314-5.575-6.348-5.575M279.656 102.262c-1.614 0-3.262.748-4.546 2.057v-1.373a.344.344 0 0 0-.344-.343h-2.786a.344.344 0 0 0-.343.343v14.95c0 .189.154.343.343.343h2.786a.344.344 0 0 0 .344-.343v-10.304c.645-1.006 2.349-1.919 3.587-1.919.34 0 .629.028.885.085a.343.343 0 0 0 .418-.335v-2.817a.344.344 0 0 0-.344-.344",clipRule:"evenodd"})))},{name:"Seriously Simple Podcasting",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: bold close tag. */ (0,o.__)("Get %1$srich results for your podcast%2$s in Google search","wordpress-seo"),"",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-ssp",logoLink:"https://yoa.st/integrations-logo-ssp",slug:"ssp",description:(0,o.sprintf)(/* translators: 1: Seriously Simple Podcasting, 2: Yoast SEO */ (0,o.__)("%1$s integrates with %2$s's Schema API to get rich snippets for your podcasts!","wordpress-seo"),"Seriously Simple Podcasting","Yoast SEO"),isPremium:!1,isNew:!0,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",be({xmlns:"http://www.w3.org/2000/svg",width:280,height:50},e),se||(se=t.createElement("path",{fill:"#2a2a2a",d:"M107.367 25c0 12.905-10.462 23.367-23.367 23.367-12.905 0-23.367-10.462-23.367-23.367C60.633 12.095 71.095 1.633 84 1.633c12.905 0 23.367 10.462 23.367 23.367Z"})),ae||(ae=t.createElement("path",{fill:"#2a2a2a",fillRule:"evenodd",d:"M84 50c13.807 0 25-11.193 25-25S97.807 0 84 0 59 11.193 59 25s11.193 25 25 25Zm0-1.02c13.243 0 23.98-10.737 23.98-23.98 0-13.244-10.737-23.98-23.98-23.98-13.244 0-23.98 10.736-23.98 23.98 0 13.243 10.736 23.98 23.98 23.98Z"})),ne||(ne=t.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M72.282 16.767c.295-.179.675-.41 1.106-.338.235.039.486.229.774.448.463.35 1.023.776 1.777.776.87 0 1.327-.206 1.593-.325.108-.049.184-.083.244-.083.204 0 .51.306.102.612-.068.05-.152.12-.252.204-.507.422-1.43 1.19-2.708 1.53-.243.066-.468.12-.675.17-1.102.267-1.72.417-1.978 1.361-.306 1.123-.102 5.613 3.674 5.613 1.564 0 2.795-.613 4.237-1.33 2.04-1.016 4.503-2.242 8.926-2.242 7.551 0 9.082 6.429 9.082 9.694 0 3.265-3.674 7.755-10 7.755-4.45 0-5.966-1.499-6.753-2.277-.108-.107-.202-.2-.288-.274.51 1.327 3.061 4.163 7.959 4.082-.068.374-1.755 1.122-7.96 1.122-7.754 0-13.775-6.938-13.775-13.163 0-4.43 1.138-7 1.793-8.481.266-.6.452-1.02.452-1.315 0-.95-1.062-1.9-2.033-2.769l-.212-.19c-1.02-.918-1.224-2.653-1.122-2.96.102-.305.51-.407.612.205.102.612 1.123 1.224 1.837 1.224.292 0 .448-.034.6-.067.219-.048.43-.095 1.033-.035.51.051 1.126.697 1.482 1.07l.15.155c.09-.03.2-.097.323-.172Zm9.473 18.54a.714.714 0 1 0 0-1.43.714.714 0 0 0 0 1.43Z"})),re||(re=t.createElement("path",{fill:"#cf3529",d:"M78.184 12.449c-.408.317-.47 1.124-.05 1.536.42.476.968.467 1.535.05 3.82-2.81 13.923-2.708 18.31-.05.498.3 1.091.374 1.472-.013l.031-.033c.412-.42.436-1.176-.077-1.534-5.2-3.63-16.63-3.527-21.221.044Z"})),oe||(oe=t.createElement("path",{fill:"#cf3529",d:"M80.633 16.122c-.613.307-.613 1.02-.306 1.531.306.51.95.52 1.53.204 4.318-1.928 9.46-2.147 13.878.102.493.251 1.326.306 1.632-.306.293-.584.306-1.122-.408-1.53-4.376-2.5-11.34-2.792-16.326 0Z"})),le||(le=t.createElement("path",{fill:"#cf3529",d:"M82.878 20.102c-.613.306-.715.97-.409 1.429.477.714 1.123.494 1.673.292 3.736-1.377 5.776-1.313 9.348-.05.724.255 1.224.268 1.632-.242.307-.51.245-1.2-.51-1.531-4.384-1.927-8.061-1.939-11.734.102Z"})),ce||(ce=t.createElement("path",{fillRule:"evenodd",d:"M208.695 24.455V13.416h1.504l.098.752c.341-.31.714-.538 1.119-.688.405-.149.885-.224 1.44-.224 1.087 0 1.936.297 2.544.889.608.592.912 1.57.912 2.935s-.315 2.387-.945 3.065c-.63.677-1.486 1.015-2.574 1.015-.917 0-1.703-.214-2.354-.64v3.935h-1.744Zm-33.47-.639c-.576 0-1.068-.075-1.473-.224v-1.295c.181.064.35.105.504.127.155.021.313.031.473.031.33 0 .596-.051.798-.158.203-.107.383-.275.537-.504.155-.23.323-.526.504-.889l-3.377-7.488H175l2.432 5.633 2.464-5.633h1.792l-3.088 7.152c-.267.64-.552 1.203-.856 1.688-.304.485-.657.867-1.056 1.144-.4.278-.887.416-1.463.416Zm-23.649-2.656c-1.365 0-2.365-.34-3-1.023-.635-.683-.953-1.66-.953-2.93 0-1.27.321-2.245.961-2.928.64-.682 1.637-1.023 2.992-1.023 1.366 0 2.368.34 3.008 1.023.64.683.96 1.659.96 2.928 0 1.27-.318 2.247-.952 2.93-.635.682-1.64 1.023-3.016 1.023Zm7.44 0c-.907 0-1.603-.25-2.088-.752-.486-.501-.729-1.238-.729-2.209v-4.783h1.744v4.783c0 .566.139.982.416 1.248.278.267.706.4 1.282.4.426 0 .82-.08 1.183-.24a3.07 3.07 0 0 0 .944-.638v-5.553h1.728V21h-1.584l-.08-.783c-.341.266-.747.49-1.217.672-.47.181-1.002.271-1.6.271Zm8.08 0a9.626 9.626 0 0 1-1.496-.111 7.027 7.027 0 0 1-1.176-.274v-1.47c.362.138.762.243 1.199.318.437.075.853.113 1.248.113.597 0 1.025-.053 1.281-.16.256-.106.383-.315.383-.625 0-.224-.076-.4-.23-.527-.155-.128-.386-.245-.69-.352-.304-.106-.69-.235-1.16-.384a7.635 7.635 0 0 1-1.168-.489 2.035 2.035 0 0 1-.767-.68c-.182-.277-.272-.64-.272-1.087 0-.694.25-1.23.752-1.608.501-.378 1.307-.568 2.416-.568.437 0 .853.032 1.248.096s.73.144 1.008.24v1.457a5.193 5.193 0 0 0-.984-.274 5.69 5.69 0 0 0-1-.095c-.555 0-.974.048-1.256.144-.283.096-.424.288-.424.576 0 .3.146.509.44.631.293.123.765.29 1.415.504.598.181 1.072.374 1.424.576.352.203.607.446.762.729.154.283.23.648.23 1.096 0 .746-.27 1.303-.814 1.671-.544.368-1.335.553-2.37.553Zm5.824 0c-.619 0-1.088-.153-1.408-.457-.32-.304-.48-.808-.48-1.512v-8.974h1.743v8.814c0 .299.054.503.16.61.107.106.268.16.481.16.256 0 .502-.034.736-.098v1.266a2.857 2.857 0 0 1-.584.15 4.627 4.627 0 0 1-.648.041Zm15.04 0c-1.332 0-2.405-.17-3.216-.512v-1.537c.459.171.953.31 1.48.416.529.107 1.054.16 1.577.16.821 0 1.437-.095 1.847-.287.411-.192.616-.576.616-1.152 0-.352-.086-.634-.256-.848-.17-.213-.453-.398-.848-.552-.395-.155-.94-.318-1.633-.489-1.109-.288-1.888-.653-2.336-1.095-.448-.443-.671-1.054-.671-1.832 0-.907.33-1.615.992-2.127.661-.512 1.649-.77 2.96-.77.598 0 1.16.044 1.688.13.528.084.942.18 1.24.286v1.537c-.81-.31-1.706-.465-2.687-.465-.768 0-1.366.102-1.793.305-.427.203-.64.57-.64 1.104 0 .309.075.56.224.752.15.192.407.357.775.496.368.138.879.294 1.53.465.842.213 1.495.466 1.959.76.464.293.79.633.976 1.023.187.39.28.83.28 1.32 0 .907-.336 1.62-1.008 2.137-.672.517-1.69.775-3.055.775Zm30.976 0c-.62 0-1.089-.153-1.409-.457-.32-.304-.478-.808-.478-1.512v-8.974h1.744v8.814c0 .299.052.503.158.61.107.106.267.16.48.16.257 0 .502-.034.737-.098v1.266a2.858 2.858 0 0 1-.584.15 4.627 4.627 0 0 1-.648.041Zm5.472 0c-1.322 0-2.347-.326-3.072-.976-.725-.651-1.088-1.649-1.088-2.993 0-1.216.31-2.174.928-2.878.618-.705 1.558-1.057 2.816-1.057 1.152 0 2.018.301 2.6.904.581.603.873 1.379.873 2.328v1.408h-5.553c.085.736.353 1.243.8 1.52.449.277 1.13.416 2.048.416.384 0 .778-.037 1.183-.111a5.763 5.763 0 0 0 1.057-.29v1.282a5.01 5.01 0 0 1-1.176.336 8.517 8.517 0 0 1-1.416.111ZM139.561 21v-7.584h1.6l.095.88a6.995 6.995 0 0 1 1.297-.64 7.164 7.164 0 0 1 1.486-.4v.97l.098-.81h2.734V21h-1.742v-6.256h-1.152l.017-.15a9.345 9.345 0 0 0-.922.222c-.346.102-.675.214-.984.336-.31.123-.57.247-.783.375V21h-1.744Zm53.584 0v-6.256h-1.153l.16-1.328h2.737V21h-1.744Zm2.816 0v-7.584h1.6l.08.8a4.552 4.552 0 0 1 1.23-.704c.448-.171.93-.256 1.441-.256.545 0 .968.088 1.272.264.304.176.535.419.695.728a4.714 4.714 0 0 1 1.217-.713c.459-.187 1.009-.28 1.649-.28.874 0 1.52.225 1.935.673.416.448.623 1.136.623 2.064V21h-1.71v-4.832c0-.587-.125-.998-.37-1.232-.245-.235-.644-.352-1.2-.352-.362 0-.705.063-1.03.191-.326.128-.606.32-.84.577.032.117.052.24.062.369.01.128.018.266.018.416V21h-1.617v-4.816c0-.555-.095-.96-.287-1.215-.192-.256-.555-.385-1.088-.385-.374 0-.729.088-1.065.264a4.223 4.223 0 0 0-.904.632V21h-1.711Zm16.383-1.152c1.472 0 2.209-.928 2.209-2.784 0-.896-.166-1.533-.496-1.912-.331-.378-.886-.568-1.664-.568-.78 0-1.43.267-1.954.8v3.792c.246.202.52.365.825.488.304.123.664.184 1.08.184Zm-60.768-.16c.8 0 1.367-.195 1.703-.584.336-.39.504-1.022.504-1.897s-.168-1.503-.504-1.887c-.336-.384-.903-.576-1.703-.576-.79 0-1.351.192-1.687.576-.336.384-.504 1.012-.504 1.887s.168 1.507.504 1.897c.336.389.898.584 1.687.584Zm70.336-2.928h4.016v-.528c0-.522-.144-.93-.432-1.224-.288-.294-.774-.44-1.457-.44-.81 0-1.368.176-1.672.528-.304.352-.455.906-.455 1.664Zm-76.928-4.928v-1.44h1.905v1.44h-1.905Zm48.016 0v-1.44h1.904v1.44H193Zm-57.232 9.328c-1.323 0-2.347-.325-3.072-.976-.725-.65-1.088-1.648-1.088-2.992 0-1.216.31-2.176.928-2.88.619-.704 1.557-1.056 2.816-1.056 1.152 0 2.019.301 2.6.904s.872 1.379.872 2.328v1.408h-5.552c.085.736.352 1.243.8 1.52.448.277 1.13.416 2.048.416a6.53 6.53 0 0 0 1.184-.112c.405-.075.757-.17 1.056-.288v1.28c-.341.15-.733.261-1.176.336a8.515 8.515 0 0 1-1.416.112Zm-2.496-4.4h4.016v-.528c0-.523-.144-.93-.432-1.224-.288-.293-.773-.44-1.456-.44-.81 0-1.368.176-1.672.528-.304.352-.456.907-.456 1.664Zm-6.144 4.4c-1.333 0-2.405-.17-3.216-.512v-1.536c.459.17.952.31 1.48.416.528.107 1.053.16 1.576.16.821 0 1.437-.096 1.848-.288.41-.192.616-.576.616-1.152 0-.352-.085-.635-.256-.848-.17-.213-.453-.397-.848-.552-.395-.155-.939-.317-1.632-.488-1.11-.288-1.888-.653-2.336-1.096-.448-.443-.672-1.053-.672-1.832 0-.907.33-1.616.992-2.128.661-.512 1.648-.768 2.96-.768.597 0 1.16.043 1.688.128s.941.181 1.24.288v1.536c-.81-.31-1.707-.464-2.688-.464-.768 0-1.365.101-1.792.304-.427.203-.64.57-.64 1.104 0 .31.075.56.224.752.15.192.408.357.776.496.368.139.877.293 1.528.464.843.213 1.496.467 1.96.76.464.293.79.635.976 1.024.187.39.28.83.28 1.32 0 .907-.336 1.619-1.008 2.136-.672.517-1.69.776-3.056.776ZM206.4 38.816a13.94 13.94 0 0 1-1.697-.103 6.935 6.935 0 0 1-1.44-.313v-1.343c.427.138.919.245 1.473.32.555.075 1.083.111 1.584.111.768 0 1.328-.043 1.68-.129.352-.085.527-.277.527-.576 0-.224-.085-.38-.256-.47-.17-.091-.494-.137-.974-.137h-2.049c-1.376 0-2.064-.485-2.064-1.455 0-.31.09-.599.271-.866.181-.266.47-.468.865-.607-.437-.213-.76-.507-.968-.88-.208-.374-.313-.822-.313-1.345 0-.97.292-1.674.873-2.11.581-.438 1.453-.657 2.615-.657.246 0 .503.02.77.056.267.038.474.072.623.104h2.783l-.047 1.137h-1.279c.203.17.351.382.447.638.096.256.145.534.145.832 0 .811-.246 1.449-.737 1.913-.49.464-1.232.697-2.224.697-.17 0-.329-.01-.473-.026-.144-.016-.3-.033-.47-.054-.32.032-.61.117-.866.256-.256.138-.383.324-.383.558 0 .16.064.277.192.346.128.07.342.103.64.103h2.127c.758 0 1.342.163 1.752.489.411.325.618.797.618 1.416 0 .746-.324 1.282-.97 1.607-.645.325-1.57.488-2.775.488Zm-23.44-2.656a9.626 9.626 0 0 1-1.495-.111 7.056 7.056 0 0 1-1.178-.274v-1.47c.363.138.764.243 1.201.318.438.075.854.113 1.248.113.598 0 1.024-.053 1.28-.16.256-.106.384-.315.384-.625 0-.224-.077-.4-.232-.527-.155-.128-.384-.245-.688-.352-.304-.106-.69-.235-1.16-.385a7.634 7.634 0 0 1-1.168-.488 2.035 2.035 0 0 1-.767-.68c-.182-.277-.274-.64-.274-1.087 0-.694.251-1.23.752-1.608.502-.378 1.307-.568 2.416-.568.438 0 .854.032 1.248.096.395.064.73.144 1.008.24v1.457a5.173 5.173 0 0 0-.982-.274 5.69 5.69 0 0 0-1-.095c-.555 0-.973.048-1.256.144-.283.096-.426.288-.426.576 0 .3.148.509.441.631.294.123.766.29 1.417.504.597.181 1.071.374 1.423.576.352.203.605.446.76.729.155.283.233.648.233 1.096 0 .746-.273 1.303-.817 1.671-.544.368-1.332.553-2.367.553Zm6.593 0c-.81 0-1.417-.216-1.817-.648-.4-.432-.6-1.021-.6-1.768v-3.969h-1.12v-1.359h1.12v-1.744l1.727-.527v2.271h2.018l-.113 1.36h-1.905v3.872c0 .438.102.744.305.92.203.176.533.264.992.264.288 0 .592-.053.912-.16v1.232c-.416.171-.922.256-1.52.256Zm2.672-.16v-6.256h-1.153l.16-1.328h2.737V36h-1.744Zm2.814 0v-7.584h1.602l.08.8a4.863 4.863 0 0 1 1.222-.68c.475-.188 1-.28 1.577-.28.98 0 1.696.229 2.144.687.448.459.672 1.174.672 2.145V36h-1.729v-4.832c0-.587-.119-.998-.359-1.232-.24-.235-.69-.352-1.352-.352-.394 0-.781.08-1.16.24-.378.16-.697.367-.953.623V36h-1.744Zm11.488-3.473c.694 0 1.178-.117 1.45-.351.272-.235.408-.634.408-1.2 0-.565-.136-.976-.408-1.232-.272-.256-.756-.385-1.45-.385-.65 0-1.125.124-1.423.37-.3.245-.448.66-.448 1.248 0 .544.141.938.424 1.183.283.245.765.367 1.447.367Zm-14.447-5.695v-1.44h1.904v1.44h-1.904Zm-17.072 9.328c-.48 0-.925-.085-1.336-.256a2.22 2.22 0 0 1-.984-.776c-.245-.347-.368-.776-.368-1.288 0-.725.248-1.31.744-1.752.496-.443 1.261-.664 2.296-.664h2.432v-.336c0-.363-.056-.65-.168-.864-.112-.213-.315-.368-.608-.464-.293-.096-.723-.144-1.288-.144-.896 0-1.733.133-2.512.4V28.72c.341-.139.757-.25 1.248-.336a9.251 9.251 0 0 1 1.584-.128c1.11 0 1.955.224 2.536.672.581.448.872 1.179.872 2.192V36h-1.488l-.112-.768a3.11 3.11 0 0 1-1.144.688c-.453.16-1.021.24-1.704.24Zm.464-1.248c.523 0 .979-.088 1.368-.264.39-.176.707-.413.952-.712v-1.328h-2.4c-.512 0-.883.099-1.112.296-.23.197-.344.499-.344.904 0 .395.133.677.4.848.267.17.645.256 1.136.256Zm-5.728 1.248c-1.333 0-2.341-.339-3.024-1.016-.683-.677-1.024-1.656-1.024-2.936 0-1.333.376-2.325 1.128-2.976.752-.65 1.757-.976 3.016-.976.523 0 .963.037 1.32.112.357.075.701.192 1.032.352v1.296c-.555-.277-1.227-.416-2.016-.416-.875 0-1.547.195-2.016.584-.47.39-.704 1.064-.704 2.024 0 .907.208 1.57.624 1.992.416.421 1.104.632 2.064.632.757 0 1.445-.144 2.064-.432v1.328a6.149 6.149 0 0 1-1.128.32c-.4.075-.845.112-1.336.112Zm-8.784 0c-.683 0-1.285-.117-1.808-.352-.523-.235-.928-.624-1.216-1.168-.288-.544-.432-1.275-.432-2.192 0-.907.155-1.672.464-2.296.31-.624.739-1.096 1.288-1.416.55-.32 1.17-.48 1.864-.48.459 0 .867.053 1.224.16.357.107.701.272 1.032.496v-3.696h1.744V36h-1.488l-.112-.752c-.341.31-.715.539-1.12.688-.405.15-.885.224-1.44.224Zm.464-1.312c.779 0 1.43-.267 1.952-.8v-3.792c-.501-.448-1.13-.672-1.888-.672-.736 0-1.29.245-1.664.736-.373.49-.56 1.205-.56 2.144 0 .907.173 1.53.52 1.872.347.341.893.512 1.64.512Zm-8.304 1.312c-1.365 0-2.365-.341-3-1.024-.635-.683-.952-1.659-.952-2.928 0-1.27.32-2.245.96-2.928.64-.683 1.637-1.024 2.992-1.024 1.365 0 2.368.341 3.008 1.024.64.683.96 1.659.96 2.928 0 1.27-.317 2.245-.952 2.928-.635.683-1.64 1.024-3.016 1.024Zm0-1.472c.8 0 1.368-.195 1.704-.584.336-.39.504-1.021.504-1.896s-.168-1.504-.504-1.888c-.336-.384-.904-.576-1.704-.576-.79 0-1.352.192-1.688.576-.336.384-.504 1.013-.504 1.888s.168 1.507.504 1.896c.336.39.899.584 1.688.584ZM141.008 36V25.696h4.592c.79 0 1.44.15 1.952.448.512.299.89.707 1.136 1.224.245.517.368 1.107.368 1.768 0 1.024-.317 1.845-.952 2.464s-1.49.928-2.568.928h-2.784V36Zm1.744-4.848h2.464c.693 0 1.216-.181 1.568-.544.352-.363.528-.853.528-1.472 0-.661-.168-1.173-.504-1.536-.336-.363-.84-.544-1.512-.544h-2.544Z"})))},{name:"Easy Digital Downloads",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: bold close tag. */ (0,o.__)("Get %1$srich results for your digital products%2$s in Google search","wordpress-seo"),"",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-edd",logoLink:"https://yoa.st/integrations-logo-edd",upsellLink:"https://yoa.st/get-edd-integration",slug:"edd",description:(0,o.sprintf)(/* translators: 1: Easy Digital Downloads, 2: Yoast SEO */ (0,o.__)("%2$s integrates %1$s' Schema output into its own to get rich snippets for your digital products!","wordpress-seo"),"Easy Digital Downloads","Yoast SEO"),isPremium:!0,isNew:!0,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",Me({xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",width:130,height:60,style:{fillRule:"evenodd",clipRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:1.41421},viewBox:"0 0 339 157"},e),t.createElement("path",{d:"M206.613 15.378C197.114 5.876 183.985 0 169.488 0c-14.501 0-27.628 5.876-37.13 15.378-9.504 9.502-15.38 22.631-15.38 37.13 0 14.499 5.876 27.628 15.378 37.13 9.502 9.504 22.631 15.378 37.132 15.378 14.499 0 27.628-5.879 37.127-15.378 9.502-9.504 15.378-22.631 15.378-37.13 0-14.499-5.878-27.628-15.38-37.13Zm-1.732 72.524c-9.057 9.058-21.572 14.661-35.395 14.661-13.823 0-26.339-5.603-35.397-14.661s-14.661-21.572-14.661-35.394c0-13.823 5.603-26.337 14.661-35.395 9.058-9.058 21.572-14.661 35.395-14.661 13.823 0 26.337 5.603 35.395 14.661 9.058 9.058 14.66 21.572 14.66 35.395.002 13.822-5.601 26.337-14.658 35.394Z",style:{fill:"#35495c",fillRule:"nonzero"}}),t.createElement("path",{d:"M214.656 52.07c-.236-24.746-20.367-44.734-45.168-44.734-24.803 0-44.936 19.99-45.168 44.736l20.712-20.712 6.946 6.946-15.157 15.157h65.333l-15.157-15.157 6.946-6.946 20.713 20.71Zm-45.17-7.762L150.24 24.112h12.79v-9.955c0-2.584 2.906-4.702 6.456-4.702 3.55 0 6.456 2.116 6.456 4.702v9.955h12.79l-19.246 20.196ZM175.1 77.93c-1.026-.667-2.326-1.267-3.894-1.788-1.199-.413-2.186-.803-2.956-1.179-.764-.372-1.328-.785-1.689-1.221-.37-.444-.543-.976-.543-1.586 0-.488.147-.952.462-1.391.309-.438.792-.803 1.448-1.079.663-.28 1.507-.431 2.555-.436.844.004 1.615.072 2.312.193.689.125 1.3.276 1.823.449.53.179.958.348 1.295.507l1.166-3.516c-.705-.354-1.588-.648-2.66-.886-.91-.201-1.952-.317-3.135-.357v-3.638h-3.205v3.82c-.514.083-1.007.195-1.473.33-1.179.348-2.192.831-3.03 1.462-.831.628-1.475 1.363-1.917 2.205-.444.842-.663 1.77-.672 2.768.006 1.155.309 2.173.906 3.052.597.88 1.448 1.643 2.547 2.297 1.094.652 2.4 1.214 3.91 1.687 1.133.363 2.057.742 2.761 1.131.705.387 1.221.814 1.542 1.28.328.466.49 1.006.484 1.61 0 .663-.195 1.238-.575 1.735-.376.49-.932.875-1.663 1.148-.731.276-1.623.411-2.669.42a15.281 15.281 0 0 1-2.481-.217 15.934 15.934 0 0 1-2.24-.562 11.92 11.92 0 0 1-1.838-.766l-1.127 3.662c.51.28 1.146.532 1.925.764.779.234 1.636.42 2.575.562.932.138 1.89.208 2.864.217l.171-.002v3.761h3.205v-4.063a12.43 12.43 0 0 0 1.162-.282c1.286-.387 2.354-.915 3.199-1.591.851-.67 1.481-1.446 1.899-2.321a6.4 6.4 0 0 0 .624-2.787c0-1.155-.247-2.177-.757-3.056-.515-.887-1.281-1.664-2.311-2.336ZM3.999 141.181c0 .701.099 1.38.298 2.034a4.99 4.99 0 0 0 .894 1.719c.397.491.9.883 1.508 1.175.608.293 1.333.439 2.175.439 1.169 0 2.11-.251 2.824-.754.713-.502 1.245-1.256 1.596-2.262h3.788a7.544 7.544 0 0 1-1.087 2.631 7.563 7.563 0 0 1-1.859 1.946 8.036 8.036 0 0 1-2.438 1.193 9.852 9.852 0 0 1-2.824.403c-1.427 0-2.689-.234-3.788-.701a7.828 7.828 0 0 1-2.789-1.965c-.76-.842-1.333-1.847-1.719-3.016-.385-1.17-.578-2.456-.578-3.859 0-1.286.205-2.508.614-3.665a9.387 9.387 0 0 1 1.754-3.052 8.378 8.378 0 0 1 2.754-2.087c1.075-.514 2.291-.772 3.648-.772 1.426 0 2.706.298 3.841.894a8.437 8.437 0 0 1 2.824 2.368c.748.982 1.292 2.111 1.631 3.385.339 1.275.427 2.59.263 3.946H3.999Zm9.33-2.631a6.468 6.468 0 0 0-.404-1.824 4.885 4.885 0 0 0-.912-1.526 4.534 4.534 0 0 0-1.403-1.052 4.132 4.132 0 0 0-1.841-.404c-.702 0-1.339.123-1.912.369a4.369 4.369 0 0 0-1.473 1.017 5.038 5.038 0 0 0-.982 1.526 5.306 5.306 0 0 0-.403 1.894h9.33ZM35.567 145.18c0 .491.064.842.193 1.052.128.21.38.316.754.316h.421c.163 0 .351-.023.561-.07v2.771c-.14.047-.322.099-.544.158-.223.058-.45.111-.684.158a7.387 7.387 0 0 1-1.298.14c-.819 0-1.497-.164-2.034-.491-.538-.327-.889-.9-1.052-1.719-.795.771-1.771 1.333-2.929 1.683-1.157.351-2.274.526-3.35.526a8.215 8.215 0 0 1-2.35-.333 6.15 6.15 0 0 1-1.982-.982 4.705 4.705 0 0 1-1.368-1.649c-.339-.666-.509-1.444-.509-2.333 0-1.122.204-2.034.614-2.736a4.557 4.557 0 0 1 1.613-1.649 7.278 7.278 0 0 1 2.245-.859c.83-.175 1.666-.31 2.508-.404.725-.14 1.415-.239 2.069-.298a9.71 9.71 0 0 0 1.736-.298c.503-.14.9-.356 1.193-.649.292-.292.438-.73.438-1.315 0-.514-.123-.935-.368-1.263a2.479 2.479 0 0 0-.912-.754 3.972 3.972 0 0 0-1.21-.351 9.788 9.788 0 0 0-1.263-.088c-1.122 0-2.047.234-2.771.702-.725.468-1.135 1.193-1.228 2.175h-3.999c.07-1.169.351-2.14.842-2.911a5.816 5.816 0 0 1 1.877-1.859 7.688 7.688 0 0 1 2.578-.982 15.35 15.35 0 0 1 2.946-.281c.888 0 1.765.094 2.631.281a7.5 7.5 0 0 1 2.333.912 5.065 5.065 0 0 1 1.666 1.631c.421.666.631 1.479.631 2.438v9.331h.002Zm-3.998-5.052c-.608.398-1.356.638-2.245.719-.889.082-1.777.205-2.666.369-.421.07-.83.17-1.228.298a3.69 3.69 0 0 0-1.052.526 2.316 2.316 0 0 0-.719.877c-.175.363-.263.801-.263 1.315 0 .445.128.819.386 1.123.257.304.567.543.93.719.362.175.759.298 1.193.368.432.071.824.105 1.175.105.444 0 .924-.058 1.438-.175.514-.117 1-.316 1.456-.596.456-.28.836-.636 1.14-1.07.304-.432.456-.964.456-1.596v-2.982h-.001ZM42.898 143.39c.117 1.17.561 1.988 1.333 2.456.772.468 1.695.701 2.771.701.374 0 .801-.029 1.28-.088.479-.058.93-.169 1.351-.333a2.531 2.531 0 0 0 1.035-.719c.268-.316.391-.731.368-1.245-.024-.514-.21-.935-.561-1.263-.351-.327-.801-.59-1.35-.789a13.15 13.15 0 0 0-1.877-.509 85.428 85.428 0 0 1-2.14-.456 19.787 19.787 0 0 1-2.157-.596 6.942 6.942 0 0 1-1.859-.947 4.36 4.36 0 0 1-1.315-1.526c-.328-.619-.491-1.386-.491-2.298 0-.982.239-1.806.719-2.473a5.506 5.506 0 0 1 1.824-1.613 7.934 7.934 0 0 1 2.455-.859c.9-.163 1.759-.245 2.578-.245.935 0 1.829.1 2.683.298a7.311 7.311 0 0 1 2.315.965 5.684 5.684 0 0 1 1.719 1.736c.456.714.742 1.573.86 2.578h-4.174c-.188-.958-.626-1.601-1.316-1.929-.69-.327-1.479-.491-2.368-.491-.281 0-.614.024-.999.07a4.647 4.647 0 0 0-1.087.263 2.29 2.29 0 0 0-.859.561c-.234.246-.351.567-.351.965 0 .491.169.889.509 1.193.339.304.783.556 1.333.754.549.199 1.175.368 1.876.508.702.14 1.426.293 2.175.456.724.164 1.438.363 2.14.596.701.234 1.327.55 1.877.947a4.6 4.6 0 0 1 1.333 1.508c.339.609.508 1.356.508 2.245 0 1.076-.246 1.988-.737 2.736a5.805 5.805 0 0 1-1.912 1.824 8.677 8.677 0 0 1-2.613 1.017c-.959.21-1.906.316-2.841.316-1.146 0-2.204-.129-3.174-.386-.971-.257-1.812-.649-2.525-1.175a5.66 5.66 0 0 1-1.684-1.964c-.409-.784-.626-1.713-.649-2.789h3.997ZM56.086 131.079h4.385l4.735 13.539h.07l4.595-13.539h4.174l-7.05 19.116a142.32 142.32 0 0 1-.965 2.35 8.449 8.449 0 0 1-1.157 1.982 5 5 0 0 1-1.701 1.368c-.678.339-1.543.509-2.596.509-.936 0-1.859-.07-2.771-.21v-3.368c.327.047.643.1.947.158.304.058.619.088.947.088.467 0 .853-.058 1.157-.175a1.93 1.93 0 0 0 .754-.509c.198-.223.368-.486.509-.79.14-.304.268-.655.386-1.052l.456-1.403-6.875-18.064ZM90.18 149.213v-3.438h-.07a5.2 5.2 0 0 1-1.035 1.614 6.68 6.68 0 0 1-1.561 1.245 8.07 8.07 0 0 1-1.877.789 7.308 7.308 0 0 1-1.982.281c-1.38 0-2.578-.251-3.595-.754a7.19 7.19 0 0 1-2.543-2.069c-.679-.877-1.181-1.894-1.508-3.052a13.386 13.386 0 0 1-.491-3.666c0-1.286.163-2.508.491-3.665.327-1.157.83-2.175 1.508-3.052a7.37 7.37 0 0 1 2.543-2.087c1.017-.514 2.215-.772 3.595-.772.678 0 1.339.082 1.982.245a6.668 6.668 0 0 1 1.807.754 6.366 6.366 0 0 1 1.491 1.245 5.244 5.244 0 0 1 1 1.719h.07v-10.382h2.21v25.044H90.18v.001Zm-12.119-6.261a7.713 7.713 0 0 0 1.052 2.473 5.783 5.783 0 0 0 1.842 1.771c.748.456 1.649.684 2.701.684 1.169 0 2.157-.228 2.964-.684a5.854 5.854 0 0 0 1.964-1.771 7.272 7.272 0 0 0 1.087-2.473c.222-.924.333-1.853.333-2.789 0-.935-.111-1.864-.333-2.788a7.32 7.32 0 0 0-1.087-2.473 5.857 5.857 0 0 0-1.964-1.772c-.807-.456-1.795-.684-2.964-.684-1.052 0-1.953.228-2.701.684a5.786 5.786 0 0 0-1.842 1.772 7.69 7.69 0 0 0-1.052 2.473 11.893 11.893 0 0 0-.333 2.788c0 .936.111 1.866.333 2.789ZM98.668 124.169v3.543h-2.21v-3.543h2.21Zm0 6.945v18.099h-2.21v-18.099h2.21ZM117.767 151.353c-.293 1.076-.754 1.988-1.386 2.736-.632.748-1.456 1.321-2.473 1.719-1.017.397-2.263.596-3.736.596a11.21 11.21 0 0 1-2.666-.316 7.566 7.566 0 0 1-2.332-.982 5.83 5.83 0 0 1-1.719-1.701c-.456-.69-.719-1.514-.789-2.473h2.21c.117.678.345 1.245.684 1.702.339.456.748.824 1.228 1.105a5.45 5.45 0 0 0 1.596.614 8.33 8.33 0 0 0 1.789.193c2.057 0 3.543-.585 4.455-1.754.912-1.17 1.368-2.853 1.368-5.051v-2.456h-.07a6.466 6.466 0 0 1-2.262 2.701c-.994.678-2.157 1.017-3.49 1.017-1.45 0-2.689-.24-3.718-.719s-1.877-1.14-2.543-1.982c-.666-.842-1.152-1.829-1.456-2.964a13.97 13.97 0 0 1-.456-3.63c0-1.239.181-2.414.544-3.525.362-1.11.888-2.081 1.578-2.911a7.341 7.341 0 0 1 2.561-1.964c1.017-.479 2.18-.719 3.49-.719a6.36 6.36 0 0 1 1.912.281c.596.188 1.14.45 1.631.789.491.339.93.731 1.316 1.175.386.445.684.912.894 1.403h.07v-3.122h2.21v16.626c-.001 1.332-.148 2.536-.44 3.612Zm-5.068-4.823a5.762 5.762 0 0 0 1.824-1.613 7.108 7.108 0 0 0 1.105-2.297 9.7 9.7 0 0 0 .368-2.666c0-.888-.105-1.777-.316-2.666a7.709 7.709 0 0 0-1.017-2.42 5.534 5.534 0 0 0-1.806-1.754c-.737-.444-1.631-.666-2.683-.666-1.052 0-1.953.216-2.701.649a5.76 5.76 0 0 0-1.859 1.701 7.118 7.118 0 0 0-1.07 2.403c-.223.9-.333 1.818-.333 2.754 0 .912.117 1.801.351 2.666a6.82 6.82 0 0 0 1.087 2.297 5.616 5.616 0 0 0 1.859 1.613c.748.41 1.636.614 2.666.614.958-.001 1.8-.205 2.525-.615ZM124.66 124.169v3.543h-2.21v-3.543h2.21Zm0 6.945v18.099h-2.21v-18.099h2.21ZM136.094 131.114v1.859h-3.683v12.207c0 .725.099 1.292.298 1.701.198.41.696.638 1.491.684.631 0 1.263-.035 1.894-.105v1.859c-.328 0-.655.011-.982.035-.328.023-.655.035-.982.035-1.473 0-2.503-.286-3.087-.86-.585-.573-.865-1.631-.842-3.174v-12.382h-3.157v-1.859h3.157v-5.437h2.21v5.437h3.683ZM139.742 133.92a5.183 5.183 0 0 1 1.526-1.894c.643-.491 1.397-.853 2.262-1.087.865-.233 1.824-.351 2.877-.351.794 0 1.59.076 2.385.228a5.785 5.785 0 0 1 2.14.859c.631.421 1.146 1.012 1.543 1.772s.596 1.748.596 2.964v9.611c0 .888.433 1.332 1.298 1.332.257 0 .491-.047.701-.14v1.859c-.257.047-.486.082-.684.105a6.52 6.52 0 0 1-.754.035c-.561 0-1.011-.075-1.35-.228a1.819 1.819 0 0 1-.79-.649 2.432 2.432 0 0 1-.368-1 8.508 8.508 0 0 1-.088-1.281h-.07a14.82 14.82 0 0 1-1.21 1.561 5.98 5.98 0 0 1-1.368 1.14 6.291 6.291 0 0 1-1.719.701c-.643.163-1.409.246-2.297.246-.842 0-1.631-.1-2.367-.298a5.292 5.292 0 0 1-1.929-.947 4.52 4.52 0 0 1-1.298-1.649c-.316-.666-.474-1.455-.474-2.367 0-1.263.281-2.251.842-2.964.562-.713 1.303-1.256 2.227-1.631.924-.374 1.965-.637 3.122-.789 1.157-.152 2.333-.298 3.525-.438.467-.047.877-.105 1.228-.175.351-.07.643-.193.877-.368.233-.175.414-.415.543-.719.128-.304.193-.702.193-1.193 0-.748-.123-1.362-.369-1.841a2.918 2.918 0 0 0-1.017-1.14 4.098 4.098 0 0 0-1.508-.579 10.227 10.227 0 0 0-1.842-.158c-1.403 0-2.549.333-3.437 1-.889.666-1.356 1.736-1.404 3.209h-2.21c.071-1.052.293-1.964.668-2.736Zm11.049 5.402c-.141.258-.41.445-.807.561a8.058 8.058 0 0 1-1.052.245c-.936.164-1.9.311-2.894.439-.994.129-1.9.322-2.718.579-.819.258-1.491.626-2.017 1.105-.526.48-.789 1.163-.789 2.052 0 .562.111 1.059.333 1.491.222.433.52.807.894 1.123.374.316.807.556 1.298.719.491.164.994.246 1.508.246.842 0 1.649-.128 2.42-.386a5.951 5.951 0 0 0 2.017-1.123 5.455 5.455 0 0 0 1.368-1.789c.339-.702.509-1.496.509-2.385v-2.876h-.07v-.001ZM157.525 124.169h2.21v25.044h-2.21zM181.061 149.213h-3.788v-2.455h-.07c-.538 1.052-1.321 1.806-2.35 2.262a7.965 7.965 0 0 1-3.262.684c-1.427 0-2.672-.251-3.736-.754-1.064-.502-1.947-1.186-2.648-2.052-.702-.865-1.228-1.888-1.578-3.069-.351-1.18-.526-2.449-.526-3.806 0-1.636.222-3.052.666-4.244.444-1.193 1.035-2.175 1.772-2.946a6.852 6.852 0 0 1 2.525-1.701 8.047 8.047 0 0 1 2.894-.544 9.62 9.62 0 0 1 1.719.158 7.559 7.559 0 0 1 1.683.509 6.659 6.659 0 0 1 1.491.894c.456.363.836.789 1.14 1.28h.071v-9.26h3.998v25.044h-.001Zm-13.96-8.874c0 .772.099 1.532.298 2.28.198.748.503 1.415.912 1.999.409.585.93 1.053 1.561 1.404.632.35 1.379.526 2.245.526.888 0 1.654-.187 2.298-.561a4.758 4.758 0 0 0 1.578-1.473 6.672 6.672 0 0 0 .912-2.052c.198-.76.298-1.538.298-2.333 0-2.01-.45-3.577-1.351-4.7-.901-1.123-2.122-1.684-3.665-1.684-.936 0-1.725.193-2.368.579a4.862 4.862 0 0 0-1.578 1.508 6.281 6.281 0 0 0-.877 2.105 10.981 10.981 0 0 0-.263 2.402ZM193.724 149.704c-1.45 0-2.742-.24-3.876-.719-1.135-.479-2.093-1.14-2.876-1.982-.784-.842-1.38-1.847-1.789-3.017-.409-1.169-.613-2.455-.613-3.859 0-1.379.204-2.653.613-3.823.409-1.169 1.006-2.175 1.789-3.017.783-.842 1.742-1.502 2.876-1.982 1.134-.479 2.426-.719 3.876-.719 1.45 0 2.742.24 3.876.719 1.134.48 2.093 1.14 2.877 1.982.783.842 1.379 1.848 1.789 3.017.409 1.17.614 2.444.614 3.823 0 1.404-.205 2.69-.614 3.859-.409 1.17-1.006 2.175-1.789 3.017-.784.842-1.743 1.503-2.877 1.982-1.134.479-2.427.719-3.876.719Zm0-3.157c.888 0 1.66-.187 2.315-.561a4.876 4.876 0 0 0 1.614-1.473 6.434 6.434 0 0 0 .93-2.052 9.219 9.219 0 0 0 0-4.648 6.204 6.204 0 0 0-.93-2.052 4.969 4.969 0 0 0-1.614-1.456c-.655-.374-1.427-.561-2.315-.561-.889 0-1.66.188-2.315.561a4.943 4.943 0 0 0-1.613 1.456 6.204 6.204 0 0 0-.93 2.052 9.174 9.174 0 0 0 0 4.648c.198.76.509 1.444.93 2.052a4.873 4.873 0 0 0 1.613 1.473c.654.375 1.426.561 2.315.561ZM204.562 131.079h4.244l3.543 13.539h.071l3.402-13.539h4.034l3.262 13.539h.071l3.683-13.539h4.069l-5.682 18.134h-4.104l-3.367-13.469h-.07l-3.332 13.469h-4.209l-5.615-18.134ZM233.499 131.079h3.788v2.666l.07.07a6.711 6.711 0 0 1 2.385-2.368c.982-.573 2.069-.859 3.262-.859 1.987 0 3.554.515 4.7 1.543 1.146 1.029 1.719 2.573 1.719 4.63v12.452h-3.998v-11.4c-.047-1.426-.351-2.461-.912-3.104-.562-.643-1.438-.965-2.631-.965-.678 0-1.286.123-1.824.369a3.953 3.953 0 0 0-1.368 1.017 4.807 4.807 0 0 0-.877 1.526 5.438 5.438 0 0 0-.316 1.859v10.698h-3.998v-18.134ZM253.738 124.169h3.999v25.044h-3.999zM270.399 149.704c-1.45 0-2.742-.24-3.876-.719-1.135-.479-2.093-1.14-2.876-1.982-.784-.842-1.38-1.847-1.789-3.017-.409-1.169-.613-2.455-.613-3.859 0-1.379.204-2.653.613-3.823.409-1.169 1.006-2.175 1.789-3.017.783-.842 1.742-1.502 2.876-1.982 1.134-.479 2.426-.719 3.876-.719 1.45 0 2.742.24 3.876.719 1.134.48 2.093 1.14 2.877 1.982.783.842 1.379 1.848 1.789 3.017.409 1.17.614 2.444.614 3.823 0 1.404-.205 2.69-.614 3.859-.409 1.17-1.006 2.175-1.789 3.017-.784.842-1.743 1.503-2.877 1.982-1.135.479-2.427.719-3.876.719Zm0-3.157c.888 0 1.66-.187 2.315-.561a4.876 4.876 0 0 0 1.614-1.473 6.434 6.434 0 0 0 .93-2.052 9.219 9.219 0 0 0 0-4.648 6.204 6.204 0 0 0-.93-2.052 4.969 4.969 0 0 0-1.614-1.456c-.655-.374-1.427-.561-2.315-.561-.889 0-1.66.188-2.315.561a4.943 4.943 0 0 0-1.613 1.456 6.204 6.204 0 0 0-.93 2.052 9.174 9.174 0 0 0 0 4.648c.198.76.509 1.444.93 2.052a4.873 4.873 0 0 0 1.613 1.473c.654.375 1.426.561 2.315.561ZM298.073 145.18c0 .491.064.842.193 1.052.128.21.38.316.754.316h.421c.163 0 .35-.023.561-.07v2.771c-.14.047-.321.099-.543.158-.223.058-.451.111-.684.158a7.387 7.387 0 0 1-1.298.14c-.818 0-1.497-.164-2.034-.491-.538-.327-.889-.9-1.052-1.719-.795.771-1.772 1.333-2.929 1.683-1.158.351-2.274.526-3.349.526a8.215 8.215 0 0 1-2.35-.333 6.15 6.15 0 0 1-1.982-.982 4.705 4.705 0 0 1-1.368-1.649c-.339-.666-.509-1.444-.509-2.333 0-1.122.205-2.034.614-2.736a4.552 4.552 0 0 1 1.614-1.649 7.282 7.282 0 0 1 2.244-.859c.83-.175 1.666-.31 2.508-.404.725-.14 1.415-.239 2.069-.298a9.695 9.695 0 0 0 1.736-.298c.503-.14.9-.356 1.193-.649.292-.292.439-.73.439-1.315 0-.514-.123-.935-.369-1.263a2.479 2.479 0 0 0-.912-.754 3.972 3.972 0 0 0-1.21-.351 9.788 9.788 0 0 0-1.263-.088c-1.123 0-2.047.234-2.771.702-.725.468-1.135 1.193-1.228 2.175h-3.999c.071-1.169.351-2.14.842-2.911a5.806 5.806 0 0 1 1.877-1.859 7.671 7.671 0 0 1 2.578-.982 15.36 15.36 0 0 1 2.947-.281c.888 0 1.765.094 2.631.281a7.5 7.5 0 0 1 2.333.912 5.065 5.065 0 0 1 1.666 1.631c.421.666.631 1.479.631 2.438v9.331h-.001Zm-3.998-5.052c-.609.398-1.357.638-2.245.719-.889.082-1.777.205-2.666.369-.421.07-.83.17-1.228.298a3.71 3.71 0 0 0-1.053.526 2.326 2.326 0 0 0-.719.877c-.175.363-.263.801-.263 1.315 0 .445.128.819.386 1.123a2.8 2.8 0 0 0 .929.719c.363.175.76.298 1.193.368.432.071.824.105 1.175.105a6.51 6.51 0 0 0 1.438-.175c.515-.117 1-.316 1.456-.596a3.82 3.82 0 0 0 1.14-1.07c.304-.432.456-.964.456-1.596v-2.982h.001ZM319.47 149.213h-3.788v-2.455h-.07c-.538 1.052-1.321 1.806-2.35 2.262a7.965 7.965 0 0 1-3.262.684c-1.427 0-2.672-.251-3.736-.754-1.064-.502-1.947-1.186-2.648-2.052-.702-.865-1.228-1.888-1.578-3.069-.351-1.18-.526-2.449-.526-3.806 0-1.636.222-3.052.666-4.244.444-1.193 1.035-2.175 1.772-2.946a6.852 6.852 0 0 1 2.525-1.701 8.047 8.047 0 0 1 2.894-.544 9.62 9.62 0 0 1 1.719.158 7.559 7.559 0 0 1 1.683.509 6.659 6.659 0 0 1 1.491.894c.456.363.836.789 1.14 1.28h.071v-9.26h3.998v25.044h-.001Zm-13.96-8.874c0 .772.099 1.532.298 2.28.198.748.503 1.415.912 1.999.409.585.93 1.053 1.561 1.404.632.35 1.379.526 2.245.526.888 0 1.654-.187 2.298-.561a4.758 4.758 0 0 0 1.578-1.473 6.672 6.672 0 0 0 .912-2.052c.198-.76.298-1.538.298-2.333 0-2.01-.45-3.577-1.351-4.7-.901-1.123-2.122-1.684-3.665-1.684-.936 0-1.725.193-2.368.579a4.862 4.862 0 0 0-1.578 1.508 6.281 6.281 0 0 0-.877 2.105 10.92 10.92 0 0 0-.263 2.402ZM326.836 143.39c.117 1.17.561 1.988 1.333 2.456.772.468 1.695.701 2.771.701.373 0 .801-.029 1.28-.088.479-.058.93-.169 1.351-.333a2.528 2.528 0 0 0 1.034-.719c.269-.316.392-.731.369-1.245-.024-.514-.211-.935-.561-1.263-.351-.327-.801-.59-1.351-.789a13.17 13.17 0 0 0-1.876-.509 85.428 85.428 0 0 1-2.14-.456 19.787 19.787 0 0 1-2.157-.596 6.942 6.942 0 0 1-1.859-.947 4.36 4.36 0 0 1-1.315-1.526c-.328-.619-.491-1.386-.491-2.298 0-.982.24-1.806.719-2.473a5.495 5.495 0 0 1 1.824-1.613 7.934 7.934 0 0 1 2.455-.859c.9-.163 1.76-.245 2.578-.245.935 0 1.83.1 2.684.298a7.311 7.311 0 0 1 2.315.965 5.684 5.684 0 0 1 1.719 1.736c.456.714.742 1.573.86 2.578h-4.174c-.187-.958-.626-1.601-1.315-1.929-.69-.327-1.479-.491-2.367-.491-.281 0-.614.024-1 .07a4.647 4.647 0 0 0-1.087.263 2.303 2.303 0 0 0-.86.561c-.234.245-.35.567-.35.965 0 .491.169.889.508 1.193.339.304.784.556 1.333.754.549.199 1.175.368 1.877.508.701.14 1.426.293 2.174.456.725.164 1.438.363 2.14.596a6.93 6.93 0 0 1 1.876.947 4.6 4.6 0 0 1 1.333 1.508c.339.609.509 1.356.509 2.245 0 1.076-.246 1.988-.737 2.736a5.824 5.824 0 0 1-1.912 1.824 8.688 8.688 0 0 1-2.613 1.017c-.959.21-1.906.316-2.841.316-1.146 0-2.204-.129-3.174-.386-.971-.257-1.813-.649-2.526-1.175a5.647 5.647 0 0 1-1.683-1.964c-.41-.784-.626-1.713-.649-2.789h3.996Z",style:{fill:"#35495c",fillRule:"nonzero"}}))},{name:"WP Recipe Maker",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: bold close tag. */ (0,o.__)("Get %1$srich results for your recipes%2$s in Google search","wordpress-seo"),"",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-wp-recipemaker",logoLink:"https://yoa.st/integrations-logo-wp-recipemaker",slug:"wp-recipe-maker",description:(0,o.sprintf)(/* translators: 1: Seriously Simple Podcasting, 2: Yoast SEO */ (0,o.__)("%1$s integrates with %2$s's Schema API to get rich snippets for your recipes!","wordpress-seo"),"WP Recipe Maker","Yoast SEO"),isPremium:!1,isNew:!0,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",Pe({xmlns:"http://www.w3.org/2000/svg",width:185,"aria-hidden":"true",viewBox:"0 0 1488.21 189.15"},e),me||(me=t.createElement("rect",{width:23.81,height:26.01,x:113.83,y:17.03,fill:"#3a5160",rx:4,ry:4,transform:"rotate(-10 125.733 30.062)"})),pe||(pe=t.createElement("rect",{width:23.81,height:26.01,x:119.56,y:49.62,fill:"#3a5160",rx:4,ry:4,transform:"rotate(-10 131.463 62.64)"})),he||(he=t.createElement("path",{fill:"#010101",d:"M1120.63 107.35c-2.45 8.59-4.88 17.07-7.33 25.62-3.61-.29-7.03-.55-10.43-.83-1.86-.15-3.71-.42-5.57-.45-1.3-.02-1.94-.36-2.25-1.74-3.51-15.67-7.15-31.32-10.65-47-2.81-12.58-5.48-25.18-8.27-37.77-.26-1.17-.89-2.26-1.69-3.33.53 34.76 1.77 69.45 3.62 104.35-8.55-.78-16.89-1.54-25.37-2.31-1.24-42.47-3.33-84.87 1.77-127.36 3.42.26 6.78.51 10.13.77 8.19.65 16.38 1.33 24.58 1.92 1.11.08 1.54.43 1.82 1.46 4.04 14.57 7.19 29.33 9.99 44.17 1.23 6.51 2.43 13.02 3.64 19.53.03.18.1.35.27.93 7.73-24.53 13.76-49.07 18.93-73.99 2.23.17 4.42.31 6.61.5 8.44.73 16.87 1.47 25.31 2.21 1.05.09 2.11.21 3.17.25.97.03 1.37.34 1.39 1.41.21 8.53.65 17.05.74 25.58.26 23.65.55 47.3.48 70.95-.03 11.06-.84 22.13-1.31 33.19-.03.73-.14 1.45-.22 2.28-8.85-.83-17.5-1.63-26.35-2.46 3.22-33.66 3.51-67.33 4.22-100.99-.27-.06-.54-.13-.81-.19-.52 1.33-1.18 2.62-1.53 3.99-1.39 5.46-2.64 10.95-4.02 16.42-3.6 14.26-7.23 28.51-10.87 42.88ZM265.8 87.29c-2.62 11.14-5.09 22.19-7.86 33.17-1.9 7.51-4.21 14.92-6.35 22.37-.08.28-.24.53-.4.89-3.54-.27-7.05-.53-10.56-.8-2.11-.16-4.22-.4-6.33-.49-1.11-.05-1.61-.3-1.85-1.54-2.74-14.44-5.65-28.85-8.35-43.29-2.31-12.35-4.52-24.72-6.57-37.11-1.61-9.76-2.95-19.56-4.35-29.35-.85-5.96-1.59-11.93-2.36-17.9-.06-.48 0-.98 0-1.63 8.26.69 16.46 1.38 24.63 2.06 3.21 29.25 6.41 58.4 9.61 87.54.24.02.47.03.71.05 3.2-12.67 5.75-25.49 8.2-38.32 2.46-12.87 4.49-25.83 6.73-38.86 6.2.55 12.56 1.12 19.02 1.7 2.28 25.19 5.32 50.17 8.09 75.17.25 0 .5.02.76.03 7.1-29.92 13.76-59.93 17.67-90.72 8.43.7 16.82 1.39 25.32 2.09-.87 4.78-1.66 9.33-2.54 13.86-4.56 23.44-9.8 46.74-16.01 69.81-3.96 14.69-8.3 29.28-12.41 43.93-.38 1.34-.9 1.62-2.31 1.47-5.21-.56-10.44-.94-15.66-1.32-.85-.06-1.19-.3-1.4-1.15-3.78-14.91-7.62-29.81-11.4-44.72-.93-3.65-1.66-7.36-2.49-11.04-.06-.28-.23-.54-.44-1.02-.39 1.82-.74 3.41-1.11 5.13Zm317.9 32.76c4.39 6.04 8.71 11.99 13.09 18.03-6.24 4.56-12.38 9.05-18.32 13.39-14.44-19.46-28.78-38.78-43.12-58.11-.16.08-.32.15-.48.23-.58 17.99-1.16 35.99-1.74 54.13-8.88-.97-17.46-1.9-25.78-2.81 0-3.14-.13-6.08.02-9 1.29-25.57 1.83-51.15 1.74-76.75-.05-13.67.09-27.34.09-41.01 0-1.21.45-1.72 1.52-2.18 10.29-4.43 21.01-7.33 32.16-8.52 7.54-.81 15.09-1.09 22.51 1.03 14.48 4.15 23.19 13.68 26.52 28.08 2.34 10.1 1.28 19.78-4.3 28.79-3.46 5.59-7.73 10.49-12.74 14.71-4.37 3.68-8.98 7.08-13.47 10.6l22.3 29.38m-15.29-80.78c-2.59-6.62-7.63-9.99-15.03-10.21-5.83-.18-11.4 1.07-16.93 2.68-1.11.32-1.49.79-1.49 1.95-.02 14.86-.1 29.71-.15 44.57 0 .47.05.94.09 1.68 2.3-1.2 4.41-2.23 6.46-3.37 9.2-5.15 17.52-11.34 23.96-19.78 4-5.25 5.34-10.95 3.1-17.51ZM378.34 8.76c9.83-1.09 19.28-.47 28.16 3.98 13.54 6.79 21.67 17.63 24.2 32.39 2.72 15.86-2.85 28.92-14.5 39.69-8.92 8.25-19.54 13.61-31 17.5-1.8.61-3.61 1.25-5.46 1.69-1.04.25-1.22.73-1.2 1.66.16 9.93.28 19.86.41 29.78.05 3.69.1 7.38.14 11.08 0 .34-.05.67-.08 1.15-8.68-.82-17.28-1.63-25.92-2.44-.1-2.25-.23-4.39-.29-6.52-.63-24.35-.69-48.69-.14-73.04.28-12.47.64-24.94.99-37.4.12-4.34.34-8.67.49-13.01.03-.78.23-1.22 1.08-1.51 7.48-2.51 15.12-4.24 23.12-5m11.61 68.82c1.39-.99 2.84-1.91 4.15-2.99 9.26-7.68 13.24-18.64 9.7-30.14-1.47-4.78-4.18-8.72-8.41-11.53-4.72-3.12-9.85-2.69-15.01-1.49-.33.08-.66.89-.68 1.38-.18 4.03-.31 8.07-.4 12.1-.29 12.36-.56 24.72-.83 37.08 0 .24.04.49.07.83 4.01-1.24 7.74-2.94 11.42-5.25Zm503.41 1.2c.89 5.83.84 11.57.28 17.28-.97 9.85-3.39 19.35-7.54 28.38-2.81 6.12-6.3 11.76-11.28 16.45-4.45 4.2-9.67 5.49-15.58 4.64-2.72-.39-5.42-.91-8.27-1.4.43 14.95.87 29.85 1.3 45.02-7.34-.73-14.77-1.46-22.39-2.21-1.11-46.35-2-92.64 1.68-139.13 6.73.77 13.3 1.53 20.11 2.31-.2 5.13-.4 10.22-.61 15.52 1.57-1.65 2.9-3.25 4.43-4.63 4.64-4.2 10.02-6.6 16.45-6.23 6.49.37 11.49 3.39 15.26 8.48 3.18 4.29 4.97 9.17 5.9 14.38.06.34.16.68.26 1.15m-33.25-3.25c-3.68 3.79-5.8 8.45-7.53 13.3-.66 1.85-1.25 3.82-1.3 5.75-.24 9.12-.29 18.24-.4 27.37 0 .34.02.72.18 1.01 2.28 4.2 6.74 4.88 10.26 1.62 3.54-3.28 5.38-7.54 6.89-11.93 3.1-9.04 4.05-18.33 2.74-27.8-.47-3.4-1.34-6.73-3.24-9.7-1.19-1.85-2.59-2.36-4.63-1.49-1 .43-1.87 1.14-2.96 1.87Z"})),ye||(ye=t.createElement("path",{fill:"#020202",d:"M1307.39 122.54c-4.09-4.4-8.1-8.72-12.12-13.04-.13.05-.27.11-.4.16.26 12.07.51 24.13.77 36.33-7.46-.69-14.9-1.39-22.48-2.09-1.58-46.55-.61-92.99 1.71-139.57 7.62.58 15.04 1.15 22.22 1.7-.99 29.54-1.98 58.88-2.97 88.23.22.05.45.11.67.16 11.62-14.1 21.84-29.09 29.48-46.04 5.39 4.5 10.64 8.88 15.99 13.35-6.1 13.98-13.95 26.91-22.87 39.14 4.19 5.22 8.5 10.29 12.47 15.62 3.97 5.32 7.6 10.9 11.43 16.43-5.06 4.7-9.91 9.2-14.91 13.85-5.74-8.57-12.06-16.56-18.99-24.21Zm-65.12 6.6-1.25 17.55c-2.51-.14-4.87-.27-7.22-.42-2.72-.18-5.43-.34-8.14-.61-.43-.04-1.04-.55-1.18-.96-.51-1.55-.85-3.16-1.27-4.82-2.52 1.06-4.86 2.17-7.29 3.04-5.96 2.15-12 2.34-18.07.46-8.06-2.5-13.54-9.59-14.3-17.91-1.04-11.52 4.12-19.78 13.51-25.88 5.95-3.87 12.56-5.98 19.6-6.82l4.69-.55c.08-4.79.21-9.47-.99-14.05-.26-1-.76-1.97-1.32-2.84-2.02-3.17-5.77-3.61-8.52-1.02-3.26 3.07-4.74 7.11-6.04 11.23-.34 1.09-.41 2.55-1.16 3.13-.65.5-2.1.02-3.19-.07-4.71-.41-9.42-.83-14.45-1.28.73-2.67 1.34-5.26 2.15-7.79 2.55-7.94 6.21-15.24 12.46-21.07 9.36-8.75 24.76-8.96 33.63-.29 4.33 4.24 6.71 9.6 7.92 15.38.89 4.22 1.58 8.55 1.71 12.86.43 14.22-.32 28.42-1.29 42.75m-30.89-1.07c2.98-.63 5.97-1.23 8.94-1.94.33-.08.69-.78.71-1.21.14-3.53.21-7.07.28-10.6.03-1.48 0-2.95 0-4.55-2.22.45-4.3.79-6.32 1.31-4.43 1.15-8.39 3.07-10.92 7.1-2.63 4.19-.79 8.59 4.04 9.62.97.21 1.99.18 3.27.26Zm160.42-70.27c8.98-6.55 18.49-7.72 28.52-3.01 4.13 1.94 6.94 5.4 9.16 9.29 3.27 5.71 5.06 11.94 5.77 18.39.77 6.97 1 14 1.5 21.01.07.96-.17 1.34-1.2 1.59-11.84 2.91-23.83 5.07-35.89 6.86-.93.14-1.85.33-2.92.52.63 5.04 1.1 10 4.13 14.24 1.56 2.19 3.14 2.71 5.76 1.99 3.43-.94 5.86-3.28 8-5.88 1.96-2.39 3.66-4.99 5.6-7.67 4.79 2.81 9.66 5.66 14.63 8.56-5.15 8.94-10.94 17.18-21.11 20.95-14 5.18-27.62.46-34.85-13.06-3.12-5.83-4.61-12.13-4.89-18.64-.56-13.37 1.19-26.44 6.29-38.94 2.54-6.23 6.12-11.79 11.5-16.2m13.65 38.82c3.16-.74 6.31-1.47 9.73-2.27-.41-4.68-.62-9.31-1.28-13.87-.37-2.61-1.2-5.23-2.29-7.64-1.23-2.71-3.63-3.09-5.88-1.06a15.806 15.806 0 0 0-3.3 4.2c-3.7 6.95-4.77 14.55-5.43 22.39 2.83-.6 5.51-1.17 8.45-1.76ZM662.46 58.62c5.16 5.37 7.48 11.97 9.02 18.88 1.99 8.95 2.28 18.05 2.26 27.28-13.11 3.37-26.44 5.61-39.9 7.64.55 4.32.98 8.51 2.94 12.35 2.14 4.2 4.64 5.91 10.18 2.42 3.65-2.3 6.08-5.77 8.4-9.29.6-.91 1.2-1.82 1.85-2.82 4.93 2.89 9.77 5.72 14.72 8.63-5.15 9.05-11.04 17.34-21.36 21.04-13.9 4.98-27.46.44-34.72-13.4-3.78-7.21-4.95-14.99-4.88-23.01.1-11.04 1.74-21.83 5.6-32.22 2.44-6.59 5.86-12.58 11.2-17.34 5.32-4.74 11.59-6.87 18.7-6.72 6.15.13 11.54 2.1 15.98 6.58m-27.88 35.11c-.16 1.51-.33 3.01-.52 4.72 6.16-1.36 12.07-2.67 18.31-4.04-.54-5.21-.9-10.32-1.65-15.36-.35-2.3-1.28-4.59-2.32-6.71-.96-1.97-2.75-2.41-4.57-1.16-1.41.96-2.73 2.26-3.62 3.7-3.51 5.69-4.81 12.08-5.64 18.86Z"})),ge||(ge=t.createElement("path",{fill:"#010101",d:"M926.11 142.76c-6.82-4.43-10.73-10.77-13.02-18.22-2.25-7.3-2.43-14.78-1.91-22.33.5-7.21 1.61-14.31 3.71-21.24 2.46-8.09 5.94-15.64 12.2-21.65 8.54-8.2 22.19-9.77 31.91-3.54 4.52 2.89 7.31 7.22 9.39 12.01 2.69 6.18 4 12.71 4.56 19.38.48 5.81.69 11.63 1.02 17.53-13.29 3.43-26.63 5.68-40.17 7.71.69 5.07 1.11 10.09 4.18 14.37 1.51 2.1 3.16 2.63 5.65 1.93 4.12-1.17 6.78-4.18 9.25-7.35 1.53-1.96 2.87-4.07 4.38-6.24 4.84 2.84 9.67 5.68 14.63 8.59-3.06 5.33-6.32 10.41-10.89 14.59-6.25 5.71-13.56 8.6-22.11 8.33-4.57-.14-8.82-1.35-12.78-3.86m11.79-63.33c-2.35 6.08-3.34 12.41-3.81 19.02l18.22-4.04c-.44-4.8-.64-9.44-1.35-14-.43-2.75-1.43-5.47-2.58-8.02-.94-2.08-2.67-2.37-4.69-1.2-.85.49-1.73 1.14-2.25 1.94-1.27 1.96-2.34 4.04-3.55 6.3Z"})),de||(de=t.createElement("path",{fill:"#020202",d:"M714.55 110.73c.03 3.69.1 7.24 1.51 10.56.51 1.21 1.25 2.4 2.14 3.38 1.73 1.91 3.74 2.13 5.98.81 3.13-1.84 5.16-4.73 7.06-7.66 2.39-3.67 4.59-7.47 6.94-11.33 4.68 3.34 9.4 6.71 14.16 10.12-3.09 7.86-6.75 15.32-12.56 21.6-10.5 11.33-24.8 10.15-34.82 3.47-6.67-4.44-10.21-10.98-11.89-18.58-1.53-6.9-1.26-13.85-.65-20.83.72-8.31 2.2-16.45 4.89-24.37 2.26-6.66 5.24-12.93 10.19-18.13 7.32-7.69 18.53-9.76 27.48-4.89 5.24 2.85 8.71 7.36 11.2 12.59 3.44 7.25 5.07 14.87 4.04 22.9-.24 1.89-.75 3.75-1.13 5.62-6.29-.59-12.34-1.16-18.19-1.71 0-2.32.05-4.5-.01-6.68-.1-3.57-.73-7.03-2.51-10.19-2.07-3.66-5.08-3.78-7.55-.35-2.46 3.42-3.31 7.42-4.13 11.41-1.5 7.29-1.91 14.7-2.13 22.27Zm764.13-35.84c-5.02-1.18-8.22 1.08-10.32 5.16-2.82 5.49-4.74 11.24-4.7 17.53.08 11.92.08 23.84.02 35.76-.02 4.38-.32 8.76-.5 13.35-7.53-.61-14.93-1.2-22.48-1.81.75-28.07 1.59-55.97-2.83-83.89 2.83.27 5.42.51 8.01.76 1.75.17 3.5.43 5.26.52.99.05 1.4.46 1.65 1.34.79 2.72 1.64 5.43 2.5 8.23 1.62-2.77 3.14-5.46 4.74-8.1 1.99-3.27 4.39-6.23 7.39-8.64 4.54-3.64 9.55-3.86 15.17-.59 1.81 1.05 3.4 2.47 5.04 3.79.32.26.64.88.54 1.23-1.53 5.58-3.13 11.14-4.74 16.82-1.61-.5-3.13-.96-4.77-1.46Z"})),ve||(ve=t.createElement("path",{fill:"#010101",d:"M775.99 52.99c.82-.19 1.63-.32 2.43-.25 6.42.59 12.84 1.21 19.25 1.83.09 0 .17.09.31.17v91.03c-7.34-.7-14.59-1.38-22.01-2.09 0-30.22 0-60.38.01-90.69Z"})),ue||(ue=t.createElement("path",{fill:"#020202",d:"M798.68 26.96c-.47 5.38-.93 10.63-1.41 16.04-7.27-.88-14.35-1.73-21.71-2.62.63-7.04 1.26-14.05 1.91-21.28 7.31.83 14.48 1.65 21.74 2.48-.19 1.88-.36 3.56-.53 5.38Z"})),we||(we=t.createElement("path",{fill:"#607983",d:"m8.856 20.455 97.89-17.26c6.795-1.199 13.282 3.344 14.48 10.139l20.88 118.413c1.198 6.795-3.344 13.283-10.14 14.48l-97.89 17.261a7.097 7.097 0 0 1-8.213-5.75L3.105 28.667a7.097 7.097 0 0 1 5.75-8.213Z"})),fe||(fe=t.createElement("path",{fill:"#3a5160",d:"M21.37 18.25 8.86 20.46c-3.84.68-6.43 4.37-5.75 8.21l22.76 129.08c.68 3.84 4.37 6.43 8.21 5.75l12.51-2.21L21.37 18.25Z"})),Ee||(Ee=t.createElement("path",{fill:"#d2e0e4",d:"M89.24 39.48c-1.9.34-3.17 2.15-2.84 4.05l3.83 21.7c.45 2.57-1.29 5.02-3.85 5.47s-4.99-1.26-5.44-3.83l-3.83-21.7c-.34-1.9-2.15-3.17-4.05-2.84s-3.17 2.15-2.84 4.05l3.83 21.7c.45 2.57-1.29 5.02-3.85 5.47s-4.99-1.26-5.44-3.83l-3.83-21.7c-.34-1.9-2.15-3.17-4.05-2.84s-3.17 2.15-2.84 4.05l4.46 25.28c1.49 8.45 8.11 14.69 16.08 16.14l6.09 34.55c.66 3.75 4.24 6.26 8 5.6s6.26-4.24 5.6-8l-6.09-34.55c7-4.09 11.08-12.21 9.59-20.66l-4.46-25.28a3.507 3.507 0 0 0-4.05-2.84Z"})))}],Ze={name:"WooCommerce",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: bold close tag. */ (0,o.__)("Get %1$srich product results%2$s in Google search","wordpress-seo"),"",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-woocommerce",logoLink:"https://yoa.st/integrations-logo-woocommerce",slug:"woocommerce",description:(0,o.sprintf)(/* translators: 1: Yoast WooCommerce SEO */ (0,o.__)("Unlock rich snippets for your product pages by using %1$s.","wordpress-seo"),"Yoast WooCommerce SEO"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:W,upsellLink:"https://yoa.st/integrations-get-woocommerce"},Te=[ke.map(((e,s)=>(0,t.createElement)(Q,{key:s,integration:e,isActive:y(e)})))];Te.push((0,t.createElement)(U,{key:ke.length+1,integration:Ze,isActive:Boolean(window.wpseoIntegrationsData.woocommerce_seo_active),isInstalled:Boolean(window.wpseoIntegrationsData.woocommerce_seo_installed),isPrerequisiteActive:Boolean(window.wpseoIntegrationsData.woocommerce_active),upsellLink:window.wpseoIntegrationsData.woocommerce_seo_upsell_url,activationLink:window.wpseoIntegrationsData.woocommerce_seo_activate_url}));const xe=Te;var Ne,Le,Ae;function Oe(){return Oe=Object.assign?Object.assign.bind():function(e){for(var t=1;t","Semrush","
    "),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-semrush",logoLink:"http://yoa.st/semrush-prices-wordpress",slug:"semrush",description:(0,o.sprintf)(/* translators: 1: Semrush */ (0,o.__)("Find out what your audience is searching for with %s data right in your sidebar.","wordpress-seo"),"Semrush"),isPremium:!1,isNew:!1,isMultisiteAvailable:!0,logo:e=>t.createElement("svg",Oe({xmlns:"http://www.w3.org/2000/svg",width:170,height:27,fill:"none",viewBox:"0 0 200 27"},e),Ne||(Ne=t.createElement("path",{fill:"#171A22",d:"M138.086 10.413c0-3.276-2.013-5.651-5.869-5.651h-12.466v16.976h4.099v-5.797h4.85l4.753 5.795h4.619v-.374l-4.619-5.518c2.882-.594 4.633-2.71 4.633-5.431Zm-6.329 2.1h-7.907V8.277h7.907c1.462 0 2.401.779 2.401 2.123-.001 1.366-.908 2.111-2.401 2.111ZM200 4.762h-3.833v6.436h-10.331V4.762h-4.147v16.976h4.147v-6.685h10.331v6.685H200V4.762ZM108.78 4.762l-4.558 14.284h-.25L99.388 4.762h-7.3v16.976h3.905V7.793h.243l4.558 13.945h6.289l4.584-13.945h.241v13.945h4.027V4.762h-7.155ZM64.176 11.708c-1.448-.15-4.148-.397-5.597-.547-1.425-.146-2.249-.569-2.249-1.51 0-.903.875-1.665 4.403-1.665 3.113 0 5.986.666 8.494 1.876V6.064c-2.508-1.196-5.264-1.78-8.706-1.78-4.829 0-8.172 2.019-8.172 5.432 0 2.89 1.962 4.468 5.898 4.898 1.425.156 3.847.369 5.537.508 1.84.153 2.388.715 2.388 1.554 0 1.152-1.29 1.867-4.56 1.867-3.328 0-6.697-1.088-9.093-2.61v3.909c1.925 1.287 5.258 2.38 8.97 2.38 5.275 0 8.66-2.035 8.66-5.677 0-2.74-1.807-4.404-5.973-4.837ZM72.834 4.762v16.976h15.835V18.27H76.737v-3.444h11.729v-3.442H76.737V8.229H88.67V4.762H72.834ZM173.218 11.708c-1.448-.15-4.148-.398-5.597-.547-1.425-.146-2.249-.569-2.249-1.51 0-.903.875-1.665 4.402-1.665 3.114 0 5.987.666 8.495 1.876V6.064c-2.51-1.195-5.264-1.78-8.706-1.78-4.829 0-8.172 2.018-8.172 5.432 0 2.89 1.962 4.468 5.898 4.897 1.425.157 3.847.37 5.537.509 1.841.153 2.388.715 2.388 1.554 0 1.151-1.291 1.866-4.56 1.866-3.328 0-6.697-1.087-9.093-2.61v3.91c1.925 1.287 5.258 2.38 8.97 2.38 5.275 0 8.661-2.035 8.661-5.677 0-2.74-1.806-4.404-5.974-4.837ZM154.503 4.762v8.69c0 3.293-2 5.1-5.008 5.1-3.024 0-5.008-1.78-5.008-5.15v-8.64h-4.075v8.254c0 6.164 3.852 9.207 9.142 9.207 5.09 0 9.021-2.924 9.021-9.006V4.762h-4.072Z"})),Le||(Le=t.createElement("path",{fill:"#FF642D",d:"M38.307 13.152c0 .827-.415.955-1.466.955-1.114 0-1.305-.192-1.433-1.02-.223-2.132-1.657-3.948-4.075-4.138-.764-.064-.955-.35-.955-1.306 0-.891.128-1.306.828-1.306 4.202 0 7.1 3.376 7.1 6.815Zm6.114 0C44.42 6.752 40.09 0 30.09 0H10.214c-.4 0-.65.21-.65.576 0 .2.15.379.286.485.729.572 1.79 1.201 3.213 1.913 1.38.69 2.445 1.138 3.527 1.578.447.18.625.379.625.644 0 .346-.244.566-.747.566H.69c-.466 0-.691.3-.691.604 0 .258.09.465.31.693 1.281 1.336 3.317 2.947 6.293 4.809a92.427 92.427 0 0 0 8.386 4.617c.43.206.58.445.57.691-.012.286-.237.527-.734.527H7.593c-.411 0-.64.217-.64.549 0 .185.15.42.344.598 1.645 1.491 4.275 3.123 7.78 4.615 4.674 1.99 9.432 3.187 14.776 3.187 10.127 0 14.568-7.578 14.568-13.5Zm-13.215 9.074c-4.968 0-9.107-4.044-9.107-9.074 0-4.968 4.139-8.948 9.107-8.948 5.095 0 9.074 3.981 9.074 8.948 0 5.03-3.98 9.074-9.074 9.074Z"})))},{name:"Wincher",claim:(0,i.createInterpolateElement)((0,o.sprintf)(/* translators: 1: bold open tag; 2: Wincher; 3: bold close tag. */ (0,o.__)("Track your rankings through time with %1$s%2$s%3$s","wordpress-seo"),"","Wincher",""),{strong:(0,t.createElement)("strong",null)}),learnMoreLink:"https://yoa.st/integrations-about-wincher",logoLink:"https://yoa.st/integrations-logo-wincher",slug:"wincher",description:(0,o.sprintf)(/* translators: 1: Wincher */ (0,o.__)("Keep an eye on how your posts are ranking by connecting to your %s account.","wordpress-seo"),"Wincher"),isPremium:!1,isNew:!1,isMultisiteAvailable:!1,logo:e=>t.createElement("svg",$e({xmlns:"http://www.w3.org/2000/svg",width:140,viewBox:"0 0 566 122"},e),Ae||(Ae=t.createElement("g",{fill:"none",fillRule:"evenodd"},t.createElement("g",{fillRule:"nonzero",transform:"translate(183.8 37)"},t.createElement("circle",{cx:375.8,cy:58.2,r:5.6,fill:"#FFA23A"}),t.createElement("path",{fill:"#37343B",d:"M31.805 62.112a2.4 2.4 0 0 1-2.282 1.656h-7.337a2.4 2.4 0 0 1-2.277-1.641L.323 3.365A2.4 2.4 0 0 1 2.6.206h8.895a2.4 2.4 0 0 1 2.298 1.708l12.37 41.04 13.974-41.12A2.4 2.4 0 0 1 42.409.206h4.7a2.4 2.4 0 0 1 2.268 1.616l14.228 41.131 12.2-41.03A2.4 2.4 0 0 1 78.107.205H87a2.4 2.4 0 0 1 2.278 3.156L69.77 62.124a2.4 2.4 0 0 1-2.278 1.644h-7.335a2.4 2.4 0 0 1-2.282-1.656L44.84 22.139 31.805 62.112zm74.538-45.22a2.4 2.4 0 0 1 2.4 2.4v42.076a2.4 2.4 0 0 1-2.4 2.4H98.95a2.4 2.4 0 0 1-2.4-2.4V19.292a2.4 2.4 0 0 1 2.4-2.4h7.393zM102.555 0c3.095 0 5.605 2.496 5.605 5.575s-2.51 5.574-5.605 5.574c-3.095 0-5.605-2.495-5.605-5.574 0-3.08 2.51-5.575 5.605-5.575zm29.076 61.368a2.4 2.4 0 0 1-2.4 2.4h-7.392a2.4 2.4 0 0 1-2.4-2.4V19.292a2.4 2.4 0 0 1 2.4-2.4h7.133a2.4 2.4 0 0 1 2.4 2.4v4.937c1.268-2.35 3.228-4.243 5.88-5.677 2.651-1.433 5.62-2.15 8.906-2.15 5.13 0 9.483 1.692 13.057 5.075s5.361 8.2 5.361 14.45v25.44a2.4 2.4 0 0 1-2.4 2.4h-7.392a2.4 2.4 0 0 1-2.4-2.4V39.196c0-3.67-.894-6.523-2.68-8.558-1.788-2.036-4.209-3.054-7.264-3.054-3.228 0-5.837.304-7.826 2.512-1.989 2.207-2.983 5.86-2.983 9.358v21.915zM198.736 64c-7.131 0-13.018-2.242-17.66-6.725-4.584-4.427-6.876-10.172-6.876-17.233s2.32-12.806 6.962-17.233C185.86 18.27 191.83 16 199.076 16c4.754 0 9.07 1.12 12.947 3.363 3.38 1.953 5.996 4.589 7.849 7.905.643 1.151.272 1.78-.517 2.208l-6.947 3.774c-1.003.545-1.63.246-2.293-.654-2.74-3.722-6.363-5.584-10.87-5.584-3.848 0-6.99 1.261-9.423 3.783-2.49 2.466-3.736 5.548-3.736 9.247 0 3.81 1.217 6.95 3.65 9.415 2.491 2.466 5.576 3.699 9.255 3.699 2.434 0 4.754-.645 6.962-1.934 1.73-1.01 3.094-2.243 4.094-3.7.47-.685 1.14-1.03 2.077-.484l7.195 4.187c.738.43.968 1.038.538 1.742-1.954 3.2-4.679 5.784-8.173 7.755C207.806 62.907 203.49 64 198.736 64zm44.522-2.632a2.4 2.4 0 0 1-2.4 2.4h-7.393a2.4 2.4 0 0 1-2.4-2.4V2.4a2.4 2.4 0 0 1 2.4-2.4h7.047a2.4 2.4 0 0 1 2.4 2.4v21.399c1.268-2.179 3.257-3.957 5.966-5.333 2.71-1.376 5.679-2.064 8.907-2.064 5.073 0 9.396 1.692 12.97 5.075 3.575 3.383 5.362 8.2 5.362 14.45v25.44a2.4 2.4 0 0 1-2.4 2.4h-7.393a2.4 2.4 0 0 1-2.4-2.4V39.196c0-3.67-.879-6.523-2.637-8.558-1.758-2.036-4.165-3.054-7.22-3.054-3.229 0-5.837 1.104-7.826 3.312-1.989 2.207-2.983 5.06-2.983 8.558v21.915zM311.177 64c-8.045 0-14.233-2.326-18.564-6.977-4.275-4.596-6.413-10.256-6.413-16.981 0-7.005 2.222-12.75 6.666-17.233C297.31 18.27 303.076 16 310.164 16c6.694 0 12.207 2.074 16.539 6.22 4.331 4.148 6.497 9.752 6.497 16.813 0 1.087-.085 2.375-.254 3.866-.104.92-.483 1.346-1.483 1.346h-33.197c1.688 6.501 6.16 9.752 13.417 9.752 4.807 0 9.295-1.247 13.464-3.74.787-.471 1.621-.471 2.059.299l3.324 5.854c.565.997.43 1.514-.38 2.05-5.582 3.693-11.907 5.54-18.973 5.54zM321.2 36c-.554-3.1-1.827-5.54-3.82-7.325-1.992-1.783-4.483-2.675-7.472-2.675-2.934 0-5.439.892-7.515 2.675-2.076 1.784-3.473 4.226-4.193 7.325h23zm34.954 25.368a2.4 2.4 0 0 1-2.4 2.4h-7.393a2.4 2.4 0 0 1-2.4-2.4V19.292a2.4 2.4 0 0 1 2.4-2.4h6.874a2.4 2.4 0 0 1 2.4 2.4v5.472c2.825-5.046 7.148-7.57 12.97-7.57 1.491 0 2.982.212 4.472.635.86.243 1.193.871 1.11 1.796l-.778 8.712c-.097 1.091-.567 1.348-1.636 1.091-1.487-.357-2.86-.536-4.119-.536-3.574 0-6.384 1.19-8.43 3.57-2.047 2.38-3.07 5.92-3.07 10.622v18.284z"})),t.createElement("path",{fill:"#FF8F3B",d:"M154.949.162a3.423 3.423 0 0 1 2.235 4.308l-37.107 115.146a3.446 3.446 0 0 1-3.285 2.384H94.376c-.356 0-.71-.055-1.049-.162a3.423 3.423 0 0 1-2.235-4.308L128.199 2.384A3.446 3.446 0 0 1 131.484 0h24.485c.356 0-1.36.055-1.02.162zm-70.7 14.231c.355 0 .707.055 1.046.162a3.423 3.423 0 0 1 2.24 4.305L55.247 119.613A3.446 3.446 0 0 1 51.962 122H29.545c-.355 0-.708-.055-1.047-.162a3.423 3.423 0 0 1-2.239-4.305L58.545 16.78a3.446 3.446 0 0 1 3.286-2.387h22.417z"}),t.createElement("path",{fill:"#FF7F3B",d:"m107.849 65.53 14.936 45.68-2.708 8.406a3.446 3.446 0 0 1-3.285 2.384l-11.788-47.64 2.845-8.83zm-64.877-.151 14.976 45.805-2.7 8.429a3.425 3.425 0 0 1-.157.4l-15.13-45.236 3.011-9.398z"}),t.createElement("path",{fill:"#FFA23A",d:"M84.376 14.393c1.501 0 2.83.966 3.285 2.387l32.287 100.753a3.423 3.423 0 0 1-2.24 4.305 3.468 3.468 0 0 1-1.046.162H94.245a3.446 3.446 0 0 1-3.286-2.387L58.673 18.86a3.423 3.423 0 0 1 2.24-4.305 3.468 3.468 0 0 1 1.045-.162zM26.454 37.011c1.497 0 2.823.96 3.282 2.376l25.363 78.135a3.423 3.423 0 0 1-2.224 4.313c-.342.11-.699.165-1.058.165H29.408a3.446 3.446 0 0 1-3.282-2.376L.763 41.49a3.423 3.423 0 0 1 2.224-4.314 3.485 3.485 0 0 1 1.058-.165z"}))))}].map(((e,s)=>(0,t.createElement)(L,{key:s,integration:e,toggleLabel:(0,o.__)("Enable integration","wordpress-seo"),initialActivationState:y(e),isNetworkControlEnabled:g(e),isMultisiteAvailable:d(e),beforeToggle:w})))];function Ie(e,s,a=""){return(0,i.createInterpolateElement)(e,{a:(0,t.createElement)("a",{id:a,href:s,target:"_blank",rel:"noopener noreferrer"})})}const Se=({title:e,description:s,elements:a})=>(0,t.createElement)("section",null,(0,t.createElement)("div",{className:"yst-mb-8"},(0,t.createElement)("h2",{className:"yst-mb-2 yst-text-lg yst-font-medium"},e),(0,t.createElement)("p",{className:"yst-text-tiny"},s)),(0,t.createElement)("div",{className:"yst-grid yst-grid-cols-1 yst-gap-6 sm:yst-grid-cols-2 md:yst-grid-cols-3 lg:yst-grid-cols-4"},a));function ze(){return(0,t.createElement)("div",{className:"yst-h-full yst-flex yst-flex-col yst-bg-white yst-rounded-lg yst-shadow"},(0,t.createElement)("header",{className:"yst-border-b yst-border-slate-200"},(0,t.createElement)("div",{className:"yst-max-w-screen-sm yst-p-8"},(0,t.createElement)(r.Title,{as:"h1",className:"yst-flex yst-items-center"},(0,o.__)("Integrations","wordpress-seo")),(0,t.createElement)("p",{className:"yst-text-tiny yst-mt-3"},(0,o.sprintf)(/* translators: 1: Yoast SEO */ (0,o.__)("%s can integrate with other products, to help you further improve your website. You can enable or disable these integrations below.","wordpress-seo"),"Yoast SEO")))),(0,t.createElement)("div",{className:"yst-flex-grow yst-max-w-6xl yst-p-8"},(0,t.createElement)(Se,{title:(0,o.__)("Recommended integrations","wordpress-seo"),elements:Ve}),(0,t.createElement)("hr",{className:"yst-my-12"}),(0,t.createElement)(Se,{title:(0,o.__)("Schema API integrations","wordpress-seo"),description:Ie((0,o.sprintf)(/* translators: 1: anchor tag linking to our schema API docs; 2: closing anchor tag. */ (0,o.__)("Unlock rich results in Google search by using plugins that integrate with the %1$sYoast Schema API%2$s.","wordpress-seo"),"",""),"https://developer.yoast.com/features/schema/api/","schema-api-link"),elements:xe}),(0,t.createElement)("hr",{className:"yst-my-12"}),(0,t.createElement)(Se,{title:(0,o.__)("Plugin integrations","wordpress-seo"),elements:te}),(0,t.createElement)("hr",{className:"yst-my-12"}),(0,t.createElement)(Se,{title:(0,o.__)("Other integrations","wordpress-seo"),elements:I})))}Se.propTypes={title:l.PropTypes.string,description:l.PropTypes.node,elements:l.PropTypes.array};const Ce=window.yoast.styledComponents,je=window.yoast.externals.contexts,Re=({theme:e,location:s,children:a})=>(0,t.createElement)(je.LocationProvider,{value:s},(0,t.createElement)(Ce.ThemeProvider,{theme:e},a));Re.propTypes={theme:c().object.isRequired,location:c().oneOf(["sidebar","metabox","modal"]).isRequired,children:c().element.isRequired};const Fe=Re,Be=[];let He=null;class De extends i.Component{constructor(e){super(e),this.state={registeredComponents:[]}}registerComponent(e,t){this.setState({registeredComponents:[...this.state.registeredComponents,{key:e,Component:t}]})}render(){return this.state.registeredComponents.map((({Component:e,key:s})=>(0,t.createElement)(e,{key:s})))}}window.YoastSEO=window.YoastSEO||{},window.YoastSEO._registerReactComponent=function(e,t){null===He||null===He.current?Be.push({key:e,Component:t}):He.current.registerComponent(e,t)},n()((()=>{const e={isRtl:Boolean((0,s.get)(window,"wpseoScriptData.metabox.isRtl",!1))};!function(e,a){const n=(0,s.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1});He=(0,i.createRef)();const r={isRtl:n.isRtl};(0,i.render)((0,t.createElement)(Fe,{theme:r,location:"sidebar"},(0,t.createElement)(N.SlotFillProvider,null,(0,t.createElement)(i.Fragment,null,a,(0,t.createElement)(De,{ref:He})))),document.getElementById(e)),Be.forEach((e=>{He.current.registerComponent(e.key,e.Component)}))}("wpseo-integrations",(0,t.createElement)(r.Root,{context:e},(0,t.createElement)(ze,null)))}))})();js/dist/faq-block.js000064400000023646147206602470010343 0ustar00(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,s=window.wp.blockEditor,n=window.wp.blocks,o=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"version":"22.7","name":"yoast/faq-block","title":"Yoast FAQ","description":"List your Frequently Asked Questions in an SEO-friendly way.","category":"yoast-structured-data-blocks","icon":"editor-ul","keywords":["FAQ","Frequently Asked Questions","Schema","SEO","Structured Data"],"textdomain":"wordpress-seo","attributes":{"questions":{"type":"array"},"additionalListCssClasses":{"type":"string"}},"example":{"attributes":{"steps":[{"id":"faq-question-1","question":[],"answer":[]},{"id":"faq-question-2","question":[],"answer":[]}]}},"editorScript":"yoast-seo-faq-block","editorStyle":"yoast-seo-structured-data-blocks"}'),i=window.yoast.propTypes;var r=e.n(i);const a=window.wp.i18n,u=window.wp.a11y,c=window.wp.isShallowEqual,l=window.wp.element,h=window.wp.components,d=function(e){return class extends l.Component{render(){return(0,t.createElement)(l.Fragment,null,(0,t.createElement)(e,{...this.props})," ")}}},p=d(s.RichText.Content);class m extends l.Component{constructor(e){super(e),this.onSelectImage=this.onSelectImage.bind(this),this.onFocusAnswer=this.onFocusAnswer.bind(this),this.onFocusQuestion=this.onFocusQuestion.bind(this),this.onChangeAnswer=this.onChangeAnswer.bind(this),this.onChangeQuestion=this.onChangeQuestion.bind(this),this.onInsertQuestion=this.onInsertQuestion.bind(this),this.onRemoveQuestion=this.onRemoveQuestion.bind(this),this.onMoveDown=this.onMoveDown.bind(this),this.onMoveUp=this.onMoveUp.bind(this)}getMediaUploadButton(e){return(0,t.createElement)(h.Button,{className:"schema-faq-section-button faq-section-add-media",icon:"insert",onClick:e.open},(0,a.__)("Add image","wordpress-seo"))}onFocusQuestion(){this.props.onFocus("question",this.props.index)}onFocusAnswer(){this.props.onFocus("answer",this.props.index)}onChangeQuestion(e){const{index:t,onChange:s,attributes:{answer:n,question:o}}=this.props;s(e,n,o,n,t)}onChangeAnswer(e){const{index:t,onChange:s,attributes:{answer:n,question:o}}=this.props;s(o,e,o,n,t)}onInsertQuestion(){this.props.insertQuestion(this.props.index)}onRemoveQuestion(){this.props.removeQuestion(this.props.index)}onMoveUp(){this.props.isFirst||this.props.onMoveUp(this.props.index)}onMoveDown(){this.props.isLast||this.props.onMoveDown(this.props.index)}getButtons(){const{attributes:e}=this.props;return(0,t.createElement)("div",{className:"schema-faq-section-button-container"},(0,t.createElement)(s.MediaUpload,{onSelect:this.onSelectImage,allowedTypes:["image"],value:e.id,render:this.getMediaUploadButton}),(0,t.createElement)(h.Button,{className:"schema-faq-section-button",icon:"trash",label:(0,a.__)("Delete question","wordpress-seo"),onClick:this.onRemoveQuestion}),(0,t.createElement)(h.Button,{className:"schema-faq-section-button",icon:"insert",label:(0,a.__)("Insert question","wordpress-seo"),onClick:this.onInsertQuestion}))}getMover(){return(0,t.createElement)("div",{className:"schema-faq-section-mover"},(0,t.createElement)(h.Button,{className:"editor-block-mover__control",onClick:this.onMoveUp,icon:"arrow-up-alt2",label:(0,a.__)("Move question up","wordpress-seo"),"aria-disabled":this.props.isFirst}),(0,t.createElement)(h.Button,{className:"editor-block-mover__control",onClick:this.onMoveDown,icon:"arrow-down-alt2",label:(0,a.__)("Move question down","wordpress-seo"),"aria-disabled":this.props.isLast}))}onSelectImage(e){const{attributes:{answer:s,question:n},index:o}=this.props;let i=s.slice();const r=(0,t.createElement)("img",{className:`wp-image-${e.id}`,alt:e.alt,src:e.url,style:"max-width:100%;"});i.push?i.push(r):i=[i,r],this.props.onChange(n,i,n,s,o)}static getImageSrc(e){if(!e||!e.filter)return!1;const t=e.filter((e=>e&&e.type&&"img"===e.type))[0];return!!t&&t.props.src}static Content(e){return(0,t.createElement)("div",{className:"schema-faq-section",id:e.id,key:e.id},(0,t.createElement)(p,{tagName:"strong",className:"schema-faq-question",key:e.id+"-question",value:e.question}),(0,t.createElement)(p,{tagName:"p",className:"schema-faq-answer",key:e.id+"-answer",value:e.answer}))}shouldComponentUpdate(e){return!(0,c.isShallowEqualObjects)(e,this.props)}render(){const{attributes:e,isSelected:n}=this.props,{id:o,question:i,answer:r}=e;return(0,t.createElement)("div",{className:"schema-faq-section",key:o},(0,t.createElement)(s.RichText,{identifier:o+"-question",className:"schema-faq-question",tagName:"p",key:o+"-question",value:i,onChange:this.onChangeQuestion,onFocus:this.onFocusQuestion,unstableOnFocus:this.onFocusQuestion,placeholder:(0,a.__)("Enter a question","wordpress-seo"),allowedFormats:["core/italic","core/strikethrough","core/link","core/annotation"]}),(0,t.createElement)(s.RichText,{identifier:o+"-answer",className:"schema-faq-answer",tagName:"p",key:o+"-answer",value:r,onChange:this.onChangeAnswer,onFocus:this.onFocusAnswer,unstableOnFocus:this.onFocusAnswer,placeholder:(0,a.__)("Enter the answer to the question","wordpress-seo")}),n&&(0,t.createElement)("div",{className:"schema-faq-section-controls-container"},this.getMover(),this.getButtons()))}}m.propTypes={index:r().number.isRequired,attributes:r().object.isRequired,onChange:r().func.isRequired,insertQuestion:r().func.isRequired,removeQuestion:r().func.isRequired,onFocus:r().func.isRequired,onMoveUp:r().func.isRequired,onMoveDown:r().func.isRequired,isSelected:r().bool.isRequired,isFirst:r().bool.isRequired,isLast:r().bool.isRequired};const q=d(m.Content);class w extends l.Component{constructor(e){super(e),this.state={focus:""},this.changeQuestion=this.changeQuestion.bind(this),this.insertQuestion=this.insertQuestion.bind(this),this.removeQuestion=this.removeQuestion.bind(this),this.swapQuestions=this.swapQuestions.bind(this),this.moveQuestionDown=this.moveQuestionDown.bind(this),this.moveQuestionUp=this.moveQuestionUp.bind(this),this.setFocus=this.setFocus.bind(this),this.onAddQuestionButtonClick=this.onAddQuestionButtonClick.bind(this)}static generateId(e){return`${e}-${(new Date).getTime()}`}onAddQuestionButtonClick(){this.insertQuestion(null,[],[],!1)}changeQuestion(e,t,s,n,o){const i=this.props.attributes.questions?this.props.attributes.questions.slice():[];if(o>=i.length)return;if(i[o].question!==s||i[o].answer!==n)return;i[o]={id:i[o].id,question:e,answer:t,jsonQuestion:(0,l.renderToString)(e),jsonAnswer:(0,l.renderToString)(t)};const r=m.getImageSrc(t);r&&(i[o].jsonImageSrc=r),this.props.setAttributes({questions:i})}insertQuestion(e=null,t=[],s=[],n=!0){const o=this.props.attributes.questions?this.props.attributes.questions.slice():[];null===e&&(e=o.length-1),o.splice(e+1,0,{id:w.generateId("faq-question"),question:t,answer:s,jsonQuestion:"",jsonAnswer:""}),this.props.setAttributes({questions:o}),n?setTimeout(this.setFocus.bind(this,"question",e)):(0,u.speak)((0,a.__)("New question added","wordpress-seo"))}swapQuestions(e,t){const s=this.props.attributes.questions?this.props.attributes.questions.slice():[],n=s[e];s[e]=s[t],s[t]=n,this.props.setAttributes({questions:s});const[o,i]=this.state.focus.split(":");o===`${e}`?this.setFocus(i,t):o===`${t}`&&this.setFocus(i,e)}moveQuestionUp(e){this.swapQuestions(e,e-1)}moveQuestionDown(e){this.swapQuestions(e,e+1)}removeQuestion(e){const t=this.props.attributes.questions?this.props.attributes.questions.slice():[];t.splice(e,1),this.props.setAttributes({questions:t});let s=0;t[e]?s=e:t[e-1]&&(s=e-1),this.setFocus("question",s)}setFocus(e,t){const s=`${t}:${e}`;s!==this.state.focus&&this.setState({focus:s})}getAddQuestionButton(){return(0,t.createElement)(h.Button,{icon:"insert",onClick:this.onAddQuestionButtonClick,className:"schema-faq-add-question"},(0,a.__)("Add question","wordpress-seo"))}getQuestions(){const{attributes:e}=this.props;if(!e.questions)return null;const[s]=this.state.focus.split(":");return e.questions.map(((n,o)=>(0,t.createElement)(m,{index:o,key:n.id,attributes:n,insertQuestion:this.insertQuestion,removeQuestion:this.removeQuestion,onChange:this.changeQuestion,onFocus:this.setFocus,isSelected:s===`${o}`,onMoveUp:this.moveQuestionUp,onMoveDown:this.moveQuestionDown,isFirst:0===o,isLast:o===e.questions.length-1})))}static Content(e){const{questions:s,className:n}=e,o=s?s.map(((e,s)=>(0,t.createElement)(q,{key:s,...e}))):null,i=["schema-faq",n].filter((e=>e)).join(" ");return(0,t.createElement)("div",{className:i},o)}render(){const{className:e}=this.props,s=["schema-faq",e].filter((e=>e)).join(" ");return(0,t.createElement)("div",{className:s},(0,t.createElement)("div",null,this.getQuestions()),(0,t.createElement)("div",{className:"schema-faq-buttons"},this.getAddQuestionButton()))}}function b(e){const n=d(s.RichText.Content);return(0,t.createElement)("div",{className:"schema-faq-section",key:e.id},(0,t.createElement)(n,{tagName:"strong",className:"schema-faq-question",key:e.id+"-question",value:e.question}),(0,t.createElement)(n,{tagName:"p",className:"schema-faq-answer",key:e.id+"-answer",value:e.answer}))}function g(e){const{questions:s,className:n}=e.attributes,o=d(b),i=s?s.map(((e,s)=>(0,t.createElement)(o,{key:s,...e}))):null,r=["schema-faq",n].filter((e=>e)).join(" ");return(0,t.createElement)("div",{className:r},i)}w.propTypes={attributes:r().object.isRequired,setAttributes:r().func.isRequired,className:r().string},w.defaultProps={className:""},g.propTypes={attributes:r().object.isRequired};const v={v13_1:g};(0,n.registerBlockType)(o,{edit:({attributes:e,setAttributes:n,className:o})=>{const i=(0,s.useBlockProps)();return e.questions&&0!==e.questions.length||(e.questions=[{id:w.generateId("faq-question"),question:[],answer:[]}]),(0,t.createElement)("div",{...i},(0,t.createElement)(w,{attributes:e,setAttributes:n,className:o}))},save:({attributes:e})=>{const n=s.useBlockProps.save(e);return(0,t.createElement)(w.Content,{...n})},deprecated:[{attributes:o.attributes,save:v.v13_1}]})})();js/dist/externals-redux.js000064400000154350147206602470011633 0ustar00(()=>{"use strict";var e={n:t=>{var r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{ADD_CHECKLIST:()=>Ee,CHANGE_COUNTRY:()=>Mt,CLEAR_FACEBOOK_IMAGE:()=>Kr,CLEAR_TWITTER_IMAGE:()=>Pr,CLOSE_EDITOR_MODAL:()=>et,CUSTOM_FIELD_RESULTS:()=>ar,DISMISS_ALERT:()=>pt,DISMISS_ALERT_SUCCESS:()=>Et,FIND_CUSTOM_FIELDS:()=>sr,GET_SCHEMA_ARTICLE_DATA:()=>Rt,GET_SCHEMA_PAGE_DATA:()=>At,HIDE_REPLACEMENT_VARIABLES:()=>lr,LOAD_ADVANCED_SETTINGS:()=>ee,LOAD_CORNERSTONE_CONTENT:()=>ke,LOAD_ESTIMATED_READING_TIME:()=>L,LOAD_FACEBOOK_PREVIEW:()=>Br,LOAD_FOCUS_KEYWORD:()=>it,LOAD_SNIPPET_EDITOR_DATA:()=>Er,LOAD_TWITTER_PREVIEW:()=>vr,MODAL_DISMISS:()=>Pt,MODAL_OPEN:()=>vt,MODAL_OPEN_NO_KEYPHRASE:()=>bt,NEW_REQUEST:()=>Ft,NO_DATA_FOUND:()=>Kt,OPEN_EDITOR_MODAL:()=>Ze,REFRESH:()=>dr,REMOVE_REPLACEMENT_VARIABLE:()=>ur,RUN_ANALYSIS:()=>ce,SET_ACTIVE_AI_FIXES_BUTTON:()=>V,SET_ACTIVE_MARKER:()=>H,SET_ADVANCED:()=>z,SET_ARTICLE_TYPE:()=>It,SET_BREADCRUMBS_TITLE:()=>J,SET_CANONICAL_URL:()=>Z,SET_CONTENT_IMAGE:()=>Qt,SET_CORNERSTONE_CONTENT:()=>Ue,SET_CURRENT_PROMOTIONS:()=>xe,SET_DISABLED_AI_FIXES_BUTTONS:()=>q,SET_DISMISSED_ALERTS:()=>gt,SET_EDITOR_DATA_CONTENT:()=>Ge,SET_EDITOR_DATA_EXCERPT:()=>qe,SET_EDITOR_DATA_IMAGE_URL:()=>Ye,SET_EDITOR_DATA_SLUG:()=>je,SET_EDITOR_DATA_TITLE:()=>Ve,SET_ESTIMATED_READING_TIME:()=>N,SET_FACEBOOK_DESCRIPTION:()=>Ur,SET_FACEBOOK_IMAGE:()=>Fr,SET_FACEBOOK_TITLE:()=>Wr,SET_FLESCH_READING_EASE:()=>M,SET_FOCUS_KEYWORD:()=>st,SET_IS_PREMIUM:()=>hn,SET_LOGIN_STATUS:()=>Bt,SET_MARKER_PAUSE_STATUS:()=>ut,SET_MARKER_STATUS:()=>ct,SET_NO_FOLLOW:()=>X,SET_NO_INDEX:()=>Q,SET_PAGE_TYPE:()=>wt,SET_POST_ID:()=>Dn,SET_PRIMARY_TAXONOMY:()=>St,SET_PROMINENT_WORDS:()=>k,SET_REQUEST_FAILED:()=>Wt,SET_REQUEST_LIMIT_REACHED:()=>Ut,SET_REQUEST_SUCCEEDED:()=>kt,SET_SETTINGS:()=>$t,SET_SHOPPING_DATA:()=>er,SET_TEXT_LENGTH:()=>W,SET_TWITTER_DESCRIPTION:()=>Dr,SET_TWITTER_IMAGE:()=>Or,SET_TWITTER_TITLE:()=>fr,SET_WARNING_MESSAGE:()=>Yr,SWITCH_MODE:()=>nr,TOGGLE_CORNERSTONE_CONTENT:()=>We,UPDATE_DATA:()=>ir,UPDATE_REPLACEMENT_VARIABLE:()=>or,UPDATE_REPLACEMENT_VARIABLES_BATCH:()=>cr,UPDATE_SETTINGS:()=>Xt,UPDATE_SHORTCODES_FOR_PARSING:()=>le,UPDATE_SNIPPET_DATA:()=>oe,UPDATE_WORDS_TO_HIGHLIGHT:()=>pr,WINCHER_MODAL_DISMISS:()=>$r,WINCHER_MODAL_OPEN:()=>Qr,WINCHER_MODAL_OPEN_NO_KEYPHRASE:()=>Xr,WINCHER_NEW_REQUEST:()=>nn,WINCHER_SET_AUTOMATICALLY_TRACK_ALL_REQUEST:()=>on,WINCHER_SET_KEYPHRASE_LIMIT_REACHED:()=>rn,WINCHER_SET_LOGIN_STATUS:()=>sn,WINCHER_SET_REQUEST_FAILED:()=>tn,WINCHER_SET_REQUEST_SUCCEEDED:()=>en,WINCHER_SET_SEO_PERFORMANCE_TRACKED_KEYPHRASES:()=>yn,WINCHER_SET_SEO_PERFORMANCE_TRACKING_FOR_KEYPHRASE:()=>Sn,WINCHER_SET_TRACK_ALL_REQUEST:()=>an,WINCHER_SET_WEBSITE_ID:()=>mn,WINCHER_UNSET_SEO_PERFORMANCE_TRACKING_FOR_KEYPHRASE:()=>Tn,addChecklist:()=>ge,clearFacebookPreviewImage:()=>Vr,clearTwitterPreviewImage:()=>Lr,closeEditorModal:()=>rt,dismissAlert:()=>mt,findCustomFields:()=>_r,getSchemaArticleData:()=>Ot,getSchemaPageData:()=>Dt,hideReplacementVariables:()=>Ar,loadAdvancedSettingsData:()=>ae,loadCornerstoneContent:()=>Fe,loadEstimatedReadingTime:()=>F,loadFacebookPreviewData:()=>qr,loadFocusKeyword:()=>at,loadTwitterPreviewData:()=>Mr,openEditorModal:()=>tt,refreshSnippetEditor:()=>Ir,removeReplacementVariable:()=>wr,runAnalysis:()=>de,setActiveAIFixesButton:()=>Y,setActiveMarker:()=>G,setAdminUrl:()=>Pn,setAdvanced:()=>ne,setArticleType:()=>ft,setBreadcrumbsTitle:()=>ie,setCanonical:()=>se,setContentImage:()=>Jt,setCornerstoneContent:()=>Ke,setCurrentPromotions:()=>He,setDisabledAIFixesButtons:()=>j,setDismissedAlerts:()=>_t,setEditorDataContent:()=>$e,setEditorDataExcerpt:()=>Xe,setEditorDataImageUrl:()=>ze,setEditorDataSlug:()=>Je,setEditorDataTitle:()=>Qe,setEstimatedReadingTime:()=>U,setFacebookPreviewDescription:()=>Hr,setFacebookPreviewImage:()=>Gr,setFacebookPreviewTitle:()=>xr,setFleschReadingEase:()=>K,setFocusKeyword:()=>ot,setInclusiveLanguageResults:()=>be,setIsPremium:()=>fn,setLinkParams:()=>vn,setMarkerPauseStatus:()=>dt,setMarkerStatus:()=>lt,setNoFollow:()=>re,setNoIndex:()=>te,setOverallInclusiveLanguageScore:()=>Le,setOverallReadabilityScore:()=>Ce,setOverallSeoScore:()=>Ne,setPageType:()=>ht,setPluginUrl:()=>bn,setPostId:()=>On,setPrimaryTaxonomyId:()=>Tt,setProminentWords:()=>B,setReadabilityResults:()=>ve,setSEMrushChangeCountry:()=>qt,setSEMrushDismissModal:()=>Ct,setSEMrushLoginStatus:()=>jt,setSEMrushNewRequest:()=>xt,setSEMrushNoKeyphraseMessage:()=>Lt,setSEMrushNoResultsFound:()=>Yt,setSEMrushOpenModal:()=>Nt,setSEMrushRequestFailed:()=>Gt,setSEMrushRequestSucceeded:()=>Ht,setSEMrushSetRequestLimitReached:()=>Vt,setSeoResultsForKeyword:()=>Pe,setSettings:()=>zt,setShoppingData:()=>tr,setTextLength:()=>x,setTwitterPreviewDescription:()=>Cr,setTwitterPreviewImage:()=>Nr,setTwitterPreviewTitle:()=>br,setWarningMessage:()=>jr,setWincherAutomaticKeyphaseTracking:()=>gn,setWincherDismissModal:()=>zr,setWincherLoginStatus:()=>pn,setWincherNewRequest:()=>cn,setWincherNoKeyphrase:()=>Zr,setWincherOpenModal:()=>Jr,setWincherRequestFailed:()=>un,setWincherRequestSucceeded:()=>ln,setWincherSetKeyphraseLimitReached:()=>dn,setWincherTrackAllKeyphrases:()=>En,setWincherTrackedKeyphrases:()=>Rn,setWincherTrackingForKeyphrase:()=>In,setWincherWebsiteId:()=>wn,setWistiaEmbedPermission:()=>Cn,setWistiaEmbedPermissionValue:()=>Nn,switchMode:()=>gr,toggleCornerstoneContent:()=>Be,unsetWincherTrackingForKeyphrase:()=>An,updateAnalysisData:()=>ue,updateData:()=>mr,updateReplacementVariable:()=>Sr,updateReplacementVariablesBatch:()=>Tr,updateSettings:()=>Zt,updateShortcodesForParsing:()=>pe,updateWordsToHighlight:()=>yr});var r={};e.r(r),e.d(r,{getActiveAIFixesButton:()=>hi,getActiveMarker:()=>js,getAdvanced:()=>Pi,getAnalysisData:()=>Rs,getAnalysisTimestamp:()=>Is,getArticleType:()=>Ta,getBaseUrlFromSettings:()=>rs,getBreadcrumbsTitle:()=>vi,getCanonical:()=>bi,getChecklistItems:()=>fs,getContentImage:()=>Ps,getContentLocale:()=>Vi,getDateFromSettings:()=>ns,getDefaultArticleType:()=>Sa,getDefaultPageType:()=>ma,getDescription:()=>ys,getDisabledAIFixesButtons:()=>fi,getEditorContext:()=>Mi,getEditorDataContent:()=>Yi,getEditorDataExcerpt:()=>$i,getEditorDataExcerptWithFallback:()=>Qi,getEditorDataImageFallback:()=>zi,getEditorDataImageUrl:()=>Xi,getEditorDataSlug:()=>Ji,getEditorDataTitle:()=>ji,getEditorType:()=>Gi,getEstimatedReadingTime:()=>Ti,getFacebookAltText:()=>xs,getFacebookDescription:()=>Fs,getFacebookDescriptionFallback:()=>qs,getFacebookDescriptionOrFallback:()=>Ys,getFacebookImageSrc:()=>Bs,getFacebookImageUrl:()=>Ks,getFacebookTitle:()=>Us,getFacebookTitleFallback:()=>Gs,getFacebookTitleOrFallback:()=>Vs,getFacebookWarnings:()=>Hs,getFleschReadingEaseDifficulty:()=>wi,getFleschReadingEaseScore:()=>yi,getFocusKeyphrase:()=>Zi,getFocusKeyphraseErrors:()=>es,getImageFallback:()=>vs,getInclusiveLanguageResults:()=>da,getIsBlockEditor:()=>Fi,getIsDraft:()=>Hi,getIsElementorEditor:()=>Ki,getIsFrontPage:()=>Bi,getIsKeywordAnalysisActive:()=>ea,getIsLoading:()=>Ci,getIsModalOpen:()=>Os,getIsPremium:()=>so,getIsProduct:()=>Wi,getIsProductTerm:()=>Ui,getIsTerm:()=>xi,getIsWooCommerceActive:()=>ta,getIsWooSeoActive:()=>ra,getIsWooSeoUpsell:()=>na,getIsWooSeoUpsellTerm:()=>ia,getMarkButtonStatus:()=>ga,getMarkerPauseStatus:()=>$s,getMarksButtonStatus:()=>Xs,getNoFollow:()=>Oi,getNoIndex:()=>Di,getPageType:()=>_a,getPermalink:()=>ws,getPostId:()=>ao,getPostOrPageString:()=>ki,getPreference:()=>Js,getPreferences:()=>Zs,getPrimaryTaxonomyId:()=>sa,getReadabilityResults:()=>ua,getRecommendedReplaceVars:()=>is,getReplaceVars:()=>as,getReplacedExcerpt:()=>Ws,getResultById:()=>Ea,getResultsForFocusKeyword:()=>pa,getResultsForKeyword:()=>la,getSEMrushIsRequestPending:()=>Ia,getSEMrushLoginStatus:()=>Pa,getSEMrushModalOpen:()=>ya,getSEMrushNoKeyphraseMessage:()=>wa,getSEMrushRequestHasData:()=>Oa,getSEMrushRequestIsSuccess:()=>Aa,getSEMrushRequestKeyphrase:()=>fa,getSEMrushRequestLimitReached:()=>ha,getSEMrushRequestResponse:()=>Ra,getSEMrushSelectedCountry:()=>Da,getSeoDescriptionTemplate:()=>Ms,getSeoResults:()=>ca,getSeoTitle:()=>Ts,getSeoTitleTemplate:()=>Cs,getSeoTitleTemplateNoFallback:()=>Ns,getShoppingData:()=>va,getShortcodesForParsing:()=>As,getSiteIconUrlFromSettings:()=>ss,getSiteName:()=>ts,getSiteUrl:()=>bs,getSnippetEditorData:()=>gs,getSnippetEditorDescription:()=>ds,getSnippetEditorDescriptionWithTemplate:()=>ps,getSnippetEditorIsLoading:()=>_s,getSnippetEditorMode:()=>cs,getSnippetEditorPreviewImageUrl:()=>Ss,getSnippetEditorSlug:()=>Es,getSnippetEditorTemplates:()=>os,getSnippetEditorTitle:()=>ls,getSnippetEditorTitleWithTemplate:()=>us,getSnippetEditorWordsToHighlight:()=>ms,getSocialDescriptionTemplate:()=>ks,getSocialTitleTemplate:()=>Ls,getTextLength:()=>Ai,getTwitterAltText:()=>ka,getTwitterDescription:()=>Ca,getTwitterDescriptionFallback:()=>Ka,getTwitterDescriptionOrFallback:()=>Ba,getTwitterImageSrc:()=>Ma,getTwitterImageType:()=>La,getTwitterImageUrl:()=>Na,getTwitterTitle:()=>ba,getTwitterTitleFallback:()=>Ua,getTwitterTitleOrFallback:()=>Fa,getTwitterWarnings:()=>Wa,getWarningMessage:()=>xa,getWincherAllKeyphrasesMissRanking:()=>no,getWincherHistoryDaysLimit:()=>Xa,getWincherKeyphraseLimitReached:()=>Ya,getWincherLimit:()=>Qa,getWincherLoginStatus:()=>ja,getWincherModalOpen:()=>Ha,getWincherPermalink:()=>io,getWincherRequestIsSuccess:()=>Va,getWincherRequestResponse:()=>qa,getWincherTrackableKeyphrases:()=>ro,getWincherTrackedKeyphrases:()=>eo,getWincherWebsiteId:()=>Za,hasWincherNoKeyphrase:()=>Ga,hasWincherTrackedKeyphrases:()=>to,isAlertDismissed:()=>zs,isCornerstoneContent:()=>hs,isFleschReadingEaseAvailable:()=>Ii,isFormalitySupported:()=>Ri,isMarkingAvailable:()=>Qs,isPromotionActive:()=>Ds,isWincherNewlyAuthenticated:()=>$a,selectAdminLink:()=>co,selectAdminUrl:()=>oo,selectImageLink:()=>go,selectLink:()=>po,selectLinkParam:()=>uo,selectLinkParams:()=>lo,selectPluginUrl:()=>Eo,selectWistiaEmbedPermission:()=>mo,selectWistiaEmbedPermissionError:()=>To,selectWistiaEmbedPermissionStatus:()=>So,selectWistiaEmbedPermissionValue:()=>_o,shouldWincherAutomaticallyTrackAll:()=>Ja,shouldWincherTrackAll:()=>za});const n=window.yoast.reduxJsToolkit,i=window.lodash,s="adminUrl",a=(0,n.createSlice)({name:s,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),o=(a.getInitialState,{selectAdminUrl:e=>(0,i.get)(e,s,"")});o.selectAdminLink=(0,n.createSelector)([o.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}}));const c=a.actions,l=a.reducer,u=window.wp.url,d="linkParams",p=(0,n.createSlice)({name:d,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),E=(p.getInitialState,{selectLinkParam:(e,t,r={})=>(0,i.get)(e,`${d}.${t}`,r),selectLinkParams:e=>(0,i.get)(e,d,{})});E.selectLink=(0,n.createSelector)([E.selectLinkParams,(e,t)=>t,(e,t,r={})=>r],((e,t,r)=>(0,u.addQueryArgs)(t,{...e,...r})));const g=p.actions,m=p.reducer,_=(0,n.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:r="default",title:i,description:s})=>({payload:{id:e||(0,n.nanoid)(),variant:t,size:r,title:i||"",description:s}})},removeNotification:(e,{payload:t})=>(0,i.omit)(e,t)}}),S=(_.getInitialState,_.actions,_.reducer,"pluginUrl"),T=(0,n.createSlice)({name:S,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),y=(T.getInitialState,{selectPluginUrl:e=>(0,i.get)(e,S,"")});y.selectImageLink=(0,n.createSelector)([y.selectPluginUrl,(e,t,r="images")=>r,(e,t)=>t],((e,t,r)=>[(0,i.trimEnd)(e,"/"),(0,i.trim)(t,"/"),(0,i.trimStart)(r,"/")].join("/")));const w=T.actions,I=T.reducer;window.wp.apiFetch;const A="request",R="success",h="error",f="idle",D="wistiaEmbedPermission",O=(0,n.createSlice)({name:D,initialState:{value:!1,status:f,error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${D}/${A}`,(e=>{e.status="loading"})),e.addCase(`${D}/${R}`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${D}/${h}`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,i.get)(t,"error.code",500),message:(0,i.get)(t,"error.message","Unknown")}}))}}),P=(O.getInitialState,{selectWistiaEmbedPermission:e=>(0,i.get)(e,D,{value:!1,status:f}),selectWistiaEmbedPermissionValue:e=>(0,i.get)(e,[D,"value"],!1),selectWistiaEmbedPermissionStatus:e=>(0,i.get)(e,[D,"status"],f),selectWistiaEmbedPermissionError:e=>(0,i.get)(e,[D,"error"],{})}),v={...O.actions,setWistiaEmbedPermission:function*(e){yield{type:`${D}/${A}`};try{return yield{type:D,payload:e},{type:`${D}/${R}`,payload:{value:e}}}catch(t){return{type:`${D}/${h}`,payload:{error:t,value:e}}}}},b=O.reducer;class C{static get estimatedReadingTimeElement(){return document.getElementById("yoast_wpseo_estimated-reading-time-minutes")}static get estimatedReadingTime(){return C.estimatedReadingTimeElement&&C.estimatedReadingTimeElement.value||""}static set estimatedReadingTime(e){C.estimatedReadingTimeElement&&(C.estimatedReadingTimeElement.value=e)}}const N="SET_ESTIMATED_READING_TIME",L="LOAD_ESTIMATED_READING_TIME",M="SET_FLESCH_READING_EASE",k="SET_PROMINENT_WORDS",W="SET_TEXT_LENGTH",U=e=>(C.estimatedReadingTime=e.toString(),{type:N,payload:e}),F=()=>({type:L,payload:(0,i.toSafeInteger)(C.estimatedReadingTime)}),K=({score:e,difficulty:t})=>({type:M,payload:{score:e,difficulty:t}}),B=e=>({type:k,payload:e}),x=e=>({type:W,payload:e}),H="WPSEO_SET_ACTIVE_MARKER";function G(e){return{type:H,activeMarker:e}}const V="SET_ACTIVE_AI_FIXES_BUTTON",q="SET_DISABLED_AI_FIXES_BUTTONS";function Y(e){return{type:V,activeAIButton:e}}function j(e){return{type:q,disabledAIButtons:e}}class ${static get noIndexElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_meta-robots-noindex":"hidden_wpseo_noindex")}static get noFollowElement(){return document.getElementById("yoast_wpseo_meta-robots-nofollow")}static get advancedElement(){return document.getElementById("yoast_wpseo_meta-robots-adv")}static get breadcrumbsTitleElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_bctitle":"hidden_wpseo_bctitle")}static get canonicalElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_canonical":"hidden_wpseo_canonical")}static get noIndex(){return $.noIndexElement&&$.noIndexElement.value||""}static set noIndex(e){$.noIndexElement.value=e}static get noFollow(){return $.noFollowElement&&$.noFollowElement.value||""}static set noFollow(e){$.noFollowElement.value=e}static get advanced(){return $.advancedElement&&$.advancedElement.value||""}static set advanced(e){$.advancedElement.value=e}static get breadcrumbsTitle(){return $.breadcrumbsTitleElement&&$.breadcrumbsTitleElement.value||""}static set breadcrumbsTitle(e){$.breadcrumbsTitleElement.value=e}static get canonical(){return $.canonicalElement&&$.canonicalElement.value||""}static set canonical(e){$.canonicalElement.value=e}}const Q="SET_NO_INDEX",X="SET_NO_FOLLOW",z="SET_ADVANCED",J="SET_BREADCRUMBS_TITLE",Z="SET_CANONICAL_URL",ee="LOAD_ADVANCED_SETTINGS",te=e=>($.noIndex=e,{type:Q,value:e}),re=e=>($.noFollow=e,{type:X,value:e}),ne=e=>($.advanced=e.join(","),{type:z,value:e}),ie=e=>($.breadcrumbsTitle=e,{type:J,value:e}),se=e=>($.canonical=e,{type:Z,value:e}),ae=()=>({type:ee,settings:{noIndex:$.noIndex,noFollow:$.noFollow,advanced:$.advanced.split(","),breadcrumbsTitle:$.breadcrumbsTitle,canonical:$.canonical,isLoading:!1}}),oe="SNIPPET_EDITOR_UPDATE_ANALYSIS_DATA",ce="RUN_ANALYSIS",le="UPDATE_SHORTCODES_FOR_PARSING";function ue(e){return{type:oe,data:e}}function de(){return{type:ce,timestamp:Date.now()}}function pe(e){return{type:le,shortcodesForParsing:e}}const Ee="ADD_CHECKLIST";function ge(e,t){return{type:Ee,name:e,data:t}}class me{static get keyphraseElement(){var e;return document.getElementById(null!==(e=window.wpseoScriptData)&&void 0!==e&&e.isPost?"yoast_wpseo_focuskw":"hidden_wpseo_focuskw")}static get isCornerstoneElement(){var e;return document.getElementById(null!==(e=window.wpseoScriptData)&&void 0!==e&&e.isPost?"yoast_wpseo_is_cornerstone":"hidden_wpseo_is_cornerstone")}static get seoScoreElement(){var e;return document.getElementById(null!==(e=window.wpseoScriptData)&&void 0!==e&&e.isPost?"yoast_wpseo_linkdex":"hidden_wpseo_linkdex")}static get readabilityScoreElement(){var e;return document.getElementById(null!==(e=window.wpseoScriptData)&&void 0!==e&&e.isPost?"yoast_wpseo_content_score":"hidden_wpseo_content_score")}static get inclusiveLanguageScoreElement(){var e;return document.getElementById(null!==(e=window.wpseoScriptData)&&void 0!==e&&e.isPost?"yoast_wpseo_inclusive_language_score":"hidden_wpseo_inclusive_language_score")}static set keyphrase(e){me.keyphraseElement&&(me.keyphraseElement.value=e)}static get keyphrase(){var e,t;return null!==(e=null===(t=me.keyphraseElement)||void 0===t?void 0:t.value)&&void 0!==e?e:""}static set isCornerstone(e){me.isCornerstoneElement&&(me.isCornerstoneElement.value=e?"1":"0")}static get isCornerstone(){var e;return"1"===(null===(e=me.isCornerstoneElement)||void 0===e?void 0:e.value)}static set seoScore(e){me.seoScoreElement&&(me.seoScoreElement.value=e)}static get seoScore(){var e,t;return null!==(e=null===(t=me.seoScoreElement)||void 0===t?void 0:t.value)&&void 0!==e?e:""}static set readabilityScore(e){me.readabilityScoreElement&&(me.readabilityScoreElement.value=e)}static get readabilityScore(){var e,t;return null!==(e=null===(t=me.readabilityScoreElement)||void 0===t?void 0:t.value)&&void 0!==e?e:""}static set inclusiveLanguageScore(e){me.inclusiveLanguageScoreElement&&(me.inclusiveLanguageScoreElement.value=e)}static get inclusiveLanguageScore(){var e,t;return null!==(e=null===(t=me.inclusiveLanguageScoreElement)||void 0===t?void 0:t.value)&&void 0!==e?e:""}}const _e="CONTENT_ANALYSIS_",Se=`${_e}SET_SEO_RESULTS`,Te=`${_e}SET_SEO_RESULTS_FOR_KEYWORD`,ye=`${_e}UPDATE_SEO_RESULT`,we=`${_e}REMOVE_KEYWORD`,Ie=`${_e}SET_READABILITY_RESULTS`,Ae=`${_e}UPDATE_READABILITY_RESULT`,Re=`${_e}SET_INCLUSIVE_LANGUAGE_RESULTS`,he=`${_e}UPDATE_INCLUSIVE_LANGUAGE_RESULT`,fe=`${_e}SET_OVERALL_READABILITY_SCORE`,De=`${_e}SET_OVERALL_SEO_SCORE`,Oe=`${_e}SET_OVERALL_INCLUSIVE_LANGUAGE_SCORE`;function Pe(e,t){return{type:Te,keyword:e,results:t}}function ve(e){return{type:Ie,results:e}}function be(e){return{type:Re,results:e}}function Ce(e){return me.readabilityScore=e,{type:fe,overallScore:e}}function Ne(e,t){return me.seoScore=e,{type:De,keyword:t,overallScore:e}}function Le(e){return me.inclusiveLanguageScore=e,{type:Oe,overallScore:e}}const Me="WPSEO_",ke=`${Me}LOAD_CORNERSTONE_CONTENT`,We=`${Me}TOGGLE_CORNERSTONE_CONTENT`,Ue=`${Me}SET_CORNERSTONE_CONTENT`,Fe=()=>({type:Ue,isCornerstone:me.isCornerstone}),Ke=e=>(me.isCornerstone=e,{type:Ue,isCornerstone:e}),Be=()=>(me.isCornerstone=!me.isCornerstone,{type:We}),xe="SET_CURRENT_PROMOTIONS";function He(e){return{type:xe,payload:e}}const Ge="SET_EDITOR_DATA_CONTENT",Ve="SET_EDITOR_DATA_TITLE",qe="SET_EDITOR_DATA_EXCERPT",Ye="SET_EDITOR_DATA_IMAGE_URL",je="SET_EDITOR_DATA_SLUG";function $e(e){return{type:Ge,content:e}}function Qe(e){return{type:Ve,title:e}}function Xe(e){return{type:qe,excerpt:e}}function ze(e){return{type:Ye,imageUrl:e}}function Je(e){return{type:je,slug:e}}const Ze="OPEN_MODAL",et="CLOSE_MODAL";function tt(e){return{type:Ze,modalKey:e}}function rt(){return{type:et}}const nt="WPSEO_",it=`${nt}LOAD_FOCUS_KEYWORD`,st=`${nt}SET_FOCUS_KEYWORD`,at=()=>({type:it,keyword:me.keyphrase}),ot=function(e){return me.keyphrase=e,{type:st,keyword:e}},ct="WPSEO_SET_MARKER_STATUS",lt=function(e){return{type:ct,marksButtonStatus:e}},ut="WPSEO_SET_MARKER_PAUSE_STATUS";function dt(e){return{type:ut,isMarkerPaused:e}}const pt="DISMISS_ALERT",Et="DISMISS_ALERT_SUCCESS",gt="SET_DISMISSED_ALERTS";function*mt(e){return yield{type:pt,alertKey:e},{type:Et,alertKey:e}}function _t(e){return{type:gt,payload:e}}const St="WPSEO_SET_PRIMARY_TAXONOMY",Tt=(e,t)=>({type:St,taxonomy:e,termId:t});class yt{static get articleTypeInput(){return document.getElementById("yoast_wpseo_schema_article_type")}static get defaultArticleType(){return yt.articleTypeInput.getAttribute("data-default")}static get articleType(){return yt.articleTypeInput.value}static set articleType(e){yt.articleTypeInput.value=e}static get pageTypeInput(){return document.getElementById("yoast_wpseo_schema_page_type")}static get defaultPageType(){return yt.pageTypeInput.getAttribute("data-default")}static get pageType(){return yt.pageTypeInput.value}static set pageType(e){yt.pageTypeInput.value=e}}const wt="SET_PAGE_TYPE",It="SET_ARTICLE_TYPE",At="GET_SCHEMA_PAGE_DATA",Rt="GET_SCHEMA_ARTICLE_DATA",ht=e=>(yt.pageType=e,{type:wt,pageType:e}),ft=e=>(yt.articleType=e,{type:It,articleType:e}),Dt=()=>({type:At,pageType:yt.pageType,defaultPageType:yt.defaultPageType}),Ot=()=>({type:Rt,articleType:yt.articleType,defaultArticleType:yt.defaultArticleType}),Pt="MODAL_DISMISS",vt="MODAL_OPEN",bt="MODAL_OPEN_NO_KEYPHRASE";function Ct(){return{type:Pt}}function Nt(e){return{type:vt,location:e}}function Lt(){return{type:bt}}const Mt="CHANGE_COUNTRY",kt="SET_REQUEST_SUCCEEDED",Wt="SET_REQUEST_FAILED",Ut="SET_LIMIT_REACHED",Ft="NEW_REQUEST",Kt="NO_DATA_FOUND",Bt="SET_LOGIN_STATUS";function xt(e,t){return{type:Ft,countryCode:e,keyphrase:t}}function Ht(e){return{type:kt,response:e}}function Gt(e){return{type:Wt,response:e}}function Vt(){return{type:Ut}}function qt(e){return{type:Mt,countryCode:e}}function Yt(){return{type:Kt}}function jt(e){return{type:Bt,loginStatus:e}}const $t="SET_SETTINGS",Qt="SET_CONTENT_IMAGE",Xt="UPDATE_SNIPPET_EDITOR_SETTINGS",zt=function(e){return{type:$t,settings:e}},Jt=function(e){return{type:Qt,src:e}},Zt=function(e){return{type:Xt,snippetEditor:e}},er="SET_SHOPPING_DATA";function tr(e){return{type:er,shoppingData:e}}const rr=window.yoast.helpers,nr="SNIPPET_EDITOR_SWITCH_MODE",ir="SNIPPET_EDITOR_UPDATE_DATA",sr="SNIPPET_EDITOR_FIND_CUSTOM_FIELDS",ar="SNIPPET_EDITOR_CUSTOM_FIELD_RESULTS",or="SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLE",cr="SNIPPET_EDITOR_UPDATE_REPLACEMENT_VARIABLES_BATCH",lr="SNIPPET_EDITOR_HIDE_REPLACEMENT_VARIABLES",ur="SNIPPET_EDITOR_REMOVE_REPLACEMENT_VARIABLE",dr="SNIPPET_EDITOR_REFRESH",pr="SNIPPET_EDITOR_UPDATE_WORDS_TO_HIGHLIGHT",Er="LOAD_SNIPPET_EDITOR_DATA";function gr(e){return{type:nr,mode:e}}function mr(e){return{type:ir,data:e}}function*_r(e,t){const r=yield{type:sr,query:e,postId:t};return{type:ar,results:r}}function Sr(e,t,r="",n=!1){const i="string"==typeof t?(0,rr.decodeHTML)(t):t;return{type:or,name:e,value:i,label:r,hidden:n}}function Tr(e){return{type:cr,updatedVariables:e}}function yr(e){return{type:pr,wordsToHighlight:e}}function wr(e){return{type:ur,name:e}}function Ir(){return{type:dr,time:(new Date).getMilliseconds()}}function Ar(e){return{type:lr,data:e}}const Rr=window.wp.data;class hr{static get titleElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_twitter-title":"hidden_wpseo_twitter-title")}static get descriptionElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_twitter-description":"hidden_wpseo_twitter-description")}static get imageIdElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_twitter-image-id":"hidden_wpseo_twitter-image-id")}static get imageUrlElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_twitter-image":"hidden_wpseo_twitter-image")}static get title(){return hr.titleElement.value}static set title(e){hr.titleElement.value=e}static set description(e){hr.descriptionElement.value=e}static get description(){return hr.descriptionElement.value}static set imageId(e){hr.imageIdElement.value=e}static get imageId(){return hr.imageIdElement.value}static set imageUrl(e){hr.imageUrlElement.value=e}static get imageUrl(){return hr.imageUrlElement.value}}const fr="SET_TWITTER_TITLE",Dr="SET_TWITTER_DESCRIPTION",Or="SET_TWITTER_IMAGE",Pr="CLEAR_TWITTER_IMAGE",vr="LOAD_TWITTER_PREVIEW",br=e=>(e.trim()===(0,Rr.select)("yoast-seo/editor").getSocialTitleTemplate().trim()?hr.title="":hr.title=e,{type:fr,title:e}),Cr=e=>(e.trim()===(0,Rr.select)("yoast-seo/editor").getSocialDescriptionTemplate().trim()?hr.description="":hr.description=e,{type:Dr,description:e}),Nr=e=>(hr.imageId=e.id,hr.imageUrl=e.url,{type:Or,image:e}),Lr=()=>(hr.imageId="",hr.imageUrl="",{type:Pr}),Mr=()=>{const{getSocialDescriptionTemplate:e,getSocialTitleTemplate:t}=(0,Rr.select)("yoast-seo/editor");return{type:vr,imageId:hr.imageId,imageUrl:hr.imageUrl,description:hr.description||e(),title:hr.title||t()}};class kr{static get titleElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_opengraph-title":"hidden_wpseo_opengraph-title")}static get descriptionElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_opengraph-description":"hidden_wpseo_opengraph-description")}static get imageIdElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_opengraph-image-id":"hidden_wpseo_opengraph-image-id")}static get imageUrlElement(){return document.getElementById(window.wpseoScriptData.isPost?"yoast_wpseo_opengraph-image":"hidden_wpseo_opengraph-image")}static get title(){return kr.titleElement.value}static set title(e){kr.titleElement.value=e}static set description(e){kr.descriptionElement.value=e}static get description(){return kr.descriptionElement.value}static set imageId(e){kr.imageIdElement.value=e}static get imageId(){return kr.imageIdElement.value}static set imageUrl(e){kr.imageUrlElement.value=e}static get imageUrl(){return kr.imageUrlElement.value}}const Wr="SET_FACEBOOK_TITLE",Ur="SET_FACEBOOK_DESCRIPTION",Fr="SET_FACEBOOK_IMAGE",Kr="CLEAR_FACEBOOK_IMAGE",Br="LOAD_FACEBOOK_PREVIEW",xr=e=>(e.trim()===(0,Rr.select)("yoast-seo/editor").getSocialTitleTemplate().trim()?kr.title="":kr.title=e,{type:Wr,title:e}),Hr=e=>(e.trim()===(0,Rr.select)("yoast-seo/editor").getSocialDescriptionTemplate().trim()?kr.description="":kr.description=e,{type:Ur,description:e}),Gr=e=>(kr.imageUrl=e.url,kr.imageId=e.id,{type:Fr,image:e}),Vr=()=>(kr.imageId="",kr.imageUrl="",{type:Kr}),qr=()=>{const{getSocialDescriptionTemplate:e,getSocialTitleTemplate:t}=(0,Rr.select)("yoast-seo/editor");return{type:Br,imageId:kr.imageId,imageUrl:kr.imageUrl,description:kr.description||e(),title:kr.title||t()}},Yr="SET_WARNING_MESSAGE";function jr(e){return{type:Yr,message:e}}const $r="WINCHER_MODAL_DISMISS",Qr="WINCHER_MODAL_OPEN",Xr="WINCHER_MODAL_OPEN_NO_KEYPHRASE";function zr(){return{type:$r}}function Jr(e){return{type:Qr,location:e}}function Zr(){return{type:Xr}}const en="WINCHER_SET_REQUEST_SUCCEEDED",tn="WINCHER_SET_REQUEST_FAILED",rn="WINCHER_SET_KEYPHRASE_LIMIT_REACHED",nn="WINCHER_NEW_REQUEST",sn="WINCHER_SET_LOGIN_STATUS",an="WINCHER_FORCE_SEO_PERFORMANCE_TRACKED_KEYPHRASES",on="WINCHER_SET_AUTOMATICALLY_TRACK_ALL_REQUEST";function cn(){return{type:nn}}function ln(e){return{type:en,response:e}}function un(e){return{type:tn,response:e}}function dn(e){return{type:rn,limit:e}}function pn(e,t){return{type:sn,loginStatus:e,newlyAuthenticated:t}}function En(e){return{type:an,trackAll:e}}function gn(e){return{type:on,automaticallyTrack:e}}const mn="WINCHER_SET_WEBSITE_ID",Sn="WINCHER_SET_SEO_PERFORMANCE_TRACKING_FOR_KEYPHRASE",Tn="WINCHER_UNSET_SEO_PERFORMANCE_TRACKING_FOR_KEYPHRASE",yn="WINCHER_SET_SEO_PERFORMANCE_TRACKED_KEYPHRASES";function wn(e){return{type:mn,websiteId:e}}function In(e){return{type:Sn,keyphraseObject:e}}function An(e){return{type:Tn,untrackedKeyphrase:e}}function Rn(e){return{type:yn,trackedKeyphrases:e}}const hn="SET_IS_PREMIUM",fn=e=>({type:hn,payload:e}),Dn="SET_POST_ID",On=e=>({type:Dn,payload:e}),{setAdminUrl:Pn}=c,{setLinkParams:vn}=g,{setPluginUrl:bn}=w,{setWistiaEmbedPermission:Cn,setWistiaEmbedPermissionValue:Nn}=v,Ln={estimatedReadingTime:0,textLength:{}},Mn={results:[],overallScore:null},kn={};function Wn(e,t,r){return Object.assign({},e,{[t]:{results:r}})}const Un={},Fn=(0,Rr.combineReducers)({seo:function(e=kn,t){switch(t.type){case Se:return function(e){const t={};return e.resultsPerKeyword.forEach((function(e){t[e.keyword]={results:e.results}})),t}(t);case ye:return function(e,t){return e[t.keyword]?-1!==(0,i.findIndex)(e[t.keyword].results,{id:t.result.id})?function(e,t){const r=Array.from(e[t.keyword].results,(e=>e.id===t.result.id?t.result:e));return Object.assign({},e,{[t.keyword]:{results:r}})}(e,t):Object.assign({},e,{[t.keyword]:{results:[...e[t.keyword].results,t.result]}}):Wn(e,t.keyword,[t.result])}(e,t);case we:return(0,i.omit)(e,t.keyword);case Te:return function(e,t){return e[t.keyword]?Object.assign({},e,{[t.keyword]:{results:t.results}}):Wn(e,t.keyword,t.results)}(e,t);case De:return function(e,t){return Object.assign({},e,{[t.keyword]:{...e[t.keyword],overallScore:t.overallScore}})}(e,t);default:return e}},readability:function(e=Un,t){switch(t.type){case Ie:return function(e,t){return Object.assign({},e,{results:t.results})}(e,t);case Ae:return function(e,t){if((0,i.isUndefined)(e.results))return Object.assign({},e,{results:[t.result]});const r=(0,i.findIndex)(e.results,{id:t.result.id});if(-1!==r){const n=e.results.filter((function(t){return t!==e.results[r]}));return Object.assign({},e,{results:n.concat(t.result)})}return Object.assign({},e,{results:[...e.results,t.result]})}(e,t);case fe:return function(e,t){return Object.assign({},e,{overallScore:t.overallScore})}(e,t);default:return e}},inclusiveLanguage:function(e=Mn,t){switch(t.type){case Re:return function(e,t){return Object.assign({},e,{results:t.results})}(e,t);case he:return function(e,t){if((0,i.isUndefined)(e.results))return Object.assign({},e,{results:[t.result]});const r=(0,i.findIndex)(e.results,{id:t.result.id});if(-1!==r){const n=e.results.filter((function(t){return t!==e.results[r]}));return Object.assign({},e,{results:n.concat(t.result)})}return Object.assign({},e,{results:[...e.results,t.result]})}(e,t);case Oe:return function(e,t){return Object.assign({},e,{overallScore:t.overallScore})}(e,t);default:return e}}}),Kn={noIndex:"",noFollow:"",advanced:[],breadcrumbsTitle:"",canonical:"",isLoading:!0},Bn={activeAIButton:null,disabledAIButtons:{}},xn={snippet:{},timestamp:0,shortcodesForParsing:[]},Hn={checklistItems:{}},Gn={content:"",excerpt:"",imageUrl:"",slug:"",title:""},Vn={openedModal:""},qn={title:"",description:"",warnings:[],image:{url:"",id:"",alt:""}};function Yn(){return(0,i.get)(window,"wpseoScriptData.metabox",{intl:{},isRtl:!1})}function jn(){const e=Yn();return!0===(0,i.get)(e,"contentAnalysisActive",!1)}function $n(){const e=Yn();return!0===(0,i.get)(e,"keywordAnalysisActive",!1)}function Qn(){const e=Yn();return!0===(0,i.get)(e,"inclusiveLanguageAnalysisActive",!1)}function Xn(){const e=Yn();return!0===(0,i.get)(e,"cornerstoneActive",!1)}const zn=function(){const e=Yn();return(0,i.get)(e,"wordFormRecognitionActive",!1)};function Jn(){const e=Yn();return!0===(0,i.get)(e,"semrushIntegrationActive",!1)}function Zn(){const e=Yn();return!0===(0,i.get)(e,"wincherIntegrationActive",!1)}const ei={},ti={pageType:"",defaultPageType:"",articleType:"",defaultArticleType:""},ri={whichModalOpen:"none",displayNoKeyphraseMessage:!1},ni={isRequestPending:!1,keyphrase:"",countryCode:"us",isSuccess:!1,response:null,limitReached:!1,hasData:!0,isLoggedIn:!1},ii={},si=window.wp.i18n,ai=window.wp.sanitize;function oi(e){return e.charAt(0).toUpperCase()+e.slice(1)}window.React,window.wp.element;const{stripHTMLTags:ci}=rr.strings;function li(e){return e=function(e){if(!["ct_","cf_","pt_"].includes(e.substring(0,3)))return e.replace(/_/g," ");const t=e.slice(0,3);switch(-1!==(e=e.slice(3)).indexOf("desc_")&&(e=e.slice(5)+" description"),t){case"ct_":e+=" (custom taxonomy)";break;case"cf_":e+=" (custom field)";break;case"pt_":e="Post type ("+(e=e.replace("single","singular"))+")"}return e}(e),oi(e)}function ui(e,t="_"){return e.replace(/\s/g,t)}const di={title:"",description:"",warnings:[],image:{url:"",id:"",alt:""}},pi={message:[]},Ei={whichModalOpen:"none",hasNoKeyphrase:!1},gi={isSuccess:!1,response:null,limitReached:!1,isLoggedIn:!1,isNewlyAuthenticated:!1,limit:10,trackAll:!1,automaticallyTrack:!1,historyDaysLimit:0},mi={websiteId:"",trackedKeyphrases:null,trackAll:!1},_i={activeMarker:function(e=null,t){return t.type===H?t.activeMarker:e},[s]:l,advancedSettings:(e=Kn,t)=>{switch(t.type){case ee:return{...e,...t.settings};case Q:return{...e,noIndex:t.value};case X:return{...e,noFollow:t.value};case z:return{...e,advanced:t.value};case Z:return{...e,canonical:t.value};case J:return{...e,breadcrumbsTitle:t.value};default:return e}},AIButton:function(e=Bn,t){switch(t.type){case V:return{...e,activeAIButton:t.activeAIButton};case q:return{...e,disabledAIButtons:t.disabledAIButtons};default:return e}},analysis:Fn,analysisData:function(e=xn,t){switch(t.type){case oe:return{...e,snippet:t.data};case ce:return{...e,timestamp:t.timestamp};case le:return{...e,shortcodesForParsing:t.shortcodesForParsing}}return e},checklist:function(e=Hn,t){if(t.type===Ee){const r=Object.assign({},e);return r.checklistItems[t.name]=t.data,r}return e},currentPromotions:function(e={},t){return t.type===xe?{promotions:t.payload}:e},dismissedAlerts:function(e={},t){return t.type===Et&&t.alertKey?{...e,[t.alertKey]:!0}:t.type===gt?{...t.payload}:e},editorContext:function(e=function(){return{contentLocale:(0,i.get)(window,"wpseoScriptData.metabox.contentLocale",""),isBlockEditor:"1"===(0,i.get)(window,"wpseoScriptData.isBlockEditor","0"),isElementorEditor:"1"===(0,i.get)(window,"wpseoScriptData.isElementorEditor","0"),isPost:(0,i.get)(window,"wpseoScriptData",{}).hasOwnProperty("isPost"),isTerm:(0,i.get)(window,"wpseoScriptData",{}).hasOwnProperty("isTerm"),noIndex:"1"===(0,i.get)(window,"wpseoAdminL10n.noIndex","0"),postTypeNameSingular:(0,i.get)(window,"wpseoAdminL10n.postTypeNameSingular",""),postTypeNamePlural:(0,i.get)(window,"wpseoAdminL10n.postTypeNamePlural",""),termType:(0,i.get)(window,"wpseoScriptData.termType",""),postStatus:(0,i.get)(window,"wpseoScriptData.postStatus",""),isFrontPage:"1"===(0,i.get)(window,"wpseoScriptData.isFrontPage","0")}}()){return e},editorData:(e=Gn,t)=>{switch(t.type){case Ge:return{...e,content:t.content};case qe:return{...e,excerpt:t.excerpt};case Ye:return{...e,imageUrl:t.imageUrl};case je:return{...e,slug:t.slug};case Ve:return{...e,title:t.title}}return e},editorModals:function(e=Vn,t){switch(t.type){case Ze:return{...e,openedModal:t.modalKey};case et:return{...e,openedModal:""}}return e},facebookEditor:(e=qn,t)=>{switch(t.type){case Br:return{...e,title:t.title,description:t.description,image:{id:t.id,url:t.imageUrl}};case Wr:return{...e,title:t.title};case Ur:return{...e,description:t.description};case Fr:return{...e,warnings:t.image.warnings,image:{id:t.image.id,url:t.image.url,alt:t.image.alt||""}};case Kr:return{...e,image:{url:"",id:"",alt:""},warnings:[]};default:return e}},focusKeyword:function(e="",t){switch(t.type){case it:case st:return t.keyword;default:return e}},insights:(e=Ln,{type:t,payload:r})=>{switch(t){case L:case N:return{...e,estimatedReadingTime:r};case M:return{...e,fleschReadingEaseScore:r.score,fleschReadingEaseDifficulty:r.difficulty};case W:return{...e,textLength:r};default:return e}},isCornerstone:function(e=!1,t){switch(t.type){case We:return!e;case Ue:return t.isCornerstone;default:return e}},isMarkerPaused:function(e=!1,t){return t.type===ut?function(e,t){return t.isMarkerPaused}(0,t):e},isPremium:(e=!1,t)=>t.type===hn?t.payload:e,[d]:m,[S]:I,postId:(e=!1,t)=>t.type===Dn?t.payload:e,marksButtonStatus:function(e="disabled",t){return t.type===ct?t.marksButtonStatus:e},preferences:function(e=function(){const e=!!window.wpseoAdminL10n.displayAdvancedTab;return{isContentAnalysisActive:jn(),isKeywordAnalysisActive:$n(),isInclusiveLanguageAnalysisActive:Qn(),isWordFormRecognitionActive:(0,i.isUndefined)(window.wpseoPremiumMetaboxData)&&zn(),isCornerstoneActive:Xn(),isBreadcrumbsDisabled:!!window.wpseoAdminL10n.isBreadcrumbsDisabled,isPrivateBlog:!!window.wpseoScriptData.isPrivateBlog,isSEMrushIntegrationActive:Jn(),shouldUpsell:(0,i.isUndefined)(window.wpseoPremiumMetaboxData),displayAdvancedTab:e,displaySchemaSettings:e&&!!window.wpseoScriptData.isPost,displaySchemaSettingsFooter:window.wpseoScriptData.metabox.schema.displayFooter,useOpenGraphData:window.wpseoScriptData.metabox.showSocial.facebook,useTwitterData:window.wpseoScriptData.metabox.showSocial.twitter,isWincherIntegrationActive:Zn(),isInsightsEnabled:(0,i.get)(window,"wpseoScriptData.metabox.isInsightsEnabled",!1),isNewsEnabled:(0,i.get)(window,"wpseoScriptData.metabox.isNewsSeoActive",!1),isAiFeatureActive:Boolean(window.wpseoAdminL10n.isAiFeatureActive),isWooCommerceSeoActive:(0,i.get)(window,"wpseoScriptData.metabox.isWooCommerceSeoActive",!1),isWooCommerceActive:(0,i.get)(window,"wpseoScriptData.metabox.isWooCommerceActive",!1),isRtl:(0,i.get)(window,"wpseoScriptData.metabox.isRtl",!1)}}()){return e},primaryTaxonomies:function(e=ei,t){return t.type===St?{...e,[t.taxonomy]:t.termId}:e},schemaTab:(e=ti,t)=>{switch(t.type){case wt:return{...e,pageType:t.pageType};case It:return{...e,articleType:t.articleType};case At:return{...e,pageType:t.pageType,defaultPageType:t.defaultPageType};case Rt:return{...e,articleType:t.articleType,defaultArticleType:t.defaultArticleType};default:return e}},SEMrushModal:function(e=ri,t){switch(t.type){case bt:return{whichModalOpen:"none",displayNoKeyphraseMessage:!0};case vt:return{whichModalOpen:t.location,displayNoKeyphraseMessage:!1};case Pt:return{whichModalOpen:"none",displayNoKeyphraseMessage:!1}}return e},SEMrushRequest:function(e=ni,t){switch(t.type){case Ft:return{...e,isRequestPending:!0,keyphrase:t.keyphrase,countryCode:t.countryCode,isSuccess:!1,response:null};case kt:return{...e,isRequestPending:!1,isSuccess:!0,response:t.response,hasData:!0};case Wt:return{...e,isRequestPending:!1,isSuccess:!1,response:t.response,hasData:!1};case Ut:return{...e,isRequestPending:!1,limitReached:!0,hasData:!1};case Mt:return{...e,countryCode:t.countryCode};case Kt:return{...e,isSuccess:!0,isRequestPending:!1,hasData:!1,response:null};case Bt:return{...e,isLoggedIn:t.loginStatus};default:return e}},settings:function(e={},t){switch(t.type){case $t:return{...e,...t.settings};case Qt:{const r=Object.assign({},e.socialPreviews,{contentImage:t.src});return{...e,socialPreviews:{...r}}}case Xt:{const r=Object.assign({},e.snippetEditor,t.snippetEditor);return{...e,snippetEditor:{...r}}}default:return e}},shoppingData:function(e=ii,t){if(t.type===er){const r=(0,i.pick)(t.shoppingData,["rating","reviewCount","availability","price"]);return{...e,...r}}return e},snippetEditor:function(e=function(){return{mode:"mobile",data:{title:"",description:"",slug:""},wordsToHighlight:[],replacementVariables:[{name:"date",label:(0,si.__)("Date","wordpress-seo"),value:""},{name:"id",label:(0,si.__)("ID","wordpress-seo"),value:""},{name:"page",label:(0,si.__)("Page","wordpress-seo"),value:""},{name:"searchphrase",label:(0,si.__)("Search phrase","wordpress-seo"),value:""},{name:"sitedesc",label:(0,si.__)("Tagline","wordpress-seo"),value:""},{name:"sitename",label:(0,si.__)("Site title","wordpress-seo"),value:""},{name:"category",label:(0,si.__)("Category","wordpress-seo"),value:""},{name:"focuskw",label:(0,si.__)("Focus keyphrase","wordpress-seo"),value:""},{name:"title",label:(0,si.__)("Title","wordpress-seo"),value:""},{name:"parent_title",label:(0,si.__)("Parent title","wordpress-seo"),value:""},{name:"excerpt",label:(0,si.__)("Excerpt","wordpress-seo"),value:""},{name:"primary_category",label:(0,si.__)("Primary category","wordpress-seo"),value:""},{name:"sep",label:(0,si.__)("Separator","wordpress-seo"),value:""},{name:"excerpt_only",label:(0,si.__)("Excerpt only","wordpress-seo"),value:""},{name:"category_description",label:(0,si.__)("Category description","wordpress-seo"),value:""},{name:"tag_description",label:(0,si.__)("Tag description","wordpress-seo"),value:""},{name:"term_description",label:(0,si.__)("Term description","wordpress-seo"),value:""},{name:"currentyear",label:(0,si.__)("Current year","wordpress-seo"),value:""}],uniqueRefreshValue:"",templates:{title:"",description:""},isLoading:!0}}(),t){switch(t.type){case nr:return{...e,mode:t.mode};case ir:return{...e,data:{...e.data,...t.data}};case or:return function(e,t){let r=!0,n=e.replacementVariables.map((e=>e.name===t.name?(r=!1,{name:t.name,label:t.label||e.label,value:t.value,hidden:e.hidden}):e));return r&&(n=function(e,t){return e.push({name:t.name,label:t.label||li(t.name),value:t.value}),e}(n,t)),{...e,replacementVariables:n}}(e,t);case cr:return function(e,t){const r={},n=e.replacementVariables.map((e=>{const n=t.updatedVariables[e.name];return n?(r[e.name]=!0,{name:e.name,label:n.label||e.label,value:n.value,hidden:e.hidden}):e}));return Object.keys(t.updatedVariables).forEach((e=>{r[e]||n.push({name:e,label:t.updatedVariables[e].label||li(e),value:t.updatedVariables[e].value,hidden:!1})})),{...e,replacementVariables:n}}(e,t);case ar:return function(e,t){const r=t.results.filter((t=>!e.replacementVariables.some((e=>e.name==="cf_"+t.key))));if(0===r.length)return e;const n=[...r.map((e=>({name:"cf_"+ui(e.key),label:oi(e.key+" (custom field)"),value:e.value,hidden:!1}))),...e.replacementVariables];return{...e,replacementVariables:n}}(e,t);case lr:{const r=e.replacementVariables.map((e=>({name:e.name,label:e.label,value:e.value,hidden:t.data.includes(e.name)})));return{...e,replacementVariables:r}}case ur:return{...e,replacementVariables:e.replacementVariables.filter((e=>e.name!==t.name))};case dr:return{...e,uniqueRefreshValue:t.time};case pr:return{...e,wordsToHighlight:t.wordsToHighlight};case Er:return{...e,data:{...e.data,title:t.data.title,description:t.data.description,slug:t.data.slug},templates:{...e.templates,title:t.templates.title,description:t.templates.description},isLoading:!1}}return e},twitterEditor:(e=di,t)=>{switch(t.type){case vr:return{...e,title:t.title,description:t.description,image:{id:t.id,url:t.imageUrl}};case fr:return{...e,title:t.title};case Dr:return{...e,description:t.description};case Or:return{...e,image:{id:t.image.id,url:t.image.url,alt:t.image.alt||""},warnings:t.image.warnings};case Pr:return{...e,image:{url:"",id:"",alt:""},warnings:[]};default:return e}},warning:function(e=pi,t){return t.type===Yr?{...e,message:t.message}:e},WincherModal:function(e=Ei,t){switch(t.type){case Xr:return{whichModalOpen:"none",hasNoKeyphrase:!0};case Qr:return{...e,hasNoKeyphrase:!1,whichModalOpen:t.location};case $r:return{...e,whichModalOpen:"none",hasNoKeyphrase:!1}}return e},WincherRequest:function(e=gi,t){switch(t.type){case nn:return{...e,limitReached:!1,isSuccess:!1,response:null,isNewlyAuthenticated:!1};case en:return{...e,isSuccess:!0,response:t.response};case tn:return{...e,isSuccess:!1,response:t.response};case rn:return{...e,limitReached:!0,limit:t.limit};case sn:return{...e,isLoggedIn:t.loginStatus,isNewlyAuthenticated:t.newlyAuthenticated};case an:return{...e,trackAll:t.trackAll};case on:return{...e,automaticallyTrack:t.automaticallyTrack};default:return e}},WincherSEOPerformance:function(e=mi,t){switch(t.type){case mn:return{...e,websiteId:t.websiteId};case Sn:return{...e,trackedKeyphrases:{...e.trackedKeyphrases,...t.keyphraseObject}};case Tn:return{...e,trackedKeyphrases:(0,i.pickBy)(e.trackedKeyphrases,((e,r)=>r!==t.untrackedKeyphrase))};case yn:return{...e,trackedKeyphrases:t.trackedKeyphrases}}return e},[D]:b};function Si(){const e=Yn();return(0,i.get)(e,"contentLocale","en_US")}const Ti=e=>(0,i.get)(e,"insights.estimatedReadingTime",0),yi=e=>(0,i.get)(e,"insights.fleschReadingEaseScore",null),wi=e=>(0,i.get)(e,"insights.fleschReadingEaseDifficulty",null),Ii=e=>null!==yi(e)&&null!==wi(e),Ai=e=>(0,i.get)(e,"insights.textLength",{}),Ri=()=>{const e="en"===Si().split("_")[0],t=Yn().isPremium;return!!e&&(!t||window.wp.data.select("yoast-seo-premium/editor").hasOwnProperty("getTextFormalityLevel"))},hi=e=>(0,i.get)(e,"AIButton.activeAIButton",""),fi=e=>(0,i.get)(e,"AIButton.disabledAIButtons",{}),Di=e=>(0,i.get)(e,"advancedSettings.noIndex",""),Oi=e=>(0,i.get)(e,"advancedSettings.noFollow",""),Pi=e=>(0,i.get)(e,"advancedSettings.advanced",""),vi=e=>(0,i.get)(e,"advancedSettings.breadcrumbsTitle","summary"),bi=e=>(0,i.get)(e,"advancedSettings.canonical",""),Ci=e=>(0,i.get)(e,"advancedSettings.isLoading",!0),Ni="yoast-measurement-element";function Li(e){let t=document.getElementById(Ni);return t||(t=function(){const e=document.createElement("div");return e.id=Ni,e.style.position="absolute",e.style.left="-9999em",e.style.top=0,e.style.height=0,e.style.overflow="hidden",e.style.fontFamily="arial, sans-serif",e.style.fontSize="20px",e.style.fontWeight="400",document.body.appendChild(e),e}()),t.innerText=e,t.offsetWidth}function Mi(e){return e.editorContext}function ki(e){return"Page"===(0,i.get)(e,"editorContext.postTypeNameSingular")?"page":"post"}function Wi(e){return"Product"===(0,i.get)(e,"editorContext.postTypeNameSingular")}function Ui(e){const t=(0,i.get)(e,"editorContext.termType");return"product_cat"===t||"product_tag"===t}function Fi(e){return(0,i.get)(e,"editorContext.isBlockEditor",!1)}function Ki(e){return(0,i.get)(e,"editorContext.isElementorEditor",!1)}function Bi(e){return(0,i.get)(e,"editorContext.isFrontPage",!1)}function xi(e){return(0,i.get)(e,"editorContext.isTerm",!1)}function Hi(e){return["draft","auto-draft"].includes((0,i.get)(e,"editorContext.postStatus",""))}function Gi(e){return Ki(e)?"elementorEditor":Fi(e)?"blockEditor":"classicEditor"}function Vi(e){return(0,i.get)(e,"editorContext.contentLocale","en_US")}const qi=window.wp.hooks,Yi=e=>(0,i.get)(e,"editorData.content",""),ji=e=>(0,i.get)(e,"editorData.title",""),$i=e=>(0,i.get)(e,"editorData.excerpt"),Qi=e=>{let t=(0,i.get)(e,"editorData.excerpt","");if(""===t){const r="ja"===Si()?80:156;t=function(e,t=156){return(e=(e=(0,ai.stripTags)(e)).trim()).length<=t||(e=e.substring(0,t),/\s/.test(e)&&(e=e.substring(0,e.lastIndexOf(" ")))),e}((0,i.get)(e,"editorData.content",""),r)}return t},Xi=e=>(0,i.get)(e,"editorData.imageUrl",""),zi=e=>{const t=[{featuredOrFirstImage:(0,i.get)(e,"editorData.imageUrl","")},{socialImage:(0,i.get)(window,"wpseoScriptData.metabox.social_image_template","")},{siteWideImage:(0,i.get)(window.wpseoScriptData,"metabox.showSocial.facebook")&&(0,i.get)(e,"settings.socialPreviews.sitewideImage","")}];(0,qi.applyFilters)("yoast.socials.imageFallback",t);for(const e of t)if(Object.values(e)[0])return Object.values(e)[0];return""},Ji=e=>(0,i.get)(e,"editorData.slug","");function Zi(e){return(0,i.get)(e,"focusKeyword","")}const es=e=>{const t=(0,qi.applyFilters)("yoast.focusKeyphrase.errors",[],Zi(e));return(0,i.isArray)(t)?t.filter(i.isString):[]},ts=e=>(0,i.get)(e,"settings.socialPreviews.siteName",""),rs=e=>(0,i.get)(e,"settings.snippetEditor.baseUrl",""),ns=e=>(0,i.get)(e,"settings.snippetEditor.date",""),is=e=>(0,i.get)(e,"settings.snippetEditor.recommendedReplacementVariables",[]),ss=e=>(0,i.get)(e,"settings.snippetEditor.siteIconUrl",""),as=e=>(0,i.get)(e,"snippetEditor.replacementVariables",[]),os=e=>(0,i.get)(e,"snippetEditor.templates",{title:"",description:""}),cs=e=>(0,i.get)(e,"snippetEditor.mode","mobile"),ls=e=>(0,i.get)(e,"snippetEditor.data.title",""),us=e=>(0,i.get)(e,"snippetEditor.data.title","")||os(e).title,ds=e=>(0,i.get)(e,"snippetEditor.data.description",""),ps=e=>ds(e)||os(e).description,Es=e=>(0,i.get)(e,"snippetEditor.data.slug",""),gs=e=>(0,i.get)(e,"snippetEditor.data",{title:ls(e),description:ds(e),slug:Es(e)}),ms=e=>(0,i.get)(e,"snippetEditor.wordsToHighlight",[]),_s=e=>(0,i.get)(e,"snippetEditor.isLoading",!0),Ss=e=>(0,i.get)(e,"snippetEditor.data.snippetPreviewImageURL",""),Ts=e=>(0,i.get)(e,"analysisData.snippet.title",""),ys=e=>(0,i.get)(e,"analysisData.snippet.description",""),ws=e=>(0,i.get)(e,"analysisData.snippet.url",""),Is=e=>parseInt((0,i.get)(e,"analysisData.timestamp",0),10),As=e=>(0,i.get)(e,"analysisData.shortcodesForParsing",[]),Rs=e=>{const t=Ts(e)||ls(e),r=Es(e);return{text:Yi(e),title:t,keyword:Zi(e),description:ys(e)||ds(e),locale:Vi(e),titleWidth:Li(t),slug:r,permalink:rs(e)+r}};function hs(e){return e.isCornerstone}function fs(e){return e.checklist.checklistItems}function Ds(e,t){return e.currentPromotions.promotions.includes(t)}const Os=(e,t)=>(0,i.get)(e,"editorModals.openedModal","")===t,Ps=e=>(0,i.get)(e,"socialPreviews.contentImage",""),vs=e=>{const t=[{featuredImage:(0,i.get)(e,"snippetEditor.data.snippetPreviewImageURL","")},{contentImage:(0,i.get)(e,"settings.socialPreviews.contentImage","")},{socialImage:(0,i.get)(window,"wpseoScriptData.metabox.social_image_template","")},{siteWideImage:(0,i.get)(window,"wpseoScriptData.metabox.showSocial.facebook")&&(0,i.get)(e,"settings.socialPreviews.sitewideImage","")}];(0,qi.applyFilters)("yoast.socials.imageFallback",t);for(const e of t)if(Object.values(e)[0])return Object.values(e)[0];return""},bs=()=>{let e=(0,i.get)(window,"wpseoScriptData.metabox.base_url","");return""===e?"":(e=new URL(e),e.host)},Cs=()=>(0,i.get)(window,"wpseoScriptData.metabox.title_template",""),Ns=()=>(0,i.get)(window,"wpseoScriptData.metabox.title_template_no_fallback",""),Ls=()=>(0,i.get)(window,"wpseoScriptData.metabox.social_title_template",""),Ms=()=>(0,i.get)(window,"wpseoScriptData.metabox.metadesc_template",""),ks=()=>(0,i.get)(window,"wpseoScriptData.metabox.social_description_template",""),Ws=e=>{let t="";return(0,i.get)(e,"snippetEditor.replacementVariables",[]).forEach((e=>{"excerpt"===e.name&&(t=e.value)})),t},Us=e=>(0,i.get)(e,"facebookEditor.title",""),Fs=e=>(0,i.get)(e,"facebookEditor.description",""),Ks=e=>(0,i.get)(e,"facebookEditor.image.url"),Bs=e=>(0,i.get)(e,"facebookEditor.image.src",""),xs=e=>(0,i.get)(e,"facebookEditor.image.alt",""),Hs=e=>(0,i.get)(e,"facebookEditor.warnings",[]),Gs=(0,n.createSelector)([Ls,Ts,Ns,Cs],((...e)=>e.find(Boolean)||"")),Vs=(0,n.createSelector)([Us,Gs],((e,t)=>e||t)),qs=(0,n.createSelector)([ks,ys,Ms,Ws,Qi],((...e)=>{var t;return null!==(t=e.find(Boolean))&&void 0!==t?t:""})),Ys=(0,n.createSelector)([Fs,qs],((e,t)=>e||t));function js(e){return e.activeMarker}function $s(e){return e.isMarkerPaused}function Qs(e){return"enabled"===e.marksButtonStatus}function Xs(e){return e.marksButtonStatus}function zs(e,t){return!0===e.dismissedAlerts[t]}const Js=(e,t,r=null)=>(0,i.get)(e,`preferences.${t}`,r),Zs=e=>e.preferences,ea=e=>(0,i.get)(e,"preferences.isKeywordAnalysisActive",!1),ta=e=>Js(e,"isWooCommerceActive",!1),ra=e=>Js(e,"isWooCommerceSeoActive",!1),na=e=>{const t=ra(e),r=ta(e),n=Wi(e);return!t&&r&&n},ia=e=>{const t=ra(e),r=ta(e),n=Ui(e);return!t&&r&&n};function sa(e,t){return e.primaryTaxonomies[t]}const aa=[],oa={};function ca(e){const t=(0,i.get)(e,"analysis.seo",oa);return(0,i.isEmpty)(t)?{results:aa,overallScore:null}:t}function la(e,t){const r=ca(e);return(0,i.get)(r,t,oa)}function ua(e){const t=(0,i.get)(e,"analysis.readability",{});return(0,i.isEmpty)(t)?{results:aa,overallScore:null}:t}function da(e){return(0,i.get)(e,"analysis.inclusiveLanguage",{results:aa,overallScore:null})}function pa(e){return la(e,e.focusKeyword)}function Ea(e,t){return[...pa(e).results||aa,...ua(e).results||aa,...da(e).results||aa].find((e=>e._identifier===t))}function ga(e){return e.marksButtonStatus}const ma=e=>(0,i.get)(e,"schemaTab.defaultPageType",""),_a=e=>(0,i.get)(e,"schemaTab.pageType",""),Sa=e=>(0,i.get)(e,"schemaTab.defaultArticleType",""),Ta=e=>(0,i.get)(e,"schemaTab.articleType","");function ya(e){return e.SEMrushModal.whichModalOpen}function wa(e){return e.SEMrushModal.displayNoKeyphraseMessage}function Ia(e){return e.SEMrushRequest.isRequestPending}function Aa(e){return e.SEMrushRequest.isSuccess}function Ra(e){return e.SEMrushRequest.response}function ha(e){return e.SEMrushRequest.limitReached}function fa(e){return e.SEMrushRequest.keyphrase}function Da(e){return e.SEMrushRequest.countryCode}function Oa(e){return e.SEMrushRequest.hasData}function Pa(e){return e.SEMrushRequest.isLoggedIn}const va=e=>(0,i.get)(e,"shoppingData",{}),ba=e=>(0,i.get)(e,"twitterEditor.title",""),Ca=e=>(0,i.get)(e,"twitterEditor.description",""),Na=e=>(0,i.get)(e,"twitterEditor.image.url",""),La=e=>(0,i.get)(e,"settings.socialPreviews.twitterCardType","summary"),Ma=e=>(0,i.get)(e,"twitterEditor.image.src",""),ka=e=>(0,i.get)(e,"twitterEditor.image.alt",""),Wa=e=>(0,i.get)(e,"twitterEditor.warnings",[]),Ua=(0,n.createSelector)([Ls,Us,Ts,Ns,Cs],((...e)=>e.find(Boolean)||"")),Fa=(0,n.createSelector)([ba,Ua],((e,t)=>e||t)),Ka=(0,n.createSelector)([ks,Fs,ys,Ms,Ws,Qi],((...e)=>{var t;return null!==(t=e.find(Boolean))&&void 0!==t?t:""})),Ba=(0,n.createSelector)([Ca,Ka],((e,t)=>e||t));function xa(e){return(0,i.get)(e,"warning.message",[])}function Ha(e){return e.WincherModal.whichModalOpen}function Ga(e){return e.WincherModal.hasNoKeyphrase}function Va(e){return e.WincherRequest.isSuccess}function qa(e){return e.WincherRequest.response}function Ya(e){return e.WincherRequest.limitReached}function ja(e){return e.WincherRequest.isLoggedIn}function $a(e){return e.WincherRequest.isNewlyAuthenticated}function Qa(e){return e.WincherRequest.limit}function Xa(e){return e.WincherRequest.historyDays}function za(e){return!0===e.WincherRequest.trackAll}function Ja(e){return e.WincherRequest.automaticallyTrack&&Hi(e)}function Za(e){return e.WincherSEOPerformance.websiteId}function eo(e){return e.WincherSEOPerformance.trackedKeyphrases}function to(e){return!(0,i.isEmpty)(e.WincherSEOPerformance.trackedKeyphrases)}function ro(e){const t=Yn().isPremium,r=window.wp.data.select("yoast-seo-premium/editor"),n=[e.focusKeyword.trim()];return t&&r&&n.push(...r.getKeywords().filter((e=>void 0!==e.keyword)).map((e=>e.keyword.trim()))),(0,i.uniq)(n.filter((e=>!!e)).map((e=>e.replace(/["+:\s]+/g," ").trim().toLocaleLowerCase()))).sort()}function no(e){const{trackedKeyphrases:t}=e.WincherSEOPerformance;return!(0,i.isEmpty)(t)&&(0,i.filter)(t,(e=>(0,i.isEmpty)(e.updated_at))).length===Object.keys(t).length}function io(e){const t=Rs(e);return t.slug?t.permalink:""}const so=e=>(0,i.get)(e,"isPremium",!1),ao=e=>(0,i.get)(e,"postId",null),{selectAdminUrl:oo,selectAdminLink:co}=o,{selectLinkParams:lo,selectLinkParam:uo,selectLink:po}=E,{selectPluginUrl:Eo,selectImageLink:go}=y,{selectWistiaEmbedPermission:mo,selectWistiaEmbedPermissionValue:_o,selectWistiaEmbedPermissionStatus:So,selectWistiaEmbedPermissionError:To}=P;window.yoast=window.yoast||{},window.yoast.externals=window.yoast.externals||{},window.yoast.externals.redux={selectors:r,reducers:_i,actions:t,utils:{createFreezeReducer:(e,t)=>{let r=!1,n=null;return{freezeReducer:(i=t,s)=>r?n:e(i,s),toggleFreeze:(e,t=!r)=>{n=t?(0,i.cloneDeep)(e()):null,r=Boolean(t)}}},createSnapshotReducer:(e,t)=>{let r,n=!1,s=!1;return{snapshotReducer:(i=t,s)=>n?(n=!1,r):e(i,s),takeSnapshot:(e,t)=>{t({type:"CREATE_SNAPSHOT"}),r=(0,i.cloneDeep)(e()),s=!0},restoreSnapshot:e=>{s&&(n=!0,e({type:"RESTORE_SNAPSHOT"}))}}}}}})();js/dist/general-page.js000064400001064626147206602470011037 0ustar00(()=>{var e={4184:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=Object.assign||function(e){for(var t=1;t1?t-1:0),n=1;ne.height),u(m,this.animationStateClasses.animatingToHeightZero,0===E.height),u(m,this.animationStateClasses.animatingToHeightAuto,"auto"===E.height),u(m,this.animationStateClasses.animatingToHeightSpecific,E.height>0),m)),_=this.getStaticStateClasses(E.height);this.setState({animationStateClasses:S,height:w,overflow:"hidden",shouldUseTransitions:!x}),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),x?(E.shouldUseTransitions=!0,f(this.animationFrameIDs),this.animationFrameIDs=(r=function(){a.setState(E),g(p,{newHeight:E.height})},(n=[])[0]=requestAnimationFrame((function(){n[1]=requestAnimationFrame((function(){r()}))})),n),this.animationClassesTimeoutID=setTimeout((function(){a.setState({animationStateClasses:_,shouldUseTransitions:!1}),a.hideContent(E.height),g(d,{newHeight:E.height})}),b)):(g(p,{newHeight:w}),this.timeoutID=setTimeout((function(){E.animationStateClasses=_,E.shouldUseTransitions=!1,a.setState(E),"auto"!==c&&a.hideContent(w),g(d,{newHeight:w})}),b))}}},{key:"componentWillUnmount",value:function(){f(this.animationFrameIDs),clearTimeout(this.timeoutID),clearTimeout(this.animationClassesTimeoutID),this.timeoutID=null,this.animationClassesTimeoutID=null,this.animationStateClasses=null}},{key:"showContent",value:function(e){0===e&&(this.contentElement.style.display="")}},{key:"hideContent",value:function(e){0===e&&(this.contentElement.style.display="none")}},{key:"getStaticStateClasses",value:function(e){var t;return(0,l.default)((u(t={},this.animationStateClasses.static,!0),u(t,this.animationStateClasses.staticHeightZero,0===e),u(t,this.animationStateClasses.staticHeightSpecific,e>0),u(t,this.animationStateClasses.staticHeightAuto,"auto"===e),t))}},{key:"render",value:function(){var e,t=this,r=this.props,n=r.animateOpacity,s=r.applyInlineTransitions,i=r.children,c=r.className,d=r.contentClassName,f=r.delay,h=r.duration,y=r.easing,g=r.id,v=r.style,b=this.state,w=b.height,E=b.overflow,x=b.animationStateClasses,S=b.shouldUseTransitions,_=a({},v,{height:w,overflow:E||v.overflow});S&&s&&(_.transition="height "+h+"ms "+y+" "+f+"ms",v.transition&&(_.transition=v.transition+", "+_.transition),_.WebkitTransition=_.transition);var R={};n&&(R.transition="opacity "+h+"ms "+y+" "+f+"ms",R.WebkitTransition=R.transition,0===w&&(R.opacity=0));var k=(0,l.default)((u(e={},x,!0),u(e,c,c),e)),C=void 0!==this.props["aria-hidden"]?this.props["aria-hidden"]:0===w;return o.default.createElement("div",a({},m.apply(void 0,[this.props].concat(p)),{"aria-hidden":C,className:k,id:g,style:_}),o.default.createElement("div",{className:d,style:R,ref:function(e){return t.contentElement=e}},i))}}]),t}(o.default.Component);v.propTypes={"aria-hidden":i.default.bool,animateOpacity:i.default.bool,animationStateClasses:i.default.object,applyInlineTransitions:i.default.bool,children:i.default.any.isRequired,className:i.default.string,contentClassName:i.default.string,delay:i.default.number,duration:i.default.number,easing:i.default.string,height:function(e,t,r){var a=e[t];return"number"==typeof a&&a>=0||y(a)||"auto"===a?null:new TypeError('value "'+a+'" of type "'+(void 0===a?"undefined":n(a))+'" is invalid type for '+t+" in "+r+'. It needs to be a positive number, string "auto" or percentage string (e.g. "15%").')},id:i.default.string,onAnimationEnd:i.default.func,onAnimationStart:i.default.func,style:i.default.object},v.defaultProps={animateOpacity:!1,animationStateClasses:d,applyInlineTransitions:!0,duration:250,delay:0,easing:"ease",style:{}},t.Z=v},591:e=>{for(var t=[],r=0;r<256;++r)t[r]=(r+256).toString(16).substr(1);e.exports=function(e,r){var n=r||0,a=t;return[a[e[n++]],a[e[n++]],a[e[n++]],a[e[n++]],"-",a[e[n++]],a[e[n++]],"-",a[e[n++]],a[e[n++]],"-",a[e[n++]],a[e[n++]],"-",a[e[n++]],a[e[n++]],a[e[n++]],a[e[n++]],a[e[n++]],a[e[n++]]].join("")}},9176:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var r=new Uint8Array(16);e.exports=function(){return t(r),r}}else{var n=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),n[t]=e>>>((3&t)<<3)&255;return n}}},3409:(e,t,r)=>{var n=r(9176),a=r(591);e.exports=function(e,t,r){var s=t&&r||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||n)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var i=0;i<16;++i)t[s+i]=o[i];return t||a(o)}},4530:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function a(){for(var e=[],t=0;t{"use strict";e.exports=window.React},5890:e=>{"use strict";e.exports=window.yoast.propTypes}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};r.r(e),r.d(e,{DISMISS_ALERT:()=>Rs});var t=r(9196),n=r.n(t);const a=window.wp.components,s=window.wp.data,o=window.wp.domReady;var i=r.n(o);const l=window.wp.element,c=window.yoast.uiLibrary,u=window.lodash,d=window.yoast.reduxJsToolkit,p="adminUrl",m=(0,d.createSlice)({name:p,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),f=(m.getInitialState,{selectAdminUrl:e=>(0,u.get)(e,p,"")});f.selectAdminLink=(0,d.createSelector)([f.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),m.actions,m.reducer;const h=window.wp.url,y="linkParams",g=(0,d.createSlice)({name:y,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),v=g.getInitialState,b={selectLinkParam:(e,t,r={})=>(0,u.get)(e,`${y}.${t}`,r),selectLinkParams:e=>(0,u.get)(e,y,{})};b.selectLink=(0,d.createSelector)([b.selectLinkParams,(e,t)=>t,(e,t,r={})=>r],((e,t,r)=>(0,h.addQueryArgs)(t,{...e,...r})));const w=g.actions,E=g.reducer,x=(0,d.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:r="default",title:n,description:a})=>({payload:{id:e||(0,d.nanoid)(),variant:t,size:r,title:n||"",description:a}})},removeNotification:(e,{payload:t})=>(0,u.omit)(e,t)}}),S=(x.getInitialState,x.actions,x.reducer,"pluginUrl"),_=(0,d.createSlice)({name:S,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),R=(_.getInitialState,{selectPluginUrl:e=>(0,u.get)(e,S,"")});R.selectImageLink=(0,d.createSelector)([R.selectPluginUrl,(e,t,r="images")=>r,(e,t)=>t],((e,t,r)=>[(0,u.trimEnd)(e,"/"),(0,u.trim)(t,"/"),(0,u.trimStart)(r,"/")].join("/"))),_.actions,_.reducer;const k=window.wp.apiFetch;var C=r.n(k);const P="request",O="success",N="error",T="loading",L="showPlay",I="askPermission",M="isPlaying",A="wistiaEmbedPermission",D=(0,d.createSlice)({name:A,initialState:{value:!1,status:"idle",error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${A}/${P}`,(e=>{e.status=T})),e.addCase(`${A}/${O}`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${A}/${N}`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,u.get)(t,"error.code",500),message:(0,u.get)(t,"error.message","Unknown")}}))}}),F=(D.getInitialState,D.actions,D.reducer,"@yoast/general"),j="alertCenter",z="toggleAlertVisibility",U=(0,d.createSlice)({name:j,initialState:{alertToggleError:null,alerts:[]},reducers:{toggleAlert:(e,t)=>{const r=e.alerts.findIndex((e=>e.id===t));-1!==r&&(e.alerts[r].dismissed=!e.alerts[r].dismissed)},setAlertToggleError:(e,t)=>{const r=e.alerts.findIndex((e=>e.id===t));e.alertToggleError=-1===r?null:e.alerts[r]},removeAlert(e,{payload:t}){e.alerts=e.alerts.filter((e=>e.id!==t))}},extraReducers:e=>{e.addCase(`${z}/${O}`,((e,{payload:{id:t}})=>{U.caseReducers.toggleAlert(e,t)})),e.addCase(`${z}/${N}`,((e,{payload:{id:t}})=>{U.caseReducers.setAlertToggleError(e,t)}))}}),q=U.getInitialState,B=e=>(0,u.get)(e,`${j}.alerts`,[]),$=(0,d.createSelector)([B],(e=>e.filter((e=>!e.dismissed)))),H={selectActiveProblems:(0,d.createSelector)([$],(e=>e.filter((e=>"error"===e.type)))),selectDismissedProblems:(0,d.createSelector)([B],(e=>e.filter((e=>"error"===e.type&&e.dismissed)))),selectActiveNotifications:(0,d.createSelector)([$],(e=>e.filter((e=>"warning"===e.type)))),selectDismissedNotifications:(0,d.createSelector)([B],(e=>e.filter((e=>"warning"===e.type&&e.dismissed)))),selectAlertToggleError:e=>(0,u.get)(e,`${j}.alertToggleError`,null),selectAlert:(0,d.createSelector)([B,(e,t)=>t],((e,t)=>e.find((e=>e.id===t)))),selectActiveAlertsCount:(0,d.createSelector)([$],(e=>e.length))},V={...U.actions,toggleAlertStatus:function*(e,t,r=!1){yield{type:`${z}/${P}`};try{return yield{type:z,payload:{id:e,nonce:t,hidden:r}},{type:`${z}/${O}`,payload:{id:e}}}catch(t){return{type:`${z}/${N}`,payload:{id:e}}}}},Z={[z]:async({payload:e})=>{const t=new URLSearchParams;t.append("action",e.hidden?"yoast_restore_notification":"yoast_dismiss_notification"),t.append("notification",e.id),t.append("nonce",e.nonce);const r=(0,s.select)(F).selectPreference("ajaxUrl");if(!(await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},body:t.toString()})).ok)throw new Error("Failed to dismiss notification")}},W=U.reducer,G=window.ReactDOM;function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0&&(t.hash=e.substr(r),e=e.substr(0,r));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function ae(e,t,r,n){void 0===n&&(n={});let{window:a=document.defaultView,v5Compat:s=!1}=n,o=a.history,i=K.Pop,l=null,c=u();function u(){return(o.state||{idx:null}).idx}function d(){i=K.Pop;let e=u(),t=null==e?null:e-c;c=e,l&&l({action:i,location:m.location,delta:t})}function p(e){let t="null"!==a.location.origin?a.location.origin:a.location.href,r="string"==typeof e?e:re(e);return r=r.replace(/ $/,"%20"),Q(t,"No window.location.(origin|href) available to create URL for href: "+r),new URL(r,t)}null==c&&(c=0,o.replaceState(Y({},o.state,{idx:c}),""));let m={get action(){return i},get location(){return e(a,o)},listen(e){if(l)throw new Error("A history only accepts one active listener");return a.addEventListener(J,d),l=e,()=>{a.removeEventListener(J,d),l=null}},createHref:e=>t(a,e),createURL:p,encodeLocation(e){let t=p(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){i=K.Push;let n=te(m.location,e,t);r&&r(n,e),c=u()+1;let d=ee(n,c),p=m.createHref(n);try{o.pushState(d,"",p)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;a.location.assign(p)}s&&l&&l({action:i,location:m.location,delta:1})},replace:function(e,t){i=K.Replace;let n=te(m.location,e,t);r&&r(n,e),c=u();let a=ee(n,c),d=m.createHref(n);o.replaceState(a,"",d),s&&l&&l({action:i,location:m.location,delta:0})},go:e=>o.go(e)};return m}var se;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(se||(se={}));const oe=new Set(["lazy","caseSensitive","path","id","index","children"]);function ie(e,t,r,n){return void 0===r&&(r=[]),void 0===n&&(n={}),e.map(((e,a)=>{let s=[...r,String(a)],o="string"==typeof e.id?e.id:s.join("-");if(Q(!0!==e.index||!e.children,"Cannot specify children on an index route"),Q(!n[o],'Found a route id collision on id "'+o+"\". Route id's must be globally unique within Data Router usages"),function(e){return!0===e.index}(e)){let r=Y({},e,t(e),{id:o});return n[o]=r,r}{let r=Y({},e,t(e),{id:o,children:void 0});return n[o]=r,e.children&&(r.children=ie(e.children,t,s,n)),r}}))}function le(e,t,r){return void 0===r&&(r="/"),ce(e,t,r,!1)}function ce(e,t,r,n){let a=Se(("string"==typeof t?ne(t):t).pathname||"/",r);if(null==a)return null;let s=ue(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let r=e.length===t.length&&e.slice(0,-1).every(((e,r)=>e===t[r]));return r?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(s);let o=null;for(let e=0;null==o&&e{let o={relativePath:void 0===s?e.path||"":s,caseSensitive:!0===e.caseSensitive,childrenIndex:a,route:e};o.relativePath.startsWith("/")&&(Q(o.relativePath.startsWith(n),'Absolute route path "'+o.relativePath+'" nested under path "'+n+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),o.relativePath=o.relativePath.slice(n.length));let i=Pe([n,o.relativePath]),l=r.concat(o);e.children&&e.children.length>0&&(Q(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+i+'".'),ue(e.children,t,l,i)),(null!=e.path||e.index)&&t.push({path:i,score:be(i,e.index),routesMeta:l})};return e.forEach(((e,t)=>{var r;if(""!==e.path&&null!=(r=e.path)&&r.includes("?"))for(let r of de(e.path))a(e,t,r);else a(e,t)})),t}function de(e){let t=e.split("/");if(0===t.length)return[];let[r,...n]=t,a=r.endsWith("?"),s=r.replace(/\?$/,"");if(0===n.length)return a?[s,""]:[s];let o=de(n.join("/")),i=[];return i.push(...o.map((e=>""===e?s:[s,e].join("/")))),a&&i.push(...o),i.map((t=>e.startsWith("/")&&""===t?"/":t))}const pe=/^:[\w-]+$/,me=3,fe=2,he=1,ye=10,ge=-2,ve=e=>"*"===e;function be(e,t){let r=e.split("/"),n=r.length;return r.some(ve)&&(n+=ge),t&&(n+=fe),r.filter((e=>!ve(e))).reduce(((e,t)=>e+(pe.test(t)?me:""===t?he:ye)),n)}function we(e,t,r){void 0===r&&(r=!1);let{routesMeta:n}=e,a={},s="/",o=[];for(let e=0;e(n.push({paramName:t,isOptional:null!=r}),r?"/?([^\\/]+)?":"/([^\\/]+)")));return e.endsWith("*")?(n.push({paramName:"*"}),a+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?a+="\\/*$":""!==e&&"/"!==e&&(a+="(?:(?=\\/|$))"),[new RegExp(a,t?void 0:"i"),n]}(e.path,e.caseSensitive,e.end),a=t.match(r);if(!a)return null;let s=a[0],o=s.replace(/(.)\/+$/,"$1"),i=a.slice(1);return{params:n.reduce(((e,t,r)=>{let{paramName:n,isOptional:a}=t;if("*"===n){let e=i[r]||"";o=s.slice(0,s.length-e.length).replace(/(.)\/+$/,"$1")}const l=i[r];return e[n]=a&&!l?void 0:(l||"").replace(/%2F/g,"/"),e}),{}),pathname:s,pathnameBase:o,pattern:e}}function xe(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return X(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function Se(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,n=e.charAt(r);return n&&"/"!==n?null:e.slice(r)||"/"}function _e(e,t,r,n){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the `to."+r+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function Re(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function ke(e,t){let r=Re(e);return t?r.map(((e,t)=>t===r.length-1?e.pathname:e.pathnameBase)):r.map((e=>e.pathnameBase))}function Ce(e,t,r,n){let a;void 0===n&&(n=!1),"string"==typeof e?a=ne(e):(a=Y({},e),Q(!a.pathname||!a.pathname.includes("?"),_e("?","pathname","search",a)),Q(!a.pathname||!a.pathname.includes("#"),_e("#","pathname","hash",a)),Q(!a.search||!a.search.includes("#"),_e("#","search","hash",a)));let s,o=""===e||""===a.pathname,i=o?"/":a.pathname;if(null==i)s=r;else{let e=t.length-1;if(!n&&i.startsWith("..")){let t=i.split("/");for(;".."===t[0];)t.shift(),e-=1;a.pathname=t.join("/")}s=e>=0?t[e]:"/"}let l=function(e,t){void 0===t&&(t="/");let{pathname:r,search:n="",hash:a=""}="string"==typeof e?ne(e):e,s=r?r.startsWith("/")?r:function(e,t){let r=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?r.length>1&&r.pop():"."!==e&&r.push(e)})),r.length>1?r.join("/"):"/"}(r,t):t;return{pathname:s,search:Ne(n),hash:Te(a)}}(a,s),c=i&&"/"!==i&&i.endsWith("/"),u=(o||"."===i)&&r.endsWith("/");return l.pathname.endsWith("/")||!c&&!u||(l.pathname+="/"),l}const Pe=e=>e.join("/").replace(/\/\/+/g,"/"),Oe=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Ne=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",Te=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";Error;class Le{constructor(e,t,r,n){void 0===n&&(n=!1),this.status=e,this.statusText=t||"",this.internal=n,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function Ie(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const Me=["post","put","patch","delete"],Ae=new Set(Me),De=["get",...Me],Fe=new Set(De),je=new Set([301,302,303,307,308]),ze=new Set([307,308]),Ue={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},qe={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Be={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},$e=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,He=e=>({hasErrorBoundary:Boolean(e.hasErrorBoundary)}),Ve="remix-router-transitions";function Ze(e){const t=e.window?e.window:"undefined"!=typeof window?window:void 0,r=void 0!==t&&void 0!==t.document&&void 0!==t.document.createElement,n=!r;let a;if(Q(e.routes.length>0,"You must provide a non-empty routes array to createRouter"),e.mapRouteProperties)a=e.mapRouteProperties;else if(e.detectErrorBoundary){let t=e.detectErrorBoundary;a=e=>({hasErrorBoundary:t(e)})}else a=He;let s,o,i,l={},c=ie(e.routes,a,void 0,l),u=e.basename||"/",d=e.unstable_dataStrategy||et,p=e.unstable_patchRoutesOnNavigation,m=Y({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),f=null,h=new Set,y=1e3,g=new Set,v=null,b=null,w=null,E=null!=e.hydrationData,x=le(c,e.history.location,u),S=null;if(null==x&&!p){let t=pt(404,{pathname:e.history.location.pathname}),{matches:r,route:n}=dt(c);x=r,S={[n.id]:t}}if(x&&!e.hydrationData&&Pe(x,c,e.history.location.pathname).active&&(x=null),x)if(x.some((e=>e.route.lazy)))o=!1;else if(x.some((e=>e.route.loader)))if(m.v7_partialHydration){let t=e.hydrationData?e.hydrationData.loaderData:null,r=e.hydrationData?e.hydrationData.errors:null,n=e=>!e.route.loader||("function"!=typeof e.route.loader||!0!==e.route.loader.hydrate)&&(t&&void 0!==t[e.route.id]||r&&void 0!==r[e.route.id]);if(r){let e=x.findIndex((e=>void 0!==r[e.route.id]));o=x.slice(0,e+1).every(n)}else o=x.every(n)}else o=null!=e.hydrationData;else o=!0;else if(o=!1,x=[],m.v7_partialHydration){let t=Pe(null,c,e.history.location.pathname);t.active&&t.matches&&(x=t.matches)}let _,R,k={historyAction:e.history.action,location:e.history.location,matches:x,initialized:o,navigation:Ue,restoreScrollPosition:null==e.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||S,fetchers:new Map,blockers:new Map},C=K.Pop,P=!1,O=!1,N=new Map,T=null,L=!1,I=!1,M=[],A=new Set,D=new Map,F=0,j=-1,z=new Map,U=new Set,q=new Map,B=new Map,$=new Set,H=new Map,V=new Map,Z=new Map;function W(e,t){void 0===t&&(t={}),k=Y({},k,e);let r=[],n=[];m.v7_fetcherPersist&&k.fetchers.forEach(((e,t)=>{"idle"===e.state&&($.has(t)?n.push(t):r.push(t))})),[...h].forEach((e=>e(k,{deletedFetchers:n,unstable_viewTransitionOpts:t.viewTransitionOpts,unstable_flushSync:!0===t.flushSync}))),m.v7_fetcherPersist&&(r.forEach((e=>k.fetchers.delete(e))),n.forEach((e=>fe(e))))}function G(t,r,n){var a,o;let i,{flushSync:l}=void 0===n?{}:n,u=null!=k.actionData&&null!=k.navigation.formMethod&&Et(k.navigation.formMethod)&&"loading"===k.navigation.state&&!0!==(null==(a=t.state)?void 0:a._isRedirect);i=r.actionData?Object.keys(r.actionData).length>0?r.actionData:null:u?k.actionData:null;let d=r.loaderData?lt(k.loaderData,r.loaderData,r.matches||[],r.errors):k.loaderData,p=k.blockers;p.size>0&&(p=new Map(p),p.forEach(((e,t)=>p.set(t,Be))));let m,f=!0===P||null!=k.navigation.formMethod&&Et(k.navigation.formMethod)&&!0!==(null==(o=t.state)?void 0:o._isRedirect);if(s&&(c=s,s=void 0),L||C===K.Pop||(C===K.Push?e.history.push(t,t.state):C===K.Replace&&e.history.replace(t,t.state)),C===K.Pop){let e=N.get(k.location.pathname);e&&e.has(t.pathname)?m={currentLocation:k.location,nextLocation:t}:N.has(t.pathname)&&(m={currentLocation:t,nextLocation:k.location})}else if(O){let e=N.get(k.location.pathname);e?e.add(t.pathname):(e=new Set([t.pathname]),N.set(k.location.pathname,e)),m={currentLocation:k.location,nextLocation:t}}W(Y({},r,{actionData:i,loaderData:d,historyAction:C,location:t,initialized:!0,navigation:Ue,revalidation:"idle",restoreScrollPosition:Ce(t,r.matches||k.matches),preventScrollReset:f,blockers:p}),{viewTransitionOpts:m,flushSync:!0===l}),C=K.Pop,P=!1,O=!1,L=!1,I=!1,M=[]}async function J(t,r,n){_&&_.abort(),_=null,C=t,L=!0===(n&&n.startUninterruptedRevalidation),function(e,t){if(v&&w){let r=ke(e,t);v[r]=w()}}(k.location,k.matches),P=!0===(n&&n.preventScrollReset),O=!0===(n&&n.enableViewTransition);let a=s||c,o=n&&n.overrideNavigation,i=le(a,r,u),l=!0===(n&&n.flushSync),d=Pe(i,a,r.pathname);if(d.active&&d.matches&&(i=d.matches),!i){let{error:e,notFoundMatches:t,route:n}=xe(r.pathname);return void G(r,{matches:t,loaderData:{},errors:{[n.id]:e}},{flushSync:l})}if(k.initialized&&!I&&(p=k.location,f=r,p.pathname===f.pathname&&p.search===f.search&&(""===p.hash?""!==f.hash:p.hash===f.hash||""!==f.hash))&&!(n&&n.submission&&Et(n.submission.formMethod)))return void G(r,{matches:i},{flushSync:l});var p,f;_=new AbortController;let h,y=at(e.history,r,_.signal,n&&n.submission);if(n&&n.pendingError)h=[ut(i).route.id,{type:se.error,error:n.pendingError}];else if(n&&n.submission&&Et(n.submission.formMethod)){let t=await async function(e,t,r,n,a,s){void 0===s&&(s={}),ue();let o,i=function(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}(t,r);if(W({navigation:i},{flushSync:!0===s.flushSync}),a){let r=await Oe(n,t.pathname,e.signal);if("aborted"===r.type)return{shortCircuited:!0};if("error"===r.type){let{boundaryId:e,error:n}=_e(t.pathname,r);return{matches:r.partialMatches,pendingActionResult:[e,{type:se.error,error:n}]}}if(!r.matches){let{notFoundMatches:e,error:r,route:n}=xe(t.pathname);return{matches:e,pendingActionResult:[n.id,{type:se.error,error:r}]}}n=r.matches}let l=kt(n,t);if(l.route.action||l.route.lazy){if(o=(await ne("action",k,e,[l],n,null))[l.route.id],e.signal.aborted)return{shortCircuited:!0}}else o={type:se.error,error:pt(405,{method:e.method,pathname:t.pathname,routeId:l.route.id})};if(vt(o)){let t;return t=s&&null!=s.replace?s.replace:nt(o.response.headers.get("Location"),new URL(e.url),u)===k.location.pathname+k.location.search,await re(e,o,!0,{submission:r,replace:t}),{shortCircuited:!0}}if(yt(o))throw pt(400,{type:"defer-action"});if(gt(o)){let e=ut(n,l.route.id);return!0!==(s&&s.replace)&&(C=K.Push),{matches:n,pendingActionResult:[e.route.id,o]}}return{matches:n,pendingActionResult:[l.route.id,o]}}(y,r,n.submission,i,d.active,{replace:n.replace,flushSync:l});if(t.shortCircuited)return;if(t.pendingActionResult){let[e,n]=t.pendingActionResult;if(gt(n)&&Ie(n.error)&&404===n.error.status)return _=null,void G(r,{matches:t.matches,loaderData:{},errors:{[e]:n.error}})}i=t.matches||i,h=t.pendingActionResult,o=Pt(r,n.submission),l=!1,d.active=!1,y=at(e.history,y.url,y.signal)}let{shortCircuited:g,matches:b,loaderData:E,errors:x}=await async function(t,r,n,a,o,i,l,d,p,f,h){let y=o||Pt(r,i),g=i||l||Ct(y),v=!(L||m.v7_partialHydration&&p);if(a){if(v){let e=ee(h);W(Y({navigation:y},void 0!==e?{actionData:e}:{}),{flushSync:f})}let e=await Oe(n,r.pathname,t.signal);if("aborted"===e.type)return{shortCircuited:!0};if("error"===e.type){let{boundaryId:t,error:n}=_e(r.pathname,e);return{matches:e.partialMatches,loaderData:{},errors:{[t]:n}}}if(!e.matches){let{error:e,notFoundMatches:t,route:n}=xe(r.pathname);return{matches:t,loaderData:{},errors:{[n.id]:e}}}n=e.matches}let b=s||c,[w,E]=Ye(e.history,k,n,g,r,m.v7_partialHydration&&!0===p,m.v7_skipActionErrorRevalidation,I,M,A,$,q,U,b,u,h);if(Re((e=>!(n&&n.some((t=>t.route.id===e)))||w&&w.some((t=>t.route.id===e)))),j=++F,0===w.length&&0===E.length){let e=ge();return G(r,Y({matches:n,loaderData:{},errors:h&>(h[1])?{[h[0]]:h[1].error}:null},ct(h),e?{fetchers:new Map(k.fetchers)}:{}),{flushSync:f}),{shortCircuited:!0}}if(v){let e={};if(!a){e.navigation=y;let t=ee(h);void 0!==t&&(e.actionData=t)}E.length>0&&(e.fetchers=function(e){return e.forEach((e=>{let t=k.fetchers.get(e.key),r=Ot(void 0,t?t.data:void 0);k.fetchers.set(e.key,r)})),new Map(k.fetchers)}(E)),W(e,{flushSync:f})}E.forEach((e=>{D.has(e.key)&&he(e.key),e.controller&&D.set(e.key,e.controller)}));let x=()=>E.forEach((e=>he(e.key)));_&&_.signal.addEventListener("abort",x);let{loaderResults:S,fetcherResults:R}=await ae(k,n,w,E,t);if(t.signal.aborted)return{shortCircuited:!0};_&&_.signal.removeEventListener("abort",x),E.forEach((e=>D.delete(e.key)));let C=mt(S);if(C)return await re(t,C.result,!0,{replace:d}),{shortCircuited:!0};if(C=mt(R),C)return U.add(C.key),await re(t,C.result,!0,{replace:d}),{shortCircuited:!0};let{loaderData:P,errors:O}=it(k,n,0,S,h,E,R,H);H.forEach(((e,t)=>{e.subscribe((r=>{(r||e.done)&&H.delete(t)}))})),m.v7_partialHydration&&p&&k.errors&&Object.entries(k.errors).filter((e=>{let[t]=e;return!w.some((e=>e.route.id===t))})).forEach((e=>{let[t,r]=e;O=Object.assign(O||{},{[t]:r})}));let N=ge(),T=ve(j),z=N||T||E.length>0;return Y({matches:n,loaderData:P,errors:O},z?{fetchers:new Map(k.fetchers)}:{})}(y,r,i,d.active,o,n&&n.submission,n&&n.fetcherSubmission,n&&n.replace,n&&!0===n.initialHydration,l,h);g||(_=null,G(r,Y({matches:b||i},ct(h),{loaderData:E,errors:x})))}function ee(e){return e&&!gt(e[1])?{[e[0]]:e[1].data}:k.actionData?0===Object.keys(k.actionData).length?null:k.actionData:void 0}async function re(n,a,s,o){let{submission:i,fetcherSubmission:l,replace:c}=void 0===o?{}:o;a.response.headers.has("X-Remix-Revalidate")&&(I=!0);let d=a.response.headers.get("Location");Q(d,"Expected a Location header on the redirect Response"),d=nt(d,new URL(n.url),u);let p=te(k.location,d,{_isRedirect:!0});if(r){let r=!1;if(a.response.headers.has("X-Remix-Reload-Document"))r=!0;else if($e.test(d)){const n=e.history.createURL(d);r=n.origin!==t.location.origin||null==Se(n.pathname,u)}if(r)return void(c?t.location.replace(d):t.location.assign(d))}_=null;let m=!0===c||a.response.headers.has("X-Remix-Replace")?K.Replace:K.Push,{formMethod:f,formAction:h,formEncType:y}=k.navigation;!i&&!l&&f&&h&&y&&(i=Ct(k.navigation));let g=i||l;if(ze.has(a.response.status)&&g&&Et(g.formMethod))await J(m,p,{submission:Y({},g,{formAction:d}),preventScrollReset:P,enableViewTransition:s?O:void 0});else{let e=Pt(p,i);await J(m,p,{overrideNavigation:e,fetcherSubmission:l,preventScrollReset:P,enableViewTransition:s?O:void 0})}}async function ne(e,t,r,n,s,o){let i,c={};try{i=await async function(e,t,r,n,a,s,o,i,l,c){let u=s.map((e=>e.route.lazy?async function(e,t,r){if(!e.lazy)return;let n=await e.lazy();if(!e.lazy)return;let a=r[e.id];Q(a,"No route found in manifest");let s={};for(let e in n){let t=void 0!==a[e]&&"hasErrorBoundary"!==e;X(!t,'Route "'+a.id+'" has a static property "'+e+'" defined but its lazy function is also returning a value for this property. The lazy route property "'+e+'" will be ignored.'),t||oe.has(e)||(s[e]=n[e])}Object.assign(a,s),Object.assign(a,Y({},t(a),{lazy:void 0}))}(e.route,l,i):void 0)),d=s.map(((e,r)=>{let s=u[r],o=a.some((t=>t.route.id===e.route.id));return Y({},e,{shouldLoad:o,resolve:async r=>(r&&"GET"===n.method&&(e.route.lazy||e.route.loader)&&(o=!0),o?async function(e,t,r,n,a,s){let o,i,l=n=>{let o,l=new Promise(((e,t)=>o=t));i=()=>o(),t.signal.addEventListener("abort",i);let c=a=>"function"!=typeof n?Promise.reject(new Error('You cannot call the handler for a route which defines a boolean "'+e+'" [routeId: '+r.route.id+"]")):n({request:t,params:r.params,context:s},...void 0!==a?[a]:[]),u=(async()=>{try{return{type:"data",result:await(a?a((e=>c(e))):c())}}catch(e){return{type:"error",result:e}}})();return Promise.race([u,l])};try{let a=r.route[e];if(n)if(a){let e,[t]=await Promise.all([l(a).catch((t=>{e=t})),n]);if(void 0!==e)throw e;o=t}else{if(await n,a=r.route[e],!a){if("action"===e){let e=new URL(t.url),n=e.pathname+e.search;throw pt(405,{method:t.method,pathname:n,routeId:r.route.id})}return{type:se.data,result:void 0}}o=await l(a)}else{if(!a){let e=new URL(t.url);throw pt(404,{pathname:e.pathname+e.search})}o=await l(a)}Q(void 0!==o.result,"You defined "+("action"===e?"an action":"a loader")+' for route "'+r.route.id+"\" but didn't return anything from your `"+e+"` function. Please return a value or `null`.")}catch(e){return{type:se.error,result:e}}finally{i&&t.signal.removeEventListener("abort",i)}return o}(t,n,e,s,r,c):Promise.resolve({type:se.data,result:void 0}))})})),p=await e({matches:d,request:n,params:s[0].params,fetcherKey:o,context:c});try{await Promise.all(u)}catch(e){}return p}(d,e,0,r,n,s,o,l,a)}catch(e){return n.forEach((t=>{c[t.route.id]={type:se.error,error:e}})),c}for(let[e,t]of Object.entries(i))if(ht(t)){let n=t.result;c[e]={type:se.redirect,response:rt(n,r,e,s,u,m.v7_relativeSplatPath)}}else c[e]=await tt(t);return c}async function ae(t,r,n,a,s){let o=t.matches,i=ne("loader",0,s,n,r,null),l=Promise.all(a.map((async t=>{if(t.matches&&t.match&&t.controller){let r=(await ne("loader",0,at(e.history,t.path,t.controller.signal),[t.match],t.matches,t.key))[t.match.route.id];return{[t.key]:r}}return Promise.resolve({[t.key]:{type:se.error,error:pt(404,{pathname:t.path})}})}))),c=await i,u=(await l).reduce(((e,t)=>Object.assign(e,t)),{});return await Promise.all([xt(r,c,s.signal,o,t.loaderData),St(r,u,a)]),{loaderResults:c,fetcherResults:u}}function ue(){I=!0,M.push(...Re()),q.forEach(((e,t)=>{D.has(t)&&(A.add(t),he(t))}))}function de(e,t,r){void 0===r&&(r={}),k.fetchers.set(e,t),W({fetchers:new Map(k.fetchers)},{flushSync:!0===(r&&r.flushSync)})}function pe(e,t,r,n){void 0===n&&(n={});let a=ut(k.matches,t);fe(e),W({errors:{[a.route.id]:r},fetchers:new Map(k.fetchers)},{flushSync:!0===(n&&n.flushSync)})}function me(e){return m.v7_fetcherPersist&&(B.set(e,(B.get(e)||0)+1),$.has(e)&&$.delete(e)),k.fetchers.get(e)||qe}function fe(e){let t=k.fetchers.get(e);!D.has(e)||t&&"loading"===t.state&&z.has(e)||he(e),q.delete(e),z.delete(e),U.delete(e),$.delete(e),A.delete(e),k.fetchers.delete(e)}function he(e){let t=D.get(e);Q(t,"Expected fetch controller: "+e),t.abort(),D.delete(e)}function ye(e){for(let t of e){let e=Nt(me(t).data);k.fetchers.set(t,e)}}function ge(){let e=[],t=!1;for(let r of U){let n=k.fetchers.get(r);Q(n,"Expected fetcher: "+r),"loading"===n.state&&(U.delete(r),e.push(r),t=!0)}return ye(e),t}function ve(e){let t=[];for(let[r,n]of z)if(n0}function be(e){k.blockers.delete(e),V.delete(e)}function we(e,t){let r=k.blockers.get(e)||Be;Q("unblocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"blocked"===t.state||"blocked"===r.state&&"proceeding"===t.state||"blocked"===r.state&&"unblocked"===t.state||"proceeding"===r.state&&"unblocked"===t.state,"Invalid blocker state transition: "+r.state+" -> "+t.state);let n=new Map(k.blockers);n.set(e,t),W({blockers:n})}function Ee(e){let{currentLocation:t,nextLocation:r,historyAction:n}=e;if(0===V.size)return;V.size>1&&X(!1,"A router only supports one blocker at a time");let a=Array.from(V.entries()),[s,o]=a[a.length-1],i=k.blockers.get(s);return i&&"proceeding"===i.state?void 0:o({currentLocation:t,nextLocation:r,historyAction:n})?s:void 0}function xe(e){let t=pt(404,{pathname:e}),r=s||c,{matches:n,route:a}=dt(r);return Re(),{notFoundMatches:n,route:a,error:t}}function _e(e,t){return{boundaryId:ut(t.partialMatches).route.id,error:pt(400,{type:"route-discovery",pathname:e,message:null!=t.error&&"message"in t.error?t.error:String(t.error)})}}function Re(e){let t=[];return H.forEach(((r,n)=>{e&&!e(n)||(r.cancel(),t.push(n),H.delete(n))})),t}function ke(e,t){return b&&b(e,t.map((e=>function(e,t){let{route:r,pathname:n,params:a}=e;return{id:r.id,pathname:n,params:a,data:t[r.id],handle:r.handle}}(e,k.loaderData))))||e.key}function Ce(e,t){if(v){let r=ke(e,t),n=v[r];if("number"==typeof n)return n}return null}function Pe(e,t,r){if(p){if(g.has(r))return{active:!1,matches:e};if(!e)return{active:!0,matches:ce(t,r,u,!0)||[]};if(Object.keys(e[0].params).length>0)return{active:!0,matches:ce(t,r,u,!0)}}return{active:!1,matches:null}}async function Oe(e,t,r){let n=e;for(;;){let e=null==s,o=s||c;try{await Qe(p,t,n,o,l,a,Z,r)}catch(e){return{type:"error",error:e,partialMatches:n}}finally{e&&(c=[...c])}if(r.aborted)return{type:"aborted"};let i=le(o,t,u);if(i)return Ne(t,g),{type:"success",matches:i};let d=ce(o,t,u,!0);if(!d||n.length===d.length&&n.every(((e,t)=>e.route.id===d[t].route.id)))return Ne(t,g),{type:"success",matches:null};n=d}}function Ne(e,t){if(t.size>=y){let e=t.values().next().value;t.delete(e)}t.add(e)}return i={get basename(){return u},get future(){return m},get state(){return k},get routes(){return c},get window(){return t},initialize:function(){if(f=e.history.listen((t=>{let{action:r,location:n,delta:a}=t;if(R)return R(),void(R=void 0);X(0===V.size||null!=a,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let s=Ee({currentLocation:k.location,nextLocation:n,historyAction:r});if(s&&null!=a){let t=new Promise((e=>{R=e}));return e.history.go(-1*a),void we(s,{state:"blocked",location:n,proceed(){we(s,{state:"proceeding",proceed:void 0,reset:void 0,location:n}),t.then((()=>e.history.go(a)))},reset(){let e=new Map(k.blockers);e.set(s,Be),W({blockers:e})}})}return J(r,n)})),r){!function(e,t){try{let r=e.sessionStorage.getItem(Ve);if(r){let e=JSON.parse(r);for(let[r,n]of Object.entries(e||{}))n&&Array.isArray(n)&&t.set(r,new Set(n||[]))}}catch(e){}}(t,N);let e=()=>function(e,t){if(t.size>0){let r={};for(let[e,n]of t)r[e]=[...n];try{e.sessionStorage.setItem(Ve,JSON.stringify(r))}catch(e){X(!1,"Failed to save applied view transitions in sessionStorage ("+e+").")}}}(t,N);t.addEventListener("pagehide",e),T=()=>t.removeEventListener("pagehide",e)}return k.initialized||J(K.Pop,k.location,{initialHydration:!0}),i},subscribe:function(e){return h.add(e),()=>h.delete(e)},enableScrollRestoration:function(e,t,r){if(v=e,w=t,b=r||null,!E&&k.navigation===Ue){E=!0;let e=Ce(k.location,k.matches);null!=e&&W({restoreScrollPosition:e})}return()=>{v=null,w=null,b=null}},navigate:async function t(r,n){if("number"==typeof r)return void e.history.go(r);let a=We(k.location,k.matches,u,m.v7_prependBasename,r,m.v7_relativeSplatPath,null==n?void 0:n.fromRouteId,null==n?void 0:n.relative),{path:s,submission:o,error:i}=Ge(m.v7_normalizeFormMethod,!1,a,n),l=k.location,c=te(k.location,s,n&&n.state);c=Y({},c,e.history.encodeLocation(c));let d=n&&null!=n.replace?n.replace:void 0,p=K.Push;!0===d?p=K.Replace:!1===d||null!=o&&Et(o.formMethod)&&o.formAction===k.location.pathname+k.location.search&&(p=K.Replace);let f=n&&"preventScrollReset"in n?!0===n.preventScrollReset:void 0,h=!0===(n&&n.unstable_flushSync),y=Ee({currentLocation:l,nextLocation:c,historyAction:p});if(!y)return await J(p,c,{submission:o,pendingError:i,preventScrollReset:f,replace:n&&n.replace,enableViewTransition:n&&n.unstable_viewTransition,flushSync:h});we(y,{state:"blocked",location:c,proceed(){we(y,{state:"proceeding",proceed:void 0,reset:void 0,location:c}),t(r,n)},reset(){let e=new Map(k.blockers);e.set(y,Be),W({blockers:e})}})},fetch:function(t,r,a,o){if(n)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");D.has(t)&&he(t);let i=!0===(o&&o.unstable_flushSync),l=s||c,d=We(k.location,k.matches,u,m.v7_prependBasename,a,m.v7_relativeSplatPath,r,null==o?void 0:o.relative),p=le(l,d,u),f=Pe(p,l,d);if(f.active&&f.matches&&(p=f.matches),!p)return void pe(t,r,pt(404,{pathname:d}),{flushSync:i});let{path:h,submission:y,error:g}=Ge(m.v7_normalizeFormMethod,!0,d,o);if(g)return void pe(t,r,g,{flushSync:i});let v=kt(p,h);P=!0===(o&&o.preventScrollReset),y&&Et(y.formMethod)?async function(t,r,n,a,o,i,l,d){function p(e){if(!e.route.action&&!e.route.lazy){let e=pt(405,{method:d.formMethod,pathname:n,routeId:r});return pe(t,r,e,{flushSync:l}),!0}return!1}if(ue(),q.delete(t),!i&&p(a))return;let f=k.fetchers.get(t);de(t,function(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}(d,f),{flushSync:l});let h=new AbortController,y=at(e.history,n,h.signal,d);if(i){let e=await Oe(o,n,y.signal);if("aborted"===e.type)return;if("error"===e.type){let{error:a}=_e(n,e);return void pe(t,r,a,{flushSync:l})}if(!e.matches)return void pe(t,r,pt(404,{pathname:n}),{flushSync:l});if(p(a=kt(o=e.matches,n)))return}D.set(t,h);let g=F,v=(await ne("action",0,y,[a],o,t))[a.route.id];if(y.signal.aborted)return void(D.get(t)===h&&D.delete(t));if(m.v7_fetcherPersist&&$.has(t)){if(vt(v)||gt(v))return void de(t,Nt(void 0))}else{if(vt(v))return D.delete(t),j>g?void de(t,Nt(void 0)):(U.add(t),de(t,Ot(d)),re(y,v,!1,{fetcherSubmission:d}));if(gt(v))return void pe(t,r,v.error)}if(yt(v))throw pt(400,{type:"defer-action"});let b=k.navigation.location||k.location,w=at(e.history,b,h.signal),E=s||c,x="idle"!==k.navigation.state?le(E,k.navigation.location,u):k.matches;Q(x,"Didn't find any matches after fetcher action");let S=++F;z.set(t,S);let R=Ot(d,v.data);k.fetchers.set(t,R);let[P,O]=Ye(e.history,k,x,d,b,!1,m.v7_skipActionErrorRevalidation,I,M,A,$,q,U,E,u,[a.route.id,v]);O.filter((e=>e.key!==t)).forEach((e=>{let t=e.key,r=k.fetchers.get(t),n=Ot(void 0,r?r.data:void 0);k.fetchers.set(t,n),D.has(t)&&he(t),e.controller&&D.set(t,e.controller)})),W({fetchers:new Map(k.fetchers)});let N=()=>O.forEach((e=>he(e.key)));h.signal.addEventListener("abort",N);let{loaderResults:T,fetcherResults:L}=await ae(k,x,P,O,w);if(h.signal.aborted)return;h.signal.removeEventListener("abort",N),z.delete(t),D.delete(t),O.forEach((e=>D.delete(e.key)));let B=mt(T);if(B)return re(w,B.result,!1);if(B=mt(L),B)return U.add(B.key),re(w,B.result,!1);let{loaderData:V,errors:Z}=it(k,x,0,T,void 0,O,L,H);if(k.fetchers.has(t)){let e=Nt(v.data);k.fetchers.set(t,e)}ve(S),"loading"===k.navigation.state&&S>j?(Q(C,"Expected pending action"),_&&_.abort(),G(k.navigation.location,{matches:x,loaderData:V,errors:Z,fetchers:new Map(k.fetchers)})):(W({errors:Z,loaderData:lt(k.loaderData,V,x,Z),fetchers:new Map(k.fetchers)}),I=!1)}(t,r,h,v,p,f.active,i,y):(q.set(t,{routeId:r,path:h}),async function(t,r,n,a,s,o,i,l){let c=k.fetchers.get(t);de(t,Ot(l,c?c.data:void 0),{flushSync:i});let u=new AbortController,d=at(e.history,n,u.signal);if(o){let e=await Oe(s,n,d.signal);if("aborted"===e.type)return;if("error"===e.type){let{error:a}=_e(n,e);return void pe(t,r,a,{flushSync:i})}if(!e.matches)return void pe(t,r,pt(404,{pathname:n}),{flushSync:i});a=kt(s=e.matches,n)}D.set(t,u);let p=F,m=(await ne("loader",0,d,[a],s,t))[a.route.id];if(yt(m)&&(m=await _t(m,d.signal,!0)||m),D.get(t)===u&&D.delete(t),!d.signal.aborted){if(!$.has(t))return vt(m)?j>p?void de(t,Nt(void 0)):(U.add(t),void await re(d,m,!1)):void(gt(m)?pe(t,r,m.error):(Q(!yt(m),"Unhandled fetcher deferred data"),de(t,Nt(m.data))));de(t,Nt(void 0))}}(t,r,h,v,p,f.active,i,y))},revalidate:function(){ue(),W({revalidation:"loading"}),"submitting"!==k.navigation.state&&("idle"!==k.navigation.state?J(C||k.historyAction,k.navigation.location,{overrideNavigation:k.navigation,enableViewTransition:!0===O}):J(k.historyAction,k.location,{startUninterruptedRevalidation:!0}))},createHref:t=>e.history.createHref(t),encodeLocation:t=>e.history.encodeLocation(t),getFetcher:me,deleteFetcher:function(e){if(m.v7_fetcherPersist){let t=(B.get(e)||0)-1;t<=0?(B.delete(e),$.add(e)):B.set(e,t)}else fe(e);W({fetchers:new Map(k.fetchers)})},dispose:function(){f&&f(),T&&T(),h.clear(),_&&_.abort(),k.fetchers.forEach(((e,t)=>fe(t))),k.blockers.forEach(((e,t)=>be(t)))},getBlocker:function(e,t){let r=k.blockers.get(e)||Be;return V.get(e)!==t&&V.set(e,t),r},deleteBlocker:be,patchRoutes:function(e,t){let r=null==s;Xe(e,t,s||c,l,a),r&&(c=[...c],W({}))},_internalFetchControllers:D,_internalActiveDeferreds:H,_internalSetRoutes:function(e){l={},s=ie(e,a,void 0,l)}},i}function We(e,t,r,n,a,s,o,i){let l,c;if(o){l=[];for(let e of t)if(l.push(e),e.route.id===o){c=e;break}}else l=t,c=t[t.length-1];let u=Ce(a||".",ke(l,s),Se(e.pathname,r)||e.pathname,"path"===i);return null==a&&(u.search=e.search,u.hash=e.hash),null!=a&&""!==a&&"."!==a||!c||!c.route.index||Rt(u.search)||(u.search=u.search?u.search.replace(/^\?/,"?index&"):"?index"),n&&"/"!==r&&(u.pathname="/"===u.pathname?r:Pe([r,u.pathname])),re(u)}function Ge(e,t,r,n){if(!n||!function(e){return null!=e&&("formData"in e&&null!=e.formData||"body"in e&&void 0!==e.body)}(n))return{path:r};if(n.formMethod&&(a=n.formMethod,!Fe.has(a.toLowerCase())))return{path:r,error:pt(405,{method:n.formMethod})};var a;let s,o,i=()=>({path:r,error:pt(400,{type:"invalid-body"})}),l=n.formMethod||"get",c=e?l.toUpperCase():l.toLowerCase(),u=ft(r);if(void 0!==n.body){if("text/plain"===n.formEncType){if(!Et(c))return i();let e="string"==typeof n.body?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce(((e,t)=>{let[r,n]=t;return""+e+r+"="+n+"\n"}),""):String(n.body);return{path:r,submission:{formMethod:c,formAction:u,formEncType:n.formEncType,formData:void 0,json:void 0,text:e}}}if("application/json"===n.formEncType){if(!Et(c))return i();try{let e="string"==typeof n.body?JSON.parse(n.body):n.body;return{path:r,submission:{formMethod:c,formAction:u,formEncType:n.formEncType,formData:void 0,json:e,text:void 0}}}catch(e){return i()}}}if(Q("function"==typeof FormData,"FormData is not available in this environment"),n.formData)s=st(n.formData),o=n.formData;else if(n.body instanceof FormData)s=st(n.body),o=n.body;else if(n.body instanceof URLSearchParams)s=n.body,o=ot(s);else if(null==n.body)s=new URLSearchParams,o=new FormData;else try{s=new URLSearchParams(n.body),o=ot(s)}catch(e){return i()}let d={formMethod:c,formAction:u,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:o,json:void 0,text:void 0};if(Et(d.formMethod))return{path:r,submission:d};let p=ne(r);return t&&p.search&&Rt(p.search)&&s.append("index",""),p.search="?"+s,{path:re(p),submission:d}}function Ye(e,t,r,n,a,s,o,i,l,c,u,d,p,m,f,h){let y=h?gt(h[1])?h[1].error:h[1].data:void 0,g=e.createURL(t.location),v=e.createURL(a),b=h&>(h[1])?h[0]:void 0,w=b?function(e,t){let r=e;if(t){let n=e.findIndex((e=>e.route.id===t));n>=0&&(r=e.slice(0,n))}return r}(r,b):r,E=h?h[1].statusCode:void 0,x=o&&E&&E>=400,S=w.filter(((e,r)=>{let{route:a}=e;if(a.lazy)return!0;if(null==a.loader)return!1;if(s)return!("function"==typeof a.loader&&!a.loader.hydrate&&(void 0!==t.loaderData[a.id]||t.errors&&void 0!==t.errors[a.id]));if(function(e,t,r){let n=!t||r.route.id!==t.route.id,a=void 0===e[r.route.id];return n||a}(t.loaderData,t.matches[r],e)||l.some((t=>t===e.route.id)))return!0;let o=t.matches[r],c=e;return Je(e,Y({currentUrl:g,currentParams:o.params,nextUrl:v,nextParams:c.params},n,{actionResult:y,actionStatus:E,defaultShouldRevalidate:!x&&(i||g.pathname+g.search===v.pathname+v.search||g.search!==v.search||Ke(o,c))}))})),_=[];return d.forEach(((e,a)=>{if(s||!r.some((t=>t.route.id===e.routeId))||u.has(a))return;let o=le(m,e.path,f);if(!o)return void _.push({key:a,routeId:e.routeId,path:e.path,matches:null,match:null,controller:null});let l=t.fetchers.get(a),d=kt(o,e.path),h=!1;p.has(a)?h=!1:c.has(a)?(c.delete(a),h=!0):h=l&&"idle"!==l.state&&void 0===l.data?i:Je(d,Y({currentUrl:g,currentParams:t.matches[t.matches.length-1].params,nextUrl:v,nextParams:r[r.length-1].params},n,{actionResult:y,actionStatus:E,defaultShouldRevalidate:!x&&i})),h&&_.push({key:a,routeId:e.routeId,path:e.path,matches:o,match:d,controller:new AbortController})})),[S,_]}function Ke(e,t){let r=e.route.path;return e.pathname!==t.pathname||null!=r&&r.endsWith("*")&&e.params["*"]!==t.params["*"]}function Je(e,t){if(e.route.shouldRevalidate){let r=e.route.shouldRevalidate(t);if("boolean"==typeof r)return r}return t.defaultShouldRevalidate}async function Qe(e,t,r,n,a,s,o,i){let l=[t,...r.map((e=>e.route.id))].join("-");try{let u=o.get(l);u||(u=e({path:t,matches:r,patch:(e,t)=>{i.aborted||Xe(e,t,n,a,s)}}),o.set(l,u)),u&&"object"==typeof(c=u)&&null!=c&&"then"in c&&await u}finally{o.delete(l)}var c}function Xe(e,t,r,n,a){if(e){var s;let r=n[e];Q(r,"No route found to patch children into: routeId = "+e);let o=ie(t,a,[e,"patch",String((null==(s=r.children)?void 0:s.length)||"0")],n);r.children?r.children.push(...o):r.children=o}else{let e=ie(t,a,["patch",String(r.length||"0")],n);r.push(...e)}}async function et(e){let{matches:t}=e,r=t.filter((e=>e.shouldLoad));return(await Promise.all(r.map((e=>e.resolve())))).reduce(((e,t,n)=>Object.assign(e,{[r[n].route.id]:t})),{})}async function tt(e){let{result:t,type:r}=e;if(wt(t)){let e;try{let r=t.headers.get("Content-Type");e=r&&/\bapplication\/json\b/.test(r)?null==t.body?null:await t.json():await t.text()}catch(e){return{type:se.error,error:e}}return r===se.error?{type:se.error,error:new Le(t.status,t.statusText,e),statusCode:t.status,headers:t.headers}:{type:se.data,data:e,statusCode:t.status,headers:t.headers}}if(r===se.error){if(bt(t)){var n,a;if(t.data instanceof Error)return{type:se.error,error:t.data,statusCode:null==(a=t.init)?void 0:a.status};t=new Le((null==(n=t.init)?void 0:n.status)||500,void 0,t.data)}return{type:se.error,error:t,statusCode:Ie(t)?t.status:void 0}}var s,o,i,l;return function(e){let t=e;return t&&"object"==typeof t&&"object"==typeof t.data&&"function"==typeof t.subscribe&&"function"==typeof t.cancel&&"function"==typeof t.resolveData}(t)?{type:se.deferred,deferredData:t,statusCode:null==(s=t.init)?void 0:s.status,headers:(null==(o=t.init)?void 0:o.headers)&&new Headers(t.init.headers)}:bt(t)?{type:se.data,data:t.data,statusCode:null==(i=t.init)?void 0:i.status,headers:null!=(l=t.init)&&l.headers?new Headers(t.init.headers):void 0}:{type:se.data,data:t}}function rt(e,t,r,n,a,s){let o=e.headers.get("Location");if(Q(o,"Redirects returned/thrown from loaders/actions must have a Location header"),!$e.test(o)){let i=n.slice(0,n.findIndex((e=>e.route.id===r))+1);o=We(new URL(t.url),i,a,!0,o,s),e.headers.set("Location",o)}return e}function nt(e,t,r){if($e.test(e)){let n=e,a=n.startsWith("//")?new URL(t.protocol+n):new URL(n),s=null!=Se(a.pathname,r);if(a.origin===t.origin&&s)return a.pathname+a.search+a.hash}return e}function at(e,t,r,n){let a=e.createURL(ft(t)).toString(),s={signal:r};if(n&&Et(n.formMethod)){let{formMethod:e,formEncType:t}=n;s.method=e.toUpperCase(),"application/json"===t?(s.headers=new Headers({"Content-Type":t}),s.body=JSON.stringify(n.json)):"text/plain"===t?s.body=n.text:"application/x-www-form-urlencoded"===t&&n.formData?s.body=st(n.formData):s.body=n.formData}return new Request(a,s)}function st(e){let t=new URLSearchParams;for(let[r,n]of e.entries())t.append(r,"string"==typeof n?n:n.name);return t}function ot(e){let t=new FormData;for(let[r,n]of e.entries())t.append(r,n);return t}function it(e,t,r,n,a,s,o,i){let{loaderData:l,errors:c}=function(e,t,r,n,a){let s,o={},i=null,l=!1,c={},u=r&>(r[1])?r[1].error:void 0;return e.forEach((r=>{if(!(r.route.id in t))return;let d=r.route.id,p=t[d];if(Q(!vt(p),"Cannot handle redirect results in processLoaderData"),gt(p)){let t=p.error;if(void 0!==u&&(t=u,u=void 0),i=i||{},a)i[d]=t;else{let r=ut(e,d);null==i[r.route.id]&&(i[r.route.id]=t)}o[d]=void 0,l||(l=!0,s=Ie(p.error)?p.error.status:500),p.headers&&(c[d]=p.headers)}else yt(p)?(n.set(d,p.deferredData),o[d]=p.deferredData.data,null==p.statusCode||200===p.statusCode||l||(s=p.statusCode),p.headers&&(c[d]=p.headers)):(o[d]=p.data,p.statusCode&&200!==p.statusCode&&!l&&(s=p.statusCode),p.headers&&(c[d]=p.headers))})),void 0!==u&&r&&(i={[r[0]]:u},o[r[0]]=void 0),{loaderData:o,errors:i,statusCode:s||200,loaderHeaders:c}}(t,n,a,i,!1);return s.forEach((t=>{let{key:r,match:n,controller:a}=t,s=o[r];if(Q(s,"Did not find corresponding fetcher result"),!a||!a.signal.aborted)if(gt(s)){let t=ut(e.matches,null==n?void 0:n.route.id);c&&c[t.route.id]||(c=Y({},c,{[t.route.id]:s.error})),e.fetchers.delete(r)}else if(vt(s))Q(!1,"Unhandled fetcher revalidation redirect");else if(yt(s))Q(!1,"Unhandled fetcher deferred data");else{let t=Nt(s.data);e.fetchers.set(r,t)}})),{loaderData:l,errors:c}}function lt(e,t,r,n){let a=Y({},t);for(let s of r){let r=s.route.id;if(t.hasOwnProperty(r)?void 0!==t[r]&&(a[r]=t[r]):void 0!==e[r]&&s.route.loader&&(a[r]=e[r]),n&&n.hasOwnProperty(r))break}return a}function ct(e){return e?gt(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function ut(e,t){return(t?e.slice(0,e.findIndex((e=>e.route.id===t))+1):[...e]).reverse().find((e=>!0===e.route.hasErrorBoundary))||e[0]}function dt(e){let t=1===e.length?e[0]:e.find((e=>e.index||!e.path||"/"===e.path))||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function pt(e,t){let{pathname:r,routeId:n,method:a,type:s,message:o}=void 0===t?{}:t,i="Unknown Server Error",l="Unknown @remix-run/router error";return 400===e?(i="Bad Request","route-discovery"===s?l='Unable to match URL "'+r+'" - the `unstable_patchRoutesOnNavigation()` function threw the following error:\n'+o:a&&r&&n?l="You made a "+a+' request to "'+r+'" but did not provide a `loader` for route "'+n+'", so there is no way to handle the request.':"defer-action"===s?l="defer() is not supported in actions":"invalid-body"===s&&(l="Unable to encode submission body")):403===e?(i="Forbidden",l='Route "'+n+'" does not match URL "'+r+'"'):404===e?(i="Not Found",l='No route matches URL "'+r+'"'):405===e&&(i="Method Not Allowed",a&&r&&n?l="You made a "+a.toUpperCase()+' request to "'+r+'" but did not provide an `action` for route "'+n+'", so there is no way to handle the request.':a&&(l='Invalid request method "'+a.toUpperCase()+'"')),new Le(e||500,i,new Error(l),!0)}function mt(e){let t=Object.entries(e);for(let e=t.length-1;e>=0;e--){let[r,n]=t[e];if(vt(n))return{key:r,result:n}}}function ft(e){return re(Y({},"string"==typeof e?ne(e):e,{hash:""}))}function ht(e){return wt(e.result)&&je.has(e.result.status)}function yt(e){return e.type===se.deferred}function gt(e){return e.type===se.error}function vt(e){return(e&&e.type)===se.redirect}function bt(e){return"object"==typeof e&&null!=e&&"type"in e&&"data"in e&&"init"in e&&"DataWithResponseInit"===e.type}function wt(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"object"==typeof e.headers&&void 0!==e.body}function Et(e){return Ae.has(e.toLowerCase())}async function xt(e,t,r,n,a){let s=Object.entries(t);for(let o=0;o(null==e?void 0:e.route.id)===i));if(!c)continue;let u=n.find((e=>e.route.id===c.route.id)),d=null!=u&&!Ke(u,c)&&void 0!==(a&&a[c.route.id]);yt(l)&&d&&await _t(l,r,!1).then((e=>{e&&(t[i]=e)}))}}async function St(e,t,r){for(let n=0;n(null==e?void 0:e.route.id)===s))&&yt(i)&&(Q(o,"Expected an AbortController for revalidating fetcher deferred result"),await _t(i,o.signal,!0).then((e=>{e&&(t[a]=e)})))}}async function _t(e,t,r){if(void 0===r&&(r=!1),!await e.deferredData.resolveData(t)){if(r)try{return{type:se.data,data:e.deferredData.unwrappedData}}catch(e){return{type:se.error,error:e}}return{type:se.data,data:e.deferredData.data}}}function Rt(e){return new URLSearchParams(e).getAll("index").some((e=>""===e))}function kt(e,t){let r="string"==typeof t?ne(t).search:t.search;if(e[e.length-1].route.index&&Rt(r||""))return e[e.length-1];let n=Re(e);return n[n.length-1]}function Ct(e){let{formMethod:t,formAction:r,formEncType:n,text:a,formData:s,json:o}=e;if(t&&r&&n)return null!=a?{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:void 0,text:a}:null!=s?{formMethod:t,formAction:r,formEncType:n,formData:s,json:void 0,text:void 0}:void 0!==o?{formMethod:t,formAction:r,formEncType:n,formData:void 0,json:o,text:void 0}:void 0}function Pt(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Ot(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Nt(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Tt(){return Tt=Object.assign?Object.assign.bind():function(e){for(var t=1;tCe(e,JSON.parse(i),o,"path"===n)),[e,i,o,n])}function $t(e,r,n,a){jt()||Q(!1);let{navigator:s}=t.useContext(Mt),{matches:o}=t.useContext(Dt),i=o[o.length-1],l=i?i.params:{},c=(i&&i.pathname,i?i.pathnameBase:"/");i&&i.route;let u,d=zt();if(r){var p;let e="string"==typeof r?ne(r):r;"/"===c||(null==(p=e.pathname)?void 0:p.startsWith(c))||Q(!1),u=e}else u=d;let m=u.pathname||"/",f=m;if("/"!==c){let e=c.replace(/^\//,"").split("/");f="/"+m.replace(/^\//,"").split("/").slice(e.length).join("/")}let h=le(e,{pathname:f}),y=function(e,r,n,a){var s;if(void 0===r&&(r=[]),void 0===n&&(n=null),void 0===a&&(a=null),null==e){var o;if(!n)return null;if(n.errors)e=n.matches;else{if(!(null!=(o=a)&&o.v7_partialHydration&&0===r.length&&!n.initialized&&n.matches.length>0))return null;e=n.matches}}let i=e,l=null==(s=n)?void 0:s.errors;if(null!=l){let e=i.findIndex((e=>e.route.id&&void 0!==(null==l?void 0:l[e.route.id])));e>=0||Q(!1),i=i.slice(0,Math.min(i.length,e+1))}let c=!1,u=-1;if(n&&a&&a.v7_partialHydration)for(let e=0;e=0?i.slice(0,u+1):[i[0]];break}}}return i.reduceRight(((e,a,s)=>{let o,d=!1,p=null,m=null;var f;n&&(o=l&&a.route.id?l[a.route.id]:void 0,p=a.route.errorElement||Vt,c&&(u<0&&0===s?(er[f="route-fallback"]||(er[f]=!0),d=!0,m=null):u===s&&(d=!0,m=a.route.hydrateFallbackElement||null)));let h=r.concat(i.slice(0,s+1)),y=()=>{let r;return r=o?p:d?m:a.route.Component?t.createElement(a.route.Component,null):a.route.element?a.route.element:e,t.createElement(Wt,{match:a,routeContext:{outlet:e,matches:h,isDataRoute:null!=n},children:r})};return n&&(a.route.ErrorBoundary||a.route.errorElement||0===s)?t.createElement(Zt,{location:n.location,revalidation:n.revalidation,component:p,error:o,children:y(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):y()}),null)}(h&&h.map((e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:Pe([c,s.encodeLocation?s.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?c:Pe([c,s.encodeLocation?s.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),o,n,a);return r&&y?t.createElement(At.Provider,{value:{location:Tt({pathname:"/",search:"",hash:"",state:null,key:"default"},u),navigationType:K.Pop}},y):y}function Ht(){let e=function(){var e;let r=t.useContext(Ft),n=Jt(Yt.UseRouteError),a=Qt(Yt.UseRouteError);return void 0!==r?r:null==(e=n.errors)?void 0:e[a]}(),r=Ie(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return t.createElement(t.Fragment,null,t.createElement("h2",null,"Unexpected Application Error!"),t.createElement("h3",{style:{fontStyle:"italic"}},r),n?t.createElement("pre",{style:a},n):null,null)}const Vt=t.createElement(Ht,null);class Zt extends t.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?t.createElement(Dt.Provider,{value:this.props.routeContext},t.createElement(Ft.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Wt(e){let{routeContext:r,match:n,children:a}=e,s=t.useContext(Lt);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),t.createElement(Dt.Provider,{value:r},a)}var Gt=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Gt||{}),Yt=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Yt||{});function Kt(e){let r=t.useContext(Lt);return r||Q(!1),r}function Jt(e){let r=t.useContext(It);return r||Q(!1),r}function Qt(e){let r=function(e){let r=t.useContext(Dt);return r||Q(!1),r}(),n=r.matches[r.matches.length-1];return n.route.id||Q(!1),n.route.id}let Xt=0;const er={};function tr(e){return function(e){let r=t.useContext(Dt).outlet;return r?t.createElement(qt.Provider,{value:e},r):r}(e.context)}function rr(e){Q(!1)}function nr(e){let{basename:r="/",children:n=null,location:a,navigationType:s=K.Pop,navigator:o,static:i=!1,future:l}=e;jt()&&Q(!1);let c=r.replace(/^\/*/,"/"),u=t.useMemo((()=>({basename:c,navigator:o,static:i,future:Tt({v7_relativeSplatPath:!1},l)})),[c,l,o,i]);"string"==typeof a&&(a=ne(a));let{pathname:d="/",search:p="",hash:m="",state:f=null,key:h="default"}=a,y=t.useMemo((()=>{let e=Se(d,c);return null==e?null:{location:{pathname:e,search:p,hash:m,state:f,key:h},navigationType:s}}),[c,d,p,m,f,h,s]);return null==y?null:t.createElement(Mt.Provider,{value:u},t.createElement(At.Provider,{children:n,value:y}))}function ar(e,r){void 0===r&&(r=[]);let n=[];return t.Children.forEach(e,((e,a)=>{if(!t.isValidElement(e))return;let s=[...r,a];if(e.type===t.Fragment)return void n.push.apply(n,ar(e.props.children,s));e.type!==rr&&Q(!1),e.props.index&&e.props.children&&Q(!1);let o={id:e.props.id||s.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=ar(e.props.children,s)),n.push(o)})),n}function sr(e){let r={hasErrorBoundary:null!=e.ErrorBoundary||null!=e.errorElement};return e.Component&&Object.assign(r,{element:t.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(r,{hydrateFallbackElement:t.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(r,{errorElement:t.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),r}function or(){return or=Object.assign?Object.assign.bind():function(e){for(var t=1;t{})),t.Component,new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const ir=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"];try{window.__reactRouterVersion="6"}catch(kr){}function lr(){var e;let t=null==(e=window)?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=or({},t,{errors:cr(t.errors)})),t}function cr(e){if(!e)return null;let t=Object.entries(e),r={};for(let[e,n]of t)if(n&&"RouteErrorResponse"===n.__type)r[e]=new Le(n.status,n.statusText,n.data,!0===n.internal);else if(n&&"Error"===n.__type){if(n.__subType){let t=window[n.__subType];if("function"==typeof t)try{let a=new t(n.message);a.stack="",r[e]=a}catch(e){}}if(null==r[e]){let t=new Error(n.message);t.stack="",r[e]=t}}else r[e]=n;return r}const ur=t.createContext({isTransitioning:!1}),dr=t.createContext(new Map),pr=t.startTransition,mr=G.flushSync;function fr(e){mr?mr(e):e()}t.useId;class hr{constructor(){this.status="pending",this.promise=new Promise(((e,t)=>{this.resolve=t=>{"pending"===this.status&&(this.status="resolved",e(t))},this.reject=e=>{"pending"===this.status&&(this.status="rejected",t(e))}}))}}function yr(e){let{fallbackElement:r,router:n,future:a}=e,[s,o]=t.useState(n.state),[i,l]=t.useState(),[c,u]=t.useState({isTransitioning:!1}),[d,p]=t.useState(),[m,f]=t.useState(),[h,y]=t.useState(),g=t.useRef(new Map),{v7_startTransition:v}=a||{},b=t.useCallback((e=>{v?function(e){pr?pr(e):e()}(e):e()}),[v]),w=t.useCallback(((e,t)=>{let{deletedFetchers:r,unstable_flushSync:a,unstable_viewTransitionOpts:s}=t;r.forEach((e=>g.current.delete(e))),e.fetchers.forEach(((e,t)=>{void 0!==e.data&&g.current.set(t,e.data)}));let i=null==n.window||null==n.window.document||"function"!=typeof n.window.document.startViewTransition;if(s&&!i){if(a){fr((()=>{m&&(d&&d.resolve(),m.skipTransition()),u({isTransitioning:!0,flushSync:!0,currentLocation:s.currentLocation,nextLocation:s.nextLocation})}));let t=n.window.document.startViewTransition((()=>{fr((()=>o(e)))}));return t.finished.finally((()=>{fr((()=>{p(void 0),f(void 0),l(void 0),u({isTransitioning:!1})}))})),void fr((()=>f(t)))}m?(d&&d.resolve(),m.skipTransition(),y({state:e,currentLocation:s.currentLocation,nextLocation:s.nextLocation})):(l(e),u({isTransitioning:!0,flushSync:!1,currentLocation:s.currentLocation,nextLocation:s.nextLocation}))}else a?fr((()=>o(e))):b((()=>o(e)))}),[n.window,m,d,g,b]);t.useLayoutEffect((()=>n.subscribe(w)),[n,w]),t.useEffect((()=>{c.isTransitioning&&!c.flushSync&&p(new hr)}),[c]),t.useEffect((()=>{if(d&&i&&n.window){let e=i,t=d.promise,r=n.window.document.startViewTransition((async()=>{b((()=>o(e))),await t}));r.finished.finally((()=>{p(void 0),f(void 0),l(void 0),u({isTransitioning:!1})})),f(r)}}),[b,i,d,n.window]),t.useEffect((()=>{d&&i&&s.location.key===i.location.key&&d.resolve()}),[d,m,s.location,i]),t.useEffect((()=>{!c.isTransitioning&&h&&(l(h.state),u({isTransitioning:!0,flushSync:!1,currentLocation:h.currentLocation,nextLocation:h.nextLocation}),y(void 0))}),[c.isTransitioning,h]),t.useEffect((()=>{}),[]);let E=t.useMemo((()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:e=>n.navigate(e),push:(e,t,r)=>n.navigate(e,{state:t,preventScrollReset:null==r?void 0:r.preventScrollReset}),replace:(e,t,r)=>n.navigate(e,{replace:!0,state:t,preventScrollReset:null==r?void 0:r.preventScrollReset})})),[n]),x=n.basename||"/",S=t.useMemo((()=>({router:n,navigator:E,static:!1,basename:x})),[n,E,x]),_=t.useMemo((()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath})),[n.future.v7_relativeSplatPath]);return t.createElement(t.Fragment,null,t.createElement(Lt.Provider,{value:S},t.createElement(It.Provider,{value:s},t.createElement(dr.Provider,{value:g.current},t.createElement(ur.Provider,{value:c},t.createElement(nr,{basename:x,location:s.location,navigationType:s.historyAction,navigator:E,future:_},s.initialized||n.future.v7_partialHydration?t.createElement(gr,{routes:n.routes,future:n.future,state:s}):r))))),null)}const gr=t.memo(vr);function vr(e){let{routes:t,future:r,state:n}=e;return $t(t,void 0,n,r)}const br="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,wr=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Er=t.forwardRef((function(e,r){let n,{onClick:a,relative:s,reloadDocument:o,replace:i,state:l,target:c,to:u,preventScrollReset:d,unstable_viewTransition:p}=e,m=function(e,t){if(null==e)return{};var r,n,a={},s=Object.keys(e);for(n=0;n=0||(a[r]=e[r]);return a}(e,ir),{basename:f}=t.useContext(Mt),h=!1;if("string"==typeof u&&wr.test(u)&&(n=u,br))try{let e=new URL(window.location.href),t=u.startsWith("//")?new URL(e.protocol+u):new URL(u),r=Se(t.pathname,f);t.origin===e.origin&&null!=r?u=r+t.search+t.hash:h=!0}catch(e){}let y=function(e,r){let{relative:n}=void 0===r?{}:r;jt()||Q(!1);let{basename:a,navigator:s}=t.useContext(Mt),{hash:o,pathname:i,search:l}=Bt(e,{relative:n}),c=i;return"/"!==a&&(c="/"===i?a:Pe([a,i])),s.createHref({pathname:c,search:l,hash:o})}(u,{relative:s}),g=function(e,r){let{target:n,replace:a,state:s,preventScrollReset:o,relative:i,unstable_viewTransition:l}=void 0===r?{}:r,c=function(){let{isDataRoute:e}=t.useContext(Dt);return e?function(){let{router:e}=Kt(Gt.UseNavigateStable),r=Qt(Yt.UseNavigateStable),n=t.useRef(!1);return Ut((()=>{n.current=!0})),t.useCallback((function(t,a){void 0===a&&(a={}),n.current&&("number"==typeof t?e.navigate(t):e.navigate(t,Tt({fromRouteId:r},a)))}),[e,r])}():function(){jt()||Q(!1);let e=t.useContext(Lt),{basename:r,future:n,navigator:a}=t.useContext(Mt),{matches:s}=t.useContext(Dt),{pathname:o}=zt(),i=JSON.stringify(ke(s,n.v7_relativeSplatPath)),l=t.useRef(!1);return Ut((()=>{l.current=!0})),t.useCallback((function(t,n){if(void 0===n&&(n={}),!l.current)return;if("number"==typeof t)return void a.go(t);let s=Ce(t,JSON.parse(i),o,"path"===n.relative);null==e&&"/"!==r&&(s.pathname="/"===s.pathname?r:Pe([r,s.pathname])),(n.replace?a.replace:a.push)(s,n.state,n)}),[r,a,i,o,e])}()}(),u=zt(),d=Bt(e,{relative:i});return t.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,n)){t.preventDefault();let r=void 0!==a?a:re(u)===re(d);c(e,{replace:r,state:s,preventScrollReset:o,relative:i,unstable_viewTransition:l})}}),[u,c,d,a,s,n,e,o,i,l])}(u,{replace:i,state:l,target:c,preventScrollReset:d,relative:s,unstable_viewTransition:p});return t.createElement("a",or({},m,{href:n||y,onClick:h||o?a:function(e){a&&a(e),e.defaultPrevented||g(e)},ref:r,target:c}))}));var xr,Sr;function _r(...e){return e.filter(Boolean).join(" ")}function Rr(e,t,...r){if(e in t){let n=t[e];return"function"==typeof n?n(...r):n}let n=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((e=>`"${e}"`)).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,Rr),n}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(xr||(xr={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Sr||(Sr={}));var kr,Cr,Pr=((Cr=Pr||{})[Cr.None=0]="None",Cr[Cr.RenderStrategy=1]="RenderStrategy",Cr[Cr.Static=2]="Static",Cr),Or=((kr=Or||{})[kr.Unmount=0]="Unmount",kr[kr.Hidden=1]="Hidden",kr);function Nr({ourProps:e,theirProps:t,slot:r,defaultTag:n,features:a,visible:s=!0,name:o}){let i=Lr(t,e);if(s)return Tr(i,r,n,o);let l=null!=a?a:0;if(2&l){let{static:e=!1,...t}=i;if(e)return Tr(t,r,n,o)}if(1&l){let{unmount:e=!0,...t}=i;return Rr(e?0:1,{0:()=>null,1:()=>Tr({...t,hidden:!0,style:{display:"none"}},r,n,o)})}return Tr(i,r,n,o)}function Tr(e,r={},n,a){var s;let{as:o=n,children:i,refName:l="ref",...c}=Ar(e,["unmount","static"]),u=void 0!==e.ref?{[l]:e.ref}:{},d="function"==typeof i?i(r):i;c.className&&"function"==typeof c.className&&(c.className=c.className(r));let p={};if(r){let e=!1,t=[];for(let[n,a]of Object.entries(r))"boolean"==typeof a&&(e=!0),!0===a&&t.push(n);e&&(p["data-headlessui-state"]=t.join(" "))}if(o===t.Fragment&&Object.keys(Mr(c)).length>0){if(!(0,t.isValidElement)(d)||Array.isArray(d)&&d.length>1)throw new Error(['Passing props on "Fragment"!',"",`The current component <${a} /> is rendering a "Fragment".`,"However we need to passthrough the following props:",Object.keys(c).map((e=>` - ${e}`)).join("\n"),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".',"Render a single element as the child so that we can forward the props onto that element."].map((e=>` - ${e}`)).join("\n")].join("\n"));let e=_r(null==(s=d.props)?void 0:s.className,c.className),r=e?{className:e}:{};return(0,t.cloneElement)(d,Object.assign({},Lr(d.props,Mr(Ar(c,["ref"]))),p,u,function(...e){return{ref:e.every((e=>null==e))?void 0:t=>{for(let r of e)null!=r&&("function"==typeof r?r(t):r.current=t)}}}(d.ref,u.ref),r))}return(0,t.createElement)(o,Object.assign({},Ar(c,["ref"]),o!==t.Fragment&&u,o!==t.Fragment&&p),d)}function Lr(...e){if(0===e.length)return{};if(1===e.length)return e[0];let t={},r={};for(let n of e)for(let e in n)e.startsWith("on")&&"function"==typeof n[e]?(null!=r[e]||(r[e]=[]),r[e].push(n[e])):t[e]=n[e];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(r).map((e=>[e,void 0]))));for(let e in r)Object.assign(t,{[e](t,...n){let a=r[e];for(let e of a){if((t instanceof Event||(null==t?void 0:t.nativeEvent)instanceof Event)&&t.defaultPrevented)return;e(t,...n)}}});return t}function Ir(e){var r;return Object.assign((0,t.forwardRef)(e),{displayName:null!=(r=e.displayName)?r:e.name})}function Mr(e){let t=Object.assign({},e);for(let e in t)void 0===t[e]&&delete t[e];return t}function Ar(e,t=[]){let r=Object.assign({},e);for(let e of t)e in r&&delete r[e];return r}let Dr=(0,t.createContext)(null);Dr.displayName="OpenClosedContext";var Fr=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Fr||{});function jr(){return(0,t.useContext)(Dr)}function zr({value:e,children:r}){return t.createElement(Dr.Provider,{value:e},r)}var Ur=Object.defineProperty,qr=(e,t,r)=>(((e,t,r)=>{t in e?Ur(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r);let Br=new class{constructor(){qr(this,"current",this.detect()),qr(this,"handoffState","pending"),qr(this,"currentId",0)}set(e){this.current!==e&&(this.handoffState="pending",this.currentId=0,this.current=e)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return"server"===this.current}get isClient(){return"client"===this.current}detect(){return"undefined"==typeof window||"undefined"==typeof document?"server":"client"}handoff(){"pending"===this.handoffState&&(this.handoffState="complete")}get isHandoffComplete(){return"complete"===this.handoffState}},$r=(e,r)=>{Br.isServer?(0,t.useEffect)(e,r):(0,t.useLayoutEffect)(e,r)};function Hr(){let e=(0,t.useRef)(!1);return $r((()=>(e.current=!0,()=>{e.current=!1})),[]),e}function Vr(e){let r=(0,t.useRef)(e);return $r((()=>{r.current=e}),[e]),r}function Zr(){let[e,r]=(0,t.useState)(Br.isHandoffComplete);return e&&!1===Br.isHandoffComplete&&r(!1),(0,t.useEffect)((()=>{!0!==e&&r(!0)}),[e]),(0,t.useEffect)((()=>Br.handoff()),[]),e}let Wr=function(e){let r=Vr(e);return t.useCallback(((...e)=>r.current(...e)),[r])},Gr=Symbol();function Yr(e,t=!0){return Object.assign(e,{[Gr]:t})}function Kr(...e){let r=(0,t.useRef)(e);(0,t.useEffect)((()=>{r.current=e}),[e]);let n=Wr((e=>{for(let t of r.current)null!=t&&("function"==typeof t?t(e):t.current=e)}));return e.every((e=>null==e||(null==e?void 0:e[Gr])))?void 0:n}function Jr(){let e=[],t=[],r={enqueue(e){t.push(e)},addEventListener:(e,t,n,a)=>(e.addEventListener(t,n,a),r.add((()=>e.removeEventListener(t,n,a)))),requestAnimationFrame(...e){let t=requestAnimationFrame(...e);return r.add((()=>cancelAnimationFrame(t)))},nextFrame:(...e)=>r.requestAnimationFrame((()=>r.requestAnimationFrame(...e))),setTimeout(...e){let t=setTimeout(...e);return r.add((()=>clearTimeout(t)))},microTask(...e){let t={current:!0};return function(e){"function"==typeof queueMicrotask?queueMicrotask(e):Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}((()=>{t.current&&e[0]()})),r.add((()=>{t.current=!1}))},add:t=>(e.push(t),()=>{let r=e.indexOf(t);if(r>=0){let[t]=e.splice(r,1);t()}}),dispose(){for(let t of e.splice(0))t()},async workQueue(){for(let e of t.splice(0))await e()}};return r}function Qr(e,...t){e&&t.length>0&&e.classList.add(...t)}function Xr(e,...t){e&&t.length>0&&e.classList.remove(...t)}function en(){let[e]=(0,t.useState)(Jr);return(0,t.useEffect)((()=>()=>e.dispose()),[e]),e}function tn({container:e,direction:t,classes:r,onStart:n,onStop:a}){let s=Hr(),o=en(),i=Vr(t);$r((()=>{let t=Jr();o.add(t.dispose);let l=e.current;if(l&&"idle"!==i.current&&s.current)return t.dispose(),n.current(i.current),t.add(function(e,t,r,n){let a=r?"enter":"leave",s=Jr(),o=void 0!==n?function(e){let t={called:!1};return(...r)=>{if(!t.called)return t.called=!0,e(...r)}}(n):()=>{};"enter"===a&&(e.removeAttribute("hidden"),e.style.display="");let i=Rr(a,{enter:()=>t.enter,leave:()=>t.leave}),l=Rr(a,{enter:()=>t.enterTo,leave:()=>t.leaveTo}),c=Rr(a,{enter:()=>t.enterFrom,leave:()=>t.leaveFrom});return Xr(e,...t.enter,...t.enterTo,...t.enterFrom,...t.leave,...t.leaveFrom,...t.leaveTo,...t.entered),Qr(e,...i,...c),s.nextFrame((()=>{Xr(e,...c),Qr(e,...l),function(e,t){let r=Jr();if(!e)return r.dispose;let{transitionDuration:n,transitionDelay:a}=getComputedStyle(e),[s,o]=[n,a].map((e=>{let[t=0]=e.split(",").filter(Boolean).map((e=>e.includes("ms")?parseFloat(e):1e3*parseFloat(e))).sort(((e,t)=>t-e));return t}));if(s+o!==0){let n=r.addEventListener(e,"transitionend",(e=>{e.target===e.currentTarget&&(t(),n())}))}else t();r.add((()=>t())),r.dispose}(e,(()=>(Xr(e,...i),Qr(e,...t.entered),o())))})),s.dispose}(l,r.current,"enter"===i.current,(()=>{t.dispose(),a.current(i.current)}))),t.dispose}),[t])}function rn(e=""){return e.split(" ").filter((e=>e.trim().length>1))}let nn=(0,t.createContext)(null);nn.displayName="TransitionContext";var an=(e=>(e.Visible="visible",e.Hidden="hidden",e))(an||{});let sn=(0,t.createContext)(null);function on(e){return"children"in e?on(e.children):e.current.filter((({el:e})=>null!==e.current)).filter((({state:e})=>"visible"===e)).length>0}function ln(e,r){let n=Vr(e),a=(0,t.useRef)([]),s=Hr(),o=en(),i=Wr(((e,t=Or.Hidden)=>{let r=a.current.findIndex((({el:t})=>t===e));-1!==r&&(Rr(t,{[Or.Unmount](){a.current.splice(r,1)},[Or.Hidden](){a.current[r].state="hidden"}}),o.microTask((()=>{var e;!on(a)&&s.current&&(null==(e=n.current)||e.call(n))})))})),l=Wr((e=>{let t=a.current.find((({el:t})=>t===e));return t?"visible"!==t.state&&(t.state="visible"):a.current.push({el:e,state:"visible"}),()=>i(e,Or.Unmount)})),c=(0,t.useRef)([]),u=(0,t.useRef)(Promise.resolve()),d=(0,t.useRef)({enter:[],leave:[],idle:[]}),p=Wr(((e,t,n)=>{c.current.splice(0),r&&(r.chains.current[t]=r.chains.current[t].filter((([t])=>t!==e))),null==r||r.chains.current[t].push([e,new Promise((e=>{c.current.push(e)}))]),null==r||r.chains.current[t].push([e,new Promise((e=>{Promise.all(d.current[t].map((([e,t])=>t))).then((()=>e()))}))]),"enter"===t?u.current=u.current.then((()=>null==r?void 0:r.wait.current)).then((()=>n(t))):n(t)})),m=Wr(((e,t,r)=>{Promise.all(d.current[t].splice(0).map((([e,t])=>t))).then((()=>{var e;null==(e=c.current.shift())||e()})).then((()=>r(t)))}));return(0,t.useMemo)((()=>({children:a,register:l,unregister:i,onStart:p,onStop:m,wait:u,chains:d})),[l,i,a,p,m,d,u])}function cn(){}sn.displayName="NestingContext";let un=["beforeEnter","afterEnter","beforeLeave","afterLeave"];function dn(e){var t;let r={};for(let n of un)r[n]=null!=(t=e[n])?t:cn;return r}let pn=Pr.RenderStrategy,mn=Ir((function(e,r){let{beforeEnter:n,afterEnter:a,beforeLeave:s,afterLeave:o,enter:i,enterFrom:l,enterTo:c,entered:u,leave:d,leaveFrom:p,leaveTo:m,...f}=e,h=(0,t.useRef)(null),y=Kr(h,r),g=f.unmount?Or.Unmount:Or.Hidden,{show:v,appear:b,initial:w}=function(){let e=(0,t.useContext)(nn);if(null===e)throw new Error("A is used but it is missing a parent or .");return e}(),[E,x]=(0,t.useState)(v?"visible":"hidden"),S=function(){let e=(0,t.useContext)(sn);if(null===e)throw new Error("A is used but it is missing a parent or .");return e}(),{register:_,unregister:R}=S,k=(0,t.useRef)(null);(0,t.useEffect)((()=>_(h)),[_,h]),(0,t.useEffect)((()=>{if(g===Or.Hidden&&h.current)return v&&"visible"!==E?void x("visible"):Rr(E,{hidden:()=>R(h),visible:()=>_(h)})}),[E,h,_,R,v,g]);let C=Vr({enter:rn(i),enterFrom:rn(l),enterTo:rn(c),entered:rn(u),leave:rn(d),leaveFrom:rn(p),leaveTo:rn(m)}),P=function(e){let r=(0,t.useRef)(dn(e));return(0,t.useEffect)((()=>{r.current=dn(e)}),[e]),r}({beforeEnter:n,afterEnter:a,beforeLeave:s,afterLeave:o}),O=Zr();(0,t.useEffect)((()=>{if(O&&"visible"===E&&null===h.current)throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?")}),[h,E,O]);let N=w&&!b,T=!O||N||k.current===v?"idle":v?"enter":"leave",L=Wr((e=>Rr(e,{enter:()=>P.current.beforeEnter(),leave:()=>P.current.beforeLeave(),idle:()=>{}}))),I=Wr((e=>Rr(e,{enter:()=>P.current.afterEnter(),leave:()=>P.current.afterLeave(),idle:()=>{}}))),M=ln((()=>{x("hidden"),R(h)}),S);tn({container:h,classes:C,direction:T,onStart:Vr((e=>{M.onStart(h,e,L)})),onStop:Vr((e=>{M.onStop(h,e,I),"leave"===e&&!on(M)&&(x("hidden"),R(h))}))}),(0,t.useEffect)((()=>{!N||(g===Or.Hidden?k.current=null:k.current=v)}),[v,N,E]);let A=f,D={ref:y};return b&&v&&Br.isServer&&(A={...A,className:_r(f.className,...C.current.enter,...C.current.enterFrom)}),t.createElement(sn.Provider,{value:M},t.createElement(zr,{value:Rr(E,{visible:Fr.Open,hidden:Fr.Closed})},Nr({ourProps:D,theirProps:A,defaultTag:"div",features:pn,visible:"visible"===E,name:"Transition.Child"})))})),fn=Ir((function(e,r){let{show:n,appear:a=!1,unmount:s,...o}=e,i=(0,t.useRef)(null),l=Kr(i,r);Zr();let c=jr();if(void 0===n&&null!==c&&(n=Rr(c,{[Fr.Open]:!0,[Fr.Closed]:!1})),![!0,!1].includes(n))throw new Error("A is used but it is missing a `show={true | false}` prop.");let[u,d]=(0,t.useState)(n?"visible":"hidden"),p=ln((()=>{d("hidden")})),[m,f]=(0,t.useState)(!0),h=(0,t.useRef)([n]);$r((()=>{!1!==m&&h.current[h.current.length-1]!==n&&(h.current.push(n),f(!1))}),[h,n]);let y=(0,t.useMemo)((()=>({show:n,appear:a,initial:m})),[n,a,m]);(0,t.useEffect)((()=>{if(n)d("visible");else if(on(p)){let e=i.current;if(!e)return;let t=e.getBoundingClientRect();0===t.x&&0===t.y&&0===t.width&&0===t.height&&d("hidden")}else d("hidden")}),[n,p]);let g={unmount:s};return t.createElement(sn.Provider,{value:p},t.createElement(nn.Provider,{value:y},Nr({ourProps:{...g,as:t.Fragment,children:t.createElement(mn,{ref:l,...g,...o})},theirProps:{},defaultTag:t.Fragment,features:pn,visible:"visible"===u,name:"Transition"})))})),hn=Ir((function(e,r){let n=null!==(0,t.useContext)(nn),a=null!==jr();return t.createElement(t.Fragment,null,!n&&a?t.createElement(fn,{ref:r,...e}):t.createElement(mn,{ref:r,...e}))})),yn=Object.assign(fn,{Child:hn,Root:fn});const gn=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"}))})),vn=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"}))})),bn=window.wp.i18n;var wn=r(5890),En=r.n(wn);const xn=({link:e})=>{const r=(0,l.useMemo)((()=>(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s expands to "Yoast SEO" academy, which is a clickable link. */ (0,bn.__)("Want to learn SEO from Team Yoast? Check out our %1$s!","wordpress-seo"),""),{link:(0,t.createElement)("a",{href:e,target:"_blank",rel:"noopener"},"Yoast SEO academy")})),[]);return(0,t.createElement)(c.Paper,{as:"div",className:"yst-p-6 yst-space-y-3"},(0,t.createElement)(c.Title,{as:"h2",size:"4",className:"yst-text-base yst-text-primary-500"},(0,bn.__)("Learn SEO","wordpress-seo")),(0,t.createElement)("p",null,r,(0,t.createElement)("br",null),(0,bn.__)("We have both free and premium online courses to learn everything you need to know about SEO.","wordpress-seo")),(0,t.createElement)(c.Link,{href:e,className:"yst-block",target:"_blank",rel:"noopener"},(0,bn.sprintf)(/* translators: %1$s expands to "Yoast SEO academy". */ (0,bn.__)("Check out %1$s","wordpress-seo"),"Yoast SEO academy")))};xn.propTypes={link:En().string.isRequired};const Sn=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),Rn=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),kn=({learnMoreLink:e,thumbnail:r,wistiaEmbedPermission:n,upsellLink:a,isProductCopy:s,title:o,upsellLabel:i,newToText:u,bundleNote:d})=>{const{onClose:p,initialFocus:m}=(0,c.useModalContext)(),f={a:(0,t.createElement)(Tn,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,t.createElement)(Rn,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"})};return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,t.createElement)("div",{className:"yst-relative yst-w-full"},(0,t.createElement)(Xn,{videoId:"vmrahpfjxp",thumbnail:r,wistiaEmbedPermission:n}),(0,t.createElement)(c.Badge,{className:"yst-absolute yst-top-0 yst-right-2 yst-mt-2 yst-ml-2",variant:"info"},"Beta")),(0,t.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,t.createElement)("span",{className:"yst-logo-icon"}),u))),(0,t.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,t.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},o),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},s?(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,bn.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for product titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),f):(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,bn.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),f))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-10"},(0,t.createElement)(c.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:m},(0,t.createElement)(Sn,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),i,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,bn.__)("(Opens in a new browser tab)","wordpress-seo")))),d,(0,t.createElement)(c.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:p},(0,bn.__)("Close","wordpress-seo"))))};kn.propTypes={learnMoreLink:En().string.isRequired,upsellLink:En().string.isRequired,thumbnail:En().shape({src:En().string.isRequired,width:En().string,height:En().string}).isRequired,wistiaEmbedPermission:En().shape({value:En().bool.isRequired,status:En().string.isRequired,set:En().func.isRequired}).isRequired,title:En().string,upsellLabel:En().string,newToText:En().string,isProductCopy:En().bool,bundleNote:En().oneOfType([En().string,En().element])},kn.defaultProps={title:(0,bn.__)("Use AI to write your titles & meta descriptions!","wordpress-seo"),upsellLabel:(0,bn.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,bn.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),newToText:"Yoast SEO Premium",isProductCopy:!1,bundleNote:""};var Cn;function Pn(){return Pn=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Pn({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1000 1000"},e),Cn||(Cn=t.createElement("path",{fill:"#fff",d:"M500 0C223.9 0 0 223.9 0 500s223.9 500 500 500 500-223.9 500-500S776.1 0 500 0Zm87.2 412.4c0-21.9 4.3-40.2 13.1-54.4s24-27.1 45.9-38.2l10.1-4.9c17.8-9 22.4-16.7 22.4-26 0-11.1-9.5-19.1-25-19.1-18.3 0-32.2 9.5-41.8 28.9l-24.7-24.8c5.4-11.6 14.1-20.9 25.8-28.1a70.8 70.8 0 0 1 38.9-11.1c17.8 0 33.3 4.6 45.9 14.2s19.4 22.7 19.4 39.4c0 26.6-15 42.9-43.1 57.3l-15.7 8c-16.8 8.5-25.1 16-27.4 29.4h85.4v35.4H587.2Zm-82.1 373.3c-157.8 0-285.7-127.9-285.7-285.7s127.9-285.7 285.7-285.7a286.4 286.4 0 0 1 55.9 5.5l-55.9 116.9c-90 0-163.3 73.3-163.3 163.3s73.3 163.3 163.3 163.3a162.8 162.8 0 0 0 106.4-39.6l61.8 107.2a283.9 283.9 0 0 1-168.2 54.8ZM705 704.1l-70.7-122.5H492.9l70.7-122.4H705l70.7 122.4Z"}))),Nn=({to:e,idSuffix:r="",...n})=>{const a=(0,l.useMemo)((()=>(0,u.replace)((0,u.replace)(`link-${e}`,"/","-"),"--","-")),[e]);return(0,t.createElement)(c.SidebarNavigation.SubmenuItem,{as:Er,pathProp:"to",id:`${a}${r}`,to:e,...n})};Nn.propTypes={to:En().string.isRequired,idSuffix:En().string};const Tn=({href:e,children:r,...n})=>(0,t.createElement)(c.Link,{target:"_blank",rel:"noopener noreferrer",...n,href:e},r,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,bn.__)("(Opens in a new browser tab)","wordpress-seo")));Tn.propTypes={href:En().string.isRequired,children:En().node},Tn.defaultProps={children:null};const Ln=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var In,Mn,An;function Dn(){return Dn=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Dn({xmlns:"http://www.w3.org/2000/svg",id:"star-rating-half_svg__Layer_1","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),In||(In=t.createElement("defs",null,t.createElement("style",null,".star-rating-half_svg__cls-1{fill:#fbbf24}"))),Mn||(Mn=t.createElement("path",{d:"M250 392.04 98.15 471.87l29-169.09L4.3 183.03l169.77-24.67L250 4.52l75.93 153.84 169.77 24.67-122.85 119.75 29 169.09L250 392.04z",className:"star-rating-half_svg__cls-1"})),An||(An=t.createElement("path",{d:"m250 9.04 73.67 149.27.93 1.88 2.08.3 164.72 23.94-119.19 116.19-1.51 1.47.36 2.07 28.14 164.06-147.34-77.46-1.86-1-1.86 1-147.34 77.46 28.14-164.06.36-2.07-1.51-1.47L8.6 184.43l164.72-23.9 2.08-.3.93-1.88L250 9.04m0-9-77.25 156.49L0 181.64l125 121.89-29.51 172L250 394.3l154.51 81.23-29.51-172 125-121.89-172.75-25.11L250 0Z",className:"star-rating-half_svg__cls-1"})),t.createElement("path",{d:"m500 181.64-172.75-25.11L250 0v394.3l154.51 81.23L375 303.48l125-121.84z",style:{fill:"#f3f4f6"}}));function jn(){return jn=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",jn({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),t.createElement("path",{d:"m250 0 77.25 156.53L500 181.64 375 303.48l29.51 172.05L250 394.3 95.49 475.53 125 303.48 0 181.64l172.75-25.11L250 0z",style:{fill:"#fbbf24"}}));var Un,qn,Bn,$n,Hn,Vn,Zn,Wn,Gn;function Yn(){return Yn=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Yn({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 500 500"},e),Un||(Un=t.createElement("path",{fill:"#a4286a",d:"M80 0h340a80 80 0 0 1 80 80v420H80a80 80 0 0 1-80-80V80A80 80 0 0 1 80 0z"})),qn||(qn=t.createElement("path",{fill:"#6c2548",d:"M437.61 2 155.89 500H500V80a80 80 0 0 0-62.39-78z"})),Bn||(Bn=t.createElement("path",{fill:"#fff",d:"M74.4 337.3v34.9c21.6-.9 38.5-8 52.8-22.5s27.4-38 39.9-72.9l92.6-248h-44.8L140.3 236l-37-116.2h-41l54.4 139.8a57.54 57.54 0 0 1 0 41.8c-5.5 14.2-15.4 30.9-42.3 35.9z"})),$n||($n=t.createElement("circle",{cx:368.33,cy:124.68,r:97.34,fill:"#9fda4f",transform:"rotate(-45 368.335 124.68)"})),Hn||(Hn=t.createElement("path",{fill:"#77b227",d:"m416.2 39.93-95.74 169.51A97.34 97.34 0 1 0 416.2 39.93z"})),Vn||(Vn=t.createElement("path",{fill:"#fec228",d:"m294.78 254.75-.15-.08-.13-.07a63.6 63.6 0 0 0-62.56 110.76h.13a63.6 63.6 0 0 0 62.71-110.67z"})),Zn||(Zn=t.createElement("path",{fill:"#f49a00",d:"m294.5 254.59-62.56 110.76a63.6 63.6 0 1 0 62.56-110.76z"})),Wn||(Wn=t.createElement("path",{fill:"#ff4e47",d:"M222.31 450.07A38.16 38.16 0 0 0 203 416.83a38.18 38.18 0 1 0 19.41 33.27z"})),Gn||(Gn=t.createElement("path",{fill:"#ed261f",d:"m202.9 416.8-37.54 66.48a38.17 38.17 0 0 0 37.54-66.48z"}))),Jn=({link:e,linkProps:r,isPromotionActive:n})=>{let a=(0,l.useMemo)((()=>(0,bn.__)("Use AI to generate titles and meta descriptions, automatically redirect deleted pages, get 24/7 support, and much, much more!","wordpress-seo")),[]),s=(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,bn.__)("%1$sGet%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,t.createElement)("span",{className:"yst-whitespace-nowrap"})});const o=n("black-friday-2024-promotion");return o&&(a=(0,l.useMemo)((()=>(0,bn.__)("If you were thinking about upgrading, now's the time! 30% OFF ends 3rd Dec 11am (CET)","wordpress-seo")),[]),s=(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,bn.__)("%1$sBuy%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,t.createElement)("span",{className:"yst-whitespace-nowrap"})})),(0,t.createElement)("div",{className:"yst-p-6 yst-rounded-lg yst-text-white yst-bg-primary-500 yst-shadow"},(0,t.createElement)("figure",{className:"yst-logo-square yst-w-16 yst-h-16 yst-mx-auto yst-overflow-hidden yst-border yst-border-white yst-rounded-xl yst-rounded-br-none yst-relative yst-z-10 yst-mt-[-2.6rem]"},(0,t.createElement)(Kn,null)),o&&(0,t.createElement)("div",{className:"sidebar__sale_banner_container"},(0,t.createElement)("div",{className:"sidebar__sale_banner"},(0,t.createElement)("span",{className:"banner_text"},(0,bn.__)("30% OFF - BLACK FRIDAY","wordpress-seo")))),(0,t.createElement)(c.Title,{as:"h2",className:"yst-mt-6 yst-text-base yst-font-extrabold yst-text-white"},s),(0,t.createElement)("p",{className:"yst-mt-2"},a),(0,t.createElement)(c.Button,{as:"a",variant:"upsell",href:e,target:"_blank",rel:"noopener",className:"yst-flex yst-justify-center yst-gap-2 yst-mt-4 focus:yst-ring-offset-primary-500",...r},(0,t.createElement)("span",null,o?(0,bn.__)("Buy now","wordpress-seo"):s),(0,t.createElement)(Ln,{className:"yst-w-4 yst-h-4 yst-icon-rtl"})),(0,t.createElement)("p",{className:"yst-text-center yst-text-xs yst-mx-2 yst-font-light yst-leading-5 yst-mt-2"},!o&&(0,t.createElement)(t.Fragment,null,(0,bn.__)("Only $/€/£99 per year (ex VAT)","wordpress-seo"),(0,t.createElement)("br",null)),(0,bn.__)("30-day money back guarantee.","wordpress-seo")),(0,t.createElement)("hr",{className:"yst-border-t yst-border-primary-300 yst-my-4"}),(0,t.createElement)("a",{className:"yst-block yst-mt-4 yst-no-underline",href:"https://www.g2.com/products/yoast-yoast/reviews",target:"_blank",rel:"noopener noreferrer"},(0,t.createElement)("span",{className:"yst-font-medium yst-text-white hover:yst-underline"},(0,bn.__)("Read reviews from real users","wordpress-seo")),(0,t.createElement)("span",{className:"yst-flex yst-gap-2 yst-mt-2 yst-items-center"},(0,t.createElement)(On,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)("span",{className:"yst-flex yst-gap-1"},(0,t.createElement)(zn,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(zn,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(zn,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(zn,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(Fn,{className:"yst-w-5 yst-h-5"})),(0,t.createElement)("span",{className:"yst-text-sm yst-font-semibold yst-text-white"},"4.6 / 5"))))};Jn.propTypes={link:En().string.isRequired,linkProps:En().object,isPromotionActive:En().func},Jn.defaultProps={linkProps:{},isPromotionActive:u.noop};const Qn=window.yoast.reactHelmet,Xn=({videoId:e,thumbnail:r,wistiaEmbedPermission:n})=>{const[a,s]=(0,l.useState)(n.value?M:L),o=(0,l.useCallback)((()=>s(M)),[s]),i=(0,l.useCallback)((()=>{n.value?o():s(I)}),[n.value,o,s]),u=(0,l.useCallback)((()=>s(L)),[s]),d=(0,l.useCallback)((()=>{n.set(!0),o()}),[n.set,o]);return(0,t.createElement)(t.Fragment,null,n.value&&(0,t.createElement)(Qn.Helmet,null,(0,t.createElement)("script",{src:"https://fast.wistia.com/assets/external/E-v1.js",async:!0})),(0,t.createElement)("div",{className:"yst-relative yst-w-full yst-h-0 yst-pt-[56.25%] yst-overflow-hidden yst-rounded-md yst-drop-shadow-md yst-bg-white"},a===L&&(0,t.createElement)("button",{type:"button",className:"yst-absolute yst-inset-0 yst-button yst-p-0 yst-border-none yst-bg-white yst-transition-opacity yst-duration-1000 yst-opacity-100",onClick:i},(0,t.createElement)("img",{className:"yst-w-full yst-h-auto",alt:"",loading:"lazy",decoding:"async",...r})),a===I&&(0,t.createElement)("div",{className:"yst-absolute yst-inset-0 yst-flex yst-flex-col yst-items-center yst-justify-center yst-bg-white"},(0,t.createElement)("p",{className:"yst-max-w-xs yst-mx-auto yst-text-center"},n.status===T&&(0,t.createElement)(c.Spinner,null),n.status!==T&&(0,bn.sprintf)(/* translators: %1$s expands to Yoast SEO. %2$s expands to Wistia. */ (0,bn.__)("To see this video, you need to allow %1$s to load embedded videos from %2$s.","wordpress-seo"),"Yoast SEO","Wistia")),(0,t.createElement)("div",{className:"yst-flex yst-mt-6 yst-gap-x-4"},(0,t.createElement)(c.Button,{type:"button",variant:"secondary",onClick:u,disabled:n.status===T},(0,bn.__)("Deny","wordpress-seo")),(0,t.createElement)(c.Button,{type:"button",variant:"primary",onClick:d,disabled:n.status===T},(0,bn.__)("Allow","wordpress-seo")))),n.value&&a===M&&(0,t.createElement)("div",{className:"yst-absolute yst-w-full yst-h-full yst-top-0 yst-left-0"},null===e&&(0,t.createElement)(c.Spinner,{className:"yst-h-full yst-mx-auto"}),null!==e&&(0,t.createElement)("div",{className:`wistia_embed wistia_async_${e} videoFoam=true`}))))};Xn.propTypes={videoId:En().string.isRequired,thumbnail:En().shape({src:En().string.isRequired,width:En().string,height:En().string}).isRequired,wistiaEmbedPermission:En().shape({value:En().bool.isRequired,status:En().string.isRequired,set:En().func.isRequired}).isRequired};const ea=({learnMoreLink:e,thumbnail:r,wistiaEmbedPermission:n,upsellLink:a,upsellLabel:s})=>{const{onClose:o,initialFocus:i}=(0,c.useModalContext)(),u={a:(0,t.createElement)(Tn,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,t.createElement)(Rn,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"}),br:(0,t.createElement)("br",null)};return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,t.createElement)("div",{className:"yst-relative yst-w-full"},(0,t.createElement)(Xn,{videoId:"vun9z1dpfh",thumbnail:r,wistiaEmbedPermission:n}),(0,t.createElement)(c.Badge,{className:"yst-absolute yst-right-0 yst-mr-4 yst-text-center yst-justify-center",variant:"info",style:{top:"-8px"}},(0,bn.__)("Beta","wordpress-seo-premium"))),(0,t.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,t.createElement)("span",{className:"yst-logo-icon"}),"Yoast SEO Premium"))),(0,t.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,t.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},(0,bn.sprintf)(/* translators: %s: Expands to "Yoast AI" */ (0,bn.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,l.createInterpolateElement)((0,bn.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */ (0,bn.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"
    ","","",""),u))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,t.createElement)(c.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:i},(0,t.createElement)(Sn,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),s,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,bn.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,t.createElement)(c.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:o},(0,bn.__)("Close","wordpress-seo"))))};var ta,ra;function na(){return na=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",na({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:"yoast-logo_svg__w-40",viewBox:"0 0 842 224"},e),ta||(ta=t.createElement("path",{fill:"#a61e69",d:"M166.55 54.09c-38.69 0-54.17 25.97-54.17 54.88s15.25 56.02 54.17 56.02 54.07-27.19 54-54.26c-.09-32.97-16.77-56.65-54-56.65Zm-23.44 56.52c.94-38.69 30.66-38.65 40.59-24.79 9.05 12.63 10.9 55.81-17.14 55.5-12.92-.14-23.06-8.87-23.44-30.71Zm337.25 27.55V82.11h20.04V57.78h-20.04V28.39h-30.95v29.39h-15.7v24.33h15.7v52.87c0 30.05 20.95 47.91 43.06 51.61l9.24-24.88c-12.89-1.63-21.23-11.27-21.35-23.54Zm-156.15-8.87V87.16c0-1.54-.1-2.98-.25-4.39-2.68-34.04-51.02-33.97-88.46-20.9l10.82 21.78c24.38-11.58 38.97-8.59 44.07-2.89.13.15.26.29.38.45.01.02.03.04.04.06 2.6 3.51 1.98 9.05 1.98 13.41-31.86 0-65.77 4.23-65.77 39.17 0 26.56 33.28 43.65 68.06 18.33l5.16 12.45h29.81c-2.66-14.62-5.85-27.14-5.85-35.34Zm-31.18-.23c-24.51 27.43-46.96 1.61-23.97-9.65 6.77-2.31 15.95-2.41 23.97-2.41v12.06Zm78.75-44.17c0-10.38 16.61-15.23 42.82-3.27l9.06-22.01c-35.27-10.66-83.44-11.62-83.75 25.28-.15 17.68 11.19 27.19 27.52 33.26 11.31 4.2 27.64 6.38 27.59 15.39-.06 11.77-25.38 13.57-48.42-2.26l-9.31 23.87c31.43 15.64 89.87 16.08 89.56-23.12-.31-38.76-55.08-32.11-55.08-47.14ZM99.3 1 54.44 125.61 32.95 58.32H1l35.78 91.89a33.49 33.49 0 0 1 0 24.33c-4 10.25-10.65 19.03-26.87 21.21v27.24c31.58 0 48.65-19.41 63.88-61.96L133.48 1H99.3ZM598.64 139.05c0 8.17-2.96 14.58-8.87 19.23-5.91 4.65-14.07 6.98-24.47 6.98s-18.92-1.61-25.54-4.84v-14.2c4.19 1.97 8.65 3.52 13.37 4.65 4.72 1.13 9.11 1.7 13.18 1.7 5.95 0 10.35-1.13 13.18-3.39 2.83-2.26 4.25-5.3 4.25-9.11 0-3.43-1.3-6.35-3.9-8.74-2.6-2.39-7.97-5.22-16.1-8.48-8.39-3.39-14.3-7.27-17.74-11.63-3.44-4.36-5.16-9.59-5.16-15.71 0-7.67 2.72-13.7 8.18-18.1 5.45-4.4 12.77-6.6 21.95-6.6s17.57 1.93 26.29 5.78l-4.78 12.26c-8.18-3.43-15.47-5.15-21.89-5.15-4.87 0-8.55 1.06-11.07 3.17-2.52 2.12-3.77 4.91-3.77 8.39 0 2.39.5 4.43 1.51 6.13s2.66 3.3 4.97 4.81c2.3 1.51 6.46 3.5 12.45 5.97 6.75 2.81 11.7 5.43 14.85 7.86 3.15 2.43 5.45 5.18 6.92 8.23 1.46 3.06 2.2 6.66 2.2 10.81Zm68.53 24.96h-52.02V72.12h52.02v12.7h-36.99v25.01h34.66v12.57h-34.66v28.85h36.99v12.76Zm100.24-46.07c0 14.96-3.74 26.59-11.23 34.88-7.49 8.3-18.08 12.44-31.8 12.44s-24.54-4.12-31.99-12.35c-7.44-8.23-11.17-19.93-11.17-35.1s3.74-26.82 11.23-34.95c7.49-8.13 18.17-12.19 32.05-12.19s24.24 4.13 31.7 12.38c7.47 8.26 11.2 19.88 11.2 34.88Zm-70.2 0c0 11.31 2.29 19.89 6.86 25.74 4.57 5.85 11.35 8.77 20.32 8.77s15.67-2.89 20.22-8.67c4.55-5.78 6.82-14.39 6.82-25.83s-2.25-19.82-6.76-25.64-11.23-8.74-20.16-8.74-15.82 2.91-20.41 8.74c-4.59 5.82-6.89 14.37-6.89 25.64Z"})),ra||(ra=t.createElement("path",{fill:"#77b227",d:"m790.45 165.35 36.05-94.96H840l-36.02 94.96h-13.53z"}))),sa=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),oa=({isOpen:e,onClose:r=u.noop,onDiscard:n=u.noop,title:a,description:s,dismissLabel:o,discardLabel:i})=>{const l=(0,c.useSvgAria)();return(0,t.createElement)(c.Modal,{isOpen:e,onClose:r},(0,t.createElement)(c.Modal.Panel,{closeButtonScreenReaderText:(0,bn.__)("Close","wordpress-seo")},(0,t.createElement)("div",{className:"sm:yst-flex sm:yst-items-start"},(0,t.createElement)("div",{className:"yst-mx-auto yst-flex-shrink-0 yst-flex yst-items-center yst-justify-center yst-h-12 yst-w-12 yst-rounded-full yst-bg-red-100 sm:yst-mx-0 sm:yst-h-10 sm:yst-w-10"},(0,t.createElement)(sa,{className:"yst-h-6 yst-w-6 yst-text-red-600",...l})),(0,t.createElement)("div",{className:"yst-mt-3 yst-text-center sm:yst-mt-0 sm:yst-ml-4 sm:yst-text-left"},(0,t.createElement)(c.Modal.Title,{className:"yst-text-lg yst-leading-6 yst-font-medium yst-text-slate-900 yst-mb-3"},a),(0,t.createElement)(c.Modal.Description,{className:"yst-text-sm yst-text-slate-500"},s))),(0,t.createElement)("div",{className:"yst-flex yst-flex-col sm:yst-flex-row-reverse yst-gap-3 yst-mt-6"},(0,t.createElement)(c.Button,{type:"button",variant:"error",onClick:n,className:"yst-block"},i),(0,t.createElement)(c.Button,{type:"button",variant:"secondary",onClick:r,className:"yst-block"},o))))};oa.propTypes={isOpen:En().bool.isRequired,onClose:En().func,onDiscard:En().func,title:En().string.isRequired,description:En().string.isRequired,dismissLabel:En().string.isRequired,discardLabel:En().string.isRequired};const ia=(e,t,r)=>{const n=e.querySelector(t);return n&&(n.textContent=r),n},la=(e,t=[],...r)=>(0,s.useSelect)((t=>{var n,a;return null===(n=(a=t(F))[e])||void 0===n?void 0:n.call(a,...r)}),t);function ca(){const e=[...Array.from(document.querySelectorAll(".notice-yoast:not(.yoast-webinar-dashboard)")),...Array.from(document.querySelectorAll(".yoast-migrated-notice"))],t=e.map((e=>e.id)),r=e.map((e=>e.querySelector(".yoast-notice-migrated-header"))),n=function(e){return e.forEach((e=>{e&&e.querySelectorAll("a.button").forEach((e=>{e.classList.remove("button"),e.classList.add("yst-button"),e.classList.add("yst-button--primary"),e.classList.add("yst-mt-4")}))})),e}(e.map((e=>e.querySelector(".notice-yoast-content")))),a=e.map((e=>e.classList.contains("is-dismissible")));return e.map(((e,s)=>({originalNotice:e,id:t[s],header:r[s].outerHTML,content:n[s].outerHTML,isDismissable:a[s]})))}var ua=r(4530),da=r.n(ua);const pa=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"}))}));function ma({title:e,id:r,isDismissable:n,children:a}){const s=(0,c.useSvgAria)();return(0,t.createElement)("div",{id:r,className:da()("yst-p-3 yst-rounded-md yoast-general-page-notice")},(0,t.createElement)("div",{className:da()("yst-flex yst-flex-row yst-items-center yst-min-h-[24px]")},(0,t.createElement)("span",{className:"yoast-icon"}),e&&(0,t.createElement)("div",{className:"yst-text-sm yst-font-medium",dangerouslySetInnerHTML:{__html:e}}),n&&(0,t.createElement)("div",{className:"yst-relative yst-ml-auto"},(0,t.createElement)("button",{type:"button",className:"notice-dismiss"},(0,t.createElement)("span",{className:"yst-sr-only"},(0,bn.__)("Close","wordpress-seo")),(0,t.createElement)(pa,{className:"yst-h-5 yst-w-5",...s})))),a&&(0,t.createElement)("div",{className:"yst-flex-1 yst-text-sm yst-max-w-[600px] yst-pl-[29px]",dangerouslySetInnerHTML:{__html:a}}))}ma.propTypes={title:En().string.isRequired,id:En().string.isRequired,isDismissable:En().bool.isRequired,children:En().string.isRequired};const fa=(0,window.wp.compose.compose)([(0,s.withSelect)(((e,t)=>{const{isAlertDismissed:r}=e(t.store||"yoast-seo/editor");return{isAlertDismissed:r(t.alertKey)}})),(0,s.withDispatch)(((e,t)=>{const{dismissAlert:r}=e(t.store||"yoast-seo/editor");return{onDismissed:()=>r(t.alertKey)}}))]),ha=fa,ya=({children:e,id:r,hasIcon:n=!0,title:a,image:s=null,isAlertDismissed:o,onDismissed:i})=>o?null:(0,t.createElement)("div",{id:r,className:"notice-yoast yoast is-dismissible yoast-webinar-dashboard yoast-general-page-notices"},(0,t.createElement)("div",{className:"notice-yoast__container"},(0,t.createElement)("div",null,(0,t.createElement)("div",{className:"notice-yoast__header"},n&&(0,t.createElement)("span",{className:"yoast-icon"}),(0,t.createElement)("h2",{className:"notice-yoast__header-heading yoast-notice-migrated-header"},a)),(0,t.createElement)("div",{className:"notice-yoast-content"},(0,t.createElement)("p",null,e))),s&&(0,t.createElement)(s,{height:"60"})),(0,t.createElement)("button",{type:"button",className:"notice-dismiss",onClick:i},(0,t.createElement)("span",{className:"screen-reader-text"},/* translators: Hidden accessibility text. */ (0,bn.__)("Dismiss this notice.","wordpress-seo"))));ya.propTypes={children:En().node.isRequired,id:En().string.isRequired,hasIcon:En().bool,title:En().any.isRequired,image:En().elementType,isAlertDismissed:En().bool.isRequired,onDismissed:En().func.isRequired};const ga=ha(ya);var va,ba,wa,Ea,xa,Sa,_a,Ra,ka,Ca,Pa,Oa,Na,Ta,La,Ia,Ma,Aa,Da,Fa,ja,za,Ua,qa,Ba,$a,Ha,Va,Za,Wa,Ga,Ya,Ka,Ja,Qa,Xa,es,ts,rs,ns,as,ss,os,is,ls,cs,us;function ds(){return ds=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",ds({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 448 360"},e),va||(va=t.createElement("circle",{cx:226,cy:211,r:149,fill:"#f0ecf0"})),ba||(ba=t.createElement("path",{fill:"#fbd2a6",d:"M173.53 189.38s-35.47-5.3-41.78-11c-9.39-24.93-29.61-48-35.47-66.21-.71-2.24 3.72-11.39 3.53-15.41s-5.34-11.64-5.23-14-.09-15.27-.09-15.27l-4.75-.72s-5.13 6.07-3.56 9.87c-1.73-4.19 4.3 7.93.5 9.35 0 0-6-5.94-11.76-8.27s-19.57-3.65-19.57-3.65L43.19 73l-4.42.6L31 69.7l-2.85 5.12 7.53 5.29L40.86 92l17.19 10.2 10.2 10.56 9.86 3.56s26.49 79.67 45 92c17 11.33 37.23 15.92 37.23 15.92z"})),wa||(wa=t.createElement("path",{fill:"#a4286a",d:"M270.52 345.13c2.76-14.59 15.94-35.73 30.24-54.58 16.22-21.39 14-79.66-33.19-91.46-17.3-4.32-52.25-1-59.85-3.41C186.54 189 170 187 168 190.17c-5 10.51-7.73 27.81-5.51 36.26 1.18 4.73 3.54 5.91 20.49 13.4-5.12 15-16.35 26.3-22.86 37s7.88 27.2 7.1 33.51c-.48 3.8-4.26 21.13-7.18 34.25a149.47 149.47 0 0 0 110.3 8.66 25.66 25.66 0 0 1 .18-8.12z"})),Ea||(Ea=t.createElement("path",{fill:"#9a5815",d:"M206.76 66.43c-5 14.4-1.42 25.67-3.93 40.74-10 60.34-24.08 43.92-31.44 93.6 7.24-14.19 14.32-15.82 20.63-23.11-.83 3.09-10.25 13.75-8.05 34.81 9.85-8.51 6.35-8.75 11.86-8.54.36 3.25 3.53 3.22-3.59 10.53 2.52.69 17.42-14.32 20.16-12.66s0 5.72-6 7.76c2.15 2.2 30.47-3.87 43.81-14.71 4.93-4 10-13.16 13.38-18.2 7.17-10.62 12.38-24.77 17.71-36.6 8.94-19.87 15.09-39.34 16.11-61.31.53-10.44-3.41-18.44-4.41-28.86-2.57-27.8-67.63-37.26-86.24 16.55z"})),xa||(xa=t.createElement("path",{fill:"#efb17c",d:"M277.74 179.06c.62-.79 1.24-1.59 1.84-2.39-.85 2.59-1.52 3.73-1.84 2.39z"})),Sa||(Sa=t.createElement("path",{fill:"#fbd2a6",d:"M216.1 206.72c3.69-5.42 8.28-3.35 15.57-8.28 3.76-3.06 1.57-9.46 1.77-11.82 18.25 4.56 37.38-1.18 49.07-16 .62 5.16-2.77 22.27-.2 27 4.73 8.67 13.4 18.92 13.4 18.92-35.47-2.76-63.45 39-89.86 44.54 5.52-28.74-2.36-35.84 10.25-54.36z"})),_a||(_a=t.createElement("path",{fill:"#f6b488",d:"m235.21 167.9 53.21-25.23s-3.65 24-6.5 32.72c-64.05 62.66-46.47-7.33-46.71-7.49z"})),Ra||(Ra=t.createElement("path",{fill:"#fbd2a6",d:"M226.86 50.64C215 59.31 206.37 93.21 204 95.57c-19.46 19.47-3.59 41.39-3.94 51.24-.2 5.52-4.14 25.42 5.72 29.36 22.22 8.89 60-3.48 67.19-12.61 13.28-16.75 40.89-94.78 17.74-108.19-7.92-4.58-42.78-20.18-63.85-4.73z"})),ka||(ka=t.createElement("path",{fill:"#e5766c",d:"M243.69 143.66c-10.7-6.16-8.56-6.73-19.76-12.71-3.86-2.07-3.94.64-6.32 0-2.91-.79-1.39-2.74-5.37-3.48-6.52-1.21-3.67 3.63-3.15 6 1.32 6.15-8.17 17.3 3.26 21.42 12.65 4.55 21.38-9.41 31.34-11.23z"})),Ca||(Ca=t.createElement("path",{fill:"#fff",d:"M240.68 143.9c-11.49-5.53-11.65-8.17-24.64-11.69-8.6-2.32-5.53 1-5.69 4.42-.2 4.16-1.26 9.87 4.9 12.66 9 4.09 18.16-6.02 25.43-5.39zm.7-40.9c-.16 1.26-.06 4.9 5.46 8.25 11.43-4.73 16.36-2.56 17-3.33 1.48-1.76-2-8.87-7.88-9.85-5.58-.94-14.14 1.24-14.58 4.93z"})),Pa||(Pa=t.createElement("path",{fill:"#000001",d:"M263.53 108.19c-4.32-4.33-6.85-6.24-12.26-8.21-2.77-1-6.18.18-8.65 1.67a3.65 3.65 0 0 0-1.24 1.23h-.12a3.73 3.73 0 0 1 1-1.52 12.53 12.53 0 0 1 11.93-3c4.73 1 9.43 4.63 9.42 9.82z"})),Oa||(Oa=t.createElement("circle",{cx:254.13,cy:104.05,r:4.19,fill:"#000001"})),Na||(Na=t.createElement("path",{fill:"#fff",d:"M225.26 99.22c-.29 1-6.6 3.45-10.92 1.48-1.15-3.24-5-6.43-5.25-6.71-.5-2.86 5.55-8 10.06-6.3a10.21 10.21 0 0 1 6.11 11.53z"})),Ta||(Ta=t.createElement("path",{fill:"#000001",d:"M209.29 94.21c-.19-2.34 1.84-4.1 3.65-5.2 7-3.87 13.18 3 12.43 10h-.12c-.14-4-2.38-8.44-6.47-9.11a3.19 3.19 0 0 0-2.42.31c-1.37.85-2.38 2-3.89 2.56-1 .45-1.92.42-3 1.4h-.22z"})),La||(La=t.createElement("circle",{cx:219.55,cy:95.28,r:4,fill:"#000001"})),Ia||(Ia=t.createElement("path",{fill:"#efb17c",d:"M218.66 120.27a27.32 27.32 0 0 0 4.54 3.45c-2.29-.72-4.28-.69-6.32-2.27-2.53-2-3.39-5.16-.73-7.72 10.24-9.82 12.56-13.82 14.77-24.42-1 12.37-6 17.77-10.63 23.18-2.53 2.97-4.68 5.06-1.63 7.78z"})),Ma||(Ma=t.createElement("path",{fill:"#a57c52",d:"M231.22 69.91c-.67-3.41-8.78-2.83-11.06-1.93-3.48 1.39-6.08 5.22-7.13 8.53 2.9-4.3 6.74-8.12 12.46-6 1.16.42 3.18 2.35 4.48 1.85s1.03-2.2 1.25-2.45zm32.16 8.56c-2.75-1.66-12.24-5.08-12.18.82 2.56.24 5-.19 7.64.95 11.22 4.76 12.77 17.61 12.85 17.86.2-.53.1 1.26.23.7-.02.2.95-12.12-8.54-20.33z"})),Aa||(Aa=t.createElement("path",{fill:"#fbd2a6",d:"M53.43 250.73c6.29 0-.6-.17 7.34 0 1.89.05-2.38-.7 0-.69 4.54-4.2 12.48-.74 20.6-2.45 4.55.35 3.93 1.35 5.59 4.19 4.89 8.38 4.78 14.21 14 19.56 16.42 8.38 66 12.92 88.49 18.86 5.52.83 42.64-20.15 61-23.75 6.51 10.74 11.46 28.68 8.39 34.93-6.54 13.3-57.07 25.4-75.91 25.15C156.47 326.18 94 294 92.2 293c-.94-.57.7-.7-7.68 0s-10.15.72-17.47-1.4c-3-.87-4.61-1.33-6.33-3.54-2 .22-3.39.2-4.78-1-3.15-2.74-4.84-6.61-2.73-10.06h-.12c-3.35-2.48-6.54-7.69-3.08-11.72 1-1.18 6.06-1.94 7.77-2.28-1.58-.29-6.37.19-7.49-.72-3.06-2.5-4.96-11.55 3.14-11.55z"})),Da||(Da=t.createElement("path",{fill:"#a4286a",d:"M303.22 237.52c-9.87-11.88-41.59 8.19-47.8 12.34s-14.89 17.95-14.89 17.95c6 9.43 8.36 31 5.65 46.34l30.51-3s18-15.62 22.59-28.7 6.3-42.54 6.3-42.54"})),Fa||(Fa=t.createElement("path",{fill:"#cb9833",d:"M278.63 31.67c-6.08 0-22.91 4.07-22.93 12.91 0 11 47.9 38.38 16.14 85.85 10.21-.79 10.79-8.12 14.92-14.93-3.66 77-49.38 93.58-40.51 142.25 7.68-25.81 20.3-11.62 38.13-33.84 3.45 4.88 9 18.28-9.46 33.78 50-31.26 57.31-56.6 51.92-95C319.93 113.53 348.7 42 278.63 31.67z"})),ja||(ja=t.createElement("path",{fill:"#fbd2a6",d:"M283.64 126.83c-2.42 9.67-8 15.76-1.48 16.46A21.26 21.26 0 0 0 302 132.6c5.17-8.52 3.93-16.44-2.46-18s-13.48 2.56-15.9 12.23z"})),za||(za=t.createElement("path",{fill:"#efb17c",d:"M38 73.45c1.92 2 4.25 9.21 6.32 10.91 2.25 1.85 5.71 2.12 8.1 4.45 3.66-2 6-8.72 10-9.31-2.59 1.31-4.42 3.5-6.93 4.88-1.42.8-3 1.31-4.38 2.25-2.16-1.46-4.27-1.77-6.26-3.38-2.52-2.02-5.31-8-6.85-9.8z"})),Ua||(Ua=t.createElement("path",{fill:"#efb17c",d:"M39 74.4c4.83 1.1 12.52 6.44 15.89 10-3.22-1.34-14.73-6.15-15.89-10zm.62-1.5c6.71-.79 18 1.54 23.29 5.9-3.85-.2-5.42-1.48-9-2.94-4.08-1.69-8.83-2.03-14.29-2.96zm46.43 14.58c-3.72-1.32-10.52-1.13-13.22 3.52 2-1.16 1.84-2.11 4.18-1.72-3.81-4.15 8.16-.74 11.6-.24m-2.78 13.15c.56-3.29-8-7.81-10.58-9.17-6.25-3.29-12.16 1.36-19.33-4.53 5.94 6.1 14.23 2.5 19.55 5.76 3.06 1.88 8.65 6.09 9.35 9.38-.23-.4 1.29-1.44 1.01-1.44z"})),qa||(qa=t.createElement("circle",{cx:38.13,cy:30.03,r:3.14,fill:"#b89ac8"})),Ba||(Ba=t.createElement("circle",{cx:60.26,cy:39.96,r:3.14,fill:"#e31e0c"})),$a||($a=t.createElement("circle",{cx:50.29,cy:25.63,r:3.14,fill:"#3baa45"})),Ha||(Ha=t.createElement("circle",{cx:22.19,cy:19.21,r:3.14,fill:"#2ca9e1"})),Va||(Va=t.createElement("circle",{cx:22.19,cy:30.03,r:3.14,fill:"#e31e0c"})),Za||(Za=t.createElement("circle",{cx:26.86,cy:8.28,r:3.14,fill:"#3baa45"})),Wa||(Wa=t.createElement("circle",{cx:49.32,cy:39.99,r:3.14,fill:"#e31e0c"})),Ga||(Ga=t.createElement("circle",{cx:63.86,cy:59.52,r:3.14,fill:"#f8ad39"})),Ya||(Ya=t.createElement("circle",{cx:50.88,cy:50.72,r:3.14,fill:"#3baa45"})),Ka||(Ka=t.createElement("circle",{cx:63.47,cy:76.17,r:3.14,fill:"#e31e0c"})),Ja||(Ja=t.createElement("circle",{cx:38.34,cy:14.83,r:3.14,fill:"#2ca9e1"})),Qa||(Qa=t.createElement("circle",{cx:44.44,cy:5.92,r:3.14,fill:"#f8ad39"})),Xa||(Xa=t.createElement("circle",{cx:57.42,cy:10.24,r:3.14,fill:"#e31e0c"})),es||(es=t.createElement("circle",{cx:66.81,cy:12.4,r:3.14,fill:"#2ca9e1"})),ts||(ts=t.createElement("circle",{cx:77.95,cy:5.14,r:3.14,fill:"#b89ac8"})),rs||(rs=t.createElement("circle",{cx:77.95,cy:30.34,r:3.14,fill:"#e31e0c"})),ns||(ns=t.createElement("circle",{cx:80.97,cy:16.55,r:3.14,fill:"#f8ad39"})),as||(as=t.createElement("circle",{cx:62.96,cy:27.27,r:3.14,fill:"#3baa45"})),ss||(ss=t.createElement("circle",{cx:75.36,cy:48.67,r:3.14,fill:"#2ca9e1"})),os||(os=t.createElement("circle",{cx:76.11,cy:65.31,r:3.14,fill:"#3baa45"})),is||(is=t.createElement("path",{fill:"#71b026",d:"M78.58 178.43C54.36 167.26 32 198.93 5 198.93c19.56 20.49 63.53 1.52 69 15.5 1.48-14.01 4.11-30.9 4.58-36z"})),ls||(ls=t.createElement("path",{fill:"#074a67",d:"M67.75 251.08c0-4.65 10.13-72.65 10.13-72.65h2.8l-9.09 72.3z"})),cs||(cs=t.createElement("ellipse",{cx:255.38,cy:103.18,fill:"#fff",rx:1.84,ry:1.77})),us||(us=t.createElement("ellipse",{cx:221.24,cy:94.75,fill:"#fff",rx:1.84,ry:1.77}))),ms=({store:e="yoast-seo/editor",image:r=ps,url:n,...a})=>(0,s.useSelect)((t=>t(e).getIsPremium()))?null:(0,t.createElement)(ga,{alertKey:"webinar-promo-notification",store:e,id:"webinar-promo-notification",title:(0,bn.__)("Join our FREE webinar for SEO success","wordpress-seo"),image:r,url:n,...a},(0,bn.__)("Feeling lost when it comes to optimizing your site for the search engines? Join our FREE webinar to gain the confidence that you need in order to start optimizing like a pro! You'll obtain the knowledge and tools to start effectively implementing SEO.","wordpress-seo")," ",(0,t.createElement)("a",{href:n,target:"_blank",rel:"noreferrer"},(0,bn.__)("Sign up today!","wordpress-seo")));ms.propTypes={store:En().string,image:En().elementType,url:En().string.isRequired};const fs=ms,hs={optimizeSeoData:"optimizeSeoData",siteRepresentation:"siteRepresentation",socialProfiles:"socialProfiles",personalPreferences:"personalPreferences"},ys={[hs.optimizeSeoData]:"data optimization",[hs.siteRepresentation]:"site representation",[hs.socialProfiles]:"social profiles",[hs.personalPreferences]:"personal preferences"},gs=({idSuffix:e=""})=>{const r=(0,c.useSvgAria)(),n=la("selectPreference",[],"isPremium");return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("header",{className:"yst-px-3 yst-mb-6 yst-space-y-6"},(0,t.createElement)(Er,{id:`link-yoast-logo${e}`,to:"/",className:"yst-inline-block yst-rounded-md focus:yst-ring-primary-500","aria-label":"Yoast SEO"+(n?" Premium":"")},(0,t.createElement)(aa,{className:"yst-w-40",...r}))),(0,t.createElement)("div",{className:"yst-px-0.5 yst-space-y-6"},(0,t.createElement)("ul",{className:"yst-mt-1 yst-space-y-1"},(0,t.createElement)(Nn,{to:"/",label:(0,t.createElement)(t.Fragment,null,(0,t.createElement)(gn,{className:"yst-sidebar-navigation__icon yst-w-6 yst-h-6"}),(0,bn.__)("Alert center","wordpress-seo")),idSuffix:e,className:"yst-gap-3"}),(0,t.createElement)(Nn,{to:"/first-time-configuration",label:(0,t.createElement)(t.Fragment,null,(0,t.createElement)(vn,{className:"yst-sidebar-navigation__icon yst-w-6 yst-h-6"}),(0,bn.__)("First-time configuration","wordpress-seo")),idSuffix:e,className:"yst-gap-3"}))))};gs.propTypes={idSuffix:En().string};const vs=()=>{const e=(0,l.useMemo)(ca,[]);(0,l.useEffect)((()=>{!function(e){e.forEach((e=>e.originalNotice.remove()))}(e)}),[e]);const{pathname:r}=zt(),n=la("selectAlertToggleError",[],[]),{setAlertToggleError:a}=(0,s.useDispatch)(F);(()=>{const e=(0,s.useSelect)((e=>e(F).selectActiveAlertsCount()),[]);(0,l.useEffect)((()=>{(e=>{ /* translators: Hidden accessibility text; %s: number of notifications. */ const t=(0,bn.sprintf)((0,bn._n)("%s notification","%s notifications",e,"wordpress-seo"),e),r=document.querySelectorAll("#toplevel_page_wpseo_dashboard .update-plugins");for(const n of r)n.className=`update-plugins count-${e}`,ia(n,".plugin-count",String(e)),ia(n,".screen-reader-text",t);const n=document.querySelectorAll("#wp-admin-bar-wpseo-menu .yoast-issue-counter");for(const r of n)r.classList.toggle("wpseo-no-adminbar-notifications",0===e),ia(r,".yoast-issues-count",String(e)),ia(r,".screen-reader-text",t)})(e)}),[e])})();const o=(0,l.useCallback)((()=>{a(null)}),[a]),i=(0,s.select)(F).selectLinkParams(),u=(0,h.addQueryArgs)("https://yoa.st/webinar-intro-settings",i);return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(c.SidebarNavigation,{activePath:r},(0,t.createElement)(c.SidebarNavigation.Mobile,{openButtonId:"button-open-dashboard-navigation-mobile",closeButtonId:"button-close-dashboard-navigation-mobile" /* translators: Hidden accessibility text. */,openButtonScreenReaderText:(0,bn.__)("Open dashboard navigation","wordpress-seo") /* translators: Hidden accessibility text. */,closeButtonScreenReaderText:(0,bn.__)("Close dashboard navigation","wordpress-seo"),"aria-label":(0,bn.__)("Dashboard navigation","wordpress-seo")},(0,t.createElement)(gs,{idSuffix:"-mobile"})),(0,t.createElement)("div",{className:"yst-p-4 min-[783px]:yst-p-8 yst-flex yst-gap-4"},(0,t.createElement)("aside",{className:"yst-sidebar yst-sidebar-nav yst-shrink-0 yst-hidden min-[783px]:yst-block yst-pb-6 yst-bottom-0 yst-w-56"},(0,t.createElement)(c.SidebarNavigation.Sidebar,null,(0,t.createElement)(gs,null))),(0,t.createElement)("div",{className:"yst-grow"},(0,t.createElement)("div",{className:"yst-space-y-6 yst-mb-8 xl:yst-mb-0"},(0,t.createElement)("main",null,(0,t.createElement)(yn,{key:r,appear:!0,show:!0,enter:"yst-transition-opacity yst-delay-100 yst-duration-300",enterFrom:"yst-opacity-0",enterTo:"yst-opacity-100"},"/first-time-configuration"!==r&&(0,t.createElement)("div",null,((e="yoast-seo/editor")=>{const t=(0,s.select)(e).isPromotionActive("black-friday-2023-checklist"),r=(0,s.select)(e).isAlertDismissed("black-friday-2023-sidebar-checklist");return!t||r})(F)&&(0,t.createElement)(fs,{store:F,url:u,image:null}),e.length>0&&(0,t.createElement)("div",{className:"yst-space-y-3 yoast-general-page-notices"}," ",e.map(((e,r)=>"yoast-first-time-configuration-notice"===e.id&&wpseoFirstTimeConfigurationData.finishedSteps.includes(hs.personalPreferences)?null:(0,t.createElement)(ma,{key:r,id:e.id||"yoast-general-page-notice-"+r,title:e.header,isDismissable:e.isDismissable},e.content))))),(0,t.createElement)(tr,null))))))),(0,t.createElement)(c.Notifications,{className:"yst-mx-[calc(50%-50vw)] yst-transition-all lg:yst-left-44",position:"bottom-left"},n&&(0,t.createElement)(c.Notifications.Notification,{id:"toggle-alert-error",title:(0,bn.__)("Something went wrong","wordpress-seo"),variant:"error",dismissScreenReaderLabel:(0,bn.__)("Dismiss","wordpress-seo"),size:"large",autoDismiss:4e3,onDismiss:o},"error"===n.type?(0,bn.__)("This problem can't be hidden at this time. Please try again later.","wordpress-seo"):(0,bn.__)("This notification can't be hidden at this time. Please try again later.","wordpress-seo"))))},bs=()=>({...(0,u.get)(window,"wpseoScriptData.preferences",{}),ajaxUrl:(0,u.get)(window,"ajaxurl","")}),ws=(0,d.createSlice)({name:"preferences",initialState:bs(),reducers:{}}),Es={selectPreference:(e,t,r={})=>(0,u.get)(e,`preferences.${t}`,r),selectPreferences:e=>(0,u.get)(e,"preferences",{})};Es.selectUpsellSettingsAsProps=(0,d.createSelector)([e=>Es.selectPreference(e,"upsellSettings",{}),(e,t="premiumCtbId")=>t],((e,t)=>({"data-action":null==e?void 0:e.actionId,"data-ctb-id":null==e?void 0:e[t]})));const xs=ws.actions,Ss=ws.reducer,_s=window.yoast.externals.redux;function Rs({alertKey:e}){return new Promise((t=>wpseoApi.post("alerts/dismiss",{key:e},(()=>t()))))}const{currentPromotions:ks,dismissedAlerts:Cs,isPremium:Ps}=_s.reducers,{isAlertDismissed:Os,getIsPremium:Ns,isPromotionActive:Ts}=_s.selectors,{dismissAlert:Ls,setCurrentPromotions:Is,setDismissedAlerts:Ms,setIsPremium:As}=_s.actions,Ds=((0,bn.__)("E.g. https://www.facebook.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.instagram.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.linkedin.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.myspace.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.pinterest.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.soundcloud.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.tumblr.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.twitter.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.youtube.com/yoast","wordpress-seo"),(0,bn.__)("E.g. https://www.wikipedia.com/yoast","wordpress-seo"),e=>`error-${e}`),Fs=(e,{isVisible:t})=>t?{"aria-invalid":!0,"aria-describedby":Ds(e)}:{};function js({active:e,selected:t}){return da()("yst-relative yst-cursor-default yst-select-none yst-py-2 yst-pl-3 yst-pr-9 yst-my-0",t&&"yst-bg-primary-500 yst-text-white",e&&!t&&"yst-bg-primary-200 yst-text-slate-700",!e&&!t&&"yst-text-slate-700")}function zs(e,t){const r=function(e,t){return e.includes(t)?[...e]:[...e,t]}(e.editedSteps,t);return{...e,editedSteps:r}}function Us(e,t){let r=(0,u.cloneDeep)(e);switch(t.type){case"SET_COMPANY_OR_PERSON":return r=zs(r,2),r.companyOrPerson=t.payload,r.companyOrPersonLabel=r.companyOrPersonOptions.filter((e=>e.value===t.payload)).pop().label,r;case"CHANGE_COMPANY_NAME":return r=zs(r,2),r.companyName=t.payload,r;case"SET_COMPANY_LOGO":return r=zs(r,2),r.companyLogo=t.payload.url,r.companyLogoId=t.payload.id,r;case"REMOVE_COMPANY_LOGO":return r=zs(r,2),r.companyLogo="",r.companyLogoId="",r;case"CHANGE_WEBSITE_NAME":return r=zs(r,2),r.websiteName=t.payload,r;case"SET_PERSON_LOGO":return r=zs(r,2),r.personLogo=t.payload.url,r.personLogoId=t.payload.id,r;case"REMOVE_PERSON_LOGO":return r=zs(r,2),r.personLogo="",r.personLogoId="",r;case"SET_PERSON":return r=zs(r,2),r.personId=t.payload.value,r.personName=t.payload.label,r;case"SET_CAN_EDIT_USER":return r=zs(r,2),r.canEditUser=!0===t.payload?1:0,r;case"CHANGE_SOCIAL_PROFILE":return r=zs(r,3),r.socialProfiles[t.payload.socialMedium]=t.payload.value,r.errorFields=r.errorFields.filter((e=>"facebookUrl"===t.payload.socialMedium?"facebook_site"!==e:"twitterUsername"!==t.payload.socialMedium||"twitter_site"!==e)),r;case"CHANGE_OTHERS_SOCIAL_PROFILE":return r=zs(r,3),r.socialProfiles.otherSocialUrls[t.payload.index]=t.payload.value,r.errorFields=r.errorFields.filter((e=>e!==`other_social_urls-${t.payload.index}`)),r;case"ADD_OTHERS_SOCIAL_PROFILE":return r=zs(r,3),r.socialProfiles.otherSocialUrls=[...r.socialProfiles.otherSocialUrls,t.payload.value],r;case"REMOVE_OTHERS_SOCIAL_PROFILE":return r=zs(r,3),r.socialProfiles.otherSocialUrls.splice(t.payload.index,1),r.errorFields=(n=r.errorFields,a=t.payload.index,n.map((e=>{const t=parseInt(e.replace("other_social_urls-",""),10);return t===a?"remove":t>a?"other_social_urls-"+(t-1):e})).filter((e=>"remove"!==e))),r;case"SET_ERROR_FIELDS":return r.errorFields=t.payload,r;case"SET_STEP_ERROR":return r.stepErrors[t.payload.step]=t.payload.message,r;case"REMOVE_STEP_ERROR":return r.stepErrors=(0,u.pickBy)(r.stepErrors,((e,r)=>r!==t.payload)),r;case"SET_TRACKING":return r=zs(r,4),r.tracking=t.payload,r;default:return r}var n,a}const qs=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"}))})),Bs=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",clipRule:"evenodd"}))})),$s=({items:e,onAddProfile:r,onRemoveProfile:n,onChangeProfile:a,errorFields:s,fieldType:o,addButtonChildren:i})=>{const u=(0,l.useCallback)((e=>{n(parseInt(e.currentTarget.dataset.index,10))}),[n]);return(0,t.createElement)("div",null,e.map(((e,r)=>(0,t.createElement)("div",{key:`url-${r}`},(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-items-start yst-mt-4"},(0,t.createElement)(o,{className:"yst-grow",label:(0,bn.__)("Other social profile","wordpress-seo"),id:`social-input-other-url-${r}`,value:e,socialMedium:"other",index:r,onChange:a,placeholder:(0,bn.__)("E.g. https://social-platform.com/yoast","wordpress-seo"),feedback:{type:"error",isVisible:s.includes("other_social_urls-"+r),message:[(0,bn.__)("Could not save this value. Please check the URL.","wordpress-seo")]}}),(0,t.createElement)("button",{type:"button",className:"yst-mt-[27.5px] yst-ml-2 yst-p-3 yst-text-slate-500 yst-rounded-md hover:yst-text-primary-500 focus:yst-text-primary-500 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-primary-500 yst-no-underline;",id:`remove-profile-${r}`,"data-index":r,onClick:u},(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,bn.__)("Delete item","wordpress-seo")),(0,t.createElement)(qs,{className:"yst-w-5 yst-h-5"})))))),(0,t.createElement)(c.Button,{id:"add-profile",variant:"secondary",className:"yst-items-center yst-mt-8",onClick:r,"data-hiive-event-name":"clicked_add_profile"},(0,t.createElement)(Bs,{className:"yst-w-5 yst-h-5 yst-mr-1 yst-text-slate-400"}),i))};$s.propTypes={fieldType:En().elementType.isRequired,items:En().array.isRequired,onAddProfile:En().func.isRequired,onRemoveProfile:En().func.isRequired,onChangeProfile:En().func.isRequired,errorFields:En().array,addButtonChildren:En().node},$s.defaultProps={errorFields:[],addButtonChildren:(0,bn.__)("Add another profile","wordpress-seo")};const Hs=$s,Vs=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}))})),Zs=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}))})),Ws=({texts:e,id:r,as:n,...a})=>{const s=(0,l.useMemo)((()=>(0,u.last)(e)),[e]);return(0,t.createElement)(n,{id:r,...a},e.map(((e,n)=>(0,t.createElement)(l.Fragment,{key:`${r}-text-${n}`},e,s!==e&&(0,t.createElement)("br",null)))))};Ws.defaultProps={as:"p"},Ws.propTypes={texts:En().arrayOf(En().string).isRequired,id:En().string.isRequired,as:En().oneOfType([En().string,En().elementType])};const Gs=Ws;function Ys({hasError:e,hasSuccess:r}){return e?(0,t.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-3"},(0,t.createElement)(Vs,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-red-500"})):r?(0,t.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-3"},(0,t.createElement)(Zs,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-emerald-600"})):null}function Ks({className:e,id:r,label:n,description:a,value:s,onChange:o,placeholder:i,feedback:c,type:u,...d}){const p=u||"text",m=(0,l.useMemo)((()=>c.isVisible&&"error"===c.type),[c.isVisible,c.type]),f=(0,l.useMemo)((()=>c.isVisible&&"success"===c.type),[c.isVisible,c.type]);return(0,t.createElement)("div",{className:e},n&&(0,t.createElement)("label",{className:"yst-block yst-mb-2 yst-font-medium yst-text-slate-700",htmlFor:r},n),(0,t.createElement)("div",{className:"yst-relative"},(0,t.createElement)("input",{id:r,type:p,value:s,className:da()("yst-block yst-w-full yst-h-[45px] yst-input focus:yst-ring-1",{"yst-border-red-300 yst-text-red-900 focus:yst-ring-red-500 focus:yst-border-red-500":m,"yst-border-emerald-600 yst-text-slate-700 focus:yst-ring-emerald-600 focus:yst-border-emerald-600":f,"yst-text-slate-700 yst-border-slate-300 focus:yst-ring-primary-500 focus:yst-border-primary-500":!m&&!f}),onChange:o,placeholder:i,...Fs(r,c),...d}),(0,t.createElement)(Ys,{hasError:m,hasSuccess:f})),c.isVisible&&(0,t.createElement)(Gs,{id:`${m?"error-":"success-"}${r}`,className:da()("yst-mt-2 yst-text-sm",{"yst-text-red-600":m,"yst-text-emerald-600":f}),texts:c.message}),a)}function Js({id:e,onChange:r,socialMedium:n,isDisabled:a,...s}){const o=(0,l.useCallback)((e=>{r(e.target.value,"other"===n?s.index:n)}),[n,s.index]);return(0,t.createElement)(Ks,{onChange:o,disabled:a,id:e,...s})}function Qs({socialProfiles:e,errorFields:r,dispatch:n}){const a=(0,l.useCallback)(((e,t)=>{n({type:"CHANGE_SOCIAL_PROFILE",payload:{socialMedium:t,value:e}})}),[]),s=(0,l.useCallback)(((e,t)=>{n({type:"CHANGE_OTHERS_SOCIAL_PROFILE",payload:{index:t,value:e}})}),[]),o=(0,l.useCallback)((()=>{n({type:"ADD_OTHERS_SOCIAL_PROFILE",payload:{value:""}})}),[]),i=(0,l.useCallback)((e=>{n({type:"REMOVE_OTHERS_SOCIAL_PROFILE",payload:{index:e}})}),[]);return(0,t.createElement)(Xs,{socialProfiles:e,onChangeHandler:a,onChangeOthersHandler:s,onAddProfileHandler:o,onRemoveProfileHandler:i,errorFields:r})}function Xs({socialProfiles:e,onChangeHandler:r,onChangeOthersHandler:n,onAddProfileHandler:a,onRemoveProfileHandler:s,errorFields:o}){return(0,t.createElement)("div",{id:"social-input-section"},(0,t.createElement)(Js,{className:"yst-mt-4",label:(0,bn.__)("Facebook","wordpress-seo"),id:"social-input-facebook-url",value:e.facebookUrl,socialMedium:"facebookUrl",onChange:r,placeholder:(0,bn.__)("E.g. https://facebook.com/yoast","wordpress-seo"),feedback:{message:[(0,bn.__)("Could not save this value. Please check the URL.","wordpress-seo")],isVisible:o.includes("facebook_site"),type:"error"}}),(0,t.createElement)(Js,{className:"yst-mt-4",label:(0,bn.__)("X","wordpress-seo"),id:"social-input-twitter-url",value:e.twitterUsername,socialMedium:"twitterUsername",onChange:r,placeholder:(0,bn.__)("E.g. https://x.com/yoast","wordpress-seo"),feedback:{message:[(0,bn.__)("Could not save this value. Please check the URL or username.","wordpress-seo")],isVisible:o.includes("twitter_site"),type:"error"}}),(0,t.createElement)(Hs,{items:e.otherSocialUrls,onAddProfile:a,onRemoveProfile:s,onChangeProfile:n,errorFields:o,fieldType:Js}))}Ys.propTypes={hasError:wn.PropTypes.bool,hasSuccess:wn.PropTypes.bool},Ys.defaultProps={hasError:!1,hasSuccess:!1},Ks.propTypes={className:wn.PropTypes.string,id:wn.PropTypes.string.isRequired,label:wn.PropTypes.string,description:wn.PropTypes.node,value:wn.PropTypes.string,onChange:wn.PropTypes.func.isRequired,placeholder:wn.PropTypes.string,feedback:wn.PropTypes.shape({type:wn.PropTypes.string,message:wn.PropTypes.array,isVisible:wn.PropTypes.bool}),type:wn.PropTypes.string},Ks.defaultProps={value:"",className:"",label:"",description:null,placeholder:"",feedback:{message:[],isVisible:!1},type:"text"},Js.propTypes={id:En().string.isRequired,onChange:En().func.isRequired,socialMedium:En().string,isDisabled:En().bool},Js.defaultProps={socialMedium:"",isDisabled:!1},Qs.propTypes={socialProfiles:En().object.isRequired,dispatch:En().func.isRequired,errorFields:En().array},Qs.defaultProps={errorFields:[]},Xs.propTypes={socialProfiles:En().object.isRequired,onChangeHandler:En().func.isRequired,onChangeOthersHandler:En().func.isRequired,onAddProfileHandler:En().func.isRequired,onRemoveProfileHandler:En().func.isRequired,errorFields:En().array.isRequired};const eo=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}))})),to=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}))})),ro=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}))}));var no=r(8133);function ao({type:e,children:r,className:n}){let a,s;switch(e){case"info":a=(0,t.createElement)(eo,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-blue-500"}),s="yst-bg-blue-100 yst-text-blue-800";break;case"warning":a=(0,t.createElement)(to,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-yellow-500"}),s="yst-bg-yellow-100 yst-text-yellow-800";break;case"error":a=(0,t.createElement)(ro,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-red-500"}),s="yst-bg-red-100 yst-text-red-800";break;case"success":a=(0,t.createElement)(Zs,{"aria-hidden":"true",className:"yst-flex-shrink-0 yst-w-5 yst-h-5 yst-text-emerald-600"}),s="yst-bg-green-100 yst-text-green-800"}return(0,t.createElement)("div",{className:da()("yst-flex yst-p-4 yst-rounded-md",s,n)},a,(0,t.createElement)("div",{className:"yst-flex-1 yst-ml-3 yst-text-sm"},r))}function so({id:e,isVisible:r,expandDuration:n,type:a,children:s,className:o}){const[i,c]=(0,l.useState)(r?"yst-opacity-100":"yst-opacity-0"),u=(0,l.useCallback)((()=>{c("yst-opacity-100")}),[]);return(0,t.createElement)(no.Z,{id:e,height:r?"auto":0,easing:"linear",duration:n,onAnimationEnd:u},(0,t.createElement)(ao,{type:a,className:da()("yst-transition-opacity yst-duration-300 yst-mt-4",i,o)},s))}function oo({state:e,dispatch:r,setErrorFields:n}){const a=(0,bn.__)("If you select a Person to represent this site, we will use the social profiles from the selected user's profile page.","wordpress-seo"),s=(0,l.createInterpolateElement)((0,bn.sprintf)( // translators: %1$s is replaced by the selected person's username. (0,bn.__)("You have selected the user %1$s as the person this site represents.","wordpress-seo"),`${e.personName}`),{b:(0,t.createElement)("b",null)}),o=(0,l.createInterpolateElement)((0,bn.sprintf)( // translators: %1$s and %2$s is replaced by a link to the selected person's profile page. (0,bn.__)("You can %1$supdate or add social profiles to this user profile%2$s.","wordpress-seo"),"",""),{a:(0,t.createElement)("a",{id:"yoast-configuration-person-social-profiles-user-link",href:window.wpseoScriptData.userEditUrl.replace("{user_id}",e.personId),target:"_blank",rel:"noopener noreferrer","data-hiive-event-name":"clicked_update_or_add_profile | social profiles"})}),i=(0,bn.__)("You're not allowed to edit the social profiles of this user. Please ask this user or an admin to do this.","wordpress-seo");return["company","emptyChoice"].includes(e.companyOrPerson)?(0,t.createElement)(l.Fragment,null,(0,t.createElement)("p",null,(0,bn.__)("Fantastic work! Add your organization's social media accounts below. This allows us to fine-tune the metadata for these platforms.","wordpress-seo")),(0,t.createElement)(Qs,{socialProfiles:e.socialProfiles,dispatch:r,errorFields:e.errorFields,setErrorFields:n})):0===e.personId?(0,t.createElement)(l.Fragment,null,(0,t.createElement)("p",null,a),(0,t.createElement)(ao,{type:"info",className:"yst-mt-5"}, // translators: please note that "Site representation" here refers to the name of a step in the first-time configuration, so this occurrence needs to be translated in the same manner as that step's heading. (0,bn.__)("Please select a user in the Site representation step.","wordpress-seo"))):(0,t.createElement)(l.Fragment,null,(0,t.createElement)("p",null,s," ",e.canEditUser?o:i))}ao.propTypes={type:En().oneOf(["info","warning","error","success"]),children:En().oneOfType([En().arrayOf(En().node),En().node]).isRequired,className:En().string},ao.defaultProps={type:"info",className:""},so.propTypes={id:En().string.isRequired,isVisible:En().bool.isRequired,type:En().oneOf(["info","warning","error","success"]),children:En().oneOfType([En().arrayOf(En().node),En().node]).isRequired,expandDuration:En().number,className:En().string},so.defaultProps={expandDuration:400,type:"info",className:""},oo.propTypes={state:En().object.isRequired,dispatch:En().func.isRequired,setErrorFields:En().func.isRequired};const io={slideDuration:500,fadeDuration:200,delayBeforeOpening:900,delayBeforeFadingIn:1400,delayBeforeClosing:200},lo={fadeDuration:"yst-duration-200",slideDuration:"yst-duration-500",delayBeforeOpening:"yst-delay-[900ms]",delayUntilStepFaded:"yst-delay-200"},co=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"}))})),{slideDuration:uo,delayUntilStepFaded:po}=lo,mo=`yst-transition-opacity ${uo} yst-absolute yst-inset-0 yst-border-2 yst-flex yst-items-center yst-justify-center yst-rounded-full`;function fo(e){return`${mo} ${e?"yst-opacity-100":`${po} yst-opacity-0`}`}function ho({isVisible:e}){return(0,t.createElement)("span",{className:`yst-bg-white yst-border-primary-500 ${fo(e)}`},(0,t.createElement)("span",{className:"yst-h-2.5 yst-w-2.5 yst-rounded-full yst-bg-primary-500"}))}function yo({isVisible:e}){return(0,t.createElement)("span",{className:`yst-bg-primary-500 yst-border-primary-500 ${fo(e)}`},(0,t.createElement)(co,{className:"yst-w-5 yst-h-5 yst-text-white","aria-hidden":"true"}))}function go({isVisible:e}){return(0,t.createElement)("span",{className:`yst-bg-white yst-border-slate-300 ${fo(e)}`},(0,t.createElement)("span",{className:"yst-h-2.5 yst-w-2.5 yst-rounded-full yst-bg-transparent"}))}function vo({activationDelay:e,deactivationDelay:r,isFinished:n}){const{activeStepIndex:a,stepIndex:s,lastStepIndex:o}=Oo(),i=s===o,c=a===s,[u,d]=(0,l.useState)((()=>!!c&&!i));return(0,l.useEffect)((()=>{if(c){const t=setTimeout((()=>{d(!0)}),e);return()=>clearTimeout(t)}const t=setTimeout((()=>{d(!1)}),r);return()=>clearTimeout(t)}),[c,i,e,r]),(0,t.createElement)("span",{className:"yst-relative yst-z-10 yst-w-8 yst-h-8 yst-rounded-full"},(0,t.createElement)(go,{isVisible:!0}),(0,t.createElement)(yo,{isVisible:n}),(0,t.createElement)(ho,{isVisible:u&&!i}))}function bo(e,t,r){return t&&!r?"yst-text-primary-500":e?"yst-text-slate-900":"yst-text-slate-600"}function wo({name:e,description:r,isFinished:n,children:a}){const{stepIndex:s,activeStepIndex:o,lastStepIndex:i}=Oo(),c=o===s,u=i===s,[d,p]=(0,l.useState)(bo(n,c,u));return(0,l.useEffect)((()=>{if(c){const e=bo(n,c,u),t=setTimeout((()=>p(e)),io.delayBeforeOpening);return()=>clearTimeout(t)}const e=bo(n,c,u);p(e)}),[o,n,u,bo]),(0,t.createElement)("div",{className:"yst-relative yst-flex yst-items-center yst-group","aria-current":c?"step":null},(0,t.createElement)("span",{className:"yst-flex yst-items-center","aria-hidden":c?"true":null},(0,t.createElement)(vo,{activationDelay:io.delayBeforeOpening,deactivationDelay:0,isFinished:n})),(0,t.createElement)("span",{className:"yst-ml-4 yst-min-w-0 yst-flex yst-flex-col"},(0,t.createElement)("span",{className:`yst-transition-colors yst-duration-500 yst-text-xs yst-font-[650] yst-tracking-wide yst-uppercase ${d}`},e),r&&(0,t.createElement)("span",{className:"yst-text-sm yst-text-slate-600"},r)),a)}ho.propTypes={isVisible:En().bool},ho.defaultProps={isVisible:!0},yo.propTypes={isVisible:En().bool},yo.defaultProps={isVisible:!0},go.propTypes={isVisible:En().bool},go.defaultProps={isVisible:!0},vo.propTypes={isFinished:En().bool.isRequired,activationDelay:En().number,deactivationDelay:En().number},vo.defaultProps={activationDelay:0,deactivationDelay:0},wo.propTypes={name:En().string.isRequired,isFinished:En().bool.isRequired,description:En().string,children:En().node},wo.defaultProps={description:"",children:[]};const{slideDuration:Eo,delayBeforeOpening:xo,delayBeforeFadingIn:So,delayBeforeClosing:_o}=io,{fadeDuration:Ro,delayUntilStepFaded:ko,slideDuration:Co}=lo,Po=(0,l.createContext)();function Oo(){const e=(0,l.useContext)(Po);if(!e)throw new Error("Stepper compound components cannot be rendered outside the Stepper component");return e}function No({beforeGo:e,children:r,destination:n,...a}){const{stepIndex:s,setActiveStepIndex:o,lastStepIndex:i}=Oo(),u=(0,l.useCallback)((()=>{o("string"==typeof n?"last"===n?i:0:s+n)}),[s,i,o,n]),d=(0,l.useCallback)((async()=>{let t=!0;e&&(t=!1,t=await e()),t&&u()}),[u,e]);return(0,t.createElement)(c.Button,{onClick:d,...a},r)}function To({children:e,...r}){const{stepIndex:n,setActiveStepIndex:a}=Oo(),s=(0,l.useCallback)((()=>{a(n)}),[a,n]);return(0,t.createElement)(c.Button,{onClick:s,variant:"secondary",size:"small",...r},e)}function Lo({children:e}){const{lastStepIndex:r,stepIndex:n,activeStepIndex:a}=Oo();return(0,t.createElement)(l.Fragment,null,n!==r&&(0,t.createElement)(l.Fragment,null,(0,t.createElement)("div",{className:"yst--ml-px yst-absolute yst-left-4 yst-w-0.5 yst-h-full yst-bg-slate-300 yst--bottom-6","aria-hidden":"true"}),(0,t.createElement)("div",{className:`yst-h-12 yst-transition-transform ${ko} yst-ease-linear ${Co} ${n{a?(o("auto"),setTimeout((()=>c(!1)),So)):(c(!0),o(0))}),[a]),(0,t.createElement)(l.Fragment,null,(0,t.createElement)(no.Z,{id:`content-${n}`,delay:0===s?_o:xo,height:s,easing:"ease-in-out",duration:Eo},(0,t.createElement)("div",{className:`yst-transition-opacity ${Ro} yst-relative yst-ml-12 yst-mt-4 yst-pb-1 ${i?"yst-opacity-0 yst-pointer-events-none":"yst-opacity-100"}`},e)))}function Ao({children:e,setActiveStepIndex:r,activeStepIndex:n,isStepperFinished:a}){return(0,t.createElement)("ol",null,e.map(((s,o)=>(0,t.createElement)("li",{key:`${s.props.name}-${o}`,className:(o===e.length-1?"":"yst-pb-8")+" yst-mb-0 yst-relative yst-max-w-none"},(0,t.createElement)(Po.Provider,{value:{stepIndex:o,activeStepIndex:n,setActiveStepIndex:r,lastStepIndex:e.length-1,isStepperFinished:a}},s)))))}function Do({stepId:e,beforeGo:r,children:n,additionalClasses:a,...s}){return(0,t.createElement)(Lo.GoButton,{id:`button-${e}-continue`,variant:"primary",className:a,destination:1,beforeGo:r,"data-hiive-event-name":`clicked_continue | ${ys[e]}`,...s},n)}function Fo({stepId:e,beforeGo:r,isVisible:n,children:a,additionalClasses:s,...o}){const i=`yst-transition-opacity ${lo.slideDuration} yst-ease-out ${n?"yst-opacity-100":`${lo.delayBeforeOpening} yst-opacity-0 yst-pointer-events-none yst-hidden`}`;return(0,t.createElement)(Lo.GoButton,{id:`button-${e}-edit`,variant:"secondary",size:"small",className:da()(i,s),destination:0,beforeGo:r,"data-hiive-event-name":`clicked_edit | ${ys[e]}`,...o},a)}function jo({stepId:e,beforeGo:r,children:n,additionalClasses:a,...s}){return(0,t.createElement)(Lo.GoButton,{id:`button-${e}-back`,variant:"secondary",className:a,destination:-1,beforeGo:r,"data-hiive-event-name":`clicked_go_back | ${ys[e]}`,...s},n)}function zo({stepId:e,beforeContinue:r,continueLabel:n,beforeBack:a,backLabel:s}){return(0,t.createElement)("div",{className:"yst-mt-12"},(0,t.createElement)(Do,{stepId:e,beforeGo:r},n),(0,t.createElement)(jo,{stepId:e,additionalClasses:"yst-ml-3",beforeGo:a},s))}function Uo({stepId:e,stepperFinishedOnce:r,saveFunction:n,setEditState:a}){const s=(0,l.useCallback)((async()=>{const e=await n();return a(!e),e}),[n]);return r?(0,t.createElement)(Lo.GoButton,{id:`button-${e}-go`,variant:"primary",className:"yst-mt-12",destination:"last",beforeGo:s,"data-hiive-event-name":`clicked_save_changes | ${ys[e]}`},(0,bn.__)("Save changes","wordpress-seo")):(0,t.createElement)(zo,{stepId:e,beforeContinue:n,continueLabel:(0,bn.__)("Save and continue","wordpress-seo")})}var qo,Bo,$o,Ho,Vo,Zo,Wo,Go,Yo,Ko,Jo,Qo,Xo,ei,ti,ri,ni,ai,si,oi,ii,li,ci,ui,di,pi,mi,fi,hi,yi,gi,vi,bi,wi,Ei,xi,Si,_i,Ri,ki,Ci,Pi,Oi,Ni,Ti,Li,Ii,Mi,Ai,Di,Fi;function ji(){return ji=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",ji({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 262.37 284.15"},e),qo||(qo=t.createElement("path",{fill:"#f0ecf0",d:"M262.37 153A131.19 131.19 0 1 0 54.71 259.56a28.08 28.08 0 0 1 1.91-7.37c2-4.92-12.06-11.1-7.52-26.48 3.49-11.81 30.9-25.16 37.1-41.56 2.4-6.32 12-30.34 29.69-35.66 9-2.7 48.29-13.29 60.25-11.07s37.48 11 31.66 41.46c-10.26 53.79-44.8 59.12-46.28 94.64a27.46 27.46 0 0 0 .65 6.94A131.23 131.23 0 0 0 262.37 153Z"})),Bo||(Bo=t.createElement("path",{fill:"#006531",d:"M161.52 273.52c1.44-35.53 36-40.85 46.28-94.64 5.82-30.51-19.7-39.25-31.66-41.46s-51.23 8.37-60.25 11.07c-17.72 5.32-27.29 29.34-29.69 35.66-6.2 16.4-33.61 29.75-37.1 41.56-4.54 15.38 9.53 21.56 7.52 26.48a28.08 28.08 0 0 0-1.91 7.37 131.71 131.71 0 0 0 12.68 8.05 184.18 184.18 0 0 1 7.18-34.05c-4.12-2.43-8.32-4-19.15-2.33 16.06-23.66 34.79-45.11 64.9-65.12 2.54 22.59 3.65 40.75 14.49 60-14.93-3.2-25.12 0-32 4.77a103.74 103.74 0 0 0-4.6 49.12 132 132 0 0 0 64 .49 27.23 27.23 0 0 1-.69-6.97Z"})),$o||($o=t.createElement("path",{fill:"#89bc3b",d:"M102.8 230.9c6.89-4.73 17.08-8 32-4.77-10.84-19.27-12-37.43-14.49-60-30.11 20-48.84 41.46-64.9 65.12 10.83-1.66 15-.1 19.15 2.33a184.18 184.18 0 0 0-7.18 34A130.42 130.42 0 0 0 98.21 280a103.65 103.65 0 0 1 4.59-49.1Z"})),Ho||(Ho=t.createElement("path",{fill:"#093f22",d:"M61.29 184.66c-4.39 13.11-15 33.6-14.52 47.42 11.9-18 34.83-42.28 46.73-60.26 2.69-4.08 1.49-10.8-3.21-13.29-3.83-2-8.45-.15-11.7 1.92-8.3 5.28-14.21 14.98-17.3 24.21Zm72.61 58.65 18.32-60.92s.51 11.07 1.1 9.3 16.4-28.8 16.4-28.8l-28.14 81Z"})),Vo||(Vo=t.createElement("path",{fill:"#006531",d:"M169.31 113.64c.71 13.17 6.24 22.36 5.36 25.68-33.67 6.42-49.16 29.46-54 28.88-6.67-3.85-5.76-14.39-5.54-17.71 3.55-6.65-.12-17.65 1.77-23.89 1.4-4.6 9.38-12.6 18.1-14.53s33.93-5.54 34.31 1.57Z"})),Zo||(Zo=t.createElement("path",{fill:"#b498c6",d:"M122.32 166.11c6.09-9.75 11.1-30.31 14.62-33.9 3.33-3.39 22.1-12 26.12-13.51 1.56-1.22 2-2.55 2.09-6.65l.23-19.82-45.16 16.39 2.53 37.22c.67 5.09.35 10.08-.43 20.27Z"})),Wo||(Wo=t.createElement("path",{fill:"#8b6c9c",d:"m166.15 92.89-.64 7.17c-.94 12.77-25.4 31.3-38.1 30.12-4.6-.42-5.78-10.38-7.39-15.06l-2.61-9.52Z"})),Go||(Go=t.createElement("path",{fill:"#b498c6",d:"M157.71 192S128 247.74 126 254s-.23 13.67 4.49 15.24 16.51.6 24.27-7.47c5.9-6.14 28.74-39.14 29.45-39.85.06-13.3-7.49-22.14-26.5-29.92Z"})),Yo||(Yo=t.createElement("ellipse",{cx:106.71,cy:192.91,fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,rx:8.8,ry:5.58,transform:"rotate(-19.17 106.716 192.914)"})),Ko||(Ko=t.createElement("path",{fill:"#f19018",d:"M92.72 206.13c4.25-1.18 9.78-1.68 17-1.26-6.39 3.89-15.24 15.48-15.51 17.65a87.16 87.16 0 0 1 11-1.88c-16 10.81-23.79 31.12-22.85 30.75-1.24.41-3.63-21.77 6.06-31.06a32.05 32.05 0 0 0-7.73 1.1c1.68-4.03 6.97-11.62 12.03-15.3Z"})),Jo||(Jo=t.createElement("path",{fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,d:"M92.72 206.13c4.25-1.18 9.78-1.68 17-1.26-6.39 3.89-15.24 15.48-15.51 17.65a87.16 87.16 0 0 1 11-1.88c-16 10.81-23.79 31.12-22.85 30.75-1.24.41-3.63-21.77 6.06-31.06a32.05 32.05 0 0 0-7.73 1.1c1.68-4.03 6.97-11.62 12.03-15.3Z"})),Qo||(Qo=t.createElement("path",{fill:"#006531",d:"M183.45 223.15c-3.73-9.11-19.27-19.94-31.68-20.38 7.54-16.39 11.46-29.12 19.31-42.24 0 0-5.74-22.74-1-22.2 8.52 1 19-7.56 33.67-4.23 14.25 3.23 20.27 23.26 17 38-4.47 19.9-40.04 54.49-37.3 51.05Z"})),Xo||(Xo=t.createElement("path",{fill:"#8b6c9c",d:"M80 254.38C77.79 252.17 71.81 244 65.6 244s-33 6.87-33 6.87l-.45 9.3s16.69 1.77 19.94 2.22 16-3.55 16-3.55Z"})),ei||(ei=t.createElement("path",{fill:"#8b6c9c",d:"M72.14 260.36c-12.31-.11-23.45 6.28-26.55 5.39-4.1-1.33-4.21.82-6.64.59s-6.7-3.65-6.7-3.65l.12-12.3 39 7.09Z"})),ti||(ti=t.createElement("path",{fill:"#8b6c9c",d:"M50.63 262.9c-4.43-2.21-15.73 4.28-17.74 2.71-4.64-3.65-8.27-6.21-9.3-8.42s2.47-5.91 1.59-16.1c-.44-5.07 4.31-5.32 6.09-1.33.93 2.1 1.33 13.51 1.33 13.51l7.63 2.1Z"})),ri||(ri=t.createElement("path",{fill:"#b498c6",d:"M100.38 163.12c.89 4-22.61 60.35-31.91 76.3S40.9 257.36 40.9 257.36s-14.48-.79-9.17-22.05 24.47-27.82 31.55-37.42 20.27-29 20.27-33.45c0-3.1 15.95-5.31 16.83-1.32Z"})),ni||(ni=t.createElement("path",{fill:"#8b6c9c",d:"M100.48 163.09a3.78 3.78 0 0 1 0 .95 9.1 9.1 0 0 1-.16.91c-.12.6-.29 1.19-.44 1.78-.33 1.17-.69 2.34-1.06 3.5-.76 2.32-1.56 4.62-2.38 6.92Q94 184 91.28 190.83q-5.4 13.59-11.26 27-2.92 6.71-6 13.34A63.91 63.91 0 0 1 66.55 244 35.8 35.8 0 0 1 55 253.26a38.85 38.85 0 0 1-14.07 4.2v-.2a41.07 41.07 0 0 0 6.94-2.09 39.27 39.27 0 0 0 6.44-3.17A35.56 35.56 0 0 0 65 242.71a26.19 26.19 0 0 0 2-2.9c.66-1 1.22-2.05 1.8-3.1q1.74-3.18 3.36-6.44c2.2-4.33 4.31-8.71 6.37-13.12q6.14-13.23 11.79-26.7 2.85-6.72 5.53-13.51c.88-2.27 1.74-4.55 2.56-6.84.4-1.14.79-2.29 1.15-3.46.17-.58.35-1.16.48-1.75a6.54 6.54 0 0 0 .18-.88 3.19 3.19 0 0 0 .06-.87Z"})),ai||(ai=t.createElement("path",{fill:"#8b6c9c",d:"M98.61 166.22s10.4-10 11.73-14c1.78-5.31-.21-15.41 2.56-22.17 1.13-2.77 5-12.4 5.3-13.28s-3.13-2.36-4.76-1.77a17.06 17.06 0 0 0-6.26 5.61c-1.33 2.22-.68 10.15-4.37 11.34s-18.23 10.61-18.38 17.4.44 11.85 14.18 16.87Z"})),si||(si=t.createElement("path",{fill:"#8b6c9c",d:"m100.38 163.12 8.42-13.74-13.74-19s4.35-12 5.09-16.39 3.84-11.14.56-18.17c-2.12-4.55-4.79-5-5.09-2.1s-1.16 13.72-2.62 17.12-8.08 14.62-8.08 14.62l-12.4 14.62Z"})),oi||(oi=t.createElement("path",{fill:"#b498c6",d:"M138.58 5.48c-20.7-.38-38 19.23-39.7 21.63-1.34 1.94-5.06 12-6.58 19.34.42-1.33.87-2.62 1.33-3.85 13.19-6.56 37.64-4.79 70.11 2.89 1.75 6.74 1.36 12.38 1.15 20.18 0 0-15.4 8.58-24.28 9.94-7.5 1.16-11.68-1.37-14.5-3.62-4-3.18-7.61-9.22-13.15-9.67-5.81-.47-7.83 9.3-10.72 9-1.73-.18-7.25.7-9.63 2.76a34.28 34.28 0 0 0-.24 9.16c1.25 5.91 5.63 11.61 8.16 14.52s4.19 11.43 8.45 15.76c9.81 9.93 47-6.94 55.48-17.25 3.75-4.53 8.8-28 8.8-28s10.52-10.21 10.46-16.87c-.21-22.82-17.07-45.4-45.14-45.92Z"})),ii||(ii=t.createElement("path",{fill:"#fcee21",d:"M92.41 51.14a78.25 78.25 0 0 1 .88-8.53C83.1 69 92.42 74.26 92.61 74.09a39.64 39.64 0 0 1 2.9-8.67s-3.36-7.58-3.1-14.28Z"})),li||(li=t.createElement("path",{fill:"#fbb03b",d:"M102.24 71.33c2.89.29 4.91-9.48 10.72-9 5.54.45 9.14 6.49 13.15 9.67 2.82 2.25 7 4.78 14.5 3.62 8.88-1.36 24.28-9.94 24.28-9.94.21-7.8.6-13.44-1.15-20.18-32.47-7.69-56.92-9.5-70.11-2.9-.89 2-1.63 13.3-1.63 13.3-.3 5 .89 6.64 3.47 9.52a42 42 0 0 0-2.82 8.67c2.35-2.09 7.86-2.94 9.59-2.76Z"})),ci||(ci=t.createElement("path",{fill:"#89bc3b",d:"M156 194.13c7.53-.89 21.71 6.87 26.81 12.62 14.42-12.32 25.39-37.37 27.91-45.19 6.64-20.6-11.52-28.35-11.52-28.35l2.44.66s18.38 5.76 14.84 31.9c-1.24 9.13-14.64 33.72-28.8 46.3.89 1.55 2.22 3.32 2.66 4.87l-6.65 6.43c-2.66-8.42-22.81-20.82-31.9-20.6Z"})),ui||(ui=t.createElement("path",{fill:"#b498c6",d:"M86.65 168.87c-.89-1.32-17.89-25.57-18.34-28.67s4.69-7.7 6.13-7c9.64 4.61 24.21 17.67 26 22.1s-.71 11.59-.71 11.59Zm-8.86-38.1s12.14-11.89 15.09-12 10.11 6 13.11 7.91c3.2 2 3.87 7.13 8.23 10.45.44 2.07-2.22 3.42-5.62 2.39s-7.34-6.81-7.34-6.81l-7.12-3.46-8.38 6.88Z"})),di||(di=t.createElement("path",{fill:"#b498c6",d:"M74.24 133s11.93-9 13.4-9 12.38 7.59 13.42 9.22 1.88 8.59 3.75 14.86c.65 2.17-3.28 5.17-6.53 1.33s-4.77-10.32-4.77-10.32l-7.33-4.61-5.29 3.85Z"})),pi||(pi=t.createElement("path",{fill:"#8b6c9c",d:"M84.58 124.87a4.75 4.75 0 0 1 3-1.15 7.83 7.83 0 0 1 3.22.82 21.82 21.82 0 0 1 2.69 1.76c.86.62 1.71 1.25 2.56 1.89a47.7 47.7 0 0 1 4.94 4.14 4.21 4.21 0 0 1 .55.71 5.87 5.87 0 0 1 .36.81c.18.53.33 1.05.46 1.57.26 1 .48 2.08.7 3.12.44 2.07.87 4.14 1.37 6.19.25 1 .53 2 .82 3a2.42 2.42 0 0 1 .12 1 2.36 2.36 0 0 1-.26.93 3.58 3.58 0 0 1-1.21 1.34 4 4 0 0 1-3.47.47 5.93 5.93 0 0 1-2.73-2.06 12.37 12.37 0 0 1-2.52-5.93 36.66 36.66 0 0 0 3.3 5.3 5 5 0 0 0 2.26 1.74 3 3 0 0 0 2.6-.35 1.93 1.93 0 0 0 1-2.16c-.3-1-.58-2.06-.83-3.09-.51-2.07-.94-4.15-1.38-6.22-.22-1-.44-2.07-.69-3.08-.13-.51-.27-1-.43-1.49a2.76 2.76 0 0 0-.7-1.17 49.75 49.75 0 0 0-4.81-4c-.84-.63-1.69-1.26-2.55-1.88s-1.75-1.16-2.57-1.8a6.81 6.81 0 0 0-2.78-1.11 4.77 4.77 0 0 0-3.02.7Z"})),mi||(mi=t.createElement("path",{fill:"#b498c6",d:"M72.62 133.87s5-4.31 6.43-4.66c2.52-.63 12.51 5.9 13.36 7.77 1.31 2.91 2.2 7.57 3.87 11.4.9 2.06-2.84 2.15-5.49.53s-3.57-6.71-3.57-6.71c-2.51-1.89-4.82-2.52-6.54-3.69-.3 2.47-2.6 5.07-7 8.07Z"})),fi||(fi=t.createElement("path",{fill:"#8b6c9c",d:"M79.05 129.21a5.63 5.63 0 0 1 2.7.27c.88.26 1.73.57 2.58.91a28.34 28.34 0 0 1 4.81 2.54c.77.48 1.53 1 2.27 1.52a12.53 12.53 0 0 1 2.14 1.84 2.76 2.76 0 0 1 .45.71c.09.21.17.44.24.66a12.73 12.73 0 0 1 .38 1.34c.21.9.37 1.8.52 2.68a38.28 38.28 0 0 0 1.15 5.2c.13.41.29.82.46 1.22a2.2 2.2 0 0 1 .2.84 1.33 1.33 0 0 1-.37 1 2.48 2.48 0 0 1-1.56.62 6 6 0 0 1-1.47-.08 8.62 8.62 0 0 1-2.69-.94 5.84 5.84 0 0 1-2.1-2 15.27 15.27 0 0 1-2-5.2l.19.31a9.76 9.76 0 0 0-2.57-1.41 12.13 12.13 0 0 1-3-1.25l.74-.19a14 14 0 0 1-2.58 2.75 8.41 8.41 0 0 0-2.18 2.84 8.13 8.13 0 0 1 1.78-3.21 14.17 14.17 0 0 0 2.08-2.85l.23-.52.5.33a5.89 5.89 0 0 0 1.27.66l1.46.5a10.54 10.54 0 0 1 2.83 1.55l.15.11v.2a14.16 14.16 0 0 0 1.83 4.84 4.89 4.89 0 0 0 1.75 1.69 7.75 7.75 0 0 0 2.38.83 5 5 0 0 0 1.22.06 1.54 1.54 0 0 0 .92-.31c.13-.13.14-.32 0-.72s-.35-.86-.49-1.3a36.1 36.1 0 0 1-1.18-5.34c-.15-.88-.31-1.76-.51-2.61a13 13 0 0 0-.35-1.26 3.72 3.72 0 0 0-.49-1 11.48 11.48 0 0 0-1.94-1.67c-.72-.52-1.46-1-2.22-1.48-1.5-1-3.1-1.75-4.62-2.68-.78-.44-1.57-.86-2.38-1.22a5.79 5.79 0 0 0-2.53-.78Z"})),hi||(hi=t.createElement("path",{fill:"#006531",d:"M167.62 84.35c22.06 1.45 35.92 5.68 36.5-3.92S197.69 6.63 141.9.54C89-5.24 83.2 37.33 82.73 45s7.68 8.3 7.68 8.3c.22-4 2.07-7.82 3.22-10.71 15.18-4.88 64.17 1.48 67.52 6.22s.8 13 1.47 16.45 9.68 6.8 9.68 6.8Z"})),yi||(yi=t.createElement("path",{fill:"#093f22",d:"M202.05 84.6c2.39-1.92-8.89-16.64-20.3-20.87l-6 7.31-.26 12.81c7.99 2.15 22.68 3.88 26.56.75Z"})),gi||(gi=t.createElement("path",{fill:"#b498c6",d:"M180.18 72.06c3.68 2.46 4 8.69 2.45 12.56s-10.89 10.8-13.28 11.15a26.88 26.88 0 0 1-5.15-.2L171 71.7s5.51-2.1 9.18.36Z"})),vi||(vi=t.createElement("path",{fill:"#191a1a",d:"M165.72 67.49s-13.58 37.88-20.45 41.87c1 1 7.06-1.52 9-3.51 3.55-2.44 16.85-34.8 16.85-34.8Z"})),bi||(bi=t.createElement("path",{fill:"#093f22",d:"M136.35 21.41c-1.17-2.11 21.15-11.14 32.7-11.14 2.66 0 10.64 6.2 11.52 9.74-15.29-.23-43.05 3.5-44.22 1.4Zm4.82 11.1c-.92-3 31.73-6.14 43.24-3.93 6.28 1.2 8.82 13.26 4.14 11.81-12.21-3.78-46.78-5.97-47.38-7.88ZM99.94 23c2.07-.89.29-4.14-1.48-10.93a19.93 19.93 0 0 0-7.35 7.62s6.76 4.16 8.83 3.31Zm-5.66 8.72c.18-1.29-5.85-5.57-6.48-4.62a17.56 17.56 0 0 0-2.94 8.78s9.23-2.88 9.42-4.16Z"})),wi||(wi=t.createElement("path",{fill:"#fcee21",d:"M95.9 65.56c4.07.42 7.79 1.24 12.23-1 0 0-4-8.79-8.72-8s-3.51 9-3.51 9Z"})),Ei||(Ei=t.createElement("path",{fill:"#f15a24",d:"M108.08 64.63c-5.34-9-13.34-9.9-12.12.92-.49.07-1.34-1.88-1.61-2.93-1.29-5.79 4.65-9.51 9.59-5.14 3.17 2.79 4.45 7.01 4.14 7.15Z"})),xi||(xi=t.createElement("path",{fill:"#f15a24",d:"M106.93 52c1.27.52 2.88 4 1.65 3.5A18.34 18.34 0 0 0 92 57.38c.7-5.91 13-6.22 14.93-5.38Z"})),Si||(Si=t.createElement("path",{fill:"#8b6c9c",d:"M121.12 71.07c.66 1.59 1.38 3.39-.41 4.53s-4.33-2-5.87-1.57-3.88 2.72-5.55 2.41c-3.52-.66-3.15-3.48-3.15-3.48s-1.61 5.55 4 5.62c3.81 0 4.23-2.58 7.44-2.27s3.46 2.53 4.89 1.61c2.88-1.82.31-6.69-1.35-6.85Z"})),_i||(_i=t.createElement("path",{fill:"#8b6c9c",d:"M106.73 75.68s-2.65.74-1.19 2.49c-3.18 0-3.08-4.59-1.32-6-.75 2.66 2.51 3.51 2.51 3.51Z"})),Ri||(Ri=t.createElement("ellipse",{cx:98.36,cy:62.94,fill:"#f15a24",rx:3.53,ry:3.42,transform:"rotate(-5.96 98.33 62.903)"})),ki||(ki=t.createElement("path",{fill:"#8b6c9c",d:"M138.73 83.69c-8.66 7.53-14.4 12.67-22.62 13-9.3.32-7.2-7.2-7.2-7.2s.85-2.54 5.63-2.77 20.66-2.78 24.19-3.03Z"})),Ci||(Ci=t.createElement("path",{fill:"#4b3f51",d:"M108.91 89.78c.34-.46 1.86-1.93 2.29-1 1.92 3.93 8.45 1.71 28.05-5.2-15 2.26-17.88.24-20.85.48s-3.62 1.67-4.72 1.45-3.43-1.68-4.73-1.1c-3.03 1.27-2.05 3.67-.04 5.37Z"})),Pi||(Pi=t.createElement("path",{fill:"#8b6c9c",d:"M132.64 76.68c1.08 1.47 9.51 5.88 9.51 5.88a60.71 60.71 0 0 1-2.89 6.3c.41 0 1.39-5-.85-6.64-1.72-1.22-4.64-2.58-5.77-5.54Z"})),Oi||(Oi=t.createElement("path",{fill:"#b498c6",d:"M65.82 248.62c-4.13-.44-11-7.38-15.72-6.64s-9.53 5.31-9.53 5.31-12.7-4.87-16.84-4-9.45 2.36-10.63 3.54-.59 5.91 2.22 5.76 6.05-1 9.3-.44 8.73 6.36 12.41 8c14.17 6.2 29.24.44 29.24.44s3.73-11.52-.45-11.97Z"})),Ni||(Ni=t.createElement("path",{fill:"#8b6c9c",d:"M64.15 248c-2.62.11-5-1.72-6.28-2.59-3.86-2.56-4.62-2.62-19.34 1.45-5.79-2.69-4.72-1.58-7.88-2.74a18.46 18.46 0 0 1 8.14 1.76c-.64 0 13-5.16 16.5-3.92s6.23 5.3 8.86 6.04Z"})),Ti||(Ti=t.createElement("path",{fill:"#093f22",d:"M90.49 53.46a87 87 0 0 1 3.14-10.86c19.79-3.78 64.81 2.3 67.52 6.22s1.23 13.54 1.18 16.09 8.72 6.72 8.72 6.72l4.57-.74s-8.51-2.28-8.66-6.71 1.56-16.78-3.22-18.69c-29.19-11.62-64.36-8.8-72.53-6.65-6.5 1.7-9.09 6.62-7.44 10.27s6.72 4.35 6.72 4.35Zm70 24.59 7.38 2.95-3.99 9.31-7.34-2.07 3.95-10.19z"})),Li||(Li=t.createElement("path",{fill:"#b498c6",d:"M153.33 236.52c-10.63-4-31.44 3.41-44.53 5.89-29.24 5.53-37.33 5.55-44.09 6-5 .33-3.44 8.5-2.43 12.17 34.11 6.21 41.2 8.42 72 8.92 22.36-5.62 29.72-28.99 19.05-32.98Z"})),Ii||(Ii=t.createElement("path",{fill:"#8b6c9c",d:"M131.58 242.4c.39-2 .09-3.41.48-5.52l2.21-.22a53.48 53.48 0 0 0-2.69 5.74Z"})),Mi||(Mi=t.createElement("path",{fill:"#fc3",d:"M148.89 45c2 6.65 5.32 17.43 2.44 27.4-2.29 1-10 3.61-12.33 3.39.66-5.76.44-23.11-3.77-32.64 2.31.14 8.22 1.03 13.66 1.85Z"})),Ai||(Ai=t.createElement("path",{fill:"#fcee21",d:"M145.22 62.31c-3.94 1.59-12.14 3.79-17.43 1.19 0 0-1.22-9.33 5.51-8.76s11.92 7.57 11.92 7.57Z"})),Di||(Di=t.createElement("path",{fill:"#f15a24",d:"M127.69 63.52c-1.85-4-.92-8.41 4.11-9.48 4.24-.75 11.08 1.85 13.5 8.21-.29.22-7.6-8.06-14-6.15-4.44 1.33-3.13 7.35-3.61 7.42Zm-4.81-17.78c-1.23.51.14 4 1.3 4.36s9.23-2.79 12.1-2.41 8.81 4.79 11.58 7c-.44-1.88-7.92-9.3-10.88-9.92s-12.87.45-14.1.97Z"})),Fi||(Fi=t.createElement("ellipse",{cx:131.8,cy:60.56,fill:"#f15a24",rx:3.76,ry:3.99,transform:"rotate(-5.96 131.772 60.6)"}))),Ui=window.yoast.helpers;class qi extends Error{constructor(e,t,r,n,a){super(e),this.name="RequestError",this.url=t,this.method=r,this.statusCode=n,this.stackTrace=a}}const{stripTagsFromHtmlString:Bi}=Ui.strings,$i=["a","p"];function Hi({title:e,value:r}){return r?(0,t.createElement)("p",null,(0,t.createElement)("strong",null,e),(0,t.createElement)("br",null),r):null}function Vi({title:e,value:r}){return r?(0,t.createElement)("details",null,(0,t.createElement)("summary",null,e),(0,t.createElement)("pre",{className:"yst-overflow-x-scroll yst-max-w-[500px] yst-border-px yst-p-4"},r)):null}function Zi({message:e,error:r,className:n}){return(0,t.createElement)(ao,{type:"error",className:n},(0,t.createElement)("div",{dangerouslySetInnerHTML:{__html:Bi(e,$i)}}),(0,t.createElement)("details",null,(0,t.createElement)("summary",null,(0,bn.__)("Error details","wordpress-seo")),(0,t.createElement)("div",{className:"yst-mt-2"},(0,t.createElement)(Hi,{title:(0,bn.__)("Request URL","wordpress-seo"),value:r.url}),(0,t.createElement)(Hi,{title:(0,bn.__)("Request method","wordpress-seo"),value:r.method}),(0,t.createElement)(Hi,{title:(0,bn.__)("Status code","wordpress-seo"),value:r.statusCode}),(0,t.createElement)(Hi,{title:(0,bn.__)("Error message","wordpress-seo"),value:r.message}),(0,t.createElement)(Vi,{title:(0,bn.__)("Response","wordpress-seo"),value:r.parseString}),(0,t.createElement)(Vi,{title:(0,bn.__)("Error stack trace","wordpress-seo"),value:r.stackTrace}))))}Hi.propTypes={title:En().string.isRequired,value:En().any},Hi.defaultProps={value:""},Vi.propTypes={title:En().string.isRequired,value:En().string},Vi.defaultProps={value:""},Zi.propTypes={message:En().string.isRequired,error:En().oneOfType([En().instanceOf(Error),En().instanceOf(qi)]).isRequired,className:En().string},Zi.defaultProps={className:""};class Wi extends Error{constructor(e,t){super(e),this.name="ParseError",this.parseString=t}}const Gi="idle",Yi="in_progress",Ki="errored",Ji="completed";class Qi extends l.Component{constructor(e){super(e),this.settings=yoastIndexingData,this.state={state:Gi,processed:0,error:null,amount:parseInt(this.settings.amount,10),firstTime:"1"===this.settings.firstTime},this.startIndexing=this.startIndexing.bind(this),this.stopIndexing=this.stopIndexing.bind(this)}async doIndexingRequest(e,t){const r=await fetch(e,{method:"POST",headers:{"X-WP-Nonce":t}}),n=await r.text();let a;try{a=JSON.parse(n)}catch(e){throw new Wi("Error parsing the response to JSON.",n)}if(!r.ok){const t=a.data?a.data.stackTrace:"";throw new qi(a.message,e,"POST",r.status,t)}return a}async doPreIndexingAction(e){"function"==typeof this.props.preIndexingActions[e]&&await this.props.preIndexingActions[e](this.settings)}async doPostIndexingAction(e,t){"function"==typeof this.props.indexingActions[e]&&await this.props.indexingActions[e](t.objects,this.settings)}async doIndexing(e){let t=this.settings.restApi.root+this.settings.restApi.indexing_endpoints[e];for(;this.isState(Yi)&&!1!==t;)try{await this.doPreIndexingAction(e);const r=await this.doIndexingRequest(t,this.settings.restApi.nonce);await this.doPostIndexingAction(e,r),(0,l.flushSync)((()=>{this.setState((e=>({processed:e.processed+r.objects.length,firstTime:!1})))})),t=r.next_url}catch(e){(0,l.flushSync)((()=>{this.setState({state:Ki,error:e,firstTime:!1})}))}}async index(){for(const e of Object.keys(this.settings.restApi.indexing_endpoints))await this.doIndexing(e);this.isState(Ki)||this.isState(Gi)||this.completeIndexing()}async startIndexing(){this.setState({processed:0,state:Yi},this.index)}completeIndexing(){this.setState({state:Ji})}stopIndexing(){this.setState((e=>({state:Gi,processed:0,amount:e.amount-e.processed})))}componentDidMount(){var e,t;if(!this.settings.disabled&&(this.props.indexingStateCallback(0===this.state.amount?"already_done":this.state.state),"true"===new URLSearchParams(window.location.search).get("start-indexation"))){const r=function(e,t){const r=new URL(e);return r.searchParams.delete("start-indexation"),r.href}(window.location.href);e=document.title,t=r,window.history.pushState(null,e,t),this.startIndexing()}}componentDidUpdate(e,t){this.state.state!==t.state&&this.props.indexingStateCallback(this.state.state)}isState(e){return this.state.state===e}renderFirstIndexationNotice(){return(0,t.createElement)(ao,{type:"info",className:"yst-mt-6"},(0,bn.__)("This feature includes and replaces the Text Link Counter and Internal Linking Analysis","wordpress-seo"))}renderStartButton(){return(0,t.createElement)(c.Button,{variant:"secondary",onClick:this.startIndexing,id:"indexation-data-optimization","data-hiive-event-name":"clicked_start_data_optimization"},(0,bn.__)("Start SEO data optimization","wordpress-seo"))}renderStopButton(){return(0,t.createElement)(c.Button,{variant:"secondary",onClick:this.stopIndexing},(0,bn.__)("Stop SEO data optimization","wordpress-seo"))}renderDisabledTool(){return(0,t.createElement)(l.Fragment,null,(0,t.createElement)("p",null,(0,t.createElement)(c.Button,{variant:"secondary",disabled:!0,id:"indexation-data-optimization"},(0,bn.__)("Start SEO data optimization","wordpress-seo"))),(0,t.createElement)(ao,{type:"info",className:"yst-mt-6"},(0,bn.__)("SEO data optimization is disabled for non-production environments.","wordpress-seo")))}renderProgressBar(){let e=0;return this.isState(Ji)&&(e=100),this.isState(Yi)&&(e=this.state.processed/parseInt(this.state.amount,10)*100),(0,t.createElement)("div",{className:"yst-w-full yst-bg-slate-200 yst-rounded-full yst-h-2.5 yst-mb-4"},(0,t.createElement)("div",{className:"yst-transition-[width] yst-ease-linear yst-bg-primary-500 yst-h-2.5 yst-rounded-full",style:{width:`${e}%`}}))}renderCaption(){return(0,t.createElement)(no.Z,{id:"optimization-in-progress-text",height:this.isState(Yi)?"auto":0,easing:"linear",duration:300},(0,t.createElement)("p",{className:"yst-text-sm yst-italic yst-mb-4 yst-mt-4"},(0,bn.__)("SEO data optimization is running… You can safely move on to the next steps of this configuration.","wordpress-seo")))}renderErrorAlert(){return(0,t.createElement)(Zi,{message:yoastIndexingData.errorMessage,error:this.state.error,className:"yst-mb-4"})}render(){return this.settings.disabled?this.renderDisabledTool():(0,t.createElement)("div",{className:"yst-relative"},this.props.children,(0,t.createElement)(yn,{unmount:!1,show:this.isState(Ki)||this.isState(Yi)||this.isState(Gi)&&this.state.amount>0,leave:"yst-transition-opacity yst-duration-1000",leaveFrom:"yst-opacity-100",leaveTo:"yst-opacity-0"},this.renderProgressBar(),this.isState(Ki)&&this.renderErrorAlert(),this.isState(Yi)?this.renderStopButton():this.renderStartButton(),this.renderCaption(),this.isState(Gi)&&this.state.firstTime&&this.renderFirstIndexationNotice()))}}Qi.propTypes={indexingActions:En().object,preIndexingActions:En().object,indexingStateCallback:En().func,children:En().node},Qi.defaultProps={indexingActions:{},preIndexingActions:{},indexingStateCallback:()=>{},children:null};const Xi=Qi;function el({indexingStateCallback:e,indexingState:r,isStepperFinished:n}){return(0,t.createElement)(Xi,{preIndexingActions:window.yoast.indexing.preIndexingActions,indexingActions:window.yoast.indexing.indexingActions,indexingStateCallback:e},(0,t.createElement)(yn,{unmount:!1,show:["completed","already_done"].includes(r),enter:"yst-transition-opacity yst-duration-1000",enterFrom:"yst-opacity-0",enterTo:"yst-opacity-100"},(0,t.createElement)(ao,{type:"success"},"already_done"!==r||n?(0,bn.__)("We've successfully analyzed your site & optimized your SEO data!","wordpress-seo"):(0,bn.__)("We've already successfully analyzed your site. You can move on to the next step.","wordpress-seo"))))}function tl({indexingState:e,setIndexingState:r,showRunIndexationAlert:n,isStepperFinished:a}){return(0,t.createElement)("div",{className:"yst-@container"},(0,t.createElement)("div",{className:"yst-flex yst-flex-col @lg:yst-flex-row yst-gap-6 yst-mb-8"},(0,t.createElement)("p",{className:"yst-text-sm yst-whitespace-pre-line"},(0,bn.__)("Let's start by running the SEO data optimization. That means we'll scan your site and create a database with optimized SEO data. It won't change any content or settings on your site and you don't need to do anything, just hit start!\n\nNote: If you have a lot of content, this optimization could take a moment. But trust us, it's worth it!","wordpress-seo")),(0,t.createElement)(zi,{className:"yst-shrink-0 yst-h-28 yst-w-24"})),(0,t.createElement)("div",{id:"yoast-configuration-indexing-container",className:"indexation-container"},(0,t.createElement)(el,{indexingStateCallback:r,indexingState:e,isStepperFinished:a})),(0,t.createElement)(so,{id:"indexation-alert",isVisible:"idle"===e&&n,expandDuration:400,type:"info"},(0,bn.__)("Be aware that you should run the SEO data optimization for this configuration to take maximum effect.","wordpress-seo")))}function rl(e,r,n=""){return(0,l.createInterpolateElement)(e,{a:(0,t.createElement)("a",{id:n,href:r,target:"_blank",rel:"noopener noreferrer"})})}var nl;el.propTypes={indexingStateCallback:En().func.isRequired,indexingState:En().string.isRequired,isStepperFinished:En().bool},el.defaultProps={isStepperFinished:!1},tl.propTypes={indexingState:En().string.isRequired,setIndexingState:En().func.isRequired,showRunIndexationAlert:En().bool,isStepperFinished:En().bool},tl.defaultProps={showRunIndexationAlert:!1,isStepperFinished:!1};let al=null!=(nl=t.useId)?nl:function(){let e=Zr(),[r,n]=t.useState(e?()=>Br.nextId():null);return $r((()=>{null===r&&n(Br.nextId())}),[r]),null!=r?""+r:void 0};function sl(e,r){let[n,a]=(0,t.useState)(e),s=Vr(e);return $r((()=>a(s.current)),[s,a,...r]),n}var ol=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(ol||{}),il=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(il||{});function ll(e,t){let r=t.resolveItems();if(r.length<=0)return null;let n=t.resolveActiveIndex(),a=null!=n?n:-1,s=(()=>{switch(e.focus){case 0:return r.findIndex((e=>!t.resolveDisabled(e)));case 1:{let e=r.slice().reverse().findIndex(((e,r,n)=>!(-1!==a&&n.length-r-1>=a||t.resolveDisabled(e))));return-1===e?e:r.length-1-e}case 2:return r.findIndex(((e,r)=>!(r<=a||t.resolveDisabled(e))));case 3:{let e=r.slice().reverse().findIndex((e=>!t.resolveDisabled(e)));return-1===e?e:r.length-1-e}case 4:return r.findIndex((r=>t.resolveId(r)===e.id));case 5:return null;default:!function(e){throw new Error("Unexpected object: "+e)}(e)}})();return-1===s?n:s}function cl(e){let t=e.parentElement,r=null;for(;t&&!(t instanceof HTMLFieldSetElement);)t instanceof HTMLLegendElement&&(r=t),t=t.parentElement;let n=""===(null==t?void 0:t.getAttribute("disabled"));return(!n||!function(e){if(!e)return!1;let t=e.previousElementSibling;for(;null!==t;){if(t instanceof HTMLLegendElement)return!1;t=t.previousElementSibling}return!0}(r))&&n}function ul(e){return Br.isServer?null:e instanceof Node?e.ownerDocument:null!=e&&e.hasOwnProperty("current")&&e.current instanceof Node?e.current.ownerDocument:document}let dl=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map((e=>`${e}:not([tabindex='-1'])`)).join(",");var pl,ml=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(ml||{}),fl=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(fl||{}),hl=((pl=hl||{})[pl.Previous=-1]="Previous",pl[pl.Next=1]="Next",pl),yl=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(yl||{});function gl(e,t=0){var r;return e!==(null==(r=ul(e))?void 0:r.body)&&Rr(t,{0:()=>e.matches(dl),1(){let t=e;for(;null!==t;){if(t.matches(dl))return!0;t=t.parentElement}return!1}})}function vl(e,t=(e=>e)){return e.slice().sort(((e,r)=>{let n=t(e),a=t(r);if(null===n||null===a)return 0;let s=n.compareDocumentPosition(a);return s&Node.DOCUMENT_POSITION_FOLLOWING?-1:s&Node.DOCUMENT_POSITION_PRECEDING?1:0}))}function bl(e){var t;if(e.type)return e.type;let r=null!=(t=e.as)?t:"button";return"string"==typeof r&&"button"===r.toLowerCase()?"button":void 0}function wl(e,r){let[n,a]=(0,t.useState)((()=>bl(e)));return $r((()=>{a(bl(e))}),[e.type,e.as]),$r((()=>{n||!r.current||r.current instanceof HTMLButtonElement&&!r.current.hasAttribute("type")&&a("button")}),[n,r]),n}function El(e,r,n){let a=Vr(r);(0,t.useEffect)((()=>{function t(e){a.current(e)}return document.addEventListener(e,t,n),()=>document.removeEventListener(e,t,n)}),[e,n])}function xl(e,r,n=!0){let a=(0,t.useRef)(!1);function s(t,n){if(!a.current||t.defaultPrevented)return;let s=function e(t){return"function"==typeof t?e(t()):Array.isArray(t)||t instanceof Set?t:[t]}(e),o=n(t);if(null!==o&&o.getRootNode().contains(o)){for(let e of s){if(null===e)continue;let r=e instanceof HTMLElement?e:e.current;if(null!=r&&r.contains(o)||t.composed&&t.composedPath().includes(r))return}return!gl(o,yl.Loose)&&-1!==o.tabIndex&&t.preventDefault(),r(t,o)}}(0,t.useEffect)((()=>{requestAnimationFrame((()=>{a.current=n}))}),[n]);let o=(0,t.useRef)(null);El("mousedown",(e=>{var t,r;a.current&&(o.current=(null==(r=null==(t=e.composedPath)?void 0:t.call(e))?void 0:r[0])||e.target)}),!0),El("click",(e=>{!o.current||(s(e,(()=>o.current)),o.current=null)}),!0),El("blur",(e=>s(e,(()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null))),!0)}["textarea","input"].join(",");var Sl=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(Sl||{});let _l=Ir((function(e,t){let{features:r=1,...n}=e;return Nr({ourProps:{ref:t,"aria-hidden":2==(2&r)||void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...4==(4&r)&&2!=(2&r)&&{display:"none"}}},theirProps:n,slot:{},defaultTag:"div",name:"Hidden"})}));function Rl(e={},t=null,r=[]){for(let[n,a]of Object.entries(e))Cl(r,kl(t,n),a);return r}function kl(e,t){return e?e+"["+t+"]":t}function Cl(e,t,r){if(Array.isArray(r))for(let[n,a]of r.entries())Cl(e,kl(t,n.toString()),a);else r instanceof Date?e.push([t,r.toISOString()]):"boolean"==typeof r?e.push([t,r?"1":"0"]):"string"==typeof r?e.push([t,r]):"number"==typeof r?e.push([t,`${r}`]):null==r?e.push([t,""]):Rl(r,t,e)}function Pl(e,r,n){let[a,s]=(0,t.useState)(n),o=void 0!==e,i=(0,t.useRef)(o),l=(0,t.useRef)(!1),c=(0,t.useRef)(!1);return!o||i.current||l.current?!o&&i.current&&!c.current&&(c.current=!0,i.current=o,console.error("A component is changing from controlled to uncontrolled. This may be caused by the value changing from a defined value to undefined, which should not happen.")):(l.current=!0,i.current=o,console.error("A component is changing from uncontrolled to controlled. This may be caused by the value changing from undefined to a defined value, which should not happen.")),[o?e:a,Wr((e=>(o||s(e),null==r?void 0:r(e))))]}function Ol(e){return[e.screenX,e.screenY]}function Nl(){let e=(0,t.useRef)([-1,-1]);return{wasMoved(t){let r=Ol(t);return(e.current[0]!==r[0]||e.current[1]!==r[1])&&(e.current=r,!0)},update(t){e.current=Ol(t)}}}var Tl=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Tl||{}),Ll=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(Ll||{}),Il=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Il||{}),Ml=(e=>(e[e.OpenListbox=0]="OpenListbox",e[e.CloseListbox=1]="CloseListbox",e[e.GoToOption=2]="GoToOption",e[e.Search=3]="Search",e[e.ClearSearch=4]="ClearSearch",e[e.RegisterOption=5]="RegisterOption",e[e.UnregisterOption=6]="UnregisterOption",e[e.RegisterLabel=7]="RegisterLabel",e))(Ml||{});function Al(e,t=(e=>e)){let r=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,n=vl(t(e.options.slice()),(e=>e.dataRef.current.domRef.current)),a=r?n.indexOf(r):null;return-1===a&&(a=null),{options:n,activeOptionIndex:a}}let Dl={1:e=>e.dataRef.current.disabled||1===e.listboxState?e:{...e,activeOptionIndex:null,listboxState:1},0(e){if(e.dataRef.current.disabled||0===e.listboxState)return e;let t=e.activeOptionIndex,{isSelected:r}=e.dataRef.current,n=e.options.findIndex((e=>r(e.dataRef.current.value)));return-1!==n&&(t=n),{...e,listboxState:0,activeOptionIndex:t}},2(e,t){var r;if(e.dataRef.current.disabled||1===e.listboxState)return e;let n=Al(e),a=ll(t,{resolveItems:()=>n.options,resolveActiveIndex:()=>n.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled});return{...e,...n,searchQuery:"",activeOptionIndex:a,activationTrigger:null!=(r=t.trigger)?r:1}},3:(e,t)=>{if(e.dataRef.current.disabled||1===e.listboxState)return e;let r=""!==e.searchQuery?0:1,n=e.searchQuery+t.value.toLowerCase(),a=(null!==e.activeOptionIndex?e.options.slice(e.activeOptionIndex+r).concat(e.options.slice(0,e.activeOptionIndex+r)):e.options).find((e=>{var t;return!e.dataRef.current.disabled&&(null==(t=e.dataRef.current.textValue)?void 0:t.startsWith(n))})),s=a?e.options.indexOf(a):-1;return-1===s||s===e.activeOptionIndex?{...e,searchQuery:n}:{...e,searchQuery:n,activeOptionIndex:s,activationTrigger:1}},4:e=>e.dataRef.current.disabled||1===e.listboxState||""===e.searchQuery?e:{...e,searchQuery:""},5:(e,t)=>{let r={id:t.id,dataRef:t.dataRef},n=Al(e,(e=>[...e,r]));return null===e.activeOptionIndex&&e.dataRef.current.isSelected(t.dataRef.current.value)&&(n.activeOptionIndex=n.options.indexOf(r)),{...e,...n}},6:(e,t)=>{let r=Al(e,(e=>{let r=e.findIndex((e=>e.id===t.id));return-1!==r&&e.splice(r,1),e}));return{...e,...r,activationTrigger:1}},7:(e,t)=>({...e,labelId:t.id})},Fl=(0,t.createContext)(null);function jl(e){let r=(0,t.useContext)(Fl);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,jl),t}return r}Fl.displayName="ListboxActionsContext";let zl=(0,t.createContext)(null);function Ul(e){let r=(0,t.useContext)(zl);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,Ul),t}return r}function ql(e,t){return Rr(t.type,Dl,e,t)}zl.displayName="ListboxDataContext";let Bl=t.Fragment,$l=Ir((function(e,r){let{value:n,defaultValue:a,name:s,onChange:o,by:i=((e,t)=>e===t),disabled:l=!1,horizontal:c=!1,multiple:u=!1,...d}=e;const p=c?"horizontal":"vertical";let m=Kr(r),[f=(u?[]:void 0),h]=Pl(n,o,a),[y,g]=(0,t.useReducer)(ql,{dataRef:(0,t.createRef)(),listboxState:1,options:[],searchQuery:"",labelId:null,activeOptionIndex:null,activationTrigger:1}),v=(0,t.useRef)({static:!1,hold:!1}),b=(0,t.useRef)(null),w=(0,t.useRef)(null),E=(0,t.useRef)(null),x=Wr("string"==typeof i?(e,t)=>{let r=i;return(null==e?void 0:e[r])===(null==t?void 0:t[r])}:i),S=(0,t.useCallback)((e=>Rr(_.mode,{1:()=>f.some((t=>x(t,e))),0:()=>x(f,e)})),[f]),_=(0,t.useMemo)((()=>({...y,value:f,disabled:l,mode:u?1:0,orientation:p,compare:x,isSelected:S,optionsPropsRef:v,labelRef:b,buttonRef:w,optionsRef:E})),[f,l,u,y]);$r((()=>{y.dataRef.current=_}),[_]),xl([_.buttonRef,_.optionsRef],((e,t)=>{var r;g({type:1}),gl(t,yl.Loose)||(e.preventDefault(),null==(r=_.buttonRef.current)||r.focus())}),0===_.listboxState);let R=(0,t.useMemo)((()=>({open:0===_.listboxState,disabled:l,value:f})),[_,l,f]),k=Wr((e=>{let t=_.options.find((t=>t.id===e));!t||I(t.dataRef.current.value)})),C=Wr((()=>{if(null!==_.activeOptionIndex){let{dataRef:e,id:t}=_.options[_.activeOptionIndex];I(e.current.value),g({type:2,focus:il.Specific,id:t})}})),P=Wr((()=>g({type:0}))),O=Wr((()=>g({type:1}))),N=Wr(((e,t,r)=>e===il.Specific?g({type:2,focus:il.Specific,id:t,trigger:r}):g({type:2,focus:e,trigger:r}))),T=Wr(((e,t)=>(g({type:5,id:e,dataRef:t}),()=>g({type:6,id:e})))),L=Wr((e=>(g({type:7,id:e}),()=>g({type:7,id:null})))),I=Wr((e=>Rr(_.mode,{0:()=>null==h?void 0:h(e),1(){let t=_.value.slice(),r=t.findIndex((t=>x(t,e)));return-1===r?t.push(e):t.splice(r,1),null==h?void 0:h(t)}}))),M=Wr((e=>g({type:3,value:e}))),A=Wr((()=>g({type:4}))),D=(0,t.useMemo)((()=>({onChange:I,registerOption:T,registerLabel:L,goToOption:N,closeListbox:O,openListbox:P,selectActiveOption:C,selectOption:k,search:M,clearSearch:A})),[]),F={ref:m},j=(0,t.useRef)(null),z=en();return(0,t.useEffect)((()=>{!j.current||void 0!==a&&z.addEventListener(j.current,"reset",(()=>{I(a)}))}),[j,I]),t.createElement(Fl.Provider,{value:D},t.createElement(zl.Provider,{value:_},t.createElement(zr,{value:Rr(_.listboxState,{0:Fr.Open,1:Fr.Closed})},null!=s&&null!=f&&Rl({[s]:f}).map((([e,r],n)=>t.createElement(_l,{features:Sl.Hidden,ref:0===n?e=>{var t;j.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,...Mr({key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:e,value:r})}))),Nr({ourProps:F,theirProps:d,slot:R,defaultTag:Bl,name:"Listbox"}))))})),Hl=Ir((function(e,r){var n;let a=al(),{id:s=`headlessui-listbox-button-${a}`,...o}=e,i=Ul("Listbox.Button"),l=jl("Listbox.Button"),c=Kr(i.buttonRef,r),u=en(),d=Wr((e=>{switch(e.key){case ol.Space:case ol.Enter:case ol.ArrowDown:e.preventDefault(),l.openListbox(),u.nextFrame((()=>{i.value||l.goToOption(il.First)}));break;case ol.ArrowUp:e.preventDefault(),l.openListbox(),u.nextFrame((()=>{i.value||l.goToOption(il.Last)}))}})),p=Wr((e=>{e.key===ol.Space&&e.preventDefault()})),m=Wr((e=>{if(cl(e.currentTarget))return e.preventDefault();0===i.listboxState?(l.closeListbox(),u.nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})}))):(e.preventDefault(),l.openListbox())})),f=sl((()=>{if(i.labelId)return[i.labelId,s].join(" ")}),[i.labelId,s]),h=(0,t.useMemo)((()=>({open:0===i.listboxState,disabled:i.disabled,value:i.value})),[i]);return Nr({ourProps:{ref:c,id:s,type:wl(e,i.buttonRef),"aria-haspopup":"listbox","aria-controls":null==(n=i.optionsRef.current)?void 0:n.id,"aria-expanded":i.disabled?void 0:0===i.listboxState,"aria-labelledby":f,disabled:i.disabled,onKeyDown:d,onKeyUp:p,onClick:m},theirProps:o,slot:h,defaultTag:"button",name:"Listbox.Button"})})),Vl=Ir((function(e,r){let n=al(),{id:a=`headlessui-listbox-label-${n}`,...s}=e,o=Ul("Listbox.Label"),i=jl("Listbox.Label"),l=Kr(o.labelRef,r);$r((()=>i.registerLabel(a)),[a]);let c=Wr((()=>{var e;return null==(e=o.buttonRef.current)?void 0:e.focus({preventScroll:!0})})),u=(0,t.useMemo)((()=>({open:0===o.listboxState,disabled:o.disabled})),[o]);return Nr({ourProps:{ref:l,id:a,onClick:c},theirProps:s,slot:u,defaultTag:"label",name:"Listbox.Label"})})),Zl=Pr.RenderStrategy|Pr.Static,Wl=Ir((function(e,r){var n;let a=al(),{id:s=`headlessui-listbox-options-${a}`,...o}=e,i=Ul("Listbox.Options"),l=jl("Listbox.Options"),c=Kr(i.optionsRef,r),u=en(),d=en(),p=jr(),m=null!==p?p===Fr.Open:0===i.listboxState;(0,t.useEffect)((()=>{var e;let t=i.optionsRef.current;!t||0===i.listboxState&&t!==(null==(e=ul(t))?void 0:e.activeElement)&&t.focus({preventScroll:!0})}),[i.listboxState,i.optionsRef]);let f=Wr((e=>{switch(d.dispose(),e.key){case ol.Space:if(""!==i.searchQuery)return e.preventDefault(),e.stopPropagation(),l.search(e.key);case ol.Enter:if(e.preventDefault(),e.stopPropagation(),null!==i.activeOptionIndex){let{dataRef:e}=i.options[i.activeOptionIndex];l.onChange(e.current.value)}0===i.mode&&(l.closeListbox(),Jr().nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})})));break;case Rr(i.orientation,{vertical:ol.ArrowDown,horizontal:ol.ArrowRight}):return e.preventDefault(),e.stopPropagation(),l.goToOption(il.Next);case Rr(i.orientation,{vertical:ol.ArrowUp,horizontal:ol.ArrowLeft}):return e.preventDefault(),e.stopPropagation(),l.goToOption(il.Previous);case ol.Home:case ol.PageUp:return e.preventDefault(),e.stopPropagation(),l.goToOption(il.First);case ol.End:case ol.PageDown:return e.preventDefault(),e.stopPropagation(),l.goToOption(il.Last);case ol.Escape:return e.preventDefault(),e.stopPropagation(),l.closeListbox(),u.nextFrame((()=>{var e;return null==(e=i.buttonRef.current)?void 0:e.focus({preventScroll:!0})}));case ol.Tab:e.preventDefault(),e.stopPropagation();break;default:1===e.key.length&&(l.search(e.key),d.setTimeout((()=>l.clearSearch()),350))}})),h=sl((()=>{var e,t,r;return null!=(r=null==(e=i.labelRef.current)?void 0:e.id)?r:null==(t=i.buttonRef.current)?void 0:t.id}),[i.labelRef.current,i.buttonRef.current]),y=(0,t.useMemo)((()=>({open:0===i.listboxState})),[i]);return Nr({ourProps:{"aria-activedescendant":null===i.activeOptionIndex||null==(n=i.options[i.activeOptionIndex])?void 0:n.id,"aria-multiselectable":1===i.mode||void 0,"aria-labelledby":h,"aria-orientation":i.orientation,id:s,onKeyDown:f,role:"listbox",tabIndex:0,ref:c},theirProps:o,slot:y,defaultTag:"ul",features:Zl,visible:m,name:"Listbox.Options"})})),Gl=Ir((function(e,r){let n=al(),{id:a=`headlessui-listbox-option-${n}`,disabled:s=!1,value:o,...i}=e,l=Ul("Listbox.Option"),c=jl("Listbox.Option"),u=null!==l.activeOptionIndex&&l.options[l.activeOptionIndex].id===a,d=l.isSelected(o),p=(0,t.useRef)(null),m=Vr({disabled:s,value:o,domRef:p,get textValue(){var e,t;return null==(t=null==(e=p.current)?void 0:e.textContent)?void 0:t.toLowerCase()}}),f=Kr(r,p);$r((()=>{if(0!==l.listboxState||!u||0===l.activationTrigger)return;let e=Jr();return e.requestAnimationFrame((()=>{var e,t;null==(t=null==(e=p.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})})),e.dispose}),[p,u,l.listboxState,l.activationTrigger,l.activeOptionIndex]),$r((()=>c.registerOption(a,m)),[m,a]);let h=Wr((e=>{if(s)return e.preventDefault();c.onChange(o),0===l.mode&&(c.closeListbox(),Jr().nextFrame((()=>{var e;return null==(e=l.buttonRef.current)?void 0:e.focus({preventScroll:!0})})))})),y=Wr((()=>{if(s)return c.goToOption(il.Nothing);c.goToOption(il.Specific,a)})),g=Nl(),v=Wr((e=>g.update(e))),b=Wr((e=>{!g.wasMoved(e)||s||u||c.goToOption(il.Specific,a,0)})),w=Wr((e=>{!g.wasMoved(e)||s||!u||c.goToOption(il.Nothing)})),E=(0,t.useMemo)((()=>({active:u,selected:d,disabled:s})),[u,d,s]);return Nr({ourProps:{id:a,ref:f,role:"option",tabIndex:!0===s?void 0:-1,"aria-disabled":!0===s||void 0,"aria-selected":d,disabled:void 0,onClick:h,onFocus:y,onPointerEnter:v,onMouseEnter:v,onPointerMove:b,onMouseMove:b,onPointerLeave:w,onMouseLeave:w},theirProps:i,slot:E,defaultTag:"li",name:"Listbox.Option"})})),Yl=Object.assign($l,{Button:Hl,Label:Vl,Options:Wl,Option:Gl});const Kl=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{fillRule:"evenodd",d:"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z",clipRule:"evenodd"}))}));function Jl({id:e,value:r,choices:n,label:a,onChange:s,error:o,disabled:i}){const c=(0,l.useMemo)((()=>{const e=n.find((e=>r===e.value));return e?e.label:(0,bn.__)("Select an option","wordpress-seo")}),[n,r]);return(0,t.createElement)(Yl,{id:e,as:"div",value:r,onChange:s,disabled:i},(({open:s})=>(0,t.createElement)(l.Fragment,null,a&&(0,t.createElement)(Yl.Label,{className:"yst-block yst-max-w-sm yst-mb-1 yst-text-sm yst-font-medium yst-text-slate-700"},a),(0,t.createElement)("div",{className:"yst-max-w-sm"},(0,t.createElement)("div",{className:"yst-relative"},(0,t.createElement)(Yl.Button,{"data-id":`button-${e} `,className:da()("yst-relative yst-h-[45px] yst-w-full yst-leading-6 yst-py-2 yst-pl-3 yst-pr-10 yst-text-left yst-bg-white yst-border yst-border-slate-300 yst-rounded-md yst-shadow-sm yst-cursor-default focus:yst-outline-none focus:yst-ring-1 focus:yst-ring-primary-500 focus:yst-border-primary-500 sm:yst-text-sm",{"yst-border-red-300":o.isVisible,"yst-opacity-50":i},"emptyChoice"===r?"yst-text-slate-400":"yst-text-slate-700"),...Fs(e,o)},(0,t.createElement)("span",{className:"yst-block yst-truncate"},c),(0,t.createElement)("span",{className:"yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-2 yst-pointer-events-none"},(0,t.createElement)(Kl,{className:"yst-w-5 yst-h-5 yst-text-slate-400","aria-hidden":"true"})),o.isVisible&&(0,t.createElement)("div",{className:"yst-flex yst-items-center yst-absolute yst-inset-y-0 yst-right-0 yst-mr-8"},(0,t.createElement)(Vs,{className:"yst-pointer-events-none yst-h-5 yst-w-5 yst-text-red-500"}))),(0,t.createElement)(yn,{show:s,as:l.Fragment,leave:"yst-transition yst-ease-in yst-duration-100",leaveFrom:"yst-opacity-100",leaveTo:"yst-opacity-0"},(0,t.createElement)(Yl.Options,{static:!0,className:"yst-absolute yst-z-10 yst-w-full yst-mt-1 yst-overflow-auto yst-bg-white yst-rounded-md yst-shadow-lg yst-max-h-60 yst-ring-1 yst-ring-black yst-ring-opacity-5 focus:yst-outline-none sm:yst-text-sm"},n.map((e=>(0,t.createElement)(Yl.Option,{key:e.id,as:l.Fragment,value:e.value},(({selected:r,active:n})=>(0,t.createElement)("li",{className:js({selected:r,active:n})},(0,t.createElement)("span",{className:da()(r?"yst-font-semibold":"yst-font-normal","yst-block yst-truncate")},e.label),r?(0,t.createElement)("span",{className:da()("yst-text-white yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-4")},(0,t.createElement)(co,{className:"yst-w-5 yst-h-5","aria-hidden":"true"})):null)))))))),o.isVisible&&(0,t.createElement)(Gs,{id:Ds(e),className:"yst-mt-2 yst-text-sm yst-text-red-600",texts:o.message})))))}Jl.propTypes={value:wn.PropTypes.string.isRequired,choices:wn.PropTypes.arrayOf(wn.PropTypes.shape({id:wn.PropTypes.oneOfType([wn.PropTypes.number,wn.PropTypes.string]).isRequired,value:wn.PropTypes.string.isRequired,label:wn.PropTypes.string.isRequired})).isRequired,label:wn.PropTypes.string.isRequired,onChange:wn.PropTypes.func.isRequired,id:wn.PropTypes.string.isRequired,error:wn.PropTypes.shape({message:wn.PropTypes.string,isVisible:wn.PropTypes.bool}),disabled:wn.PropTypes.bool},Jl.defaultProps={error:{message:"",isVisible:!1},disabled:!1};const Ql=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"}))})),Xl=({className:e})=>(0,t.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",className:da()("yst-animate-spin",e)},(0,t.createElement)("circle",{className:"yst-opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,t.createElement)("path",{className:"yst-opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"}));Xl.propTypes={className:En().string},Xl.defaultProps={className:""};const ec=Xl;function tc({id:e,imageAltText:r,url:n,fallbackUrl:a,label:s,onSelectImageClick:o,onRemoveImageClick:i,className:u,error:d,status:p}){const m=da()("yst-relative yst-w-full yst-h-48 yst-mt-2 yst-flex yst-justify-center yst-items-center yst-rounded-md yst-mb-4 focus:yst-outline-none focus:yst-ring-2 focus:yst-ring-offset-2 focus:yst-ring-primary-500",d.isVisible?"yst-border-red-300":"yst-border-slate-300","yst-border-2 yst-border-dashed"),f=(0,l.useCallback)((()=>"loading"===p?(0,t.createElement)("div",{className:"yst-text-center"},(0,t.createElement)(ec,{size:"10",color:"gray-400",className:"yst-inline-block"}),(0,t.createElement)("p",{className:"yst-mt-3"},(0,bn.__)("Uploading image...","wordpress-seo"))):n?(0,t.createElement)("img",{src:n,alt:r,className:"yst-w-full yst-h-full yst-object-contain"}):a?(0,t.createElement)("img",{src:a,alt:r,className:"yst-w-full yst-h-full yst-object-contain"}):(0,t.createElement)(Ql,{id:`${e}-no-image-svg`,className:"yst-w-14 yst-h-14 yst-text-slate-500"})),[p,e,n,r]);return(0,t.createElement)("div",{className:da()("yst-max-w-sm",u),...Fs(e,d)},(0,t.createElement)("label",{htmlFor:e,className:"yst-block yst-mb-2 yst-font-medium yst-text-slate-700"},s),(0,t.createElement)("button",{id:e,className:m,onClick:o,type:"button","data-hiive-event-name":"clicked_select_image"},f()),(0,t.createElement)("div",null,(0,t.createElement)(c.Button,{id:n?e+"__replace-image":e+"__select-image",variant:"secondary",className:"yst-mr-2",onClick:o,"data-hiive-event-name":n?"clicked_replace_image":"clicked_select_image"},n?(0,bn.__)("Replace image","wordpress-seo"):(0,bn.__)("Select image","wordpress-seo")),n&&(0,t.createElement)(c.Link,{id:`${e}__remove-image`,as:"button",type:"button",variant:"error",onClick:i,className:"yst-px-3 yst-py-2 yst-rounded-md","data-hiive-event-name":"clicked_remove_image"},(0,bn.__)("Remove image","wordpress-seo"))),"error"===p&&(0,t.createElement)("p",{className:"yst-mt-2 yst-text-sm yst-text-red-600"},d),d.isVisible&&(0,t.createElement)(Gs,{id:Ds(e),className:"yst-mt-2 yst-text-sm yst-text-red-600",texts:d.message}))}tc.propTypes={label:En().string,id:En().string.isRequired,url:En().string,fallbackUrl:En().string,imageAltText:En().string,onRemoveImageClick:En().func,onSelectImageClick:En().func,className:En().string,error:En().shape({message:En().string,isVisible:En().bool}),status:En().string},tc.defaultProps={label:"",url:"",fallbackUrl:"",imageAltText:"",onRemoveImageClick:u.noop,onSelectImageClick:u.noop,className:"",error:{message:"",isVisible:!1},status:"idle"},window.yoast.socialMetadataForms;const rc=e=>({type:e.subtype,width:e.width,height:e.height,url:e.url,id:e.id,sizes:e.sizes,alt:e.alt||e.title||e.name});function nc(e){(function(e){const t=window.wp.media();return t.on("select",(()=>{const r=t.state().get("selection").first();e(rc(r.attributes))})),t})(e).open()}function ac({dispatch:e,imageUrl:r,fallbackImageUrl:n,organizationName:a,fallbackOrganizationName:s,errorFields:o}){const i=(0,l.useCallback)((()=>{nc((t=>{e({type:"SET_COMPANY_LOGO",payload:{...t}})}))}),[nc]),c=(0,l.useCallback)((()=>{e({type:"REMOVE_COMPANY_LOGO"})})),u=(0,l.useCallback)((t=>{e({type:"CHANGE_COMPANY_NAME",payload:t.target.value})}));return(0,t.createElement)(l.Fragment,null,(0,t.createElement)(Ks,{className:"yst-mt-6",id:"organization-name-input",name:"organization-name",label:(0,bn.__)("Organization name","wordpress-seo"),value:""===a?s:a,onChange:u,feedback:{isVisible:o.includes("company_name"),message:[(0,bn.__)("We could not save the organization name. Please check the value.","wordpress-seo")],type:"error"}}),(0,t.createElement)(tc,{className:"yst-mt-6",id:"organization-logo-input",url:r,fallbackUrl:n,onSelectImageClick:i,onRemoveImageClick:c,imageAltText:"",hasPreview:!0,label:(0,bn.__)("Organization logo","wordpress-seo")}))}function sc(e,r){let n=(0,t.useRef)([]),a=Wr(e);(0,t.useEffect)((()=>{let e=[...n.current];for(let[t,s]of r.entries())if(n.current[t]!==s){let t=a(r,e);return n.current=r,t}}),[a,...r])}ac.propTypes={dispatch:En().func.isRequired,imageUrl:En().string,fallbackImageUrl:En().string,organizationName:En().string,fallbackOrganizationName:En().string,errorFields:En().array},ac.defaultProps={imageUrl:"",fallbackImageUrl:"",organizationName:"",fallbackOrganizationName:"",errorFields:[]};var oc=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(oc||{}),ic=(e=>(e[e.Single=0]="Single",e[e.Multi=1]="Multi",e))(ic||{}),lc=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(lc||{}),cc=(e=>(e[e.OpenCombobox=0]="OpenCombobox",e[e.CloseCombobox=1]="CloseCombobox",e[e.GoToOption=2]="GoToOption",e[e.RegisterOption=3]="RegisterOption",e[e.UnregisterOption=4]="UnregisterOption",e[e.RegisterLabel=5]="RegisterLabel",e))(cc||{});function uc(e,t=(e=>e)){let r=null!==e.activeOptionIndex?e.options[e.activeOptionIndex]:null,n=vl(t(e.options.slice()),(e=>e.dataRef.current.domRef.current)),a=r?n.indexOf(r):null;return-1===a&&(a=null),{options:n,activeOptionIndex:a}}let dc={1:e=>e.dataRef.current.disabled||1===e.comboboxState?e:{...e,activeOptionIndex:null,comboboxState:1},0(e){if(e.dataRef.current.disabled||0===e.comboboxState)return e;let t=e.activeOptionIndex,{isSelected:r}=e.dataRef.current,n=e.options.findIndex((e=>r(e.dataRef.current.value)));return-1!==n&&(t=n),{...e,comboboxState:0,activeOptionIndex:t}},2(e,t){var r;if(e.dataRef.current.disabled||e.dataRef.current.optionsRef.current&&!e.dataRef.current.optionsPropsRef.current.static&&1===e.comboboxState)return e;let n=uc(e);if(null===n.activeOptionIndex){let e=n.options.findIndex((e=>!e.dataRef.current.disabled));-1!==e&&(n.activeOptionIndex=e)}let a=ll(t,{resolveItems:()=>n.options,resolveActiveIndex:()=>n.activeOptionIndex,resolveId:e=>e.id,resolveDisabled:e=>e.dataRef.current.disabled});return{...e,...n,activeOptionIndex:a,activationTrigger:null!=(r=t.trigger)?r:1}},3:(e,t)=>{let r={id:t.id,dataRef:t.dataRef},n=uc(e,(e=>[...e,r]));null===e.activeOptionIndex&&e.dataRef.current.isSelected(t.dataRef.current.value)&&(n.activeOptionIndex=n.options.indexOf(r));let a={...e,...n,activationTrigger:1};return e.dataRef.current.__demoMode&&void 0===e.dataRef.current.value&&(a.activeOptionIndex=0),a},4:(e,t)=>{let r=uc(e,(e=>{let r=e.findIndex((e=>e.id===t.id));return-1!==r&&e.splice(r,1),e}));return{...e,...r,activationTrigger:1}},5:(e,t)=>({...e,labelId:t.id})},pc=(0,t.createContext)(null);function mc(e){let r=(0,t.useContext)(pc);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,mc),t}return r}pc.displayName="ComboboxActionsContext";let fc=(0,t.createContext)(null);function hc(e){let r=(0,t.useContext)(fc);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,hc),t}return r}function yc(e,t){return Rr(t.type,dc,e,t)}fc.displayName="ComboboxDataContext";let gc=t.Fragment,vc=Ir((function(e,r){let{value:n,defaultValue:a,onChange:s,name:o,by:i=((e,t)=>e===t),disabled:l=!1,__demoMode:c=!1,nullable:u=!1,multiple:d=!1,...p}=e,[m=(d?[]:void 0),f]=Pl(n,s,a),[h,y]=(0,t.useReducer)(yc,{dataRef:(0,t.createRef)(),comboboxState:c?0:1,options:[],activeOptionIndex:null,activationTrigger:1,labelId:null}),g=(0,t.useRef)(!1),v=(0,t.useRef)({static:!1,hold:!1}),b=(0,t.useRef)(null),w=(0,t.useRef)(null),E=(0,t.useRef)(null),x=(0,t.useRef)(null),S=Wr("string"==typeof i?(e,t)=>{let r=i;return(null==e?void 0:e[r])===(null==t?void 0:t[r])}:i),_=(0,t.useCallback)((e=>Rr(R.mode,{1:()=>m.some((t=>S(t,e))),0:()=>S(m,e)})),[m]),R=(0,t.useMemo)((()=>({...h,optionsPropsRef:v,labelRef:b,inputRef:w,buttonRef:E,optionsRef:x,value:m,defaultValue:a,disabled:l,mode:d?1:0,get activeOptionIndex(){if(g.current&&null===h.activeOptionIndex&&h.options.length>0){let e=h.options.findIndex((e=>!e.dataRef.current.disabled));if(-1!==e)return e}return h.activeOptionIndex},compare:S,isSelected:_,nullable:u,__demoMode:c})),[m,a,l,d,u,c,h]);$r((()=>{h.dataRef.current=R}),[R]),xl([R.buttonRef,R.inputRef,R.optionsRef],(()=>A.closeCombobox()),0===R.comboboxState);let k=(0,t.useMemo)((()=>({open:0===R.comboboxState,disabled:l,activeIndex:R.activeOptionIndex,activeOption:null===R.activeOptionIndex?null:R.options[R.activeOptionIndex].dataRef.current.value,value:m})),[R,l,m]),C=Wr((e=>{let t=R.options.find((t=>t.id===e));!t||M(t.dataRef.current.value)})),P=Wr((()=>{if(null!==R.activeOptionIndex){let{dataRef:e,id:t}=R.options[R.activeOptionIndex];M(e.current.value),A.goToOption(il.Specific,t)}})),O=Wr((()=>{y({type:0}),g.current=!0})),N=Wr((()=>{y({type:1}),g.current=!1})),T=Wr(((e,t,r)=>(g.current=!1,e===il.Specific?y({type:2,focus:il.Specific,id:t,trigger:r}):y({type:2,focus:e,trigger:r})))),L=Wr(((e,t)=>(y({type:3,id:e,dataRef:t}),()=>y({type:4,id:e})))),I=Wr((e=>(y({type:5,id:e}),()=>y({type:5,id:null})))),M=Wr((e=>Rr(R.mode,{0:()=>null==f?void 0:f(e),1(){let t=R.value.slice(),r=t.findIndex((t=>S(t,e)));return-1===r?t.push(e):t.splice(r,1),null==f?void 0:f(t)}}))),A=(0,t.useMemo)((()=>({onChange:M,registerOption:L,registerLabel:I,goToOption:T,closeCombobox:N,openCombobox:O,selectActiveOption:P,selectOption:C})),[]),D=null===r?{}:{ref:r},F=(0,t.useRef)(null),j=en();return(0,t.useEffect)((()=>{!F.current||void 0!==a&&j.addEventListener(F.current,"reset",(()=>{M(a)}))}),[F,M]),t.createElement(pc.Provider,{value:A},t.createElement(fc.Provider,{value:R},t.createElement(zr,{value:Rr(R.comboboxState,{0:Fr.Open,1:Fr.Closed})},null!=o&&null!=m&&Rl({[o]:m}).map((([e,r],n)=>t.createElement(_l,{features:Sl.Hidden,ref:0===n?e=>{var t;F.current=null!=(t=null==e?void 0:e.closest("form"))?t:null}:void 0,...Mr({key:e,as:"input",type:"hidden",hidden:!0,readOnly:!0,name:e,value:r})}))),Nr({ourProps:D,theirProps:p,slot:k,defaultTag:gc,name:"Combobox"}))))})),bc=Ir((function(e,r){var n,a,s,o;let i=al(),{id:l=`headlessui-combobox-input-${i}`,onChange:c,displayValue:u,type:d="text",...p}=e,m=hc("Combobox.Input"),f=mc("Combobox.Input"),h=Kr(m.inputRef,r),y=(0,t.useRef)(!1),g=en();var v;sc((([e,t],[r,n])=>{y.current||!m.inputRef.current||(0===n&&1===t||e!==r)&&(m.inputRef.current.value=e)}),["function"==typeof u&&void 0!==m.value?null!=(v=u(m.value))?v:"":"string"==typeof m.value?m.value:"",m.comboboxState]),sc((([e],[t])=>{if(0===e&&1===t){let e=m.inputRef.current;if(!e)return;let t=e.value,{selectionStart:r,selectionEnd:n,selectionDirection:a}=e;e.value="",e.value=t,null!==a?e.setSelectionRange(r,n,a):e.setSelectionRange(r,n)}}),[m.comboboxState]);let b=(0,t.useRef)(!1),w=Wr((()=>{b.current=!0})),E=Wr((()=>{setTimeout((()=>{b.current=!1}))})),x=Wr((e=>{switch(y.current=!0,e.key){case ol.Backspace:case ol.Delete:if(0!==m.mode||!m.nullable)return;let t=e.currentTarget;g.requestAnimationFrame((()=>{""===t.value&&(f.onChange(null),m.optionsRef.current&&(m.optionsRef.current.scrollTop=0),f.goToOption(il.Nothing))}));break;case ol.Enter:if(y.current=!1,0!==m.comboboxState||b.current)return;if(e.preventDefault(),e.stopPropagation(),null===m.activeOptionIndex)return void f.closeCombobox();f.selectActiveOption(),0===m.mode&&f.closeCombobox();break;case ol.ArrowDown:return y.current=!1,e.preventDefault(),e.stopPropagation(),Rr(m.comboboxState,{0:()=>{f.goToOption(il.Next)},1:()=>{f.openCombobox()}});case ol.ArrowUp:return y.current=!1,e.preventDefault(),e.stopPropagation(),Rr(m.comboboxState,{0:()=>{f.goToOption(il.Previous)},1:()=>{f.openCombobox(),g.nextFrame((()=>{m.value||f.goToOption(il.Last)}))}});case ol.Home:if(e.shiftKey)break;return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(il.First);case ol.PageUp:return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(il.First);case ol.End:if(e.shiftKey)break;return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(il.Last);case ol.PageDown:return y.current=!1,e.preventDefault(),e.stopPropagation(),f.goToOption(il.Last);case ol.Escape:return y.current=!1,0!==m.comboboxState?void 0:(e.preventDefault(),m.optionsRef.current&&!m.optionsPropsRef.current.static&&e.stopPropagation(),f.closeCombobox());case ol.Tab:if(y.current=!1,0!==m.comboboxState)return;0===m.mode&&f.selectActiveOption(),f.closeCombobox()}})),S=Wr((e=>{f.openCombobox(),null==c||c(e)})),_=Wr((()=>{y.current=!1})),R=sl((()=>{if(m.labelId)return[m.labelId].join(" ")}),[m.labelId]),k=(0,t.useMemo)((()=>({open:0===m.comboboxState,disabled:m.disabled})),[m]);return Nr({ourProps:{ref:h,id:l,role:"combobox",type:d,"aria-controls":null==(n=m.optionsRef.current)?void 0:n.id,"aria-expanded":m.disabled?void 0:0===m.comboboxState,"aria-activedescendant":null===m.activeOptionIndex||null==(a=m.options[m.activeOptionIndex])?void 0:a.id,"aria-multiselectable":1===m.mode||void 0,"aria-labelledby":R,"aria-autocomplete":"list",defaultValue:null!=(o=null!=(s=e.defaultValue)?s:void 0!==m.defaultValue?null==u?void 0:u(m.defaultValue):null)?o:m.defaultValue,disabled:m.disabled,onCompositionStart:w,onCompositionEnd:E,onKeyDown:x,onChange:S,onBlur:_},theirProps:p,slot:k,defaultTag:"input",name:"Combobox.Input"})})),wc=Ir((function(e,r){var n;let a=hc("Combobox.Button"),s=mc("Combobox.Button"),o=Kr(a.buttonRef,r),i=al(),{id:l=`headlessui-combobox-button-${i}`,...c}=e,u=en(),d=Wr((e=>{switch(e.key){case ol.ArrowDown:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&s.openCombobox(),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case ol.ArrowUp:return e.preventDefault(),e.stopPropagation(),1===a.comboboxState&&(s.openCombobox(),u.nextFrame((()=>{a.value||s.goToOption(il.Last)}))),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}));case ol.Escape:return 0!==a.comboboxState?void 0:(e.preventDefault(),a.optionsRef.current&&!a.optionsPropsRef.current.static&&e.stopPropagation(),s.closeCombobox(),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})})));default:return}})),p=Wr((e=>{if(cl(e.currentTarget))return e.preventDefault();0===a.comboboxState?s.closeCombobox():(e.preventDefault(),s.openCombobox()),u.nextFrame((()=>{var e;return null==(e=a.inputRef.current)?void 0:e.focus({preventScroll:!0})}))})),m=sl((()=>{if(a.labelId)return[a.labelId,l].join(" ")}),[a.labelId,l]),f=(0,t.useMemo)((()=>({open:0===a.comboboxState,disabled:a.disabled,value:a.value})),[a]);return Nr({ourProps:{ref:o,id:l,type:wl(e,a.buttonRef),tabIndex:-1,"aria-haspopup":"listbox","aria-controls":null==(n=a.optionsRef.current)?void 0:n.id,"aria-expanded":a.disabled?void 0:0===a.comboboxState,"aria-labelledby":m,disabled:a.disabled,onClick:p,onKeyDown:d},theirProps:c,slot:f,defaultTag:"button",name:"Combobox.Button"})})),Ec=Ir((function(e,r){let n=al(),{id:a=`headlessui-combobox-label-${n}`,...s}=e,o=hc("Combobox.Label"),i=mc("Combobox.Label"),l=Kr(o.labelRef,r);$r((()=>i.registerLabel(a)),[a]);let c=Wr((()=>{var e;return null==(e=o.inputRef.current)?void 0:e.focus({preventScroll:!0})})),u=(0,t.useMemo)((()=>({open:0===o.comboboxState,disabled:o.disabled})),[o]);return Nr({ourProps:{ref:l,id:a,onClick:c},theirProps:s,slot:u,defaultTag:"label",name:"Combobox.Label"})})),xc=Pr.RenderStrategy|Pr.Static,Sc=Ir((function(e,r){let n=al(),{id:a=`headlessui-combobox-options-${n}`,hold:s=!1,...o}=e,i=hc("Combobox.Options"),l=Kr(i.optionsRef,r),c=jr(),u=null!==c?c===Fr.Open:0===i.comboboxState;$r((()=>{var t;i.optionsPropsRef.current.static=null!=(t=e.static)&&t}),[i.optionsPropsRef,e.static]),$r((()=>{i.optionsPropsRef.current.hold=s}),[i.optionsPropsRef,s]),function({container:e,accept:r,walk:n,enabled:a=!0}){let s=(0,t.useRef)(r),o=(0,t.useRef)(n);(0,t.useEffect)((()=>{s.current=r,o.current=n}),[r,n]),$r((()=>{if(!e||!a)return;let t=ul(e);if(!t)return;let r=s.current,n=o.current,i=Object.assign((e=>r(e)),{acceptNode:r}),l=t.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,i,!1);for(;l.nextNode();)n(l.currentNode)}),[e,a,s,o])}({container:i.optionsRef.current,enabled:0===i.comboboxState,accept:e=>"option"===e.getAttribute("role")?NodeFilter.FILTER_REJECT:e.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT,walk(e){e.setAttribute("role","none")}});let d=sl((()=>{var e,t;return null!=(t=i.labelId)?t:null==(e=i.buttonRef.current)?void 0:e.id}),[i.labelId,i.buttonRef.current]);return Nr({ourProps:{"aria-labelledby":d,role:"listbox",id:a,ref:l},theirProps:o,slot:(0,t.useMemo)((()=>({open:0===i.comboboxState})),[i]),defaultTag:"ul",features:xc,visible:u,name:"Combobox.Options"})})),_c=Ir((function(e,r){var n,a;let s=al(),{id:o=`headlessui-combobox-option-${s}`,disabled:i=!1,value:l,...c}=e,u=hc("Combobox.Option"),d=mc("Combobox.Option"),p=null!==u.activeOptionIndex&&u.options[u.activeOptionIndex].id===o,m=u.isSelected(l),f=(0,t.useRef)(null),h=Vr({disabled:i,value:l,domRef:f,textValue:null==(a=null==(n=f.current)?void 0:n.textContent)?void 0:a.toLowerCase()}),y=Kr(r,f),g=Wr((()=>d.selectOption(o)));$r((()=>d.registerOption(o,h)),[h,o]);let v=(0,t.useRef)(!u.__demoMode);$r((()=>{if(!u.__demoMode)return;let e=Jr();return e.requestAnimationFrame((()=>{v.current=!0})),e.dispose}),[]),$r((()=>{if(0!==u.comboboxState||!p||!v.current||0===u.activationTrigger)return;let e=Jr();return e.requestAnimationFrame((()=>{var e,t;null==(t=null==(e=f.current)?void 0:e.scrollIntoView)||t.call(e,{block:"nearest"})})),e.dispose}),[f,p,u.comboboxState,u.activationTrigger,u.activeOptionIndex]);let b=Wr((e=>{if(i)return e.preventDefault();g(),0===u.mode&&d.closeCombobox()})),w=Wr((()=>{if(i)return d.goToOption(il.Nothing);d.goToOption(il.Specific,o)})),E=Nl(),x=Wr((e=>E.update(e))),S=Wr((e=>{!E.wasMoved(e)||i||p||d.goToOption(il.Specific,o,0)})),_=Wr((e=>{!E.wasMoved(e)||i||!p||u.optionsPropsRef.current.hold||d.goToOption(il.Nothing)})),R=(0,t.useMemo)((()=>({active:p,selected:m,disabled:i})),[p,m,i]);return Nr({ourProps:{id:o,ref:y,role:"option",tabIndex:!0===i?void 0:-1,"aria-disabled":!0===i||void 0,"aria-selected":m,disabled:void 0,onClick:b,onFocus:w,onPointerEnter:x,onMouseEnter:x,onPointerMove:S,onMouseMove:S,onPointerLeave:_,onMouseLeave:_},theirProps:c,slot:R,defaultTag:"li",name:"Combobox.Option"})})),Rc=Object.assign(vc,{Input:bc,Button:wc,Label:Ec,Options:Sc,Option:_c});function kc(e){return e&&e.label?e.label:null}function Cc({id:e,value:r,label:n,onChange:a,onQueryChange:s,options:o,placeholder:i,isLoading:c}){const[u,d]=(0,l.useState)(o),[p,m]=(0,l.useState)(""),f=(0,l.useCallback)((e=>{m(e.target.value)}),[m]),h=(0,l.useCallback)((()=>{m("")}),[m]);(0,l.useEffect)((()=>{d(o)}),[o]),(0,l.useEffect)((()=>{s?s(p):d(o.filter((e=>e.label.toLowerCase().includes(p.toLowerCase()))))}),[p,s]);const y=(0,l.useCallback)(((e,t)=>({selected:r,active:n})=>js({selected:r||e===t,active:n})),[js]),g=(0,l.useCallback)((e=>t=>{e&&t.stopPropagation()}),[]);return(0,t.createElement)(Rc,{id:e,as:"div",value:r,onChange:a,onBlur:h},(({open:a})=>(0,t.createElement)(l.Fragment,null,n&&(0,t.createElement)(Rc.Label,{className:"yst-block yst-mb-1 yst-max-w-sm yst-text-sm yst-font-medium yst-text-slate-700"},n),(0,t.createElement)("div",{className:"yst-h-[45px] yst-max-w-sm yst-relative"},(0,t.createElement)(Rc.Button,{"data-id":`button-${e}`,role:"button",className:"yst-w-full yst-h-full yst-rounded-md yst-border yst-border-slate-300 yst-flex yst-items-center yst-rounded-r-md yst-pl-3 yst-pr-2 focus-within:yst-border-primary-500 focus-within:yst-outline-none focus-within:yst-ring-1 focus-within:yst-ring-primary-500",as:"div"},(0,t.createElement)(Rc.Input,{"data-id":`input-${e}`,className:"yst-w-full yst-text-slate-700 yst-rounded-md yst-border-0 yst-outline-none yst-bg-white yst-py-2 yst-pl-0 yst-pr-10 yst-shadow-none sm:yst-text-sm",onChange:f,displayValue:kc,placeholder:i,onClick:g(a)}),(0,t.createElement)(Kl,{className:"yst-h-5 yst-w-5 yst-text-slate-400 yst-inset-y-0 yst-right-0","aria-hidden":"true"})),u.length>0&&(0,t.createElement)(Rc.Options,{className:"yst-absolute yst-z-10 yst-mt-1 yst-max-h-60 yst-w-full yst-overflow-auto yst-rounded-md yst-bg-white yst-text-base yst-shadow-lg yst-ring-1 yst-ring-black yst-ring-opacity-5 focus:yst-outline-none sm:yst-text-sm"},c&&(0,t.createElement)("div",{className:"yst-flex yst-bg-white yst-sticky yst-z-20 yst-text-sm yst-italic yst-top-0 yst-py-2 yst-pl-3 yst-pr-9 yst-my-0"},(0,t.createElement)(ec,{className:"yst-text-primary-500 yst-h-4 yst-w-4 yst-mr-2 yst-self-center"}),(0,bn.__)("Loading...","wordpress-seo")),u.map((e=>(0,t.createElement)(Rc.Option,{key:`yst-option-${e.value}`,value:e,className:y(e.value,r.value)},(({selected:n})=>(0,t.createElement)(l.Fragment,null,(0,t.createElement)("span",{className:da()("yst-block yst-truncate",(n||r.value===e.value)&&"yst-font-semibold")},e.label),(n||r.value===e.value)&&(0,t.createElement)("span",{className:"yst-absolute yst-inset-y-0 yst-right-0 yst-flex yst-items-center yst-pr-4 yst-text-white"},(0,t.createElement)(co,{className:"yst-h-5 yst-w-5","aria-hidden":"true"}))))))))))))}Cc.propTypes={onChange:En().func.isRequired,options:En().array.isRequired,id:En().string.isRequired,value:En().shape({value:En().number,label:En().string}),label:En().string,onQueryChange:En().func,placeholder:En().string,isLoading:En().bool},Cc.defaultProps={value:null,label:"",onQueryChange:null,placeholder:(0,bn.__)("Select an option","wordpress-seo"),isLoading:!1};const Pc={"X-WP-NONCE":wpApiSettings.nonce},Oc=wpApiSettings.root;function Nc({initialValue:e,onChangeCallback:r,placeholder:n}){const[a,s]=(0,l.useState)([]),[o,i]=(0,l.useState)({value:e.id,label:e.name}),[c,d]=(0,l.useState)(!1),p=(0,l.useRef)(!0);(0,l.useEffect)((()=>()=>{p.current=!1}),[]);const m=(0,l.useCallback)((e=>{i(e),r(e)})),f=(0,l.useCallback)((0,u.debounce)((async e=>{d(!0);const t=await function(e=""){const t=`${Oc}wp/v2/users?per_page=20${e?`&search=${encodeURIComponent(e)}`:""}`;return(0,Ui.sendRequest)(t,{method:"GET",headers:Pc})}(e);p.current&&(d(!1),s(t.map((e=>({value:e.id,label:e.name})))))}),500),[]);return(0,t.createElement)(Cc,{id:"yoast-configuration-user-select",value:o,label:(0,bn.__)("Name","wordpress-seo"),onChange:m,onQueryChange:f,options:a,placeholder:n,isLoading:c})}function Tc({dispatch:e,imageUrl:r,fallbackImageUrl:n,person:a,canEditUser:s}){const o=(0,l.useCallback)((()=>{nc((t=>{e({type:"SET_PERSON_LOGO",payload:{...t}})}))}),[nc]),i=(0,l.useCallback)((()=>{e({type:"REMOVE_PERSON_LOGO"})})),c=(0,l.useCallback)((t=>{e({type:"SET_PERSON",payload:t}),C()({path:`yoast/v1/configuration/check_capability?user_id=${t.value}`}).then((t=>{e({type:"SET_CAN_EDIT_USER",payload:t.success})})).catch((e=>{console.error(e.message)}))}),[e]),u=(0,l.useMemo)((()=>(0,l.createInterpolateElement)((0,bn.sprintf)( // translators: %1$s is replaced by the selected user's name, and %2$s and %3$s are opening and closing anchor tags. s?(0,bn.__)("You have selected the user %1$s as the person this site represents. This user profile information will now be used in search results. %2$sUpdate this profile to make sure the information is correct%3$s.","wordpress-seo"):(0,bn.__)("You have selected the user %1$s as the person this site represents. This user profile information will now be used in search results. You're not allowed to update this user profile, so please ask this user or an admin to make sure the information is correct.","wordpress-seo"),`${a.name}`,"",""),{b:(0,t.createElement)("b",null),a:(0,t.createElement)("a",{id:"yoast-configuration-user-selector-user-link",href:window.wpseoScriptData.userEditUrl.replace("{user_id}",a.id),target:"_blank",rel:"noopener noreferrer"})})),[a.id,a.name,s]);return(0,t.createElement)(l.Fragment,null,(0,t.createElement)(Nc,{initialValue:a,onChangeCallback:c,name:"person_id",placeholder:(0,bn.__)("Select a user","wordpress-seo")}),(0,t.createElement)(so,{id:"user-representation-alert",isVisible:0!==a.id,type:"info",className:"yst-mt-5"},u),(0,t.createElement)(tc,{className:"yst-mt-6",id:"person-logo-input",url:r,fallbackUrl:n,onSelectImageClick:o,onRemoveImageClick:i,imageAltText:"",hasPreview:!0,label:(0,bn.__)("Personal logo or avatar","wordpress-seo")}))}function Lc({onOrganizationOrPersonChange:e,dispatch:r,state:n,siteRepresentationEmpty:a}){const[s,o]=(0,l.useState)("emptyChoice"===n.companyOrPerson?"yst-opacity-0":"yst-opacity-100"),i=(0,l.useCallback)((()=>{o("yst-opacity-100")})),c=(0,l.useCallback)((e=>{r({type:"CHANGE_WEBSITE_NAME",payload:e.target.value})})),u=rl((0,bn.sprintf)(/* translators: %1$s expands to opening 'a' HTML tag, %2$s expands to closing 'a' HTML tag. */ (0,bn.__)("Completing this step helps Google to understand your site even better. Bonus: You'll improve your chance of getting %1$srich results%2$s!","wordpress-seo"),"",""),"https://yoa.st/config-workout-rich-results","yoast-configuration-rich-text-link");return(0,t.createElement)(l.Fragment,null,window.wpseoFirstTimeConfigurationData.knowledgeGraphMessage&&(0,t.createElement)(ao,{type:"info"},window.wpseoFirstTimeConfigurationData.knowledgeGraphMessage),(0,t.createElement)("p",{className:da()("yst-text-sm yst-whitespace-pre-line yst-mb-6",n.shouldForceCompany?"yst-mt-4":"yst-mt-0")},n.shouldForceCompany?u:(0,t.createElement)(l.Fragment,null,(0,bn.__)("Tell us! Is your site about an organization or a person? ","wordpress-seo"),u)),(0,t.createElement)(Jl,{id:"organization-person-select",htmlFor:"organization-person-select",name:"organization",label:(0,bn.__)("Does your site represent an Organization or Person?","wordpress-seo"),value:n.shouldForceCompany?"company":n.companyOrPerson,onChange:e,choices:n.companyOrPersonOptions,disabled:!!n.shouldForceCompany}),!("company"===n.companyOrPerson&&n.companyName&&n.companyLogo||"company"===n.companyOrPerson&&!n.companyLogoFallback||"person"===n.companyOrPerson&&n.personLogo||"person"===n.companyOrPerson&&!n.personLogoFallback)&&(0,t.createElement)(ao,{type:"info",className:"yst-mt-6"},(0,bn.__)("We took the liberty of using your website name and logo for the organization name and logo. Feel free to change them below.","wordpress-seo")),(0,t.createElement)(Ks,{className:"yst-my-6",id:"website-name-input",name:"website-name",label:(0,bn.__)("Website name","wordpress-seo"),value:n.websiteName||n.fallbackWebsiteName,onChange:c,feedback:{isVisible:n.errorFields.includes("website_name"),message:[(0,bn.__)("We could not save the website name. Please check the value.","wordpress-seo")],type:"error"}}),(0,t.createElement)(no.Z,{height:["company","person"].includes(n.companyOrPerson)?"auto":0,duration:400,easing:"linear",onAnimationEnd:i},(0,t.createElement)("div",{className:da()("yst-transition-opacity yst-duration-300 yst-mt-6",s)},"company"===n.companyOrPerson&&(0,t.createElement)(ac,{dispatch:r,imageUrl:n.companyLogo,fallbackImageUrl:n.companyLogoFallback,organizationName:n.companyName,fallbackOrganizationName:n.fallbackCompanyName,errorFields:n.errorFields}),"person"===n.companyOrPerson&&(0,t.createElement)(Tc,{dispatch:r,imageUrl:n.personLogo,fallbackImageUrl:n.personLogoFallback,person:{id:n.personId,name:n.personName},canEditUser:!!n.canEditUser,errorFields:n.errorFields}))),(0,t.createElement)(so,{id:"site-representation-empty-alert",isVisible:a,className:"yst-mt-6"},(0,bn.__)("You're almost there! Complete all settings in this step so search engines know what your site is about.","wordpress-seo")))}Nc.propTypes={initialValue:En().shape({id:En().number,name:En().string}),onChangeCallback:En().func,placeholder:En().string},Nc.defaultProps={initialValue:{id:0,name:""},onChangeCallback:u.noop,placeholder:(0,bn.__)("Select a user","wordpress-seo")},Tc.propTypes={dispatch:En().func.isRequired,imageUrl:En().string,fallbackImageUrl:En().string,person:En().shape({id:En().number,name:En().string}),canEditUser:En().bool.isRequired},Tc.defaultProps={imageUrl:"",fallbackImageUrl:"",person:{id:0,name:""}},Lc.propTypes={onOrganizationOrPersonChange:En().func.isRequired,dispatch:En().func.isRequired,state:En().object.isRequired,siteRepresentationEmpty:En().bool.isRequired};const Ic=(0,bn.__)("Oops! Something went wrong. Check your email address and try again.","wordpress-seo"),Mc=(0,bn.__)("Please enter a valid email address.","wordpress-seo"),Ac=(0,bn.__)("Thank you! Check your inbox for the confirmation email.","wordpress-seo");function Dc({gdprLink:e}){const[r,n]=(0,l.useState)(""),[a,s]=(0,l.useState)("waiting"),[o,i]=(0,l.useState)(""),c=(0,l.useCallback)((async function(){if(!(0,h.isEmail)(r))return s("error"),void i(Mc);s("loading"),(await async function(e){return(await fetch("https://my.yoast.com/api/Mailing-list/subscribe",{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrerPolicy:"no-referrer",body:JSON.stringify({customerDetails:{firstName:"",email:e},list:"Yoast newsletter",source:"free"})})).json()}(r)).error?(s("error"),i(Ic)):(s("success"),i(Ac))}),[r]),u=(0,l.useCallback)((e=>{s("waiting"),n(e.target.value)}),[n]);return(0,t.createElement)(l.Fragment,null,(0,t.createElement)("h4",{className:"yst-text-slate-900 yst-text-base yst-leading-6 yst-font-normal"},(0,bn.__)("Get free weekly SEO tips!","wordpress-seo")),(0,t.createElement)("p",{className:"yst-my-2"},(0,bn.sprintf)(/* translators: %1$s expands to "Yoast SEO", %2$s expands to "Yoast SEO". */ (0,bn.__)("Subscribe to the %1$s newsletter to receive best practices for improving your rankings, save time on SEO tasks, stay up-to-date with the latest SEO news, and get expert guidance on how to make the most of %2$s!","wordpress-seo"),"Yoast SEO","Yoast SEO")),(0,t.createElement)("div",{className:"yst-flex yst-items-start yst-gap-2 yst-mt-4"},(0,t.createElement)(Ks,{label:(0,bn.__)("Email address","wordpress-seo"),id:"newsletter-email",name:"newsletter email",value:r,onChange:u,className:"yst-grow",type:"email",placeholder:(0,bn.__)("E.g. example@email.com","wordpress-seo"),feedback:{isVisible:["error","success"].includes(a),type:a,message:[o]}}),(0,t.createElement)("button",{type:"button",id:"newsletter-sign-up-button",className:"yst-button yst-button--primary yst-h-[45px] yst-items-center yst-mt-[27.5px] yst-shrink-0",onClick:c,disabled:"loading"===a,"data-hiive-event-name":"clicked_signup | personal preferences"},(0,bn.__)("Yes, give me your free tips!","wordpress-seo"))),(0,t.createElement)("p",{className:"yst-text-slate-600 yst-text-xxs yst-leading-4"},rl((0,bn.sprintf)( // translators: %1$s and %2$s are replaced by opening and closing anchor tags. (0,bn.__)("Yoast respects your privacy. Read %1$sour privacy policy%2$s on how we handle your personal information.","wordpress-seo"),"",""),e,"yoast-configuration-gdpr-link")))}Dc.propTypes={gdprLink:En().string},Dc.defaultProps={gdprLink:""};const Fc={variant:{default:"","inline-block":"yst-radio-group--inline-block"}},jc=({id:e,name:r,value:n,label:a,className:s,...o})=>(0,t.createElement)("div",{className:da()("yst-radio",s)},(0,t.createElement)("input",{type:"radio",id:e,name:r,value:n,className:"yst-radio__input",...o}),a&&(0,t.createElement)(zc,{htmlFor:e,className:"yst-radio__label"},a));jc.propTypes={name:En().string.isRequired,id:En().string.isRequired,value:En().oneOfType([En().string,En().number]).isRequired,label:En().string.isRequired,variant:En().oneOf(Object.keys({default:"","inline-block":"yst-radio--inline-block"})),className:En().string},jc.defaultProps={variant:"default",className:""};const zc=({children:e,as:r,className:n,...a})=>(0,t.createElement)(r,{className:da()("yst-label",n),...a},e);zc.propTypes={children:En().node.isRequired,as:En().elementType,className:En().string},zc.defaultProps={as:"label",className:""};const Uc=({children:e,id:r,name:n,value:a,label:s,options:o,onChange:i,variant:c,className:u,...d})=>{const p=(0,l.useCallback)((({target:e})=>e.checked&&i(e.value)),[i]);return(0,t.createElement)("fieldset",{className:da()("yst-radio-group",Fc.variant[c],u)},s&&(0,t.createElement)(zc,{as:"legend",className:"yst-radio-group__label"},s),e&&(0,t.createElement)("div",{className:"yst-radio-group__description"},e),(0,t.createElement)("div",{className:"yst-radio-group__options"},o.map(((e,s)=>{const o=`${r}-${s}`;return(0,t.createElement)(jc,{key:o,id:o,name:n,value:e.value,label:e.label,variant:c,checked:a===e.value,onChange:p,...d})}))))};Uc.propTypes={children:En().node,id:En().string.isRequired,name:En().string.isRequired,value:En().oneOfType([En().string,En().number]).isRequired,options:En().arrayOf(En().shape({value:En().oneOfType([En().string,En().number]).isRequired,label:En().string.isRequired})).isRequired,onChange:En().func.isRequired,label:En().node,variant:En().oneOf(Object.keys(Fc.variant)),className:En().string},Uc.defaultProps={children:null,label:null,variant:"default",className:""};const qc=Uc,Bc=(0,Ui.makeOutboundLink)();function $c({state:e,setTracking:r}){return(0,t.createElement)(l.Fragment,null,!e.isPremium&&(0,t.createElement)(l.Fragment,null,(0,t.createElement)(Dc,{gdprLink:window.wpseoFirstTimeConfigurationData.shortlinks.gdpr}),(0,t.createElement)("br",null)),(0,t.createElement)("h4",{className:"yst-text-slate-900 yst-text-base yst-leading-6 yst-font-normal"},(0,bn.__)("Are you open to help us improve our services?","wordpress-seo")),!!e.isMainSite&&!e.isTrackingAllowedMultisite&&(0,t.createElement)(ao,{type:"warning",className:"yst-mt-2"},(0,bn.__)("This feature has been disabled by the network admin.","wordpress-seo")),!e.isMainSite&&(0,t.createElement)(ao,{type:"warning",className:"yst-mt-2"},(0,bn.__)("This feature has been disabled since subsites never send tracking data.","wordpress-seo")),(0,t.createElement)("p",{className:da()("yst-text-normal yst-mt-2 yst-mb-4",e.isMainSite&&e.isTrackingAllowedMultisite?"":"yst-opacity-50")},(0,bn.sprintf)(/* translators: 1: Yoast SEO. */ (0,bn.__)("Can we collect anonymous information about your website to enhance %1$s?","wordpress-seo"),"Yoast SEO")),(0,t.createElement)(qc,{id:"yoast-configuration-tracking-radio-button",name:"yoast-configuration-tracking",value:e.tracking,onChange:r,className:e.isMainSite&&e.isTrackingAllowedMultisite?"":"yst-opacity-50",disabled:!e.isMainSite||!e.isTrackingAllowedMultisite,options:[{value:0,label:(0,bn.__)("No, I don't want to share my site data","wordpress-seo")},{value:1,label:(0,bn.__)("Yes, you can collect my site data","wordpress-seo")}]}),!!e.isMainSite&&!!e.isTrackingAllowedMultisite&&(0,t.createElement)(l.Fragment,null,(0,t.createElement)(Bc,{className:"yst-inline-block yst-mt-4",href:"https://yoa.st/config-workout-tracking"},(0,bn.__)("What data will be collected and why?","wordpress-seo")),(0,t.createElement)("p",{className:"yst-my-2"},(0,t.createElement)("i",null,(0,bn.__)("Important: We won't sell this data, and we won't collect any personal information about you or your visitors.","wordpress-seo")))))}var Hc,Vc,Zc,Wc,Gc,Yc,Kc,Jc,Qc,Xc,eu,tu,ru,nu,au,su,ou,iu,lu,cu,uu,du,pu,mu,fu,hu,yu,gu,vu,bu,wu,Eu,xu,Su,_u,Ru,ku,Cu,Pu,Ou,Nu,Tu,Lu,Iu,Mu,Au,Du,Fu,ju,zu,Uu;function qu(){return qu=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",qu({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",className:"indexables_2_left_bubble_optm_svg__yst-shrink-0 indexables_2_left_bubble_optm_svg__yst-h-28",viewBox:"0 0 289.98 291.69"},e),Hc||(Hc=t.createElement("path",{fill:"#006531",d:"M178.09 168c6.2.88 11.73 57.74 10.9 64-1 7.61-20.47 21.56-35.83 16.83s-22.28-17.36-17.85-26.51 36.58-55.25 42.78-54.32z"})),Vc||(Vc=t.createElement("path",{fill:"#f0ecf0",d:"M256.47 217s6 6 13.08 13.82a131.19 131.19 0 1 0-181.07 40.45q3.55 2.25 7.23 4.27c.71-2.79 1.36-5 1.81-6.64 1.48-5.32 6.32-14.53 5.36-19.55s-4.13-7.68-3.54-20.08a114.5 114.5 0 0 1 3.54-25.72 14.88 14.88 0 0 0-7.09-1.77 113.17 113.17 0 0 1 10.95-12c6.87-21.57 17-42 23.64-51.22 6.22-8.64 29.37-10.27 52.71-6.72s47.75 28.12 40.37 63-28.46 44.21-30.79 49.23-5.57 18.8-3.65 23.67c1.29 3.28 6.19 9.05 11.85 17.05a130.91 130.91 0 0 0 48-28.94c-8.87-9.55-19.31-20.38-19.87-21.12 9.73-11.73 15.92-18.83 27.47-17.73z"})),Zc||(Zc=t.createElement("path",{fill:"#006531",d:"M150.14 131.06c-3.25-1.48-3.86-.12-7.4.48s-18.86-1.18-23.91.81c-9.9 3.91-14 11.82-16 20.27s.54 19.16 1.72 25.95-3.39 53.18-3.09 59.38 20.2 11.57 22.27.35 15.33-65.3 15.33-65.3 14.33-40.46 11.08-41.94z"})),Wc||(Wc=t.createElement("path",{fill:"#b498c6",d:"M49 177.58c26.5 32.94 70.46 51.81 71.35 58.6s-3.84 13.34-8.87 16.29-30.71-3.4-45.77-22.47c-15.55-19.67-28.56-37.13-28.56-37.13s5.68-8.18 11.85-15.29z"})),Gc||(Gc=t.createElement("path",{fill:"#006531",d:"M132.36 152.53c-4.21 2.95-21 27.42-26.52 32-4.18 3.48-14.36 15.36-15.25 23.63s6.39 19.91 16 25.4c5.24 3 23.88-5.3 25.65-13.27s4.32-70.72.12-67.76z"})),Yc||(Yc=t.createElement("path",{fill:"#006531",d:"M192.67 244.07c2.37-5 23.4-14.36 30.79-49.21s-17-59.44-40.37-63-46.49-1.86-52.71 6.74c-6.63 9.2-16.77 29.65-23.64 51.22 15.28-14.48 30.08-20.49 39.86-32.18-.3 1.55 8.49 23.45 11.81 28.36 4.15 6.13 14.16 17.89 20.38 31-10.34-1.92-21.49-1.6-31.9 2.41-2.66 6.3-2.07 16.93-.88 22.84-2.28 17.87-2.12 33.54.46 48.85 4.06.37 8.17.58 12.32.58a131.19 131.19 0 0 0 42.08-6.9c-5.66-8-10.56-13.77-11.85-17-1.92-4.91 1.29-18.69 3.65-23.71zM112.56 231c-.27-7.26-.22-8.8.78-20.95-2.89-1.6-6.55-4.57-10.46-6.48a114.5 114.5 0 0 0-3.54 25.72c-.59 12.4 2.59 15.06 3.54 20.08S99 263.58 97.52 268.9c-.45 1.6-1.1 3.85-1.81 6.64a127.06 127.06 0 0 0 13.85 6.58c-1.44-18.61-1.04-36.3 3-51.12z"})),Kc||(Kc=t.createElement("path",{fill:"#b498c6",d:"M269.55 230.83C262.43 223 256.47 217 256.47 217c-11.55-1.11-17.74 6-27.47 17.72.56.74 11 11.57 19.88 21.12a132.58 132.58 0 0 0 20.67-25.01z"})),Jc||(Jc=t.createElement("path",{fill:"#89bc3b",d:"M95.79 201.78a14.88 14.88 0 0 1 7.09 1.77c1.1-4.56 2.4-9.17 3.86-13.73a113.74 113.74 0 0 0-10.95 11.96z"})),Qc||(Qc=t.createElement("path",{fill:"#89bc3b",d:"M112.56 231c-4 14.84-4.44 32.53-3 51.14a130.52 130.52 0 0 0 36.91 9c-2.58-15.31-2.74-31-.46-48.85-1.19-5.91-1.78-16.54.88-22.84 10.41-4 21.56-4.33 31.9-2.41-6.22-13.12-16.23-24.88-20.38-31-3.32-4.91-12.11-26.81-11.81-28.36-9.78 11.69-24.58 17.7-39.86 32.18-1.46 4.56-2.76 9.17-3.86 13.73 3.91 1.91 7.57 4.88 10.46 6.48-1 12.11-1.05 13.65-.78 20.93z"})),Xc||(Xc=t.createElement("path",{fill:"#b498c6",d:"M35.85 151.6s2.66 3.18 4.43 5.55 4.66 16 8.68 20.43-7 12.22-7 12.22c-12-.92-23-13.34-21-28.7 0 0 3.25-4.73 3.84-6.5s-.18-5-.18-5a34.85 34.85 0 0 1-4.29-6.21c-1.21-2.65-.84-6.46.37-9.18s4.56-2.56 4.68-1.89c.31 1.74 2 8.86 1.86 8.6-.87-2.01 2.67 2.19 8.61 10.68z"})),eu||(eu=t.createElement("path",{fill:"#b498c6",d:"M32.13 155.37c-12 4.78-18.36 1.3-24.56 4.84s1.22 17.61 1.22 17.61 1.84 6.8 5.39 11.23 24.27 4.41 24.27 4.41l10.15-13.52z"})),tu||(tu=t.createElement("path",{fill:"#b498c6",d:"M28.47 184.32c-.59.89-5.5 6.45-8.45 7.45s-6.34-.66-6.34-.66c-3.64-1.42-4.81-3.6-3.07-6.2 0 0 10.29-.52 7.34.18s7.57-4.31 7.57-4.31c1.96.66 3.09 1.77 2.95 3.54z"})),ru||(ru=t.createElement("path",{fill:"#8b6c9c",d:"M25.52 180.78c7.47.85-3.24 16.33-11.84 10.33 5.39 1.3 7.32.21 10.71-3.07 2.5-2.49 3.06-2.79 2.42-5.24a2.59 2.59 0 0 0-1.29-2.02z"})),nu||(nu=t.createElement("path",{fill:"#b498c6",d:"M5.48 176.94c-2.11 2.55-1.17 5.19 4.13 8l8.39 1.15 8.57-5.31a8.67 8.67 0 0 0-.89-6.8l-10.34 3.25z"})),au||(au=t.createElement("path",{fill:"#8b6c9c",d:"M9.61 184.91c7.51.44 7.78 1.78 12.14-.95 5-3.14 5.69-4.17 3.88-10 4.06 5.07 1.3 7.9-3.35 10.83-3.09 1.94-6.79 2.92-12.67.12z"})),su||(su=t.createElement("path",{fill:"#b498c6",d:"M1.34 168.67c-3.06 1.58-.35 9.08 2.77 9l11.18-.41s9.12-2 10.34-3.25c1.81-1.8-.57-7.7-1.48-7.38l-10.93 3z"})),ou||(ou=t.createElement("path",{fill:"#8b6c9c",d:"M4.11 177.64c11.75.39 10.61 4.06 19.09-3.93 1.37-1.34-.15-7.07-1.05-7.11 1.23-.32 4.11 5.64 1.75 7.82-5.45 5.13-8.43 7.58-19.79 3.22z"})),iu||(iu=t.createElement("path",{fill:"#b498c6",d:"M4.59 159.81c-2.79.54-3.52 2-3.54 5.43s-.94 2.44 1.29 3.43 13.88.88 13.88.88l7.93-3c.73-2.37.66-4.59-1.18-6.5l-9.4-.89a69.28 69.28 0 0 0-8.98.65z"})),lu||(lu=t.createElement("path",{fill:"#8b6c9c",d:"M2.34 168.67c1.27.26 12.13.39 13.88.38-.45.09-.73.24 7.76-2.92-.91 1 .41-.43.05-2.9-.51-3.6-2.16-2.54-5.81-3.09-4.5-.9-9.43-1.88 4.8-.54.53.05 3 2.56 1.61 7.14-.11.36.83-.09-8.31 3.31-3.68.02-10.94.14-13.98-1.38z"})),cu||(cu=t.createElement("path",{fill:"#006531",d:"M197.4 137.56c4.72.88 31.31 19.79 39.83 35.92 3.33 6.31 6 21.38 8.9 27.58s13.59 18.31 14.48 19.79c-17.13 2.66-27.18 19.2-27.18 19.2-4-3.26-43.16-44.31-44-46.38-3.25-7.97 3.24-57 7.97-56.11z"})),uu||(uu=t.createElement("path",{fill:"#006531",d:"M195.4 110.09c-1.55 13 2 27.47 2 27.47s-44.31 21.26-50.8 20.08-3-24.33-3-24.33-.88-13.29 1.48-17.13 4.75-9.93 13-11.11 38.1-1.57 37.32 5.02z"})),du||(du=t.createElement("path",{fill:"#b498c6",d:"M147.3 154.39s11.48-21.63 15-24.29 18.72-8.83 22.56-10 3.84-5.31 5-8.56 1.48-29.79 1.48-29.79l-45.29 2 4.73 39.81c.36 12.52-4.85 19.83-3.48 30.83z"})),pu||(pu=t.createElement("path",{fill:"#89bc3b",d:"M195.45 138.74s27.35 19.2 39.05 36.26c2.65 3.85 4.84 20.79 7.2 25.81s10.05 15.07 10.05 15.07l5.31.29 3.55 4.73c-9.41 1.64-18.27 9.31-27.18 19.2l-6.49-5.62c5.46-7.09 11.49-13 18.9-15.94 0 0-7.68-12.11-9.75-16.54s-4.52-21.19-7.2-26.41c-9-17.6-39.06-34.73-39.06-34.73z"})),mu||(mu=t.createElement("path",{fill:"#093f22",d:"m192.38 197.7 21.02 21.79-2.66 5.31-15.36 5.61 11.88-10.33-14.88-22.38zm-71.73-50.53 1.55 13.29a79.66 79.66 0 0 1-7.31 11.54c-4.43 5.76-8.76 11.31-8.76 11.31L114 156l-.44 12z"})),fu||(fu=t.createElement("path",{fill:"#8b6c9c",d:"M191.38 81.73s1.91 5.52-1.07 17.09c-2.07 8-25.57 30.6-35 28.17-6-1.54-6-11.85-7.27-16.31L145 83.8z"})),hu||(hu=t.createElement("path",{fill:"#b498c6",d:"M172.22 6.3c-20-2.46-38.74 14.76-40.58 16.91-1.16 1.35-4.27 8.05-6.64 14.45 13.42-5 36.89-.82 67.51 9.88 1 6.7.06 12.11-.92 19.63 0 0-8.61 4.69-16 4.69s-16.29-2.46-18.45-5.23-8-9.63-13.77-10-11.37 5.87-13.89 6.59c-1.75.5-8 3-10.15 5.15v-.08a15.41 15.41 0 0 0-1.18 6.5c.8 8.65 6.53 18.51 8.69 21.59s2.72 9.45 6.41 14.07c3.13 3.91 15.33 3.46 20 2.1 7-2 29.38-9.37 32.77-14S198.23 70 198.23 70s12.4-8.23 13-14.69c2.12-22.13-11.91-45.67-39.01-49.01z"})),yu||(yu=t.createElement("path",{fill:"#006531",d:"M192.2 87.46c21.23 1.16 34.39 0 35.92-9.22s1.16-64.85-52.19-76.38c-50.56-10.93-60.49 29.65-61.72 37s7.59 8.91 7.59 8.91c-.61-3.09 1.55-2.73 3.19-10.14 15.18-3.18 61.91 7.92 64.68 12.84s-.54 12.68-.24 16.06 7.69 6.47 7.69 6.47z"})),gu||(gu=t.createElement("path",{fill:"#093f22",d:"M225.1 81.93c1.13-4.56-4.46-9.51-15.07-14.76l-5.22 5.23-4.92 15.37c12.11.23 23.63.05 25.21-5.84z"})),vu||(vu=t.createElement("path",{fill:"#b498c6",d:"M207 73.61c3.69 3.07 3.93 10.55 1.78 14.54s-14.78 8.49-17.21 7.57-4.92-3.88-4.92-3.88l10.45-18.62a12.33 12.33 0 0 1 4.49.11c.31 0 2.8-1 3.11-.91a6.32 6.32 0 0 1 2.3 1.19z"})),bu||(bu=t.createElement("path",{fill:"#191a1a",d:"M192.2 69s-19.69 37.82-22.44 39c.82.16 5.58-1.59 7.38-2.46s20-32.59 20-32.59z"})),wu||(wu=t.createElement("path",{fill:"#093f22",d:"m186.03 79.26 5.37 4.21-4.21 7.53-5.93-3.32 4.77-8.42z"})),Eu||(Eu=t.createElement("path",{fill:"#fcee21",d:"M122.11 47.5a54.43 54.43 0 0 1 2.89-9.84c-4.93 9.91-10.22 24.17-5.7 30.66a35.07 35.07 0 0 1 5.58-8.22s-3.7-6.1-2.77-12.6z"})),xu||(xu=t.createElement("path",{fill:"#fbb03b",d:"M129.49 65.25c2.72-.78 8.83-7.61 14.37-6.38s11.14 8 13.29 10.76 11.07 5.23 18.45 5.23 16-7.69 16-7.69c1-7.52 1.93-12.93.92-19.63-30.62-10.7-54.09-14.89-67.52-9.88a54.43 54.43 0 0 0-2.89 9.84c-.93 6.45 2.76 12.6 2.76 12.6a35.07 35.07 0 0 0-5.58 8.22v.08c2.2-2.15 6.93-2.21 10.2-3.15z"})),Su||(Su=t.createElement("path",{fill:"#4b3f51",d:"M164.1 84.58s-10-6.68-19.87-7.87c-1.84-.22-2.48.64-3.69.59-1.78-.07-2.9-.67-4.28-.74-4.79-.22-5.77 2.37-5.77 2.37a4.35 4.35 0 0 0 1.93 4.43c1.77 1 2.51-1.11 3.32 1.77 17.72-1.66 22.26-.59 28.36-.55z"})),_u||(_u=t.createElement("path",{fill:"#8b6c9c",d:"M135.67 85c0 2.77-5.87 11.68 5.81 12.3 12.65.7 19.82-9.23 22.52-12.67-9.76-.11-19.34-2.38-28.33.37z"})),Ru||(Ru=t.createElement("path",{fill:"#f2f2f2",d:"M136.67 81.48c-.95 1.52-.25 7.58 4.61 8.3 7.75 1 16.17-1.77 22-5.22-9.55-1.06-11.88-2.62-16.38-3.49-2.54-.48-9.09-1.42-10.23.41z"})),ku||(ku=t.createElement("path",{fill:"#fcee21",d:"M124.87 60.1a20.07 20.07 0 0 0 12-.61s-2.15-7.92-6.76-7.61-5.24 8.22-5.24 8.22z"})),Cu||(Cu=t.createElement("path",{fill:"#f15a24",d:"M136.81 59.5c-3.13-10.48-10.72-10.06-11.88.6-1.93-.14-1.38-9.34 4.35-9.94 6.86-.67 8.23 9.15 7.53 9.34zm1.59-18.77c1.26.46.58 3.28-.69 3.38s-7.64-.52-9.45.31-5.08 4.17-6.25 6.08c.21-1.54 3.68-7.57 5-8.85s10.14-1.38 11.39-.92z"})),Pu||(Pu=t.createElement("path",{fill:"#8b6c9c",stroke:"#8b6c9c",strokeMiterlimit:10,d:"M150.7 66.25c.48 1.6 1 3.41-.85 4.33s-4-2.41-5.53-2.1-4 2.24-5.61 1.77c-3.34-1-3.69-2.69-3.69-2.69s-1.12 4.2 4.3 4.84c3.68.43 5.35-2.06 8.42-1.45s2.09 2.8 3.57 2.06c2.97-1.47.98-6.44-.61-6.76z"})),Ou||(Ou=t.createElement("path",{fill:"#8b6c9c",d:"M154.79 69.68c2.27 1.94 3.94 10 11.63 10.35 1.28 2-.13 5.41-1.89 9.58a20.53 20.53 0 0 0 7.07-12.91c-11.05.3-13.26-5.8-16.81-7.02zm-18.22.44s-2.47-.4-2.47.87a.37.37 0 0 1-.16.3.38.38 0 0 1-.34.06c-2.4-.79-1.79-4.72-.07-5.86-1.72 4.02 3.04 4.63 3.04 4.63z"})),Nu||(Nu=t.createElement("path",{fill:"#8b6c9c",d:"M132.48 68.63c-2 2.71-2.16 7-2 10.24 0 0-1-1.86-2-1.79s-.71 5.3.79 9a31 31 0 0 1-6-15.73c2.67 1.07 6 .5 9.27-3.38z"})),Tu||(Tu=t.createElement("ellipse",{cx:139.18,cy:184.17,fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,rx:8.75,ry:5.25,transform:"rotate(-9.22 139.183 184.166)"})),Lu||(Lu=t.createElement("path",{fill:"#f19018",d:"m129.81 195.84 18.24-2.09a100.85 100.85 0 0 0-14.23 16.57l8-.9a78.29 78.29 0 0 0-8.82 18.82c-3.2 9.33-2.81 18.19-3 17.84a47.74 47.74 0 0 1-3.75-14.91 56 56 0 0 1 .51-15.19c-3 .83-6 1.67-8.89 2.51a73.05 73.05 0 0 1 11.94-22.65z"})),Iu||(Iu=t.createElement("path",{fill:"#fbb03b",stroke:"#fc3",strokeMiterlimit:10,d:"m129.81 195.84 18.24-2.09a100.85 100.85 0 0 0-14.23 16.57l8-.9a78.29 78.29 0 0 0-8.82 18.82c-3.2 9.33-2.81 18.19-3 17.84a47.74 47.74 0 0 1-3.75-14.91 56 56 0 0 1 .51-15.19c-3 .83-6 1.67-8.89 2.51a73.05 73.05 0 0 1 11.94-22.65z"})),Mu||(Mu=t.createElement("path",{fill:"#f15a24",d:"M136 56.78c1 1.52-.76 3.87-2.65 3.87s-3.66-1.26-3.66-3.1a3.38 3.38 0 0 1 3.43-3.32c1.88 0 1.51.55 2.88 2.55z"})),Au||(Au=t.createElement("path",{fill:"#8b6c9c",d:"M25 161.28c-.08 6.93 1.26 20.08 15.09 24.42 0 0-8.67 1.28-11.66-1.38s-6.92-16.88-3.43-23.04z"})),Du||(Du=t.createElement("path",{fill:"#093f22",d:"m120.68 47.53 4.32-9.87c19.53-1.66 62.46 8.77 64.68 12.84s.07 13.6-.24 16.06 7.68 6.44 7.68 6.44l4.61.31s-8.3-3.07-8-7.38 3.2-16.07-1.23-18.4c-27.06-14.19-61.36-15-69.48-13.76-6.46 1-8.44 6.4-7.22 10.09.85 2.58 4.88 3.67 4.88 3.67zm47.77-26.05c-.92-2.15 18.91-8.27 30.13-7.68 6.17.32 13.26 10.33 5.91 9.45-14.77-1.77-35.11.38-36.04-1.77zM172 32.7c-.59-3 28.35-3 39.26.35 6 1.8 2.55 12.33-1.84 10.45C198 38.61 172.38 34.61 172 32.7zm-38.21-14.1L131 9.07l-6.15 6.15s8.02 4.61 8.94 3.38zm-7.07 8.61C127 26 120.57 21.06 120 22s-2.77 8.3-2.77 8.3 9.18-1.86 9.49-3.09z"})),Fu||(Fu=t.createElement("path",{fill:"#fc3",d:"M181.6 46.59c-.06 10.33-1.83 19.86-6 28.27A30.57 30.57 0 0 1 163.36 73c3.15-11.43 5.89-22.37 5.61-29.76a90 90 0 0 1 12.63 3.35z"})),ju||(ju=t.createElement("path",{fill:"#fcee21",d:"M172.83 62.87c-5.55.17-12.05 1.5-16.91-1.54 0 0 .7-8.22 7.15-7s9.76 8.54 9.76 8.54z"})),zu||(zu=t.createElement("path",{fill:"#f15a24",d:"M155 42.88c-1.24.38-.16 2.92.92 3.39s8.91 1.14 11.65 1.79 6.2 4.36 8.64 6.81c-.22-1.86-4.87-8.63-7.68-9.53s-12.29-2.83-13.53-2.46zm13.31 16.56a3.78 3.78 0 1 1-3.44-4.09 5 5 0 0 1 .56.09 4.28 4.28 0 0 1 2.88 4z"})),Uu||(Uu=t.createElement("path",{fill:"#f15a24",d:"M155.82 61.32c-2.89-12.19 15.29-11.67 17.1 1.51-.51.23-2.75-6.29-8.94-8.06-7.49-2.22-7.59 6.6-8.16 6.55z"})));function $u(e){e.preventDefault(),window.location.href="admin.php?page=wpseo_dashboard"}function Hu(){const e=(0,u.get)(window,"wpseoScriptData.webinarIntroFirstTimeConfigUrl","https://yoa.st/webinar-intro-first-time-config");return(0,t.createElement)("div",{className:"yst-flex yst-flex-row yst-justify-between yst-items-center yst--mt-4"},(0,t.createElement)("div",{className:"yst-mr-6"},(0,t.createElement)("p",{className:"yst-text-sm yst-mb-4"},(0,bn.sprintf)(/* translators: 1: Yoast. */ (0,bn.__)("Great work! Thanks to the details you've provided, %1$s has enhanced your site for search engines, giving them a clearer picture of what your site is all about.","wordpress-seo"),"Yoast")),(0,t.createElement)("p",{className:"yst-text-sm yst-mb-6"},(0,bn.__)("If your goal is to increase your rankings, you need to work on your SEO regularly. That can be overwhelming, so let's tackle it one step at a time!","wordpress-seo")),(0,t.createElement)(c.Button,{as:"a",variant:"primary",id:"button-webinar-seo-dashboard",href:e,target:"_blank","data-hiive-event-name":"clicked_to_onboarding_page"},(0,bn.sprintf)(/* translators: 1: Yoast SEO. */ (0,bn.__)("Learn how to increase your rankings with %1$s","wordpress-seo"),"Yoast SEO"),(0,t.createElement)(Ln,{className:"yst-w-4 yst-h-4 yst-icon-rtl yst-ml-2"})),(0,t.createElement)("p",{className:"yst-mt-4"},(0,t.createElement)(c.Link,{id:"link-webinar-register",href:"#",onClick:$u,"data-hiive-event-name":"clicked_seo_dashboard"},(0,bn.__)("Or go to your SEO dashboard","wordpress-seo")))),(0,t.createElement)(Bu,{className:"yst-shrink-0 yst-h-28 yst-mb-24"}))}function Vu(e,t){const{companyName:r,companyLogo:n,companyOrPersonOptions:a,shouldForceCompany:s,fallbackCompanyName:o,websiteName:i,fallbackWebsiteName:l}=e;let{companyOrPerson:c}=e;return("company"!==c||r||n||t(hs.siteRepresentation))&&!s||(c="company"),{...e,personId:Number(e.personId),personLogoId:Number(e.personLogoId),companyLogoId:Number(e.companyLogoId),tracking:Number(e.tracking),companyOrPerson:c,companyOrPersonOptions:a,errorFields:[],stepErrors:{},editedSteps:[],companyName:r||o,websiteName:i||l}}function Zu(){const{removeAlert:e}=(0,s.useDispatch)(F),[r,n]=(0,l.useState)(window.wpseoFirstTimeConfigurationData.finishedSteps),a=(0,l.useCallback)((e=>r.includes(e)),[r]),o=(0,l.useCallback)((e=>{n((t=>(0,u.uniq)([...t,e])))}),[n]);(0,l.useEffect)((()=>{!async function(e){const t=await C()({path:"yoast/v1/configuration/save_configuration_state",method:"POST",data:{finishedSteps:e}});await t.json}(r),window.wpseoFirstTimeConfigurationData.finishedSteps=r}),[r]);const[i,c]=(0,l.useReducer)(Us,{...Vu(window.wpseoFirstTimeConfigurationData,a)}),[d,p]=(0,l.useState)((()=>"0"===window.yoastIndexingData.amount?"already_done":"idle")),[m,f]=(0,l.useState)(!1),[h,y]=(0,l.useState)(!1),g=(0,l.useCallback)(((e,t)=>{c({type:"SET_STEP_ERROR",payload:{step:e,message:t}})}),[]),v=(0,l.useCallback)((e=>{c({type:"REMOVE_STEP_ERROR",payload:e})}),[]);(0,l.useEffect)((()=>{"completed"===d&&(e("wpseo-reindex"),window.yoastIndexingData.amount="0")}),[d,e]);const b=a(hs.siteRepresentation),w=a(hs.socialProfiles),E=a(hs.personalPreferences),x=(0,l.useCallback)((e=>{c({type:"SET_TRACKING",payload:parseInt(e,10)})})),S=(0,l.useCallback)((e=>{c({type:"SET_ERROR_FIELDS",payload:e})})),_=!("company"!==i.companyOrPerson||i.companyName&&(i.companyLogo||i.companyLogoFallback)&&i.websiteName),R=!("person"!==i.companyOrPerson||i.personId&&(i.personLogo||i.personLogoFallback)&&i.websiteName),k=(0,l.useCallback)((e=>c({type:"SET_COMPANY_OR_PERSON",payload:e})),[c]),P=[b,w,E].every(Boolean),[O,N]=(0,l.useState)(a(hs.siteRepresentation)),T=[O,a(hs.siteRepresentation),a(hs.socialProfiles),a(hs.personalPreferences),P],[L,I]=(0,l.useState)(function(e){if(!Array.isArray(e)||0===e.length)return 0;const t=e.findIndex((e=>!1===e));return-1!==t?t:e.every(Boolean)?e.length-1:0}(T)),[M,A]=(0,l.useState)(P),[D,j]=(0,l.useState)(!1),[z,U]=(0,l.useState)(M&&!D);function q(){return U(!1),j(!0),!0}(0,l.useEffect)((()=>{P&&A(!0)}),[P]),(0,l.useEffect)((()=>{U(M&&!D)}),[M,D]),(0,l.useEffect)((()=>{function e(e){"Enter"===e.key&&"first-time-configuration-tab"===document.querySelector(".nav-tab.nav-tab-active").id&&"INPUT"===e.target.tagName&&e.preventDefault()}return addEventListener("keydown",e),()=>removeEventListener("keydown",e)}),[]),(0,l.useEffect)((()=>{i.editedSteps.includes(L+1)||"in_progress"===d?window.isStepBeingEdited=!0:window.isStepBeingEdited=!1}),[i.editedSteps,d,L]);const B=(0,l.useCallback)((e=>{(i.editedSteps.includes(L+1)||"in_progress"===d)&&(-1===location.href.indexOf("page=wpseo_dashboard#top#first-time-configuration")&&-1===location.href.indexOf("page=wpseo_dashboard#/first-time-configuration")||(e.preventDefault(),e.returnValue=""))}),[i.editedSteps,d,L]);return(0,l.useEffect)((()=>(window.addEventListener("beforeunload",B),()=>{window.removeEventListener("beforeunload",B)})),[B]),(0,t.createElement)(Ao,{setActiveStepIndex:I,activeStepIndex:L,isStepperFinished:P},(0,t.createElement)(Lo,null,(0,t.createElement)(Lo.Header,{name:(0,bn.__)("SEO data optimization","wordpress-seo"),isFinished:O},(0,t.createElement)(Fo,{stepId:hs.optimizeSeoData,beforeGo:q,isVisible:z,additionalClasses:"yst-ml-auto"},(0,bn.__)("Edit","wordpress-seo"))),(0,t.createElement)(Lo.Content,null,(0,t.createElement)(tl,{setIndexingState:p,indexingState:d,showRunIndexationAlert:h,isStepperFinished:P}),(0,t.createElement)(Do,{stepId:hs.optimizeSeoData,additionalClasses:"yst-mt-12",beforeGo:function(){return h||"idle"!==d||"1"===window.yoastIndexingData.disabled?(N(!0),j(!1),!0):(y(!0),!1)},destination:M?"last":1},(0,bn.__)("Continue","wordpress-seo")))),(0,t.createElement)(Lo,null,(0,t.createElement)(Lo.Header,{name:(0,bn.__)("Site representation","wordpress-seo"),isFinished:b},(0,t.createElement)(Fo,{stepId:hs.siteRepresentation,beforeGo:q,isVisible:z,additionalClasses:"yst-ml-auto"},(0,bn.__)("Edit","wordpress-seo"))),(0,t.createElement)(Lo.Content,null,(0,t.createElement)(Lc,{onOrganizationOrPersonChange:k,dispatch:c,state:i,siteRepresentationEmpty:m}),(0,t.createElement)(Lo.Error,{id:"yoast-site-representation-step-error",message:i.stepErrors[hs.siteRepresentation]||""}),(0,t.createElement)(Uo,{stepId:hs.siteRepresentation,stepperFinishedOnce:M,saveFunction:function(){return!m&&_||!m&&R?(f(!0),!1):m||"emptyChoice"!==i.companyOrPerson?(f("emptyChoice"===i.companyOrPerson||_||R),async function(e){const t={company_or_person:"emptyChoice"===e.companyOrPerson?"company":e.companyOrPerson,company_name:e.companyName,company_logo:e.companyLogo,company_logo_id:e.companyLogoId?e.companyLogoId:0,website_name:e.websiteName,person_logo:e.personLogo,person_logo_id:e.personLogoId?e.personLogoId:0,company_or_person_user_id:e.personId},r=await C()({path:"yoast/v1/configuration/site_representation",method:"POST",data:t});return await r.json}(i).then((()=>(S([]),v(hs.siteRepresentation),o(hs.siteRepresentation),window.wpseoFirstTimeConfigurationData={...window.wpseoFirstTimeConfigurationData,...i},!0))).catch((e=>e.failures?(S(e.failures),!1):(e.message&&g(hs.siteRepresentation,e.message),!1)))):(f(!0),!1)},setEditState:j}))),(0,t.createElement)(Lo,null,(0,t.createElement)(Lo.Header,{name:(0,bn.__)("Social profiles","wordpress-seo"),isFinished:w},(0,t.createElement)(Fo,{stepId:hs.socialProfiles,beforeGo:q,isVisible:z,additionalClasses:"yst-ml-auto"},(0,bn.__)("Edit","wordpress-seo"))),(0,t.createElement)(Lo.Content,null,(0,t.createElement)(oo,{state:i,dispatch:c,setErrorFields:S}),(0,t.createElement)(Lo.Error,{id:"yoast-social-profiles-step-error",message:i.stepErrors[hs.socialProfiles]||""}),(0,t.createElement)(Uo,{stepId:hs.socialProfiles,stepperFinishedOnce:M,saveFunction:function(){return"person"===i.companyOrPerson?(o(hs.socialProfiles),!0):async function(e){const t={facebook_site:e.socialProfiles.facebookUrl,twitter_site:e.socialProfiles.twitterUsername,other_social_urls:e.socialProfiles.otherSocialUrls},r=await C()({path:"yoast/v1/configuration/social_profiles",method:"POST",data:t});return await r.json}(i).then((e=>!1===e.success?(S(e.failures),Promise.reject("There were errors saving social profiles")):e)).then((()=>{S([]),v(hs.socialProfiles),o(hs.socialProfiles)})).then((()=>(window.wpseoFirstTimeConfigurationData.socialProfiles=i.socialProfiles,!0))).catch((e=>(e.failures&&S(e.failures),e.message&&g(hs.socialProfiles,e.message),!1)))},setEditState:j}))),(0,t.createElement)(Lo,null,(0,t.createElement)(Lo.Header,{name:(0,bn.__)("Personal preferences","wordpress-seo"),isFinished:E},(0,t.createElement)(Fo,{stepId:hs.personalPreferences,beforeGo:q,isVisible:z,additionalClasses:"yst-ml-auto"},(0,bn.__)("Edit","wordpress-seo"))),(0,t.createElement)(Lo.Content,null,(0,t.createElement)($c,{state:i,setTracking:x}),(0,t.createElement)(Lo.Error,{id:"yoast-personal-preferences-step-error",message:i.stepErrors[hs.personalPreferences]||""}),(0,t.createElement)(Uo,{stepId:hs.personalPreferences,stepperFinishedOnce:M,saveFunction:function(){return async function(e){if(0!==e.tracking&&1!==e.tracking)throw"Value not set!";const t={tracking:e.tracking},r=await C()({path:"yoast/v1/configuration/enable_tracking",method:"POST",data:t});return await r.json}(i).then((()=>o(hs.personalPreferences))).then((()=>(v(hs.personalPreferences),window.wpseoFirstTimeConfigurationData.tracking=i.tracking,!0))).catch((e=>(e.message&&g(hs.personalPreferences,e.message),!1)))},setEditState:j}))),(0,t.createElement)(Lo,null,(0,t.createElement)(Lo.Header,{name:(0,bn.__)("Finish configuration","wordpress-seo"),isFinished:P}),(0,t.createElement)(Lo.Content,null,(0,t.createElement)(Hu,null))))}var Wu={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",whiteSpace:"nowrap",padding:0,width:"1px",position:"absolute"},Gu=function(e){var t=e.message,r=e["aria-live"];return n().createElement("div",{style:Wu,role:"log","aria-live":r},t||"")};Gu.propTypes={};const Yu=Gu;function Ku(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}var Ju=function(e){function t(){var r,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var a=arguments.length,s=Array(a),o=0;o{const a=(0,bn.sprintf)(/* translators: 1: Settings' section title, 2: Yoast SEO */ (0,bn.__)("%1$s Dashboard - %2$s","wordpress-seo"),r,"Yoast SEO");return(0,t.createElement)(td,null,(0,t.createElement)(cd,{message:a,"aria-live":"polite"}),(0,t.createElement)(Qn.Helmet,null,(0,t.createElement)("title",null,"Dashboard")),(0,t.createElement)("header",{className:"yst-p-8 yst-border-b yst-border-slate-200"},(0,t.createElement)("div",{className:"yst-max-w-screen-sm"},(0,t.createElement)(c.Title,null,r),n&&(0,t.createElement)("p",{className:"yst-text-tiny yst-mt-3"},n))),e)};ud.propTypes={children:En().node.isRequired,title:En().string.isRequired,description:En().node};const dd=ud,pd=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"}))})),md=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"}))})),fd=(0,l.createContext)({Icon:null,bulletClass:"",iconClass:""}),hd=({id:e,nonce:r,dismissed:n,message:a})=>{const{bulletClass:o=""}=(0,l.useContext)(fd),{toggleAlertStatus:i}=(0,s.useDispatch)(F),u=n?pd:md,d=(0,l.useCallback)((async()=>{i(e,r,n)}),[e,r,n,i]);return(0,t.createElement)("li",{key:e,className:"yst-flex yst-justify-between yst-gap-x-5 yst-border-b yst-border-slate-200 last:yst-border-b-0 yst-py-6 first:yst-pt-0 last:yst-pb-0"},(0,t.createElement)("div",{className:da()("yst-mt-1",n&&"yst-opacity-50")},(0,t.createElement)("svg",{width:"11",height:"11",className:o},(0,t.createElement)("circle",{cx:"5.5",cy:"5.5",r:"5.5"}))),(0,t.createElement)("div",{className:da()("yst-text-sm yst-text-slate-600 yst-grow",n&&"yst-opacity-50"),dangerouslySetInnerHTML:{__html:a}}),(0,t.createElement)(c.Button,{variant:"secondary",size:"small",className:"yst-self-center yst-h-8",onClick:d},(0,t.createElement)(u,{className:"yst-w-4 yst-h-4 yst-text-neutral-700"})))};hd.propTypes={id:En().string,nonce:En().string,dismissed:En().bool,message:En().string};const yd=({className:e="",items:r=[]})=>0===r.length?null:(0,t.createElement)("ul",{className:e},r.map((e=>(0,t.createElement)(hd,{key:e.id,id:e.id,nonce:e.nonce,dismissed:e.dismissed,message:e.message}))));yd.propTypes={className:En().string,items:En().arrayOf(En().shape({message:En().string}))};const gd=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"}))})),vd=({title:e,counts:r=0,children:n=null})=>{const{Icon:a=gd,iconClass:s=""}=(0,l.useContext)(fd);return(0,t.createElement)("div",null,(0,t.createElement)("div",{className:"yst-flex yst-justify-between yst-gap-2 yst-items-center"},(0,t.createElement)(a,{className:da()("yst-w-6 yst-h-6",s)}),(0,t.createElement)(c.Title,{className:"yst-grow",as:"h2",size:"2"},e," ",`(${r})`)),n)};vd.propTypes={title:En().string,counts:En().number,children:En().node};var bd,wd=((bd=wd||{})[bd.Open=0]="Open",bd[bd.Closed=1]="Closed",bd),Ed=(e=>(e[e.ToggleDisclosure=0]="ToggleDisclosure",e[e.CloseDisclosure=1]="CloseDisclosure",e[e.SetButtonId=2]="SetButtonId",e[e.SetPanelId=3]="SetPanelId",e[e.LinkPanel=4]="LinkPanel",e[e.UnlinkPanel=5]="UnlinkPanel",e))(Ed||{});let xd={0:e=>({...e,disclosureState:Rr(e.disclosureState,{0:1,1:0})}),1:e=>1===e.disclosureState?e:{...e,disclosureState:1},4:e=>!0===e.linkedPanel?e:{...e,linkedPanel:!0},5:e=>!1===e.linkedPanel?e:{...e,linkedPanel:!1},2:(e,t)=>e.buttonId===t.buttonId?e:{...e,buttonId:t.buttonId},3:(e,t)=>e.panelId===t.panelId?e:{...e,panelId:t.panelId}},Sd=(0,t.createContext)(null);function _d(e){let r=(0,t.useContext)(Sd);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,_d),t}return r}Sd.displayName="DisclosureContext";let Rd=(0,t.createContext)(null);function kd(e){let r=(0,t.useContext)(Rd);if(null===r){let t=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(t,kd),t}return r}Rd.displayName="DisclosureAPIContext";let Cd=(0,t.createContext)(null);function Pd(e,t){return Rr(t.type,xd,e,t)}Cd.displayName="DisclosurePanelContext";let Od=t.Fragment,Nd=Ir((function(e,r){let{defaultOpen:n=!1,...a}=e,s=(0,t.useRef)(null),o=Kr(r,Yr((e=>{s.current=e}),void 0===e.as||e.as===t.Fragment)),i=(0,t.useRef)(null),l=(0,t.useRef)(null),c=(0,t.useReducer)(Pd,{disclosureState:n?0:1,linkedPanel:!1,buttonRef:l,panelRef:i,buttonId:null,panelId:null}),[{disclosureState:u,buttonId:d},p]=c,m=Wr((e=>{p({type:1});let t=ul(s);if(!t||!d)return;let r=e?e instanceof HTMLElement?e:e.current instanceof HTMLElement?e.current:t.getElementById(d):t.getElementById(d);null==r||r.focus()})),f=(0,t.useMemo)((()=>({close:m})),[m]),h=(0,t.useMemo)((()=>({open:0===u,close:m})),[u,m]),y={ref:o};return t.createElement(Sd.Provider,{value:c},t.createElement(Rd.Provider,{value:f},t.createElement(zr,{value:Rr(u,{0:Fr.Open,1:Fr.Closed})},Nr({ourProps:y,theirProps:a,slot:h,defaultTag:Od,name:"Disclosure"}))))})),Td=Ir((function(e,r){let n=al(),{id:a=`headlessui-disclosure-button-${n}`,...s}=e,[o,i]=_d("Disclosure.Button"),l=(0,t.useContext)(Cd),c=null!==l&&l===o.panelId,u=(0,t.useRef)(null),d=Kr(u,r,c?null:o.buttonRef);(0,t.useEffect)((()=>{if(!c)return i({type:2,buttonId:a}),()=>{i({type:2,buttonId:null})}}),[a,i,c]);let p=Wr((e=>{var t;if(c){if(1===o.disclosureState)return;switch(e.key){case ol.Space:case ol.Enter:e.preventDefault(),e.stopPropagation(),i({type:0}),null==(t=o.buttonRef.current)||t.focus()}}else switch(e.key){case ol.Space:case ol.Enter:e.preventDefault(),e.stopPropagation(),i({type:0})}})),m=Wr((e=>{e.key===ol.Space&&e.preventDefault()})),f=Wr((t=>{var r;cl(t.currentTarget)||e.disabled||(c?(i({type:0}),null==(r=o.buttonRef.current)||r.focus()):i({type:0}))})),h=(0,t.useMemo)((()=>({open:0===o.disclosureState})),[o]),y=wl(e,u);return Nr({ourProps:c?{ref:d,type:y,onKeyDown:p,onClick:f}:{ref:d,id:a,type:y,"aria-expanded":e.disabled?void 0:0===o.disclosureState,"aria-controls":o.linkedPanel?o.panelId:void 0,onKeyDown:p,onKeyUp:m,onClick:f},theirProps:s,slot:h,defaultTag:"button",name:"Disclosure.Button"})})),Ld=Pr.RenderStrategy|Pr.Static,Id=Ir((function(e,r){let n=al(),{id:a=`headlessui-disclosure-panel-${n}`,...s}=e,[o,i]=_d("Disclosure.Panel"),{close:l}=kd("Disclosure.Panel"),c=Kr(r,o.panelRef,(e=>{i({type:e?4:5})}));(0,t.useEffect)((()=>(i({type:3,panelId:a}),()=>{i({type:3,panelId:null})})),[a,i]);let u=jr(),d=null!==u?u===Fr.Open:0===o.disclosureState,p=(0,t.useMemo)((()=>({open:0===o.disclosureState,close:l})),[o,l]),m={ref:c,id:a};return t.createElement(Cd.Provider,{value:o.panelId},Nr({ourProps:m,theirProps:s,slot:p,defaultTag:"div",features:Ld,visible:d,name:"Disclosure.Panel"}))})),Md=Object.assign(Nd,{Button:Td,Panel:Id});const Ad=t.forwardRef((function(e,r){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:r},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"}))})),Dd=({label:e,children:r})=>(0,t.createElement)(Md,null,(({open:n})=>(0,t.createElement)("div",{className:"yst-shadow-sm yst-border-slate-300 yst-rounded-md yst-border"},(0,t.createElement)(Md.Button,{className:"yst-w-full yst-flex yst-justify-between yst-py-4 yst-pr-4 yst-pl-6 yst-items-center"},(0,t.createElement)("div",{className:"yst-font-medium"},e),(0,t.createElement)(Ad,{className:da()("yst-h-5 yst-w-5 flex-shrink-0 yst-text-slate-400",n?"yst-rotate-180":"")})),(0,t.createElement)(Md.Panel,{className:"yst-px-6"},r))));Dd.propTypes={label:En().string,children:En().node};const Fd=()=>{const e=(0,s.useSelect)((e=>e(F).selectActiveNotifications()),[]),r=(0,s.useSelect)((e=>e(F).selectDismissedNotifications()),[]),n=r.length,a=(0,bn._n)("hidden notification","hidden notifications",n,"wordpress-seo"),o={Icon:gn,bulletClass:"yst-fill-blue-500",iconClass:"yst-text-blue-500"};return(0,t.createElement)(c.Paper,null,(0,t.createElement)(c.Paper.Content,{className:"yst-max-w-[600px] yst-flex yst-flex-col yst-gap-y-6"},(0,t.createElement)(fd.Provider,{value:{...o}},(0,t.createElement)(vd,{counts:e.length,title:(0,bn.__)("Notifications","wordpress-seo")},0===e.length&&(0,t.createElement)("p",{className:"yst-mt-2 yst-text-sm"},(0,bn.__)("No new notifications.","wordpress-seo"))),(0,t.createElement)(yd,{items:e}),n>0&&(0,t.createElement)(Dd,{label:`${n} ${a}`},(0,t.createElement)(yd,{className:"yst-pb-6",items:r})))))},jd=()=>{const e=(0,s.useSelect)((e=>e(F).selectActiveProblems()),[]),r=(0,s.useSelect)((e=>e(F).selectDismissedProblems()),[]),n=r.length,a=(0,bn._n)("hidden problem","hidden problems",n,"wordpress-seo"),o={Icon:gd,bulletClass:"yst-fill-red-500",iconClass:"yst-text-red-500"};return(0,t.createElement)(c.Paper,null,(0,t.createElement)(c.Paper.Content,{className:"yst-max-w-[600px] yst-flex yst-flex-col yst-gap-y-6"},(0,t.createElement)(fd.Provider,{value:{...o}},(0,t.createElement)(vd,{title:(0,bn.__)("Problems","wordpress-seo"),counts:e.length},(0,t.createElement)("p",{className:"yst-mt-2 yst-text-sm"},e.length>0?(0,bn.__)("We have detected the following issues that affect the SEO of your site.","wordpress-seo"):(0,bn.__)("Good job! We could detect no serious SEO problems.","wordpress-seo"))),(0,t.createElement)(yd,{items:e}),n>0&&(0,t.createElement)(Dd,{label:`${n} ${a}`},(0,t.createElement)(yd,{className:"yst-pb-6",items:r})))))},zd=()=>{const e=function(e){let{router:r,basename:n}=Kt(Gt.UseBlocker),a=Jt(Yt.UseBlocker),[s,o]=t.useState(""),i=t.useCallback((t=>{if("/"===n)return e(t);let{currentLocation:r,nextLocation:a,historyAction:s}=t;return e({currentLocation:Tt({},r,{pathname:Se(r.pathname,n)||r.pathname}),nextLocation:Tt({},a,{pathname:Se(a.pathname,n)||a.pathname}),historyAction:s})}),[n,e]);return t.useEffect((()=>{let e=String(++Xt);return o(e),()=>r.deleteBlocker(e)}),[r]),t.useEffect((()=>{""!==s&&r.getBlocker(s,i)}),[r,s,i]),s&&a.blockers.has(s)?a.blockers.get(s):Be}((({currentLocation:e,nextLocation:t})=>(0,u.get)(window,"isStepBeingEdited",!1)&&"/first-time-configuration"===e.pathname&&"/first-time-configuration"!==t.pathname));return(0,t.createElement)(c.Paper,null,(0,t.createElement)(dd,{title:(0,bn.__)("First-time configuration","wordpress-seo"),description:(0,bn.__)("Tell us about your site, so we can get it ranked! Let's get your site in tip-top shape for the search engines. Follow these 5 steps to make Google understand what your site is about.","wordpress-seo")},(0,t.createElement)("div",{id:"yoast-configuration",className:"yst-p-8 yst-max-w-[715px]"},(0,t.createElement)(Zu,null))),(0,t.createElement)(oa,{isOpen:"blocked"===e.state,onClose:e.reset,title:(0,bn.__)("Unsaved changes","wordpress-seo"),description:(0,bn.__)("There are unsaved changes in one or more steps of the first-time configuration. Leaving means that those changes will be lost. Are you sure you want to leave this page?","wordpress-seo"),onDiscard:e.proceed,dismissLabel:(0,bn.__)("No, continue editing","wordpress-seo"),discardLabel:(0,bn.__)("Yes, leave page","wordpress-seo")}))},Ud=({premiumLink:e,premiumUpsellConfig:r,isPromotionActive:n})=>{const a=n("black-friday-2024-promotion");return(0,t.createElement)(c.Paper,{as:"div",className:"xl:yst-max-w-3xl"},a&&(0,t.createElement)("div",{className:"yst-rounded-t-lg yst-h-9 yst-flex yst-justify-between yst-items-center yst-bg-black yst-text-amber-300 yst-px-4 yst-text-lg yst-border-b yst-border-amber-300 yst-border-solid yst-font-semibold"},(0,t.createElement)("div",null,(0,bn.__)("30% OFF","wordpress-seo")),(0,t.createElement)("div",null,(0,bn.__)("BLACK FRIDAY","wordpress-seo"))),(0,t.createElement)("div",{className:"yst-p-6 yst-flex yst-flex-col"},(0,t.createElement)(c.Title,{as:"h2",size:"4",className:"yst-text-xl yst-text-primary-500"},(0,bn.sprintf)(/* translators: %s expands to "Yoast SEO" Premium */ (0,bn.__)("Upgrade to %s","wordpress-seo"),"Yoast SEO Premium")),(0,t.createElement)("ul",{className:"yst-grid yst-grid-cols-1 sm:yst-grid-cols-2 yst-gap-x-6 yst-list-disc yst-pl-[1em] yst-list-outside yst-text-slate-800 yst-mt-6"},[(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$sAI%2$s: Better SEO titles and meta descriptions, faster.","wordpress-seo"),"",""),(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$sMultiple keywords%2$s: Rank higher for more searches.","wordpress-seo"),"",""),(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$sSuper fast%2$s internal linking suggestions.","wordpress-seo"),"",""),(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$sNo more broken links%2$s: Automatic redirect manager.","wordpress-seo"),"",""),(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$sAppealing social previews%2$s people actually want to click on.","wordpress-seo"),"",""),(0,bn.sprintf)(/* translators: %1$s expands to a strong opening tag, %2$s expands to a strong closing tag. */ (0,bn.__)("%1$s24/7 support%2$s: Also on evenings and weekends.","wordpress-seo"),"","")].map(((e,r)=>(0,t.createElement)("li",{key:`upsell-benefit-${r}`},(0,l.createInterpolateElement)(e,{strong:(0,t.createElement)("span",{className:"yst-font-semibold"})}))))),(0,t.createElement)(c.Button,{as:"a",variant:"upsell",size:"extra-large",href:e,className:"yst-gap-2 yst-mt-4",target:"_blank",rel:"noopener",...r},a?(0,bn.__)("Claim your 30% off now!","wordpress-seo"):(0,bn.sprintf)(/* translators: %s expands to "Yoast SEO" Premium */ (0,bn.__)("Explore %s now!","wordpress-seo"),"Yoast SEO Premium"),(0,t.createElement)(Ln,{className:"yst-w-4 yst-h-4 yst-icon-rtl"}))))};Ud.propTypes={premiumLink:En().string.isRequired,premiumUpsellConfig:En().object,isPromotionActive:En().func},Ud.defaultProps={premiumUpsellConfig:{},isPromotionActive:u.noop};const qd=({premiumLink:e,premiumUpsellConfig:r,academyLink:n,isPromotionActive:a})=>(0,t.createElement)("div",{className:"yst-grid yst-grid-cols-1 sm:yst-grid-cols-2 min-[783px]:yst-grid-cols-1 lg:yst-grid-cols-2 xl:yst-grid-cols-1 yst-gap-4"},(0,t.createElement)(Jn,{link:e,linkProps:r,isPromotionActive:a}),(0,t.createElement)(xn,{link:n}));qd.propTypes={premiumLink:En().string.isRequired,premiumUpsellConfig:En().object.isRequired,academyLink:En().string.isRequired,isPromotionActive:En().func.isRequired};const Bd=qd,$d=()=>{const e=la("selectPreference",[],"isPremium"),r=la("selectLink",[],"https://yoa.st/17h"),n=la("selectLink",[],"https://yoa.st/jj"),a=la("selectUpsellSettingsAsProps"),o=la("selectLink",[],"https://yoa.st/3t6"),{isPromotionActive:i}=(0,s.useSelect)(F);return(0,t.createElement)("div",{className:"yst-flex yst-gap-6 xl:yst-flex-row yst-flex-col"},(0,t.createElement)("div",{className:"yst-@container yst-flex yst-flex-wrap yst-flex-grow yst-flex-col"},(0,t.createElement)(c.Paper,{className:"yst-grow"},(0,t.createElement)("header",{className:"yst-p-8 yst-max-w-screen-sm"},(0,t.createElement)(c.Title,null,(0,bn.__)("Alert center","wordpress-seo")),(0,t.createElement)("p",{className:"yst-text-tiny yst-mt-3"},(0,bn.__)("Monitor and manage potential SEO problems affecting your site and stay informed with important notifications and updates.","wordpress-seo")))),(0,t.createElement)("div",{className:"yst-grid yst-grid-cols-1 @3xl:yst-grid-cols-2 yst-gap-6 yst-my-6 yst-grow yst-items-start"},(0,t.createElement)(jd,null),(0,t.createElement)(Fd,null)),!e&&(0,t.createElement)(Ud,{premiumLink:r,premiumUpsellConfig:a,isPromotionActive:i})),!e&&(0,t.createElement)("div",{className:"yst-min-w-[16rem] xl:yst-max-w-[16rem]"},(0,t.createElement)("div",{className:"yst-sticky yst-top-16"},(0,t.createElement)(Bd,{premiumLink:n,premiumUpsellConfig:a,academyLink:o,isPromotionActive:i}))))};i()((()=>{const r=document.getElementById("yoast-seo-general");if(!r)return;(({initialState:t={}}={})=>{(0,s.register)((({initialState:t})=>(0,s.createReduxStore)(F,{actions:{...w,...xs,...V,dismissAlert:Ls,setCurrentPromotions:Is,setDismissedAlerts:Ms,setIsPremium:As},selectors:{...b,...Es,...H,isAlertDismissed:Os,getIsPremium:Ns,isPromotionActive:Ts},initialState:(0,u.merge)({},{[y]:v(),preferences:bs(),[j]:q(),currentPromotions:{promotions:[]}},t),reducer:(0,s.combineReducers)({[y]:E,preferences:Ss,[j]:W,currentPromotions:ks,dismissedAlerts:Cs,isPremium:Ps}),controls:{...Z,...e}}))({initialState:t}))})({initialState:{[y]:(0,u.get)(window,"wpseoScriptData.linkParams",{}),[j]:{alerts:(0,u.get)(window,"wpseoScriptData.alerts",[])},currentPromotions:{promotions:(0,u.get)(window,"wpseoScriptData.currentPromotions",[])},dismissedAlerts:(0,u.get)(window,"wpseoScriptData.dismissedAlerts",{}),isPremium:(0,u.get)(window,"wpseoScriptData.preferences.isPremium",!1)}});const n=(0,s.select)(F).selectPreference("isRtl",!1),o=(i=ar((0,t.createElement)(rr,{path:"/",element:(0,t.createElement)(vs,null)},(0,t.createElement)(rr,{path:"/",element:(0,t.createElement)($d,null)}),(0,t.createElement)(rr,{path:"*",element:(0,t.createElement)($d,null)}),(0,t.createElement)(rr,{path:"/first-time-configuration",element:(0,t.createElement)(zd,null)}))),Ze({basename:void 0,future:or({},void 0,{v7_prependBasename:!0}),history:(d={window:void 0},void 0===d&&(d={}),ae((function(e,t){let{pathname:r="/",search:n="",hash:a=""}=ne(e.location.hash.substr(1));return r.startsWith("/")||r.startsWith(".")||(r="/"+r),te("",{pathname:r,search:n,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let r=e.document.querySelector("base"),n="";if(r&&r.getAttribute("href")){let t=e.location.href,r=t.indexOf("#");n=-1===r?t:t.slice(0,r)}return n+"#"+("string"==typeof t?t:re(t))}),(function(e,t){X("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),d)),hydrationData:lr(),routes:i,mapRouteProperties:sr,unstable_dataStrategy:void 0,unstable_patchRoutesOnNavigation:void 0,window:void 0}).initialize());var i,d;(0,l.render)((0,t.createElement)(c.Root,{context:{isRtl:n}},(0,t.createElement)(a.SlotFillProvider,null,(0,t.createElement)(yr,{router:o}))),r)}))})()})();js/dist/analysis-worker.js000064400000001151147206602470011621 0ustar00(()=>{self.window=self;const e=["lodash","regenerator-runtime","wp-hooks","wp-i18n"];self.onmessage=({data:s})=>{if(!s||!s.dependencies)return;!function(s){for(const o in s)Object.prototype.hasOwnProperty.call(s,o)&&(e.includes(o)||o.startsWith("yoast-seo"))&&(self.importScripts(s[o]),"lodash"===o&&(self.lodash=_.noConflict()))}(s.dependencies),s.translations&&function(e){for(const[s,o]of e){const e=o.locale_data[s]||o.locale_data.messages;e[""].domain=s,self.wp.i18n.setLocaleData(e,s)}}(s.translations);const o=self.yoast.Researcher.default;new self.yoast.analysis.AnalysisWebWorker(self,new o).register()}})();js/dist/externals-contexts.js000064400000001456147206602470012351 0ustar00(()=>{"use strict";var e={n:o=>{var t=o&&o.__esModule?()=>o.default:()=>o;return e.d(t,{a:t}),t},d:(o,t)=>{for(var n in t)e.o(t,n)&&!e.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:t[n]})},o:(e,o)=>Object.prototype.hasOwnProperty.call(e,o)};const o=window.wp.element,t=(0,o.createContext)("location"),n=t.Provider,r=t.Consumer,a=window.React,s=window.yoast.propTypes;var i=e.n(s);const c={},d=(0,o.createContext)(c),w=({children:e,context:o={}})=>(0,a.createElement)(d.Provider,{value:{...c,...o}},e);w.propTypes={children:i().node.isRequired,context:i().object};const l=w;window.yoast=window.yoast||{},window.yoast.externals=window.yoast.externals||{},window.yoast.externals.contexts={LocationContext:t,LocationProvider:n,LocationConsumer:r,RootContext:d,Root:l,useRootContext:()=>(0,o.useContext)(d)}})();js/dist/crawl-settings.js000064400000001077147206602470011444 0ustar00jQuery(document).ready((function(){jQuery("#allow_search_cleanup input[type='radio']").on("change",(function(){"on"===jQuery("#allow_search_cleanup input[type='radio']:checked").val()?(jQuery("#allow_search_cleanup_emoji").prop("disabled",!1),jQuery("#allow_search_cleanup_patterns").prop("disabled",!1)):(jQuery("#allow_search_cleanup_emoji").prop("disabled",!0),jQuery("#allow_search_cleanup_patterns").prop("disabled",!0),jQuery("#allow_search_cleanup_emoji-off").prop("checked",!0),jQuery("#allow_search_cleanup_patterns-off").prop("checked",!0))})).trigger("change")}));js/dist/introductions.js000064400000066117147206602470011410 0ustar00(()=>{"use strict";var e={n:t=>{var s=t&&t.__esModule?()=>t.default:()=>t;return e.d(s,{a:s}),s},d:(t,s)=>{for(var r in s)e.o(s,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:s[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,s=window.wp.data,r=window.wp.domReady;var a=e.n(r);const n=window.wp.element,i=window.wp.hooks,l=window.yoast.uiLibrary,o=window.lodash,c=window.yoast.reduxJsToolkit,d="adminUrl",m=(0,c.createSlice)({name:d,initialState:"",reducers:{setAdminUrl:(e,{payload:t})=>t}}),u=(m.getInitialState,{selectAdminUrl:e=>(0,o.get)(e,d,"")});u.selectAdminLink=(0,c.createSelector)([u.selectAdminUrl,(e,t)=>t],((e,t="")=>{try{return new URL(t,e).href}catch(t){return e}})),m.actions,m.reducer;const y=window.wp.url,p="linkParams",w=(0,c.createSlice)({name:p,initialState:{},reducers:{setLinkParams:(e,{payload:t})=>t}}),g=w.getInitialState,h={selectLinkParam:(e,t,s={})=>(0,o.get)(e,`${p}.${t}`,s),selectLinkParams:e=>(0,o.get)(e,p,{})};h.selectLink=(0,c.createSelector)([h.selectLinkParams,(e,t)=>t,(e,t,s={})=>s],((e,t,s)=>(0,y.addQueryArgs)(t,{...e,...s})));const f=w.actions,E=w.reducer,v=(0,c.createSlice)({name:"notifications",initialState:{},reducers:{addNotification:{reducer:(e,{payload:t})=>{e[t.id]={id:t.id,variant:t.variant,size:t.size,title:t.title,description:t.description}},prepare:({id:e,variant:t="info",size:s="default",title:r,description:a})=>({payload:{id:e||(0,c.nanoid)(),variant:t,size:s,title:r||"",description:a}})},removeNotification:(e,{payload:t})=>(0,o.omit)(e,t)}}),b=(v.getInitialState,v.actions,v.reducer,"pluginUrl"),x=(0,c.createSlice)({name:b,initialState:"",reducers:{setPluginUrl:(e,{payload:t})=>t}}),_=x.getInitialState,N={selectPluginUrl:e=>(0,o.get)(e,b,"")};N.selectImageLink=(0,c.createSelector)([N.selectPluginUrl,(e,t,s="images")=>s,(e,t)=>t],((e,t,s)=>[(0,o.trimEnd)(e,"/"),(0,o.trim)(t,"/"),(0,o.trimStart)(s,"/")].join("/")));const k=x.actions,S=x.reducer,R=window.wp.apiFetch;var P=e.n(R);const L="request",O="success",I="error",C="idle",q="loading",$="showPlay",j="askPermission",A="isPlaying",M="wistiaEmbedPermission",B=(0,c.createSlice)({name:M,initialState:{value:!1,status:C,error:{}},reducers:{setWistiaEmbedPermissionValue:(e,{payload:t})=>{e.value=Boolean(t)}},extraReducers:e=>{e.addCase(`${M}/${L}`,(e=>{e.status=q})),e.addCase(`${M}/${O}`,((e,{payload:t})=>{e.status="success",e.value=Boolean(t&&t.value)})),e.addCase(`${M}/${I}`,((e,{payload:t})=>{e.status="error",e.value=Boolean(t&&t.value),e.error={code:(0,o.get)(t,"error.code",500),message:(0,o.get)(t,"error.message","Unknown")}}))}}),z=B.getInitialState,T={selectWistiaEmbedPermission:e=>(0,o.get)(e,M,{value:!1,status:C}),selectWistiaEmbedPermissionValue:e=>(0,o.get)(e,[M,"value"],!1),selectWistiaEmbedPermissionStatus:e=>(0,o.get)(e,[M,"status"],C),selectWistiaEmbedPermissionError:e=>(0,o.get)(e,[M,"error"],{})},U={...B.actions,setWistiaEmbedPermission:function*(e){yield{type:`${M}/${L}`};try{return yield{type:M,payload:e},{type:`${M}/${O}`,payload:{value:e}}}catch(t){return{type:`${M}/${I}`,payload:{error:t,value:e}}}}},F={[M]:async({payload:e})=>P()({path:"/yoast/v1/wistia_embed_permission",method:"POST",data:{value:Boolean(e)}})},W=B.reducer,Y=window.wp.i18n,H=window.yoast.propTypes;var V=e.n(H);V().string.isRequired;const D=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 11V7a4 4 0 118 0m-4 8v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2z"}))})),Z=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{fillRule:"evenodd",d:"M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z",clipRule:"evenodd"}))})),G=({learnMoreLink:e,thumbnail:s,wistiaEmbedPermission:r,upsellLink:a,isProductCopy:i,title:o,upsellLabel:c,newToText:d,bundleNote:m})=>{const{onClose:u,initialFocus:y}=(0,l.useModalContext)(),p={a:(0,t.createElement)(ce,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,t.createElement)(Z,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"})};return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,t.createElement)("div",{className:"yst-relative yst-w-full"},(0,t.createElement)(Ie,{videoId:"vmrahpfjxp",thumbnail:s,wistiaEmbedPermission:r}),(0,t.createElement)(l.Badge,{className:"yst-absolute yst-top-0 yst-right-2 yst-mt-2 yst-ml-2",variant:"info"},"Beta")),(0,t.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,t.createElement)("span",{className:"yst-logo-icon"}),d))),(0,t.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,t.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},o),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},i?(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,Y.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for product titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),p):(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s and %2$s are anchor tags; %3$s is the arrow icon. */ (0,Y.__)("Let AI do some of the thinking for you and help you save time. Get high-quality suggestions for titles and meta descriptions to make your content rank high and look good on social media. %1$sLearn more%2$s%3$s","wordpress-seo"),"","",""),p))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-10"},(0,t.createElement)(l.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:y},(0,t.createElement)(D,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),c,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Y.__)("(Opens in a new browser tab)","wordpress-seo")))),m,(0,t.createElement)(l.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:u},(0,Y.__)("Close","wordpress-seo"))))};G.propTypes={learnMoreLink:V().string.isRequired,upsellLink:V().string.isRequired,thumbnail:V().shape({src:V().string.isRequired,width:V().string,height:V().string}).isRequired,wistiaEmbedPermission:V().shape({value:V().bool.isRequired,status:V().string.isRequired,set:V().func.isRequired}).isRequired,title:V().string,upsellLabel:V().string,newToText:V().string,isProductCopy:V().bool,bundleNote:V().oneOfType([V().string,V().element])},G.defaultProps={title:(0,Y.__)("Use AI to write your titles & meta descriptions!","wordpress-seo"),upsellLabel:(0,Y.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,Y.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium"),newToText:"Yoast SEO Premium",isProductCopy:!1,bundleNote:""};var J;function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",K({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 1000 1000"},e),J||(J=t.createElement("path",{fill:"#fff",d:"M500 0C223.9 0 0 223.9 0 500s223.9 500 500 500 500-223.9 500-500S776.1 0 500 0Zm87.2 412.4c0-21.9 4.3-40.2 13.1-54.4s24-27.1 45.9-38.2l10.1-4.9c17.8-9 22.4-16.7 22.4-26 0-11.1-9.5-19.1-25-19.1-18.3 0-32.2 9.5-41.8 28.9l-24.7-24.8c5.4-11.6 14.1-20.9 25.8-28.1a70.8 70.8 0 0 1 38.9-11.1c17.8 0 33.3 4.6 45.9 14.2s19.4 22.7 19.4 39.4c0 26.6-15 42.9-43.1 57.3l-15.7 8c-16.8 8.5-25.1 16-27.4 29.4h85.4v35.4H587.2Zm-82.1 373.3c-157.8 0-285.7-127.9-285.7-285.7s127.9-285.7 285.7-285.7a286.4 286.4 0 0 1 55.9 5.5l-55.9 116.9c-90 0-163.3 73.3-163.3 163.3s73.3 163.3 163.3 163.3a162.8 162.8 0 0 0 106.4-39.6l61.8 107.2a283.9 283.9 0 0 1-168.2 54.8ZM705 704.1l-70.7-122.5H492.9l70.7-122.4H705l70.7 122.4Z"}))),X=window.ReactDOM;var ee,te,se;(te=ee||(ee={})).Pop="POP",te.Push="PUSH",te.Replace="REPLACE",function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(se||(se={})),new Set(["lazy","caseSensitive","path","id","index","children"]),Error;const re=["post","put","patch","delete"],ae=(new Set(re),["get",...re]);new Set(ae),new Set([301,302,303,307,308]),new Set([307,308]),Symbol("deferred"),t.Component,t.startTransition,new Promise((()=>{})),t.Component,new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);try{window.__reactRouterVersion="6"}catch(e){}var ne,ie,le,oe;new Map,t.startTransition,X.flushSync,t.useId,"undefined"!=typeof window&&void 0!==window.document&&window.document.createElement,(oe=ne||(ne={})).UseScrollRestoration="useScrollRestoration",oe.UseSubmit="useSubmit",oe.UseSubmitFetcher="useSubmitFetcher",oe.UseFetcher="useFetcher",oe.useViewTransitionState="useViewTransitionState",(le=ie||(ie={})).UseFetcher="useFetcher",le.UseFetchers="useFetchers",le.UseScrollRestoration="useScrollRestoration",V().string.isRequired,V().string;const ce=({href:e,children:s,...r})=>(0,t.createElement)(l.Link,{target:"_blank",rel:"noopener noreferrer",...r,href:e},s,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Y.__)("(Opens in a new browser tab)","wordpress-seo")));ce.propTypes={href:V().string.isRequired,children:V().node},ce.defaultProps={children:null};const de=t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 8l4 4m0 0l-4 4m4-4H3"}))}));var me,ue,ye;function pe(){return pe=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",pe({xmlns:"http://www.w3.org/2000/svg",id:"star-rating-half_svg__Layer_1","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),me||(me=t.createElement("defs",null,t.createElement("style",null,".star-rating-half_svg__cls-1{fill:#fbbf24}"))),ue||(ue=t.createElement("path",{d:"M250 392.04 98.15 471.87l29-169.09L4.3 183.03l169.77-24.67L250 4.52l75.93 153.84 169.77 24.67-122.85 119.75 29 169.09L250 392.04z",className:"star-rating-half_svg__cls-1"})),ye||(ye=t.createElement("path",{d:"m250 9.04 73.67 149.27.93 1.88 2.08.3 164.72 23.94-119.19 116.19-1.51 1.47.36 2.07 28.14 164.06-147.34-77.46-1.86-1-1.86 1-147.34 77.46 28.14-164.06.36-2.07-1.51-1.47L8.6 184.43l164.72-23.9 2.08-.3.93-1.88L250 9.04m0-9-77.25 156.49L0 181.64l125 121.89-29.51 172L250 394.3l154.51 81.23-29.51-172 125-121.89-172.75-25.11L250 0Z",className:"star-rating-half_svg__cls-1"})),t.createElement("path",{d:"m500 181.64-172.75-25.11L250 0v394.3l154.51 81.23L375 303.48l125-121.84z",style:{fill:"#f3f4f6"}}));function ge(){return ge=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",ge({xmlns:"http://www.w3.org/2000/svg","data-name":"Layer 1",viewBox:"0 0 500 475.53"},e),t.createElement("path",{d:"m250 0 77.25 156.53L500 181.64 375 303.48l29.51 172.05L250 394.3 95.49 475.53 125 303.48 0 181.64l172.75-25.11L250 0z",style:{fill:"#fbbf24"}}));var fe,Ee,ve,be,xe,_e,Ne,ke,Se;function Re(){return Re=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.createElement("svg",Re({xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 500 500"},e),fe||(fe=t.createElement("path",{fill:"#a4286a",d:"M80 0h340a80 80 0 0 1 80 80v420H80a80 80 0 0 1-80-80V80A80 80 0 0 1 80 0z"})),Ee||(Ee=t.createElement("path",{fill:"#6c2548",d:"M437.61 2 155.89 500H500V80a80 80 0 0 0-62.39-78z"})),ve||(ve=t.createElement("path",{fill:"#fff",d:"M74.4 337.3v34.9c21.6-.9 38.5-8 52.8-22.5s27.4-38 39.9-72.9l92.6-248h-44.8L140.3 236l-37-116.2h-41l54.4 139.8a57.54 57.54 0 0 1 0 41.8c-5.5 14.2-15.4 30.9-42.3 35.9z"})),be||(be=t.createElement("circle",{cx:368.33,cy:124.68,r:97.34,fill:"#9fda4f",transform:"rotate(-45 368.335 124.68)"})),xe||(xe=t.createElement("path",{fill:"#77b227",d:"m416.2 39.93-95.74 169.51A97.34 97.34 0 1 0 416.2 39.93z"})),_e||(_e=t.createElement("path",{fill:"#fec228",d:"m294.78 254.75-.15-.08-.13-.07a63.6 63.6 0 0 0-62.56 110.76h.13a63.6 63.6 0 0 0 62.71-110.67z"})),Ne||(Ne=t.createElement("path",{fill:"#f49a00",d:"m294.5 254.59-62.56 110.76a63.6 63.6 0 1 0 62.56-110.76z"})),ke||(ke=t.createElement("path",{fill:"#ff4e47",d:"M222.31 450.07A38.16 38.16 0 0 0 203 416.83a38.18 38.18 0 1 0 19.41 33.27z"})),Se||(Se=t.createElement("path",{fill:"#ed261f",d:"m202.9 416.8-37.54 66.48a38.17 38.17 0 0 0 37.54-66.48z"}))),Le=({link:e,linkProps:s,isPromotionActive:r})=>{let a=(0,n.useMemo)((()=>(0,Y.__)("Use AI to generate titles and meta descriptions, automatically redirect deleted pages, get 24/7 support, and much, much more!","wordpress-seo")),[]),i=(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,Y.__)("%1$sGet%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,t.createElement)("span",{className:"yst-whitespace-nowrap"})});const o=r("black-friday-2024-promotion");return o&&(a=(0,n.useMemo)((()=>(0,Y.__)("If you were thinking about upgrading, now's the time! 30% OFF ends 3rd Dec 11am (CET)","wordpress-seo")),[]),i=(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s and %2$s expand to a span wrap to avoid linebreaks. %3$s expands to "Yoast SEO Premium". */ (0,Y.__)("%1$sBuy%2$s %3$s","wordpress-seo"),"","","Yoast SEO Premium"),{nowrap:(0,t.createElement)("span",{className:"yst-whitespace-nowrap"})})),(0,t.createElement)("div",{className:"yst-p-6 yst-rounded-lg yst-text-white yst-bg-primary-500 yst-shadow"},(0,t.createElement)("figure",{className:"yst-logo-square yst-w-16 yst-h-16 yst-mx-auto yst-overflow-hidden yst-border yst-border-white yst-rounded-xl yst-rounded-br-none yst-relative yst-z-10 yst-mt-[-2.6rem]"},(0,t.createElement)(Pe,null)),o&&(0,t.createElement)("div",{className:"sidebar__sale_banner_container"},(0,t.createElement)("div",{className:"sidebar__sale_banner"},(0,t.createElement)("span",{className:"banner_text"},(0,Y.__)("30% OFF - BLACK FRIDAY","wordpress-seo")))),(0,t.createElement)(l.Title,{as:"h2",className:"yst-mt-6 yst-text-base yst-font-extrabold yst-text-white"},i),(0,t.createElement)("p",{className:"yst-mt-2"},a),(0,t.createElement)(l.Button,{as:"a",variant:"upsell",href:e,target:"_blank",rel:"noopener",className:"yst-flex yst-justify-center yst-gap-2 yst-mt-4 focus:yst-ring-offset-primary-500",...s},(0,t.createElement)("span",null,o?(0,Y.__)("Buy now","wordpress-seo"):i),(0,t.createElement)(de,{className:"yst-w-4 yst-h-4 yst-icon-rtl"})),(0,t.createElement)("p",{className:"yst-text-center yst-text-xs yst-mx-2 yst-font-light yst-leading-5 yst-mt-2"},!o&&(0,t.createElement)(t.Fragment,null,(0,Y.__)("Only $/€/£99 per year (ex VAT)","wordpress-seo"),(0,t.createElement)("br",null)),(0,Y.__)("30-day money back guarantee.","wordpress-seo")),(0,t.createElement)("hr",{className:"yst-border-t yst-border-primary-300 yst-my-4"}),(0,t.createElement)("a",{className:"yst-block yst-mt-4 yst-no-underline",href:"https://www.g2.com/products/yoast-yoast/reviews",target:"_blank",rel:"noopener noreferrer"},(0,t.createElement)("span",{className:"yst-font-medium yst-text-white hover:yst-underline"},(0,Y.__)("Read reviews from real users","wordpress-seo")),(0,t.createElement)("span",{className:"yst-flex yst-gap-2 yst-mt-2 yst-items-center"},(0,t.createElement)(Q,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)("span",{className:"yst-flex yst-gap-1"},(0,t.createElement)(he,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(he,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(he,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(he,{className:"yst-w-5 yst-h-5"}),(0,t.createElement)(we,{className:"yst-w-5 yst-h-5"})),(0,t.createElement)("span",{className:"yst-text-sm yst-font-semibold yst-text-white"},"4.6 / 5"))))};Le.propTypes={link:V().string.isRequired,linkProps:V().object,isPromotionActive:V().func},Le.defaultProps={linkProps:{},isPromotionActive:o.noop};const Oe=window.yoast.reactHelmet,Ie=({videoId:e,thumbnail:s,wistiaEmbedPermission:r})=>{const[a,i]=(0,n.useState)(r.value?A:$),o=(0,n.useCallback)((()=>i(A)),[i]),c=(0,n.useCallback)((()=>{r.value?o():i(j)}),[r.value,o,i]),d=(0,n.useCallback)((()=>i($)),[i]),m=(0,n.useCallback)((()=>{r.set(!0),o()}),[r.set,o]);return(0,t.createElement)(t.Fragment,null,r.value&&(0,t.createElement)(Oe.Helmet,null,(0,t.createElement)("script",{src:"https://fast.wistia.com/assets/external/E-v1.js",async:!0})),(0,t.createElement)("div",{className:"yst-relative yst-w-full yst-h-0 yst-pt-[56.25%] yst-overflow-hidden yst-rounded-md yst-drop-shadow-md yst-bg-white"},a===$&&(0,t.createElement)("button",{type:"button",className:"yst-absolute yst-inset-0 yst-button yst-p-0 yst-border-none yst-bg-white yst-transition-opacity yst-duration-1000 yst-opacity-100",onClick:c},(0,t.createElement)("img",{className:"yst-w-full yst-h-auto",alt:"",loading:"lazy",decoding:"async",...s})),a===j&&(0,t.createElement)("div",{className:"yst-absolute yst-inset-0 yst-flex yst-flex-col yst-items-center yst-justify-center yst-bg-white"},(0,t.createElement)("p",{className:"yst-max-w-xs yst-mx-auto yst-text-center"},r.status===q&&(0,t.createElement)(l.Spinner,null),r.status!==q&&(0,Y.sprintf)(/* translators: %1$s expands to Yoast SEO. %2$s expands to Wistia. */ (0,Y.__)("To see this video, you need to allow %1$s to load embedded videos from %2$s.","wordpress-seo"),"Yoast SEO","Wistia")),(0,t.createElement)("div",{className:"yst-flex yst-mt-6 yst-gap-x-4"},(0,t.createElement)(l.Button,{type:"button",variant:"secondary",onClick:d,disabled:r.status===q},(0,Y.__)("Deny","wordpress-seo")),(0,t.createElement)(l.Button,{type:"button",variant:"primary",onClick:m,disabled:r.status===q},(0,Y.__)("Allow","wordpress-seo")))),r.value&&a===A&&(0,t.createElement)("div",{className:"yst-absolute yst-w-full yst-h-full yst-top-0 yst-left-0"},null===e&&(0,t.createElement)(l.Spinner,{className:"yst-h-full yst-mx-auto"}),null!==e&&(0,t.createElement)("div",{className:`wistia_embed wistia_async_${e} videoFoam=true`}))))};Ie.propTypes={videoId:V().string.isRequired,thumbnail:V().shape({src:V().string.isRequired,width:V().string,height:V().string}).isRequired,wistiaEmbedPermission:V().shape({value:V().bool.isRequired,status:V().string.isRequired,set:V().func.isRequired}).isRequired};const Ce=({learnMoreLink:e,thumbnail:s,wistiaEmbedPermission:r,upsellLink:a,upsellLabel:i})=>{const{onClose:o,initialFocus:c}=(0,l.useModalContext)(),d={a:(0,t.createElement)(ce,{href:e,className:"yst-inline-flex yst-items-center yst-gap-1 yst-no-underline yst-font-medium",variant:"primary"}),ArrowNarrowRightIcon:(0,t.createElement)(Z,{className:"yst-w-4 yst-h-4 rtl:yst-rotate-180"}),br:(0,t.createElement)("br",null)};return(0,t.createElement)(t.Fragment,null,(0,t.createElement)("div",{className:"yst-px-10 yst-pt-10 yst-introduction-gradient yst-text-center"},(0,t.createElement)("div",{className:"yst-relative yst-w-full"},(0,t.createElement)(Ie,{videoId:"vun9z1dpfh",thumbnail:s,wistiaEmbedPermission:r}),(0,t.createElement)(l.Badge,{className:"yst-absolute yst-right-0 yst-mr-4 yst-text-center yst-justify-center",variant:"info",style:{top:"-8px"}},(0,Y.__)("Beta","wordpress-seo-premium"))),(0,t.createElement)("div",{className:"yst-mt-6 yst-text-xs yst-font-medium yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("span",{className:"yst-introduction-modal-uppercase yst-flex yst-gap-2 yst-items-center"},(0,t.createElement)("span",{className:"yst-logo-icon"}),"Yoast SEO Premium"))),(0,t.createElement)("div",{className:"yst-px-10 yst-pb-4 yst-flex yst-flex-col yst-items-center"},(0,t.createElement)("div",{className:"yst-mt-4 yst-mx-1.5 yst-text-center"},(0,t.createElement)("h3",{className:"yst-text-slate-900 yst-text-lg yst-font-medium"},(0,Y.sprintf)(/* translators: %s: Expands to "Yoast AI" */ (0,Y.__)("Optimize your SEO content with %s","wordpress-seo"),"Yoast AI")),(0,t.createElement)("div",{className:"yst-mt-2 yst-text-slate-600 yst-text-sm"},(0,n.createInterpolateElement)((0,Y.sprintf)(/* translators: %1$s is a break tag; %2$s and %3$s are anchor tags; %4$s is the arrow icon. */ (0,Y.__)("Make content editing a breeze! Optimize your SEO content with quick, actionable suggestions at the click of a button.%1$s%2$sLearn more%3$s%4$s","wordpress-seo"),"
    ","","",""),d))),(0,t.createElement)("div",{className:"yst-w-full yst-flex yst-mt-6"},(0,t.createElement)(l.Button,{as:"a",className:"yst-grow",size:"extra-large",variant:"upsell",href:a,target:"_blank",ref:c},(0,t.createElement)(D,{className:"yst--ml-1 yst-mr-2 yst-h-5 yst-w-5"}),i,(0,t.createElement)("span",{className:"yst-sr-only"},/* translators: Hidden accessibility text. */ (0,Y.__)("(Opens in a new browser tab)","wordpress-seo")))),(0,t.createElement)(l.Button,{as:"a",className:"yst-mt-4",variant:"tertiary",onClick:o},(0,Y.__)("Close","wordpress-seo"))))};Ce.propTypes={learnMoreLink:V().string.isRequired,upsellLink:V().string.isRequired,thumbnail:V().shape({src:V().string.isRequired,width:V().string,height:V().string}).isRequired,wistiaEmbedPermission:V().shape({value:V().bool.isRequired,status:V().string.isRequired,set:V().func.isRequired}).isRequired,upsellLabel:V().string},Ce.defaultProps={upsellLabel:(0,Y.sprintf)(/* translators: %1$s expands to Yoast SEO Premium. */ (0,Y.__)("Unlock with %1$s","wordpress-seo"),"Yoast SEO Premium")},t.forwardRef((function(e,s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:2,stroke:"currentColor","aria-hidden":"true",ref:s},e),t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"}))})),V().bool.isRequired,V().func,V().func,V().string.isRequired,V().string.isRequired,V().string.isRequired,V().string.isRequired;const qe="yoast-seo/introductions",$e=()=>{const e=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell-learn-more")),[]),r=(0,s.useSelect)((e=>e(qe).selectLink("https://yoa.st/ai-fix-assessments-upsell")),[]),a=(0,s.useSelect)((e=>e(qe).selectImageLink("ai-fix-assessments-thumbnail.png")),[]),i=(0,n.useMemo)((()=>({src:a,width:"432",height:"244"})),[a]),l=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionValue()),[]),o=(0,s.useSelect)((e=>e(qe).selectWistiaEmbedPermissionStatus()),[]),{setWistiaEmbedPermission:c}=(0,s.useDispatch)(qe),d=(0,n.useMemo)((()=>({value:l,status:o,set:c})),[l,o,c]);return(0,t.createElement)(Ce,{learnMoreLink:e,upsellLink:r,thumbnail:i,wistiaEmbedPermission:d})};window.YoastSEO=window.YoastSEO||{};const je=(0,n.createContext)({}),Ae=({children:e,initialComponents:r})=>{const[a,i]=(0,n.useState)(r),l=(0,s.useSelect)((e=>e(qe).selectIntroductions()),[]),c=(0,n.useCallback)(((e,t)=>{(0,o.find)(l,{id:e})?i((s=>({...s,[e]:t}))):console.error("Warning: Introductions received a registration for an unknown key:",e)}),[l,i]);return(0,n.useEffect)((()=>{window.YoastSEO._registerIntroductionComponent=c}),[c]),(0,t.createElement)(je.Provider,{value:a},e)};Ae.propTypes={children:V().node.isRequired,initialComponents:V().object.isRequired};const Me=()=>{const e=(0,s.useSelect)((e=>e(qe).selectCurrentIntroduction()),[]),r=(0,n.useContext)(je),a=(0,n.useMemo)((()=>null==r?void 0:r[null==e?void 0:e.id]),[e,r]);return a?(0,t.createElement)(a,null):null},Be=({children:e})=>{const[s,r]=(0,n.useState)(!0),a=(0,n.useRef)(null),i=(0,n.useCallback)((()=>r(!1)),[]);return(0,t.createElement)(l.Modal,{className:"yst-introduction-modal yst-h-[calc(100vh - 1rem)] sm:yst-h-[calc(100vh - 2rem)] md:yst-h-[calc(100vh - 5rem)]) yst-overflow-y-auto",isOpen:s,onClose:i,initialFocus:a},(0,t.createElement)(l.Modal.Panel,{className:"yst-max-w-lg yst-p-0 yst-rounded-3xl"},e))};Be.propTypes={children:V().node.isRequired};const ze="introductions",Te=(0,c.createEntityAdapter)({selectId:e=>e.id,sortComparer:(e,t)=>e.priority===t.priority?0:e.priority({id:e.id||(0,c.nanoid)(),priority:e.priority||0}),Fe=(0,c.createSlice)({name:ze,initialState:Te.getInitialState({current:0}),reducers:{addIntroduction:{reducer:Te.addOne,prepare:e=>({payload:Ue(e)})},addIntroductions:{reducer:Te.addMany,prepare:e=>({payload:(0,o.map)(e,Ue)})},setIntroductions:{reducer:Te.setAll,prepare:e=>({payload:(0,o.map)(e,Ue)})}}}),We=Fe.getInitialState,Ye=Te.getSelectors((e=>(0,o.get)(e,ze,{}))),He={selectCurrentIntroductionIndex:e=>(0,o.get)(e,[ze,"current"],0),selectIntroduction:Ye.selectById,selectIntroductions:Ye.selectAll};He.selectCurrentIntroduction=(0,c.createSelector)([He.selectCurrentIntroductionIndex,He.selectIntroductions],((e,t)=>t[e]));const Ve=Fe.actions,De=Fe.reducer,Ze="wpseoIntroductions";a()((()=>{const e=(0,o.get)(window,`${Ze}.introductions`,[]);if((0,o.isEmpty)(e))return;((e={})=>{(0,s.register)((e=>(0,s.createReduxStore)(qe,{actions:{...Ve,...f,...k,...U},selectors:{...He,...h,...N,...T},initialState:(0,o.merge)({},{[ze]:We(),[p]:g(),[b]:_(),[M]:z()},e),reducer:(0,s.combineReducers)({[ze]:De,[p]:E,[b]:S,[M]:W}),controls:{...F}}))(e))})({[p]:(0,o.get)(window,`${Ze}.linkParams`,{}),[b]:(0,o.get)(window,`${Ze}.pluginUrl`,""),[M]:{value:"1"===(0,o.get)(window,`${Ze}.wistiaEmbedPermission`,!1)}}),(0,s.dispatch)(qe).setIntroductions(e);const r={isRtl:Boolean((0,o.get)(window,`${Ze}.isRtl`,!1))},a={"ai-fix-assessments-upsell":$e},c=document.createElement("div");c.id="wpseo-introductions",document.body.appendChild(c),(0,n.render)((0,t.createElement)(l.Root,{context:r},(0,t.createElement)(Ae,{initialComponents:a},(0,t.createElement)(Be,null,(0,t.createElement)(Me,null)))),c,(()=>{(0,i.doAction)("yoast.introductions.ready")}))}))})();js/dist/react-select.js000064400000266555147206602470011067 0ustar00(()=>{var e={6043:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var r=n(9664);const o=function(e){function t(e,r,s,l,d){for(var f,h,m,g,y,O=0,S=0,A=0,x=0,w=0,P=0,L=m=f=0,T=0,R=0,B=0,_=0,N=s.length,H=N-1,U="",z="",W="",G="";Tf)&&(_=(U=U.replace(" ",":")).length),0r&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(g,"$1"+e.trim());case 58:return e.trim()+t.replace(g,"$1"+e.trim());default:if(0<1*n&&0s.charCodeAt(8))break;case 115:u=u.replace(s,"-webkit-"+s)+";"+u;break;case 207:case 102:u=u.replace(s,"-webkit-"+(102r.charCodeAt(0)&&(r=r.trim()),r=[r],0{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(2578);const o=function(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";n.d(t,{O:()=>m});const r=function(e){for(var t,n=e.length,r=n^n,o=0;n>=4;)t=1540483477*(65535&(t=255&e.charCodeAt(o)|(255&e.charCodeAt(++o))<<8|(255&e.charCodeAt(++o))<<16|(255&e.charCodeAt(++o))<<24))+((1540483477*(t>>>16)&65535)<<16),r=1540483477*(65535&r)+((1540483477*(r>>>16)&65535)<<16)^(t=1540483477*(65535&(t^=t>>>24))+((1540483477*(t>>>16)&65535)<<16)),n-=4,++o;switch(n){case 3:r^=(255&e.charCodeAt(o+2))<<16;case 2:r^=(255&e.charCodeAt(o+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(o)))+((1540483477*(r>>>16)&65535)<<16)}return r=1540483477*(65535&(r^=r>>>13))+((1540483477*(r>>>16)&65535)<<16),((r^=r>>>15)>>>0).toString(36)},o={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var i,u=/[A-Z]|^ms/g,a=/_EMO_([^_]+?)_([^]*?)_EMO_/g,s=function(e){return 45===e.charCodeAt(1)},l=function(e){return null!=e&&"boolean"!=typeof e},c=(i={},function(e){return void 0===i[e]&&(i[e]=s(t=e)?t:t.replace(u,"-$&").toLowerCase()),i[e];var t}),p=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(a,(function(e,t,n){return f={name:t,styles:n,next:f},t}))}return 1===o[e]||s(e)||"number"!=typeof t||0===t?t:t+"px"};function d(e,t,n,r){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return f={name:n.name,styles:n.styles,next:f},n.name;if(void 0!==n.styles){var o=n.next;if(void 0!==o)for(;void 0!==o;)f={name:o.name,styles:o.styles,next:f},o=o.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o{"use strict";n.d(t,{m:()=>r});var r=function(){function e(e){this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.before=null}var t=e.prototype;return t.insert=function(e){if(this.ctr%(this.isSpeedy?65e3:1)==0){var t,n=function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t}(this);t=0===this.tags.length?this.before:this.tags[this.tags.length-1].nextSibling,this.container.insertBefore(n,t),this.tags.push(n)}var r=this.tags[this.tags.length-1];if(this.isSpeedy){var o=function(e){if(e.sheet)return e.sheet;for(var t=0;t{"use strict";function r(e,t){if(e.length!==t.length)return!1;for(var n=0;no});const o=function(e,t){var n;void 0===t&&(t=r);var o,i=[],u=!1;return function(){for(var r=[],a=0;a{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach((function(t){return delete e[t]}))}(o),o.className=this.props.inputClassName,o.id=this.state.inputId,o.style=n,u.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),u.default.createElement("input",r({},o,{ref:this.inputRef})),u.default.createElement("div",{ref:this.sizerRef,style:l},e),this.props.placeholder?u.default.createElement("div",{ref:this.placeHolderSizerRef,style:l},this.props.placeholder):null)}}]),t}(i.Component);h.propTypes={className:a.default.string,defaultValue:a.default.any,extraWidth:a.default.oneOfType([a.default.number,a.default.string]),id:a.default.string,injectStyles:a.default.bool,inputClassName:a.default.string,inputRef:a.default.func,inputStyle:a.default.object,minWidth:a.default.oneOfType([a.default.number,a.default.string]),onAutosize:a.default.func,onChange:a.default.func,placeholder:a.default.string,placeholderIsMinWidth:a.default.bool,style:a.default.object,value:a.default.any},h.defaultProps={minWidth:1,injectStyles:!0},t.default=h},3082:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(9196),i=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;n(845),n(3585),n(1850),n(5890);var u=n(4039);n(148);var a=n(3117);n(3998),n(5639);var s=n(7622);function l(){return l=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(n,["loadOptions","isLoading"]),u=this.state,a=u.defaultOptions,s=u.inputValue,c=u.isLoading,p=u.loadedInputValue,d=u.loadedOptions,f=u.passEmptyOptions?[]:s&&p?d:a||[];return i.createElement(e,l({},o,{ref:function(e){t.select=e},options:f,isLoading:c||r,onInputChange:this.handleInputChange}))},o}(o.Component),t.defaultProps=c,n},d=p(s.manageState(a.Select));t.default=d,t.defaultProps=c,t.makeAsyncSelect=p},3117:(e,t,n)=>{"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var o=n(9196),i=r(o),u=r(n(845)),a=n(3585),s=n(1850),l=n(4039),c=n(148),p=r(n(3998)),d=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}],f=function(e){for(var t=0;t-1}};function b(){return b=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,["in","out","onExited","appear","enter","exit","innerRef","emotion"]));return a.jsx("input",C({ref:t},n,{css:p({label:"dummyInput",background:0,border:0,fontSize:"inherit",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(0)"},"")}))}var S=function(e){var t,n;function r(){return e.apply(this,arguments)||this}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.componentDidMount=function(){this.props.innerRef(s.findDOMNode(this))},o.componentWillUnmount=function(){this.props.innerRef(null)},o.render=function(){return this.props.children},r}(o.Component),A=["boxSizing","height","overflow","paddingRight","position"],x={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function w(e){e.preventDefault()}function F(e){e.stopPropagation()}function D(){var e=this.scrollTop,t=this.scrollHeight,n=e+this.offsetHeight;0===e?this.scrollTop=1:n===t&&(this.scrollTop=e-1)}function I(){return"ontouchstart"in window||navigator.maxTouchPoints}var k=!(!window.document||!window.document.createElement),M=0,P=function(e){var t,n;function r(){for(var t,n=arguments.length,r=new Array(n),o=0;o0,h=c-p-l,m=!1;h>n&&t.isBottom&&(i&&i(e),t.isBottom=!1),f&&t.isTop&&(a&&a(e),t.isTop=!1),f&&n>h?(o&&!t.isBottom&&o(e),d.scrollTop=c,m=!0,t.isBottom=!0):!f&&-n>l&&(u&&!t.isTop&&u(e),d.scrollTop=0,m=!0,t.isTop=!0),m&&t.cancelScroll(e)},t.onWheel=function(e){t.handleEventDelta(e,e.deltaY)},t.onTouchStart=function(e){t.touchStart=e.changedTouches[0].clientY},t.onTouchMove=function(e){var n=t.touchStart-e.changedTouches[0].clientY;t.handleEventDelta(e,n)},t.getScrollTarget=function(e){t.scrollTarget=e},t}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.componentDidMount=function(){this.startListening(this.scrollTarget)},o.componentWillUnmount=function(){this.stopListening(this.scrollTarget)},o.startListening=function(e){e&&("function"==typeof e.addEventListener&&e.addEventListener("wheel",this.onWheel,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.addEventListener&&e.addEventListener("touchmove",this.onTouchMove,!1))},o.stopListening=function(e){"function"==typeof e.removeEventListener&&e.removeEventListener("wheel",this.onWheel,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchstart",this.onTouchStart,!1),"function"==typeof e.removeEventListener&&e.removeEventListener("touchmove",this.onTouchMove,!1)},o.render=function(){return i.createElement(S,{innerRef:this.getScrollTarget},this.props.children)},r}(o.Component);function T(e){var t=e.isEnabled,n=void 0===t||t,r=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["isEnabled"]);return n?i.createElement(j,r):r.children}var R=function(e,t){void 0===t&&(t={});var n=t,r=n.isSearchable,o=n.isMulti,i=n.label,u=n.isDisabled;switch(e){case"menu":return"Use Up and Down to choose options"+(u?"":", press Enter to select the currently focused option")+", press Escape to exit the menu, press Tab to select the option and exit the menu.";case"input":return(i||"Select")+" is focused "+(r?",type to refine list":"")+", press Down to open the menu, "+(o?" press left to focus selected values":"");case"value":return"Use left and right to toggle between focused values, press Backspace to remove the currently focused value"}},B=function(e,t){var n=t.value,r=t.isDisabled;if(n)switch(e){case"deselect-option":case"pop-value":case"remove-value":return"option "+n+", deselected.";case"select-option":return r?"option "+n+" is disabled. Select another option.":"option "+n+", selected."}},_=function(e){return!!e.isDisabled};function N(){return N=Object.assign||function(e){for(var t=1;t5||o>5}},n.onTouchEnd=function(e){n.userIsDragging||(n.controlRef&&!n.controlRef.contains(e.target)&&n.menuListRef&&!n.menuListRef.contains(e.target)&&n.blurInput(),n.initialTouchX=0,n.initialTouchY=0)},n.onControlTouchEnd=function(e){n.userIsDragging||n.onControlMouseDown(e)},n.onClearIndicatorTouchEnd=function(e){n.userIsDragging||n.onClearIndicatorMouseDown(e)},n.onDropdownIndicatorTouchEnd=function(e){n.userIsDragging||n.onDropdownIndicatorMouseDown(e)},n.handleInputChange=function(e){var t=e.currentTarget.value;n.inputIsHiddenAfterUpdate=!1,n.onInputChange(t,{action:"input-change"}),n.onMenuOpen()},n.onInputFocus=function(e){var t=n.props,r=t.isSearchable,o=t.isMulti;n.props.onFocus&&n.props.onFocus(e),n.inputIsHiddenAfterUpdate=!1,n.announceAriaLiveContext({event:"input",context:{isSearchable:r,isMulti:o}}),n.setState({isFocused:!0}),(n.openAfterFocus||n.props.openMenuOnFocus)&&n.openMenu("first"),n.openAfterFocus=!1},n.onInputBlur=function(e){n.menuListRef&&n.menuListRef.contains(document.activeElement)?n.inputRef.focus():(n.props.onBlur&&n.props.onBlur(e),n.onInputChange("",{action:"input-blur"}),n.onMenuClose(),n.setState({focusedValue:null,isFocused:!1}))},n.onOptionHover=function(e){n.blockOptionHover||n.state.focusedOption===e||n.setState({focusedOption:e})},n.shouldHideSelectedOptions=function(){var e=n.props,t=e.hideSelectedOptions,r=e.isMulti;return void 0===t?r:t},n.onKeyDown=function(e){var t=n.props,r=t.isMulti,o=t.backspaceRemovesValue,i=t.escapeClearsValue,u=t.inputValue,a=t.isClearable,s=t.isDisabled,l=t.menuIsOpen,c=t.onKeyDown,p=t.tabSelectsValue,d=t.openMenuOnFocus,f=n.state,h=f.focusedOption,m=f.focusedValue,g=f.selectValue;if(!(s||"function"==typeof c&&(c(e),e.defaultPrevented))){switch(n.blockOptionHover=!0,e.key){case"ArrowLeft":if(!r||u)return;n.focusValue("previous");break;case"ArrowRight":if(!r||u)return;n.focusValue("next");break;case"Delete":case"Backspace":if(u)return;if(m)n.removeValue(m);else{if(!o)return;r?n.popValue():a&&n.clearValue()}break;case"Tab":if(n.isComposing)return;if(e.shiftKey||!l||!p||!h||d&&n.isOptionSelected(h,g))return;n.selectOption(h);break;case"Enter":if(229===e.keyCode)break;if(l){if(!h)return;if(n.isComposing)return;n.selectOption(h);break}return;case"Escape":l?(n.inputIsHiddenAfterUpdate=!1,n.onInputChange("",{action:"menu-close"}),n.onMenuClose()):a&&i&&n.clearValue();break;case" ":if(u)return;if(!l){n.openMenu("first");break}if(!h)return;n.selectOption(h);break;case"ArrowUp":l?n.focusOption("up"):n.openMenu("last");break;case"ArrowDown":l?n.focusOption("down"):n.openMenu("first");break;case"PageUp":if(!l)return;n.focusOption("pageup");break;case"PageDown":if(!l)return;n.focusOption("pagedown");break;case"Home":if(!l)return;n.focusOption("first");break;case"End":if(!l)return;n.focusOption("last");break;default:return}e.preventDefault()}},n.buildMenuOptions=function(e,t){var r=e.inputValue,o=void 0===r?"":r,i=e.options,u=function(e,r){var i=n.isOptionDisabled(e,t),u=n.isOptionSelected(e,t),a=n.getOptionLabel(e),s=n.getOptionValue(e);if(!(n.shouldHideSelectedOptions()&&u||!n.filterOption({label:a,value:s,data:e},o))){var l=i?void 0:function(){return n.onOptionHover(e)},c=i?void 0:function(){return n.selectOption(e)},p=n.getElementId("option")+"-"+r;return{innerProps:{id:p,onClick:c,onMouseMove:l,onMouseOver:l,tabIndex:-1},data:e,isDisabled:i,isSelected:u,key:p,label:a,type:"option",value:s}}};return i.reduce((function(e,t,r){if(t.options){n.hasGroups||(n.hasGroups=!0);var o=t.options.map((function(t,n){var o=u(t,r+"-"+n);return o&&e.focusable.push(t),o})).filter(Boolean);if(o.length){var i=n.getElementId("group")+"-"+r;e.render.push({type:"group",key:i,data:t,options:o})}}else{var a=u(t,""+r);a&&(e.render.push(a),e.focusable.push(t))}return e}),{render:[],focusable:[]})};var r=t.value;n.cacheComponents=u(n.cacheComponents,c.exportedEqual).bind(W(W(n))),n.cacheComponents(t.components),n.instancePrefix="react-select-"+(n.props.instanceId||++$);var o=l.cleanValue(r);n.buildMenuOptions=u(n.buildMenuOptions,(function(e,t){var n=e,r=n[0],o=n[1],i=t,u=i[0],a=i[1];return c.exportedEqual(o,a)&&c.exportedEqual(r.inputValue,u.inputValue)&&c.exportedEqual(r.options,u.options)})).bind(W(W(n)));var i=t.menuIsOpen?n.buildMenuOptions(t,o):{render:[],focusable:[]};return n.state.menuOptions=i,n.state.selectValue=o,n}n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=r.prototype;return o.componentDidMount=function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput()},o.UNSAFE_componentWillReceiveProps=function(e){var t=this.props,n=t.options,r=t.value,o=t.menuIsOpen,i=t.inputValue;if(this.cacheComponents(e.components),e.value!==r||e.options!==n||e.menuIsOpen!==o||e.inputValue!==i){var u=l.cleanValue(e.value),a=e.menuIsOpen?this.buildMenuOptions(e,u):{render:[],focusable:[]},s=this.getNextFocusedValue(u),c=this.getNextFocusedOption(a.focusable);this.setState({menuOptions:a,selectValue:u,focusedOption:c,focusedValue:s})}null!=this.inputIsHiddenAfterUpdate&&(this.setState({inputIsHidden:this.inputIsHiddenAfterUpdate}),delete this.inputIsHiddenAfterUpdate)},o.componentDidUpdate=function(e){var t=this.props,n=t.isDisabled,r=t.menuIsOpen,o=this.state.isFocused;(o&&!n&&e.isDisabled||o&&r&&!e.menuIsOpen)&&this.focusInput(),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(l.scrollIntoView(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)},o.componentWillUnmount=function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)},o.onMenuOpen=function(){this.props.onMenuOpen()},o.onMenuClose=function(){var e=this.props,t=e.isSearchable,n=e.isMulti;this.announceAriaLiveContext({event:"input",context:{isSearchable:t,isMulti:n}}),this.onInputChange("",{action:"menu-close"}),this.props.onMenuClose()},o.onInputChange=function(e,t){this.props.onInputChange(e,t)},o.focusInput=function(){this.inputRef&&this.inputRef.focus()},o.blurInput=function(){this.inputRef&&this.inputRef.blur()},o.openMenu=function(e){var t=this,n=this.state,r=n.selectValue,o=n.isFocused,i=this.buildMenuOptions(this.props,r),u=this.props.isMulti,a="first"===e?0:i.focusable.length-1;if(!u){var s=i.focusable.indexOf(r[0]);s>-1&&(a=s)}this.scrollToFocusedOptionOnUpdate=!(o&&this.menuListRef),this.inputIsHiddenAfterUpdate=!1,this.setState({menuOptions:i,focusedValue:null,focusedOption:i.focusable[a]},(function(){t.onMenuOpen(),t.announceAriaLiveContext({event:"menu"})}))},o.focusValue=function(e){var t=this.props,n=t.isMulti,r=t.isSearchable,o=this.state,i=o.selectValue,u=o.focusedValue;if(n){this.setState({focusedOption:null});var a=i.indexOf(u);u||(a=-1,this.announceAriaLiveContext({event:"value"}));var s=i.length-1,l=-1;if(i.length){switch(e){case"previous":l=0===a?0:-1===a?s:a-1;break;case"next":a>-1&&a0?u-1:o.length-1:"down"===e?i=(u+1)%o.length:"pageup"===e?(i=u-t)<0&&(i=0):"pagedown"===e?(i=u+t)>o.length-1&&(i=o.length-1):"last"===e&&(i=o.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:o[i],focusedValue:null}),this.announceAriaLiveContext({event:"menu",context:{isDisabled:_(o[i])}})}},o.getTheme=function(){return this.props.theme?"function"==typeof this.props.theme?this.props.theme(U):z({},U,this.props.theme):U},o.getCommonProps=function(){var e=this.clearValue,t=this.getStyles,n=this.setValue,r=this.selectOption,o=this.props,i=o.classNamePrefix,u=o.isMulti,a=o.isRtl,s=o.options,c=this.state.selectValue,p=this.hasValue();return{cx:l.classNames.bind(null,i),clearValue:e,getStyles:t,getValue:function(){return c},hasValue:p,isMulti:u,isRtl:a,options:s,selectOption:r,setValue:n,selectProps:o,theme:this.getTheme()}},o.getNextFocusedValue=function(e){if(this.clearFocusValueOnUpdate)return this.clearFocusValueOnUpdate=!1,null;var t=this.state,n=t.focusedValue,r=t.selectValue.indexOf(n);if(r>-1){if(e.indexOf(n)>-1)return n;if(r-1?t:e[0]},o.hasValue=function(){return this.state.selectValue.length>0},o.hasOptions=function(){return!!this.state.menuOptions.render.length},o.countOptions=function(){return this.state.menuOptions.focusable.length},o.isClearable=function(){var e=this.props,t=e.isClearable,n=e.isMulti;return void 0===t?n:t},o.isOptionDisabled=function(e,t){return"function"==typeof this.props.isOptionDisabled&&this.props.isOptionDisabled(e,t)},o.isOptionSelected=function(e,t){var n=this;if(t.indexOf(e)>-1)return!0;if("function"==typeof this.props.isOptionSelected)return this.props.isOptionSelected(e,t);var r=this.getOptionValue(e);return t.some((function(e){return n.getOptionValue(e)===r}))},o.filterOption=function(e,t){return!this.props.filterOption||this.props.filterOption(e,t)},o.formatOptionLabel=function(e,t){if("function"==typeof this.props.formatOptionLabel){var n=this.props.inputValue,r=this.state.selectValue;return this.props.formatOptionLabel(e,{context:t,inputValue:n,selectValue:r})}return this.getOptionLabel(e)},o.formatGroupLabel=function(e){return this.props.formatGroupLabel(e)},o.startListeningComposition=function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))},o.stopListeningComposition=function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))},o.startListeningToTouch=function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))},o.stopListeningToTouch=function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))},o.constructAriaLiveMessage=function(){var e=this.state,t=e.ariaLiveContext,n=e.selectValue,r=e.focusedValue,o=e.focusedOption,i=this.props,u=i.options,a=i.menuIsOpen,s=i.inputValue,l=i.screenReaderStatus,c=r?function(e){var t=e.focusedValue,n=e.selectValue;return"value "+(0,e.getOptionLabel)(t)+" focused, "+(n.indexOf(t)+1)+" of "+n.length+"."}({focusedValue:r,getOptionLabel:this.getOptionLabel,selectValue:n}):"",p=o&&a?function(e){var t=e.focusedOption,n=e.options;return"option "+(0,e.getOptionLabel)(t)+" focused"+(t.isDisabled?" disabled":"")+", "+(n.indexOf(t)+1)+" of "+n.length+"."}({focusedOption:o,getOptionLabel:this.getOptionLabel,options:u}):"",d=function(e){var t=e.inputValue;return e.screenReaderMessage+(t?" for search term "+t:"")+"."}({inputValue:s,screenReaderMessage:l({count:this.countOptions()})});return c+" "+p+" "+d+" "+t},o.renderInput=function(){var e=this.props,t=e.isDisabled,n=e.isSearchable,r=e.inputId,o=e.inputValue,u=e.tabIndex,a=this.components.Input,s=this.state.inputIsHidden,c=r||this.getElementId("input"),p={"aria-autocomplete":"list","aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"]};if(!n)return i.createElement(O,z({id:c,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:l.noop,onFocus:this.onInputFocus,readOnly:!0,disabled:t,tabIndex:u,value:""},p));var d=this.commonProps,f=d.cx,h=d.theme,m=d.selectProps;return i.createElement(a,z({autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",cx:f,getStyles:this.getStyles,id:c,innerRef:this.getInputRef,isDisabled:t,isHidden:s,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,selectProps:m,spellCheck:"false",tabIndex:u,theme:h,type:"text",value:o},p))},o.renderPlaceholderOrValue=function(){var e=this,t=this.components,n=t.MultiValue,r=t.MultiValueContainer,o=t.MultiValueLabel,u=t.MultiValueRemove,a=t.SingleValue,s=t.Placeholder,l=this.commonProps,c=this.props,p=c.controlShouldRenderValue,d=c.isDisabled,f=c.isMulti,h=c.inputValue,m=c.placeholder,g=this.state,v=g.selectValue,b=g.focusedValue,E=g.isFocused;if(!this.hasValue()||!p)return h?null:i.createElement(s,z({},l,{key:"placeholder",isDisabled:d,isFocused:E}),m);if(f){var y=v.map((function(t,a){var s=t===b;return i.createElement(n,z({},l,{components:{Container:r,Label:o,Remove:u},isFocused:s,isDisabled:d,key:e.getOptionValue(t),index:a,removeProps:{onClick:function(){return e.removeValue(t)},onTouchEnd:function(){return e.removeValue(t)},onMouseDown:function(e){e.preventDefault(),e.stopPropagation()}},data:t}),e.formatOptionLabel(t,"value"))}));return y}if(h)return null;var C=v[0];return i.createElement(a,z({},l,{data:C,isDisabled:d}),this.formatOptionLabel(C,"value"))},o.renderClearIndicator=function(){var e=this.components.ClearIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,u=this.state.isFocused;if(!this.isClearable()||!e||r||!this.hasValue()||o)return null;var a={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return i.createElement(e,z({},t,{innerProps:a,isFocused:u}))},o.renderLoadingIndicator=function(){var e=this.components.LoadingIndicator,t=this.commonProps,n=this.props,r=n.isDisabled,o=n.isLoading,u=this.state.isFocused;return e&&o?i.createElement(e,z({},t,{innerProps:{"aria-hidden":"true"},isDisabled:r,isFocused:u})):null},o.renderIndicatorSeparator=function(){var e=this.components,t=e.DropdownIndicator,n=e.IndicatorSeparator;if(!t||!n)return null;var r=this.commonProps,o=this.props.isDisabled,u=this.state.isFocused;return i.createElement(n,z({},r,{isDisabled:o,isFocused:u}))},o.renderDropdownIndicator=function(){var e=this.components.DropdownIndicator;if(!e)return null;var t=this.commonProps,n=this.props.isDisabled,r=this.state.isFocused,o={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return i.createElement(e,z({},t,{innerProps:o,isDisabled:n,isFocused:r}))},o.renderMenu=function(){var e=this,t=this.components,n=t.Group,r=t.GroupHeading,o=t.Menu,u=t.MenuList,a=t.MenuPortal,s=t.LoadingMessage,l=t.NoOptionsMessage,p=t.Option,d=this.commonProps,f=this.state,h=f.focusedOption,m=f.menuOptions,g=this.props,v=g.captureMenuScroll,b=g.inputValue,E=g.isLoading,y=g.loadingMessage,C=g.minMenuHeight,O=g.maxMenuHeight,S=g.menuIsOpen,A=g.menuPlacement,x=g.menuPosition,w=g.menuPortalTarget,F=g.menuShouldBlockScroll,D=g.menuShouldScrollIntoView,I=g.noOptionsMessage,k=g.onMenuScrollToTop,M=g.onMenuScrollToBottom;if(!S)return null;var P,V=function(t){var n=h===t.data;return t.innerRef=n?e.getFocusedOptionRef:void 0,i.createElement(p,z({},d,t,{isFocused:n}),e.formatOptionLabel(t.data,"menu"))};if(this.hasOptions())P=m.render.map((function(t){if("group"===t.type){t.type;var o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(t,["type"]),u=t.key+"-heading";return i.createElement(n,z({},d,o,{Heading:r,headingProps:{id:u},label:e.formatGroupLabel(t.data)}),t.options.map((function(e){return V(e)})))}if("option"===t.type)return V(t)}));else if(E){var j=y({inputValue:b});if(null===j)return null;P=i.createElement(s,d,j)}else{var R=I({inputValue:b});if(null===R)return null;P=i.createElement(l,d,R)}var B={minMenuHeight:C,maxMenuHeight:O,menuPlacement:A,menuPosition:x,menuShouldScrollIntoView:D},_=i.createElement(c.MenuPlacer,z({},d,B),(function(t){var n=t.ref,r=t.placerProps,a=r.placement,s=r.maxHeight;return i.createElement(o,z({},d,B,{innerRef:n,innerProps:{onMouseDown:e.onMenuMouseDown,onMouseMove:e.onMenuMouseMove},isLoading:E,placement:a}),i.createElement(T,{isEnabled:v,onTopArrive:k,onBottomArrive:M},i.createElement(L,{isEnabled:F},i.createElement(u,z({},d,{innerRef:e.getMenuListRef,isLoading:E,maxHeight:s}),P))))}));return w||"fixed"===x?i.createElement(a,z({},d,{appendTo:w,controlElement:this.controlRef,menuPlacement:A,menuPosition:x}),_):_},o.renderFormField=function(){var e=this,t=this.props,n=t.delimiter,r=t.isDisabled,o=t.isMulti,u=t.name,a=this.state.selectValue;if(u&&!r){if(o){if(n){var s=a.map((function(t){return e.getOptionValue(t)})).join(n);return i.createElement("input",{name:u,type:"hidden",value:s})}var l=a.length>0?a.map((function(t,n){return i.createElement("input",{key:"i-"+n,name:u,type:"hidden",value:e.getOptionValue(t)})})):i.createElement("input",{name:u,type:"hidden"});return i.createElement("div",null,l)}var c=a[0]?this.getOptionValue(a[0]):"";return i.createElement("input",{name:u,type:"hidden",value:c})}},o.renderLiveRegion=function(){return this.state.isFocused?i.createElement(y,{"aria-live":"polite"},i.createElement("p",{id:"aria-selection-event"}," ",this.state.ariaLiveSelection),i.createElement("p",{id:"aria-context"}," ",this.constructAriaLiveMessage())):null},o.render=function(){var e=this.components,t=e.Control,n=e.IndicatorsContainer,r=e.SelectContainer,o=e.ValueContainer,u=this.props,a=u.className,s=u.id,l=u.isDisabled,c=u.menuIsOpen,p=this.state.isFocused,d=this.commonProps=this.getCommonProps();return i.createElement(r,z({},d,{className:a,innerProps:{id:s,onKeyDown:this.onKeyDown},isDisabled:l,isFocused:p}),this.renderLiveRegion(),i.createElement(t,z({},d,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:l,isFocused:p,menuIsOpen:c}),i.createElement(o,z({},d,{isDisabled:l}),this.renderPlaceholderOrValue(),this.renderInput()),i.createElement(n,z({},d,{isDisabled:l}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())},r}(o.Component);Y.defaultProps=G,t.Select=Y,t.createFilter=v,t.defaultProps=G,t.defaultTheme=U,t.mergeStyles=function(e,t){void 0===t&&(t={});var n=N({},e);return Object.keys(t).forEach((function(r){e[r]?n[r]=function(n,o){return t[r](e[r](n,o),o)}:n[r]=t[r]})),n}},148:(e,t,n)=>{"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var o=n(9196),i=(r(o),n(3585)),u=n(1850),a=r(n(5890)),s=n(4039),l=r(n(3998)),c=r(n(5639));function p(){return p=Object.assign||function(e){for(var t=1;t=h)return{placement:"bottom",maxHeight:t};if(A>=h&&!u)return i&&s.animatedScrollTo(l,x,F),{placement:"bottom",maxHeight:t};if(!u&&A>=r||u&&O>=r)return i&&s.animatedScrollTo(l,x,F),{placement:"bottom",maxHeight:u?O-E:A-E};if("auto"===o||u){var D=t,I=u?C:S;return I>=r&&(D=Math.min(I-E-a.controlHeight,t)),{placement:"top",maxHeight:D}}if("bottom"===o)return s.scrollTo(l,x),{placement:"bottom",maxHeight:t};break;case"top":if(C>=h)return{placement:"top",maxHeight:t};if(S>=h&&!u)return i&&s.animatedScrollTo(l,w,F),{placement:"top",maxHeight:t};if(!u&&S>=r||u&&C>=r){var k=t;return(!u&&S>=r||u&&C>=r)&&(k=u?C-y:S-y),i&&s.animatedScrollTo(l,w,F),{placement:"top",maxHeight:k}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'+o+'".')}return c}({maxHeight:o,menuEl:e,minHeight:r,placement:i,shouldScroll:a&&!p,isFixedPosition:p,theme:l});c&&c(d),t.setState(d)}},t.getUpdatedProps=function(){var e=t.props.menuPlacement,n=t.state.placement||f(e);return p({},t.props,{placement:n,maxHeight:t.state.maxHeight})},t}return d(t,e),t.prototype.render=function(){return(0,this.props.children)({ref:this.getPlacement,placerProps:this.getUpdatedProps()})},t}(o.Component);h.contextTypes={getPortalPlacement:a.func};var m=function(e){var t=e.theme,n=t.spacing.baseUnit;return{color:t.colors.neutral40,padding:2*n+"px "+3*n+"px",textAlign:"center"}},g=m,v=m,b=function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.innerProps;return i.jsx("div",p({css:o("noOptionsMessage",e),className:r({"menu-notice":!0,"menu-notice--no-options":!0},n)},u),t)};b.defaultProps={children:"No options"};var E=function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.innerProps;return i.jsx("div",p({css:o("loadingMessage",e),className:r({"menu-notice":!0,"menu-notice--loading":!0},n)},u),t)};E.defaultProps={children:"Loading..."};var y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o=0||(o[n]=e[n]);return o}(e,["size"]);return i.jsx("svg",F({height:t,width:t,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:D},n))},k=function(e){return i.jsx(I,F({size:20},e),i.jsx("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},M=function(e){return i.jsx(I,F({size:20},e),i.jsx("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},P=function(e){var t=e.isFocused,n=e.theme,r=n.spacing.baseUnit,o=n.colors;return{label:"indicatorContainer",color:t?o.neutral60:o.neutral20,display:"flex",padding:2*r,transition:"color 150ms",":hover":{color:t?o.neutral80:o.neutral40}}},V=P,L=P,j=i.keyframes(w()),T=function(e){var t=e.delay,n=e.offset;return i.jsx("span",{css:l({animation:j+" 1s ease-in-out "+t+"ms infinite;",backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":null,height:"1em",verticalAlign:"top",width:"1em"},"")})},R=function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerProps,u=e.isRtl;return i.jsx("div",F({},o,{css:r("loadingIndicator",e),className:n({indicator:!0,"loading-indicator":!0},t)}),i.jsx(T,{delay:0,offset:u}),i.jsx(T,{delay:160,offset:!0}),i.jsx(T,{delay:320,offset:!u}))};function B(){return B=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,["className","cx","getStyles","theme","selectProps"]));return i.jsx("div",_({css:r("groupHeading",_({theme:o},u)),className:n({"group-heading":!0},t)},u))},IndicatorsContainer:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles;return i.jsx("div",{css:o("indicatorsContainer",e),className:r({indicators:!0},n)},t)},IndicatorSeparator:function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerProps;return i.jsx("span",F({},o,{css:r("indicatorSeparator",e),className:n({"indicator-separator":!0},t)}))},Input:function(e){var t=e.className,n=e.cx,r=e.getStyles,o=e.innerRef,u=e.isHidden,a=e.isDisabled,s=e.theme,l=(e.selectProps,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","cx","getStyles","innerRef","isHidden","isDisabled","theme","selectProps"]));return i.jsx("div",{css:r("input",N({theme:s},l))},i.jsx(c,N({className:n({input:!0},t),inputRef:o,inputStyle:H(u),disabled:a},l)))},LoadingIndicator:R,Menu:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.innerRef,a=e.innerProps;return i.jsx("div",p({css:o("menu",e),className:r({menu:!0},n)},a,{ref:u}),t)},MenuList:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.isMulti,a=e.innerRef;return i.jsx("div",{css:o("menuList",e),className:r({"menu-list":!0,"menu-list--is-multi":u},n),ref:a},t)},MenuPortal:y,LoadingMessage:E,NoOptionsMessage:b,MultiValue:$,MultiValueContainer:W,MultiValueLabel:G,MultiValueRemove:function(e){var t=e.children,n=e.innerProps;return i.jsx("div",n,t||i.jsx(k,{size:14}))},Option:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.isDisabled,a=e.isFocused,s=e.isSelected,l=e.innerRef,c=e.innerProps;return i.jsx("div",Y({css:o("option",e),className:r({option:!0,"option--is-disabled":u,"option--is-focused":a,"option--is-selected":s},n),ref:l},c),t)},Placeholder:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.innerProps;return i.jsx("div",q({css:o("placeholder",e),className:r({placeholder:!0},n)},u),t)},SelectContainer:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.innerProps,a=e.isDisabled,s=e.isRtl;return i.jsx("div",x({css:o("container",e),className:r({"--is-disabled":a,"--is-rtl":s},n)},u),t)},SingleValue:function(e){var t=e.children,n=e.className,r=e.cx,o=e.getStyles,u=e.isDisabled,a=e.innerProps;return i.jsx("div",X({css:o("singleValue",e),className:r({"single-value":!0,"single-value--is-disabled":u},n)},a),t)},ValueContainer:function(e){var t=e.children,n=e.className,r=e.cx,o=e.isMulti,u=e.getStyles,a=e.hasValue;return i.jsx("div",{css:u("valueContainer",e),className:r({"value-container":!0,"value-container--is-multi":o,"value-container--has-value":a},n)},t)}};t.MenuPlacer=h,t.clearIndicatorCSS=L,t.components=Z,t.containerCSS=function(e){var t=e.isDisabled;return{label:"container",direction:e.isRtl?"rtl":null,pointerEvents:t?"none":null,position:"relative"}},t.css=function(e){var t=e.isDisabled,n=e.isFocused,r=e.theme,o=r.colors,i=r.borderRadius,u=r.spacing;return{label:"control",alignItems:"center",backgroundColor:t?o.neutral5:o.neutral0,borderColor:t?o.neutral10:n?o.primary:o.neutral20,borderRadius:i,borderStyle:"solid",borderWidth:1,boxShadow:n?"0 0 0 1px "+o.primary:null,cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:u.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms","&:hover":{borderColor:n?o.primary:o.neutral30}}},t.css$1=function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,o=n.colors;return{label:"singleValue",color:t?o.neutral40:o.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2,maxWidth:"calc(100% - "+2*r.baseUnit+"px)",overflow:"hidden",position:"absolute",textOverflow:"ellipsis",whiteSpace:"nowrap",top:"50%",transform:"translateY(-50%)"}},t.defaultComponents=function(e){return K({},Z,e.components)},t.dropdownIndicatorCSS=V,t.exportedEqual=function(e,t){try{return A(e,t)}catch(e){if(e.message&&e.message.match(/stack|recursion/i))return console.warn("Warning: react-fast-compare does not handle circular references.",e.name,e.message),!1;throw e}},t.groupCSS=function(e){var t=e.theme.spacing;return{paddingBottom:2*t.baseUnit,paddingTop:2*t.baseUnit}},t.groupHeadingCSS=function(e){var t=e.theme.spacing;return{label:"group",color:"#999",cursor:"default",display:"block",fontSize:"75%",fontWeight:"500",marginBottom:"0.25em",paddingLeft:3*t.baseUnit,paddingRight:3*t.baseUnit,textTransform:"uppercase"}},t.indicatorSeparatorCSS=function(e){var t=e.isDisabled,n=e.theme,r=n.spacing.baseUnit,o=n.colors;return{label:"indicatorSeparator",alignSelf:"stretch",backgroundColor:t?o.neutral10:o.neutral20,marginBottom:2*r,marginTop:2*r,width:1}},t.indicatorsContainerCSS=function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},t.inputCSS=function(e){var t=e.isDisabled,n=e.theme,r=n.spacing,o=n.colors;return{margin:r.baseUnit/2,paddingBottom:r.baseUnit/2,paddingTop:r.baseUnit/2,visibility:t?"hidden":"visible",color:o.neutral80}},t.loadingIndicatorCSS=function(e){var t=e.isFocused,n=e.size,r=e.theme,o=r.colors,i=r.spacing.baseUnit;return{label:"loadingIndicator",color:t?o.neutral60:o.neutral20,display:"flex",padding:2*i,transition:"color 150ms",alignSelf:"center",fontSize:n,lineHeight:1,marginRight:n,textAlign:"center",verticalAlign:"middle"}},t.loadingMessageCSS=v,t.menuCSS=function(e){var t,n=e.placement,r=e.theme,o=r.borderRadius,i=r.spacing,u=r.colors;return(t={label:"menu"})[function(e){return e?{bottom:"top",top:"bottom"}[e]:"bottom"}(n)]="100%",t.backgroundColor=u.neutral0,t.borderRadius=o,t.boxShadow="0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",t.marginBottom=i.menuGutter,t.marginTop=i.menuGutter,t.position="absolute",t.width="100%",t.zIndex=1,t},t.menuListCSS=function(e){var t=e.maxHeight,n=e.theme.spacing.baseUnit;return{maxHeight:t,overflowY:"auto",paddingBottom:n,paddingTop:n,position:"relative",WebkitOverflowScrolling:"touch"}},t.menuPortalCSS=function(e){var t=e.rect,n=e.offset,r=e.position;return{left:t.left,position:r,top:n,width:t.width,zIndex:1}},t.multiValueCSS=function(e){var t=e.theme,n=t.spacing,r=t.borderRadius;return{label:"multiValue",backgroundColor:t.colors.neutral10,borderRadius:r/2,display:"flex",margin:n.baseUnit/2,minWidth:0}},t.multiValueLabelCSS=function(e){var t=e.theme,n=t.borderRadius,r=t.colors,o=e.cropWithEllipsis;return{borderRadius:n/2,color:r.neutral80,fontSize:"85%",overflow:"hidden",padding:3,paddingLeft:6,textOverflow:o?"ellipsis":null,whiteSpace:"nowrap"}},t.multiValueRemoveCSS=function(e){var t=e.theme,n=t.spacing,r=t.borderRadius,o=t.colors;return{alignItems:"center",borderRadius:r/2,backgroundColor:e.isFocused&&o.dangerLight,display:"flex",paddingLeft:n.baseUnit,paddingRight:n.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}}},t.noOptionsMessageCSS=g,t.optionCSS=function(e){var t=e.isDisabled,n=e.isFocused,r=e.isSelected,o=e.theme,i=o.spacing,u=o.colors;return{label:"option",backgroundColor:r?u.primary:n?u.primary25:"transparent",color:t?u.neutral20:r?u.neutral0:"inherit",cursor:"default",display:"block",fontSize:"inherit",padding:2*i.baseUnit+"px "+3*i.baseUnit+"px",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)",":active":{backgroundColor:!t&&(r?u.primary:u.primary50)}}},t.placeholderCSS=function(e){var t=e.theme,n=t.spacing;return{label:"placeholder",color:t.colors.neutral50,marginLeft:n.baseUnit/2,marginRight:n.baseUnit/2,position:"absolute",top:"50%",transform:"translateY(-50%)"}},t.valueContainerCSS=function(e){var t=e.theme.spacing;return{alignItems:"center",display:"flex",flex:1,flexWrap:"wrap",padding:t.baseUnit/2+"px "+2*t.baseUnit+"px",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"}}},8010:(e,t,n)=>{"use strict";function r(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(t,"__esModule",{value:!0});var o=n(9196),i=r(o),u=r(n(845)),a=n(3585);n(1850),n(5890),n(4039);var s=n(148),l=n(3117);n(3998),n(5639);var c=n(7622),p=r(n(6043)),d=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).createEmotionCache=function(e){return p({nonce:e})},n.createEmotionCache=u(n.createEmotionCache),n}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r.prototype.render=function(){var e=this.createEmotionCache(this.props.nonce);return i.createElement(a.CacheProvider,{value:e},this.props.children)},r}(o.Component),f=c.manageState(l.Select);t.components=s.components,t.createFilter=l.createFilter,t.defaultTheme=l.defaultTheme,t.mergeStyles=l.mergeStyles,t.NonceProvider=d,t.default=f},7622:(e,t,n)=>{"use strict";var r,o=n(9196),i=(r=o)&&"object"==typeof r&&"default"in r?r.default:r;function u(){return u=Object.assign||function(e){for(var t=1;t1?n-1:0),o=1;o=0||(o[n]=e[n]);return o}(n,["defaultInputValue","defaultMenuIsOpen","defaultValue"]));return i.createElement(e,u({},r,{ref:function(e){t.select=e},inputValue:this.getProp("inputValue"),menuIsOpen:this.getProp("menuIsOpen"),onChange:this.onChange,onInputChange:this.onInputChange,onMenuClose:this.onMenuClose,onMenuOpen:this.onMenuOpen,value:this.getProp("value")}))},o}(o.Component),t.defaultProps=a,n}},4039:(e,t)=>{"use strict";var n=function(){};function r(e,t){return t?"-"===t[0]?e+t:e+"__"+t:e}function o(e){return[document.documentElement,document.body,window].indexOf(e)>-1}function i(e){return o(e)?window.pageYOffset:e.scrollTop}function u(e,t){o(e)?window.scrollTo(0,t):e.scrollTop=t}t.animatedScrollTo=function(e,t,r,o){void 0===r&&(r=200),void 0===o&&(o=n);var a=i(e),s=t-a,l=0;!function t(){var n,i=s*((n=(n=l+=10)/r-1)*n*n+1)+a;u(e,i),ln.bottom?u(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+o,e.scrollHeight)):r.top-o{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.r(t),n.d(t,{CacheProvider:()=>f,ClassNames:()=>A,Global:()=>y,ThemeContext:()=>d,css:()=>c.default,jsx:()=>E,keyframes:()=>O,withEmotionCache:()=>h});var o=n(9196),i=n(6043);function u(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]):r+=n+" "})),r}var a=function(e,t,n){var r=e.key+"-"+t.name;if(!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles),void 0===e.inserted[t.name]){var o=t;do{e.insert("."+r,o,e.sheet,!0),o=o.next}while(void 0!==o)}},s=n(2578),l=n(9664),c=n(3998),p=(0,o.createContext)("undefined"!=typeof HTMLElement?(0,i.default)():null),d=(0,o.createContext)({}),f=p.Provider,h=function(e){return(0,o.forwardRef)((function(t,n){return(0,o.createElement)(p.Consumer,null,(function(r){return e(t,r,n)}))}))},m="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",g=Object.prototype.hasOwnProperty,v=function(e,t,n,r){var i=null===n?t.css:t.css(n);"string"==typeof i&&void 0!==e.registered[i]&&(i=e.registered[i]);var l=t[m],c=[i],p="";"string"==typeof t.className?p=u(e.registered,c,t.className):null!=t.className&&(p=t.className+" ");var d=(0,s.O)(c);a(e,d,"string"==typeof l),p+=e.key+"-"+d.name;var f={};for(var h in t)g.call(t,h)&&"css"!==h&&h!==m&&(f[h]=t[h]);return f.ref=r,f.className=p,(0,o.createElement)(l,f)},b=h((function(e,t,n){return"function"==typeof e.css?(0,o.createElement)(d.Consumer,null,(function(r){return v(t,e,r,n)})):v(t,e,null,n)})),E=function(e,t){var n=arguments;if(null==t||!g.call(t,"css"))return o.createElement.apply(void 0,n);var r=n.length,i=new Array(r);i[0]=b;var u={};for(var a in t)g.call(t,a)&&(u[a]=t[a]);u[m]=e,i[1]=u;for(var s=2;s{"use strict";e.exports=window.React},1850:e=>{"use strict";e.exports=window.ReactDOM},5890:e=>{"use strict";e.exports=window.yoast.propTypes}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},window.yoast=window.yoast||{},window.yoast.reactSelect=n(8010),window.yoast.reactSelectAsync=n(3082)})();js/dist/admin-global.js000064400000012544147206602470011025 0ustar00(()=>{"use strict";var t={n:o=>{var a=o&&o.__esModule?()=>o.default:()=>o;return t.d(a,{a}),a},d:(o,a)=>{for(var e in a)t.o(a,e)&&!t.o(o,e)&&Object.defineProperty(o,e,{enumerable:!0,get:a[e]})},o:(t,o)=>Object.prototype.hasOwnProperty.call(t,o)};const o=window.jQuery;var a=t.n(o);!function(t){function o(t,o,e){const s=new FormData,n={action:"wpseo_set_ignore",option:t,_wpnonce:e};for(const[t,o]of Object.entries(n))s.append(t,o);return fetch(ajaxurl,{method:"POST",body:s}).then((e=>(e&&(a()("#"+o).hide(),a()("#hidden_ignore_"+t).val("ignore")),e)))}function e(){t("#wp-admin-bar-root-default > li").off("mouseenter.yoastalertpopup mouseleave.yoastalertpopup"),t(".yoast-issue-added").fadeOut(200)}function s(o,a){if(t(".yoast-notification-holder").off("click",".restore").off("click",".dismiss"),void 0!==a.html){a.html&&(o.closest(".yoast-container").html(a.html),n());var e=t("#wp-admin-bar-wpseo-menu"),s=e.find(".yoast-issue-counter");s.length||(e.find("> a:first-child").append('
    '),s=e.find(".yoast-issue-counter")),s.html(a.total),0===a.total?s.hide():s.show(),t("#toplevel_page_wpseo_dashboard .update-plugins").removeClass().addClass("update-plugins count-"+a.total),t("#toplevel_page_wpseo_dashboard .plugin-count").html(a.total)}}function n(){var o=t(".yoast-notification-holder");o.on("click",".dismiss",(function(){var o=t(this),a=o.closest(".yoast-notification-holder");o.closest(".yoast-container").append('
    '),t.post(ajaxurl,{action:"yoast_dismiss_notification",notification:a.attr("id"),nonce:a.data("nonce"),data:o.data("json")||a.data("json")},s.bind(this,a),"json")})),o.on("click",".restore",(function(){var o=t(this),a=o.closest(".yoast-notification-holder");o.closest(".yoast-container").append('
    '),t.post(ajaxurl,{action:"yoast_restore_notification",notification:a.attr("id"),nonce:a.data("nonce"),data:a.data("json")},s.bind(this,a),"json")}))}function i(t){t.is(":hidden")||(t.outerWidth()>t.parent().outerWidth()?(t.data("scrollHint").addClass("yoast-has-scroll"),t.data("scrollContainer").addClass("yoast-has-scroll")):(t.data("scrollHint").removeClass("yoast-has-scroll"),t.data("scrollContainer").removeClass("yoast-has-scroll")))}function l(){window.wpseoScrollableTables=t(".yoast-table-scrollable"),window.wpseoScrollableTables.length&&window.wpseoScrollableTables.each((function(){var o=t(this);if(!o.data("scrollContainer")){var a=t("
    ",{class:"yoast-table-scrollable__hintwrapper",html:"

    • ', '' ); ?>
    • ', '' ); ?>
    • ', '' ); ?>
    • ', '' ); ?>
    • ', '' ); ?>
    • ', '' ); ?>
    is_installed( WPSEO_Addon_Manager::PREMIUM_SLUG ) ) : ?>
    '; ?>

    ', '', 'Yoast SEO' ); ?>

    $extension ) : // Skip the "All the plugins" card if the user has already all the plugins active. if ( $slug === 'yoast-seo-plugin-subscription' && $number_plugins_active === $number_plugins_total ) { continue; } ?>
    has_valid_subscription( $slug ) || ! $addon_manager->is_installed( $slug ) ) : ?>

    is_installed( $slug ) ) : ?>
    has_valid_subscription( $slug ) ) : ++$number_plugins_active; ?>
    '; ?>